Commit a2b7b01c authored by Len Brown's avatar Len Brown

ACPI: remove locking from PM1x_STS register reads

PM1a_STS and PM1b_STS are twins that get OR'd together
on reads, and all writes are repeated to both.

The fields in PM1x_STS are single bits only,
there are no multi-bit fields.

So it is not necessary to lock PM1x_STS reads against
writes because it is impossible to read an intermediate
value of a single bit.  It will either be 0 or 1,
even if a write is in progress during the read.
Reads are asynchronous to writes no matter if a lock
is used or not.
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 152a649b
...@@ -447,7 +447,7 @@ static void acpi_processor_idle(void) ...@@ -447,7 +447,7 @@ static void acpi_processor_idle(void)
pr->power.bm_activity <<= diff; pr->power.bm_activity <<= diff;
acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status); acpi_get_register_unlocked(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
if (bm_status) { if (bm_status) {
pr->power.bm_activity |= 0x1; pr->power.bm_activity |= 0x1;
acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1); acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1);
...@@ -1383,7 +1383,7 @@ static int acpi_idle_bm_check(void) ...@@ -1383,7 +1383,7 @@ static int acpi_idle_bm_check(void)
{ {
u32 bm_status = 0; u32 bm_status = 0;
acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status); acpi_get_register_unlocked(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
if (bm_status) if (bm_status)
acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1); acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1);
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment