From dd08effd9d2094f4e07b7d57d73c78c75ae65e56 Mon Sep 17 00:00:00 2001 From: Song Guo Date: Wed, 15 Jul 2026 12:21:46 +0000 Subject: [PATCH] FROMGIT: misc: open-dice: add ACPI device discovery support OpenDICE can also used on x86 platforms for attestation, one of the usecase is Android's protected VM. The OpenDICE device driver only supports device tree, adding ACPI support so it can also be used on x86 environments easily. The patch is verified using crosvm, with the following ACPI table passed using --acpi-table, with --file-backed-mapping for the corresponding memory region. DefinitionBlock ( "opendice.aml", "SSDT", 2, "GOOGLE", "OpenDICE", 0x00000001 ) { Scope (\_SB) { Device (DICE) { Name (_HID, "PRP0001") Name (_DSD, Package () { ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { Package () { "compatible", Package () { "google,open-dice" } } } }) Name (_CRS, ResourceTemplate () { Memory32Fixed (ReadOnly, 0x9D1C3000, 0x00001000) }) } } } Signed-off-by: Song Guo Link: https://patch.msgid.link/20260715122146.4069884-4-songguo@google.com Signed-off-by: Greg Kroah-Hartman Bug: 510177847 Change-Id: Ib66a6392e166840b3459918db5e5d5c9fefe2546 (cherry picked from commit deda667260ae495f5edc68d56e229dbfbf732243 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git char-misc-next) --- drivers/misc/open-dice.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/misc/open-dice.c b/drivers/misc/open-dice.c index aabece6ed3d1..303b35b03cb4 100644 --- a/drivers/misc/open-dice.c +++ b/drivers/misc/open-dice.c @@ -2,6 +2,7 @@ /* * Copyright (C) 2021 - Google LLC * Author: David Brazdil + * Author: Song Guo * * Driver for Open Profile for DICE. * @@ -19,6 +20,7 @@ * close(fd); */ +#include #include #include #include @@ -133,8 +135,17 @@ static int __init open_dice_probe(struct platform_device *pdev) } mem_base = rmem->base; mem_size = rmem->size; + } else if (is_acpi_node(dev->fwnode)) { + struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + + if (!res) { + dev_err(dev, "failed to get MMIO resource\n"); + return -EINVAL; + } + mem_base = res->start; + mem_size = resource_size(res); } else { - dev_err(dev, "device not supported (no DT node)\n"); + dev_err(dev, "device not supported (no DT or ACPI node)\n"); return -EINVAL; } @@ -218,3 +229,4 @@ module_exit(open_dice_exit); MODULE_DESCRIPTION("Driver for Open Profile for DICE."); MODULE_LICENSE("GPL v2"); MODULE_AUTHOR("David Brazdil "); +MODULE_AUTHOR("Song Guo ");