On Wed, Oct 04, 2017 at 05:48:37PM -0500, Mario Limonciello wrote: > The dell-smbios stack only currently uses an SMI interface which grants > direct access to physical memory to the firmware SMM methods via a pointer. > > This dispatcher driver adds a WMI-ACPI interface that is detected by WMI > probe and preferred over the SMI interface in dell-smbios. > > Changing this to operate over WMI-ACPI will use an ACPI OperationRegion > for a buffer of data storage when SMM calls are performed. > > This is a safer approach to use in kernel drivers as the SMM will > only have access to that OperationRegion. > > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxxx> > --- > MAINTAINERS | 6 + > drivers/platform/x86/Kconfig | 16 ++- > drivers/platform/x86/Makefile | 1 + > drivers/platform/x86/dell-smbios-wmi.c | 215 +++++++++++++++++++++++++++++++++ > drivers/platform/x86/dell-smbios-wmi.h | 28 +++++ > 5 files changed, 265 insertions(+), 1 deletion(-) > create mode 100644 drivers/platform/x86/dell-smbios-wmi.c > create mode 100644 drivers/platform/x86/dell-smbios-wmi.h > ... > diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig > index f0b97cb8e449..ef597f440d2e 100644 > --- a/drivers/platform/x86/Kconfig > +++ b/drivers/platform/x86/Kconfig > @@ -93,13 +93,27 @@ config ASUS_LAPTOP > > config DELL_SMBIOS > tristate "Dell SMBIOS calling interface" > - depends on DELL_SMBIOS_SMM > + depends on DELL_SMBIOS_WMI || DELL_SMBIOS_SMM > ---help--- > This module provides common functions for kernel modules using > Dell SMBIOS. You use select DELL_SMBIOS below, which implies this modules should be invisible. Indeed, there is no need for the user to see the DELL_SMBIOS option at all now, they can select DELL_SMBIOS_WMI and or DELL_SMBIOS_SMM, no need to keep the DELL_SMBIOS option. > diff --git a/drivers/platform/x86/dell-smbios-wmi.c b/drivers/platform/x86/dell-smbios-wmi.c > +static void __init parse_b1_table(const struct dmi_header *dm) > +{ > + struct misc_bios_flags_structure *flags = > + container_of(dm, struct misc_bios_flags_structure, header); > + > + /* 4 bytes header, and one word of flags */ Assuming specifically 8 bytes of flags, independent of arch? -- Darren Hart VMware Open Source Technology Center