Commit 2df38a8e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ACPI fixes from Rafael Wysocki:
 "These revert an unnecessary revert of an ACPI power management commit,
  add a missing device ID to one of the lists and fix a possible memory
  leak in an error path.

  Specifics:

   - Revert a revert of a recent ACPI power management change that does
     not need to be reverted after all (Rafael Wysocki).

   - Add missing fan device ID to the list of device IDs for which the
     devices should not be put into the ACPI PM domain (Sumeet
     Pawnikar).

   - Fix possible memory leak in an error path in the ACPI device
     enumeration code (Christophe JAILLET)"

* tag 'acpi-5.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI: PM: Add ACPI ID of Alder Lake Fan
  ACPI: scan: Fix a memory leak in an error handling path
  Revert "Revert "ACPI: scan: Turn off unused power resources during initialization""
parents adc12a74 fd386517
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1313,6 +1313,7 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on)
		{"PNP0C0B", }, /* Generic ACPI fan */
		{"INT3404", }, /* Fan */
		{"INTC1044", }, /* Fan for Tiger Lake generation */
		{"INTC1048", }, /* Fan for Alder Lake generation */
		{}
	};
	struct acpi_device *adev = ACPI_COMPANION(dev);
+1 −0
Original line number Diff line number Diff line
@@ -142,6 +142,7 @@ int acpi_device_sleep_wake(struct acpi_device *dev,
int acpi_power_get_inferred_state(struct acpi_device *device, int *state);
int acpi_power_on_resources(struct acpi_device *device, int state);
int acpi_power_transition(struct acpi_device *device, int state);
void acpi_turn_off_unused_power_resources(void);

/* --------------------------------------------------------------------------
                              Device Power Management
+1 −1
Original line number Diff line number Diff line
@@ -995,6 +995,7 @@ void acpi_resume_power_resources(void)

	mutex_unlock(&power_resource_list_lock);
}
#endif

void acpi_turn_off_unused_power_resources(void)
{
@@ -1015,4 +1016,3 @@ void acpi_turn_off_unused_power_resources(void)

	mutex_unlock(&power_resource_list_lock);
}
#endif
+3 −0
Original line number Diff line number Diff line
@@ -700,6 +700,7 @@ int acpi_device_add(struct acpi_device *device,

		result = acpi_device_set_name(device, acpi_device_bus_id);
		if (result) {
			kfree_const(acpi_device_bus_id->bus_id);
			kfree(acpi_device_bus_id);
			goto err_unlock;
		}
@@ -2359,6 +2360,8 @@ int __init acpi_scan_init(void)
		}
	}

	acpi_turn_off_unused_power_resources();

	acpi_scan_initialized = true;

 out:
+0 −1
Original line number Diff line number Diff line
@@ -8,7 +8,6 @@ extern struct list_head acpi_wakeup_device_list;
extern struct mutex acpi_device_lock;

extern void acpi_resume_power_resources(void);
extern void acpi_turn_off_unused_power_resources(void);

static inline acpi_status acpi_set_waking_vector(u32 wakeup_address)
{