]> Git Repo - J-linux.git/commitdiff
Merge branches 'acpi-pm', 'acpi-soc', 'acpi-tables' and 'acpi-resource'
authorRafael J. Wysocki <[email protected]>
Fri, 29 Jul 2022 18:16:42 +0000 (20:16 +0200)
committerRafael J. Wysocki <[email protected]>
Fri, 29 Jul 2022 18:16:42 +0000 (20:16 +0200)
Merge ACPI power management changes, ACPI LPSS driver changes, ACPI
table parsing code changes and ACPI resource handling changes for
v5.20-rc1:

 - Save NVS memory during transitions into S3 on Lenovo G40-45 (Manyi
   Li).

 - Add support for upcoming AMD uPEP device ID AMDI008 to the ACPI
   suspend-to-idle driver for x86 platforms (Shyam Sundar S K).

 - Clean up checks related to the ACPI_FADT_LOW_POWER_S0 platform flag
   in the LPIT table driver and the suspend-to-idle driver for x86
   platforms (Rafael Wysocki).

 - Print information messages regarding declared LPS0 idle support in
   the platform firmware (Rafael Wysocki).

 - Fix missing check in register_device_clock() in the ACPI driver for
   Intel SoCs (huhai).

 - Fix ACS setup in the VIOT table parser (Eric Auger).

 - Skip IRQ override on AMD Zen platforms where it's harmful (Chuanhong
   Guo).

* acpi-pm:
  ACPI: PM: x86: Print messages regarding LPS0 idle support
  ACPI: PM: s2idle: Use LPS0 idle if ACPI_FADT_LOW_POWER_S0 is unset
  Revert "ACPI / PM: LPIT: Register sysfs attributes based on FADT"
  ACPI: PM: s2idle: Add support for upcoming AMD uPEP HID AMDI008
  ACPI: PM: save NVS memory for Lenovo G40-45

* acpi-soc:
  ACPI: LPSS: Fix missing check in register_device_clock()

* acpi-tables:
  ACPI: VIOT: Fix ACS setup

* acpi-resource:
  ACPI: resource: skip IRQ override on AMD Zen platforms

1  2  3  4  5 
drivers/acpi/bus.c

