On Friday, July 01, 2016 11:19:04 PM Octavian Purdila wrote: > This patch set enables custom ACPI board configuration by adding > mechanisms in the Linux kernel for loading user defined SSDTs. > > In order to support ACPI open-ended hardware configurations we need a > way to augment the ACPI configuration provided by the firmware > image. A common example is connecting sensors on I2C / SPI buses on > development boards. > > Although this can be accomplished by creating a kernel platform driver > or recompiling the firmware image with updated ACPI tables, neither is > practical: the former proliferates board specific kernel code while > the latter requires access to firmware tools which are often not > publicly available. > > Because ACPI supports external references in AML code a more practical > way to augment firmware ACPI configuration is by dynamically loading > user defined SSDT tables that contain the board specific information. > > Currently it is possible to load SSDT overlays using the upgrade > initrd mechanism introduced in 4.7. This patch series adds support for > two more methods: > > * From an EFI variable > > This is the preferred method, when EFI is supported on the platform, > because it allows a persistent, OS independent way of storing and > updating the user defined SSDTs. There is also work underway to > implement EFI support for loading user defined SSDTs and using this > method will make it easier to convert to the EFI loading mechanism > when that will arrive. > > * From userspace via configfs > > This is useful when we want to defer the operation to userspace for > platform detection, loading the SSDTs from a custom partition, etc. > > > Changes from v4: > > * EFI: use ucs2_as_utf8 and memcmp to check if the variable name > matches the kernel command line parameter; fold the EFI ACPI table > load code in the iterator function > > * I2C/SPI: add more information in the commit logs about how the > enumeration status is set and checked; also add a new check of the > enumerated status for the ACPI device remove reconfiguration > notification > > Changes from v3: > > * fix a bisectability issue reported by kbuild > > * rework the enumeration fix to support PRP0001 enumeration; also, > introduce acpi_device_set/clear_enumerated() for clarity > > * clear the enumerated status for acpi_device when the I2C/SPI clients > are removed (for example as a result of an adapter removal) to allow > the devices to be re-enumerated later > > Changes from v2: > > * fix a few issues caught by the kbuild test robot > > * add more configfs table attributes > > * removed the initrd based loading functionality from this patch set > as this can already be accomplished in 4.7 using the ACPI table > upgrade mechanism > > * rebased to 4.7-rc3 > > Changes from v1: > > * rebased on top of the ACPI install from initrd table functionality; > there is significant overlap between the 1st patch in this series > and these patch [1] from Lv - I kept it in this series until the > discussions around the taint and config option are resolved > > * make sure EFI_RUNTIME_SERVICES are available before trying to use > EFI variables to load tables > > * rework the ACPI reconfiguration notifications to work on device > granularity (device added or removed) instead of table granularity > (table loaded or unloaded) > > * add support for table unloading / device removal > > * note that the last patch is just a hack to be able to test the table > unload / device remove functionality, if someone wants to try out > this patch set > > [1] https://patchwork.kernel.org/patch/8795931/ > > Octavian Purdila (8): > Documentation: acpi: add SSDT overlays documentation > acpi: fix enumeration (visited) flags for bus rescans > acpi: add support for ACPI reconfiguration notifiers > i2c: add support for ACPI reconfigure notifications > spi: add support for ACPI reconfigure notifications > efi: load SSTDs from EFI variables > acpi: add support for configfs > acpi: add support for loading SSDTs via configfs > > Documentation/ABI/testing/configfs-acpi | 36 +++++ > Documentation/acpi/ssdt-overlays.txt | 172 ++++++++++++++++++++ > Documentation/kernel-parameters.txt | 7 + > MAINTAINERS | 1 + > drivers/acpi/Kconfig | 9 ++ > drivers/acpi/Makefile | 1 + > drivers/acpi/bus.c | 9 ++ > drivers/acpi/configfs.c | 267 > ++++++++++++++++++++++++++++++++ > drivers/acpi/internal.h | 3 + > drivers/acpi/scan.c | 81 +++++++++- > drivers/acpi/sysfs.c | 6 +- > drivers/firmware/efi/efi.c | 85 ++++++++++ > drivers/i2c/i2c-core.c | 175 ++++++++++++++++----- > drivers/spi/spi.c | 100 +++++++++++- > include/linux/acpi.h | 36 +++++ > 15 files changed, 932 insertions(+), 56 deletions(-) > create mode 100644 Documentation/ABI/testing/configfs-acpi > create mode 100644 Documentation/acpi/ssdt-overlays.txt > create mode 100644 drivers/acpi/configfs.c
It looks like all patches in this series except for the [6/8] are good to go. Do any of them depend on the [6/8]? Thanks, Rafael