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 <songguo@google.com>
Link: https://patch.msgid.link/20260715122146.4069884-4-songguo@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
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)
This commit is contained in:
Song Guo committed 2026-08-06 00:28:27 -07:00
1 parent 54025ecd4f
commit dd08effd9d
1 file changed
+13 -1
+13 -1
View File
@@ -2,6 +2,7 @@
/*
* Copyright (C) 2021 - Google LLC
* Author: David Brazdil <dbrazdil@google.com>
* Author: Song Guo <songguo@google.com>
*
* Driver for Open Profile for DICE.
*
@@ -19,6 +20,7 @@
* close(fd);
*/
#include <linux/acpi.h>
#include <linux/io.h>
#include <linux/miscdevice.h>
#include <linux/mm.h>
@@ -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 <dbrazdil@google.com>");
MODULE_AUTHOR("Song Guo <songguo@google.com>");