diff --combined drivers/acpi/bus.c
index 901b2b7ce88b3dd475ff0ba553f09b592f5b4e22,86fa61a21826c3f25d7eef67255aa065da402bb6,86fa61a21826c3f25d7eef67255aa065da402bb6,906ad8153fd968d017575cde3a375e7a1803c675,e2db1bdd9dd2580d73a86e0552daae5f8f4ed4fb..4ea60627625f732f92946b32635f08e020546b68
@@@@@@ -298,7 -298,7 -298,7 -298,7 -298,7 +298,7 @@@@@@ EXPORT_SYMBOL_GPL(osc_cpc_flexible_adr_
     bool osc_sb_native_usb4_support_confirmed;
     EXPORT_SYMBOL_GPL(osc_sb_native_usb4_support_confirmed);
     
 --- bool osc_sb_cppc_not_supported;
 +++ bool osc_sb_cppc2_support_acked;
     
     static u8 sb_uuid_str[] = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48";
     static void acpi_bus_osc_negotiate_platform_control(void)
                return;
        }
     
 --- #ifdef CONFIG_ACPI_CPPC_LIB
 ---    osc_sb_cppc_not_supported = !(capbuf_ret[OSC_SUPPORT_DWORD] &
 ---                    (OSC_SB_CPC_SUPPORT | OSC_SB_CPCV2_SUPPORT));
 --- #endif
 --- 
        /*
         * Now run _OSC again with query flag clear and with the caps
         * supported by both the OS and the platform.
     
        capbuf_ret = context.ret.pointer;
        if (context.ret.length > OSC_SUPPORT_DWORD) {
 +++ #ifdef CONFIG_ACPI_CPPC_LIB
 +++            osc_sb_cppc2_support_acked = capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_CPCV2_SUPPORT;
 +++ #endif
 +++ 
                osc_sb_apei_support_acked =
                        capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_APEI_SUPPORT;
                osc_pc_lpi_support_confirmed =
@@@@@@ -464,6 -465,7 -465,7 -465,7 -464,7 +464,6 @@@@@@ out_free
     static void acpi_bus_notify(acpi_handle handle, u32 type, void *data)
     {
        struct acpi_device *adev;
 ----   struct acpi_driver *driver;
        u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE;
        bool hotplug_event = false;
     
        if (!adev)
                goto err;
     
 ----   driver = adev->driver;
 ----   if (driver && driver->ops.notify &&
 ----       (driver->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS))
 ----           driver->ops.notify(adev, type);
 ++++   if (adev->dev.driver) {
 ++++           struct acpi_driver *driver = to_acpi_driver(adev->dev.driver);
 ++++
 ++++           if (driver && driver->ops.notify &&
 ++++               (driver->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS))
 ++++                   driver->ops.notify(adev, type);
 ++++   }
     
        if (!hotplug_event) {
                acpi_bus_put_acpi_device(adev);
     static void acpi_notify_device(acpi_handle handle, u32 event, void *data)
     {
        struct acpi_device *device = data;
 ++++   struct acpi_driver *acpi_drv = to_acpi_driver(device->dev.driver);
     
 ----   device->driver->ops.notify(device, event);
 ++++   acpi_drv->ops.notify(device, event);
     }
     
     static void acpi_notify_device_fixed(void *data)
@@@@@@ -1035,6 -1033,8 -1033,8 -1033,8 -1032,8 +1035,6 @@@@@@ static int acpi_device_probe(struct dev
        if (ret)
                return ret;
     
 ----   acpi_dev->driver = acpi_drv;
 ----
        pr_debug("Driver [%s] successfully bound to device [%s]\n",
                 acpi_drv->name, acpi_dev->pnp.bus_id);
     
                        if (acpi_drv->ops.remove)
                                acpi_drv->ops.remove(acpi_dev);
     
 ----                   acpi_dev->driver = NULL;
                        acpi_dev->driver_data = NULL;
                        return ret;
                }
     static void acpi_device_remove(struct device *dev)
     {
        struct acpi_device *acpi_dev = to_acpi_device(dev);
 ----   struct acpi_driver *acpi_drv = acpi_dev->driver;
 ++++   struct acpi_driver *acpi_drv = to_acpi_driver(dev->driver);
 ++++
 ++++   if (acpi_drv->ops.notify)
 ++++           acpi_device_remove_notify_handler(acpi_dev);
 ++++
 ++++   if (acpi_drv->ops.remove)
 ++++           acpi_drv->ops.remove(acpi_dev);
     
 ----   if (acpi_drv) {
 ----           if (acpi_drv->ops.notify)
 ----                   acpi_device_remove_notify_handler(acpi_dev);
 ----           if (acpi_drv->ops.remove)
 ----                   acpi_drv->ops.remove(acpi_dev);
 ----   }
 ----   acpi_dev->driver = NULL;
        acpi_dev->driver_data = NULL;
     
        put_device(dev);
@@@@@@ -1100,7 -1102,6 -1102,6 -1102,6 -1101,6 +1100,7 @@@@@@ static int acpi_dev_for_one_check(struc
     
        return adwc->fn(to_acpi_device(dev), adwc->data);
     }
 ++++EXPORT_SYMBOL_GPL(acpi_dev_for_each_child);
     
     int acpi_dev_for_each_child(struct acpi_device *adev,
                            int (*fn)(struct acpi_device *, void *), void *data)
        return device_for_each_child(&adev->dev, &adwc, acpi_dev_for_one_check);
     }
     
 ++++int acpi_dev_for_each_child_reverse(struct acpi_device *adev,
 ++++                               int (*fn)(struct acpi_device *, void *),
 ++++                               void *data)
 ++++{
 ++++   struct acpi_dev_walk_context adwc = {
 ++++           .fn = fn,
 ++++           .data = data,
 ++++   };
 ++++
 ++++   return device_for_each_child_reverse(&adev->dev, &adwc, acpi_dev_for_one_check);
 ++++}
 ++++
     /* --------------------------------------------------------------------------
                                  Initialization/Cleanup
        -------------------------------------------------------------------------- */
@@@@@@ -1411,6 -1400,6 -1400,6 -1400,7 -1399,6 +1411,7 @@@@@@ static int __init acpi_init(void
     
        pci_mmcfg_late_init();
        acpi_iort_init();
+++ +   acpi_viot_early_init();
        acpi_hest_init();
        acpi_ghes_init();
        acpi_scan_init();
This page took 0.109581 seconds and 4 git commands to generate.