• Lukas Wunner's avatar
    efi: Add device path parser · 46cd4b75
    Lukas Wunner authored
    We're about to extended the efistub to retrieve device properties from
    EFI on Apple Macs. The properties use EFI Device Paths to indicate the
    device they belong to. This commit adds a parser which, given an EFI
    Device Path, locates the corresponding struct device and returns a
    reference to it.
    
    Initially only ACPI and PCI Device Path nodes are supported, these are
    the only types needed for Apple device properties (the corresponding
    macOS function AppleACPIPlatformExpert::matchEFIDevicePath() does not
    support any others). Further node types can be added with little to
    moderate effort.
    
    Apple device properties is currently the only use case of this parser,
    but Peter Jones intends to use it to match up devices with the
    ConInDev/ConOutDev/ErrOutDev variables and add sysfs attributes to these
    devices to say the hardware supports using them as console. Thus,
    make this parser a separate component which can be selected with config
    option EFI_DEV_PATH_PARSER. It can in principle be compiled as a module
    if acpi_get_first_physical_node() and acpi_bus_type are exported (and
    efi_get_device_by_path() itself is exported).
    
    The dependency on CONFIG_ACPI is needed for acpi_match_device_ids().
    It can be removed if an empty inline stub is added for that function.
    Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
    Signed-off-by: default avatarMatt Fleming <matt@codeblueprint.co.uk>
    Cc: Andreas Noever <andreas.noever@gmail.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20161112213237.8804-7-matt@codeblueprint.co.ukSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    46cd4b75
dev-path-parser.c 5.89 KB