Forráskód Böngészése

Merge branch 'acpi-fixes' into fixes

* acpi-fixes:
  ACPI / BGRT: Don't let users configure BGRT on non X86 systems
  cpuidle / ACPI: recover percpu ACPI processor cstate
  ACPI / I2C: Use parent's ACPI_HANDLE() in acpi_i2c_register_devices()
  ACPI / SPI: Use parent's ACPI_HANDLE() in acpi_register_spi_devices()
Rafael J. Wysocki 12 éve
szülő
commit
fc1a7fe8b6

+ 1 - 1
drivers/acpi/Kconfig

@@ -396,7 +396,7 @@ config ACPI_CUSTOM_METHOD
 
 
 config ACPI_BGRT
 config ACPI_BGRT
 	bool "Boottime Graphics Resource Table support"
 	bool "Boottime Graphics Resource Table support"
-	depends on EFI
+	depends on EFI && X86
         help
         help
 	  This driver adds support for exposing the ACPI Boottime Graphics
 	  This driver adds support for exposing the ACPI Boottime Graphics
 	  Resource Table, which allows the operating system to obtain
 	  Resource Table, which allows the operating system to obtain

+ 1 - 1
drivers/acpi/acpi_i2c.c

@@ -90,7 +90,7 @@ void acpi_i2c_register_devices(struct i2c_adapter *adapter)
 	acpi_handle handle;
 	acpi_handle handle;
 	acpi_status status;
 	acpi_status status;
 
 
-	handle = ACPI_HANDLE(&adapter->dev);
+	handle = ACPI_HANDLE(adapter->dev.parent);
 	if (!handle)
 	if (!handle)
 		return;
 		return;
 
 

+ 7 - 6
drivers/acpi/processor_idle.c

@@ -66,7 +66,8 @@ module_param(latency_factor, uint, 0644);
 
 
 static DEFINE_PER_CPU(struct cpuidle_device *, acpi_cpuidle_device);
 static DEFINE_PER_CPU(struct cpuidle_device *, acpi_cpuidle_device);
 
 
-static struct acpi_processor_cx *acpi_cstate[CPUIDLE_STATE_MAX];
+static DEFINE_PER_CPU(struct acpi_processor_cx * [CPUIDLE_STATE_MAX],
+								acpi_cstate);
 
 
 static int disabled_by_idle_boot_param(void)
 static int disabled_by_idle_boot_param(void)
 {
 {
@@ -722,7 +723,7 @@ static int acpi_idle_enter_c1(struct cpuidle_device *dev,
 		struct cpuidle_driver *drv, int index)
 		struct cpuidle_driver *drv, int index)
 {
 {
 	struct acpi_processor *pr;
 	struct acpi_processor *pr;
-	struct acpi_processor_cx *cx = acpi_cstate[index];
+	struct acpi_processor_cx *cx = per_cpu(acpi_cstate[index], dev->cpu);
 
 
 	pr = __this_cpu_read(processors);
 	pr = __this_cpu_read(processors);
 
 
@@ -745,7 +746,7 @@ static int acpi_idle_enter_c1(struct cpuidle_device *dev,
  */
  */
 static int acpi_idle_play_dead(struct cpuidle_device *dev, int index)
 static int acpi_idle_play_dead(struct cpuidle_device *dev, int index)
 {
 {
-	struct acpi_processor_cx *cx = acpi_cstate[index];
+	struct acpi_processor_cx *cx = per_cpu(acpi_cstate[index], dev->cpu);
 
 
 	ACPI_FLUSH_CPU_CACHE();
 	ACPI_FLUSH_CPU_CACHE();
 
 
@@ -775,7 +776,7 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
 		struct cpuidle_driver *drv, int index)
 		struct cpuidle_driver *drv, int index)
 {
 {
 	struct acpi_processor *pr;
 	struct acpi_processor *pr;
-	struct acpi_processor_cx *cx = acpi_cstate[index];
+	struct acpi_processor_cx *cx = per_cpu(acpi_cstate[index], dev->cpu);
 
 
 	pr = __this_cpu_read(processors);
 	pr = __this_cpu_read(processors);
 
 
@@ -833,7 +834,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
 		struct cpuidle_driver *drv, int index)
 		struct cpuidle_driver *drv, int index)
 {
 {
 	struct acpi_processor *pr;
 	struct acpi_processor *pr;
-	struct acpi_processor_cx *cx = acpi_cstate[index];
+	struct acpi_processor_cx *cx = per_cpu(acpi_cstate[index], dev->cpu);
 
 
 	pr = __this_cpu_read(processors);
 	pr = __this_cpu_read(processors);
 
 
@@ -960,7 +961,7 @@ static int acpi_processor_setup_cpuidle_cx(struct acpi_processor *pr,
 		    !(acpi_gbl_FADT.flags & ACPI_FADT_C2_MP_SUPPORTED))
 		    !(acpi_gbl_FADT.flags & ACPI_FADT_C2_MP_SUPPORTED))
 			continue;
 			continue;
 #endif
 #endif
-		acpi_cstate[count] = cx;
+		per_cpu(acpi_cstate[count], dev->cpu) = cx;
 
 
 		count++;
 		count++;
 		if (count == CPUIDLE_STATE_MAX)
 		if (count == CPUIDLE_STATE_MAX)

+ 0 - 1
drivers/i2c/busses/i2c-designware-platdrv.c

@@ -182,7 +182,6 @@ static int dw_i2c_probe(struct platform_device *pdev)
 	adap->algo = &i2c_dw_algo;
 	adap->algo = &i2c_dw_algo;
 	adap->dev.parent = &pdev->dev;
 	adap->dev.parent = &pdev->dev;
 	adap->dev.of_node = pdev->dev.of_node;
 	adap->dev.of_node = pdev->dev.of_node;
-	ACPI_HANDLE_SET(&adap->dev, ACPI_HANDLE(&pdev->dev));
 
 
 	r = i2c_add_numbered_adapter(adap);
 	r = i2c_add_numbered_adapter(adap);
 	if (r) {
 	if (r) {

+ 0 - 1
drivers/spi/spi-pxa2xx.c

@@ -1168,7 +1168,6 @@ static int pxa2xx_spi_probe(struct platform_device *pdev)
 
 
 	master->dev.parent = &pdev->dev;
 	master->dev.parent = &pdev->dev;
 	master->dev.of_node = pdev->dev.of_node;
 	master->dev.of_node = pdev->dev.of_node;
-	ACPI_HANDLE_SET(&master->dev, ACPI_HANDLE(&pdev->dev));
 	/* the spi->mode bits understood by this driver: */
 	/* the spi->mode bits understood by this driver: */
 	master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LOOP;
 	master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LOOP;
 
 

+ 1 - 1
drivers/spi/spi.c

@@ -984,7 +984,7 @@ static void acpi_register_spi_devices(struct spi_master *master)
 	acpi_status status;
 	acpi_status status;
 	acpi_handle handle;
 	acpi_handle handle;
 
 
-	handle = ACPI_HANDLE(&master->dev);
+	handle = ACPI_HANDLE(master->dev.parent);
 	if (!handle)
 	if (!handle)
 		return;
 		return;