ACPI: idle: delete access to ACPI_BITREG_BUS_MASTER_RLD
Len Brown
reviewerPATCH 1/1 ACPI: idle: delete access to ACPI_BITREG_BUS_MASTER_RLD
From: Len Brown <[email protected]>
The ACPI specification describes PM1*_CNT_BLK.BM_RLD in two places.
The first description says that the OS needs to set BM_RLD to enable bus master activity to wake the processor from C3.
The second description says that the platform sets BM_RLD to indicate whether it was bus master activity that woke the platform from C3 or not.
The first description is erroneous, the second description is correct. Delete Linux's implementation of the first description.
drivers/acpi/processor_idle.c +0 -21
@@ -192,26 +192,6 @@ acpi_processor_power_activate(struct acpi_processor *pr, old->promotion.count =0 ; new->demotion.count =0 ; -/* Cleanup from old state. */ -if (old) { -switch (old->type) { -case ACPI_STATE_C3 : -/* Disable bus master reload */ -if (new->type !=ACPI_STATE_C3 && pr->flags.bm_check) -acpi_set_register (ACPI_BITREG_BUS_MASTER_RLD ,0 ); -break ; - } - } - -/* Prepare to use new state. */ -switch (new->type) { -case ACPI_STATE_C3 : -/* Enable bus master reload */ -if (old->type !=ACPI_STATE_C3 && pr->flags.bm_check) -acpi_set_register (ACPI_BITREG_BUS_MASTER_RLD ,1 ); -break ; - } - pr->power.state = new;return ;
@@ -1027,7 +1007,6 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr, " for C3 to be enabled on SMP systems\n"));return ; } -acpi_set_register (ACPI_BITREG_BUS_MASTER_RLD ,0 ); }/*
Len Brown
reviewerI've been told that BM_RLD is not a NOP in the PIIX4 - ICH4-M generations; and that those chips follow the 1st description in the ACPI spec, not the second. (I've also submitted a bug against the ACPI spec:-)
So the patch below is no good.
But the old code still isn't quite right.
It seems we should just set BM_RLD at initialization and forget about it rather than monkeying with it at run-time.
cheers,
-Len
Quoted 56 lines · Len Brown
From: Len Brown <[email protected]>
The ACPI specification describes PM1*_CNT_BLK.BM_RLD in two places.
The first description says that the OS needs to set
BM_RLDto enable bus master activity to wake the processor from C3.The second description says that the platform sets
BM_RLDto indicate whether it was bus master activity that woke the platform from C3 or not.The first description is erroneous, the second description is correct. Delete Linux's implementation of the first description.
Signed-off-by Len Brown <[email protected]>drivers/acpi/processor_idle.c +0
-21@@ -192,26 +192,6 @@ acpi_processor_power_activate(struct acpi_processor *pr, old->promotion.count =0 ; new->demotion.count =0 ; -/* Cleanup from old state. */ -if (old) { -switch (old->type) { -case ACPI_STATE_C3 : -/* Disable bus master reload */ -if (new->type !=ACPI_STATE_C3 && pr->flags.bm_check) -acpi_set_register (ACPI_BITREG_BUS_MASTER_RLD ,0 ); -break ; - } - } - -/* Prepare to use new state. */ -switch (new->type) { -case ACPI_STATE_C3 : -/* Enable bus master reload */ -if (old->type !=ACPI_STATE_C3 && pr->flags.bm_check) -acpi_set_register (ACPI_BITREG_BUS_MASTER_RLD ,1 ); -break ; - } - pr->power.state = new;return ;@@ -1027,7 +1007,6 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr, " for C3 to be enabled on SMP systems\n"));return ; } -acpi_set_register (ACPI_BITREG_BUS_MASTER_RLD ,0 ); }/*