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: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
152a649b64
commit
a2b7b01c07
@ -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)
|
|||||||
{
|
{
|
||||||
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);
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user