There are reasons for why RCU is used here. Using spinlock here will break specific acpi_os_read_memory()/acpi_os_write_memory() users. So this patchset is not correct, please ignore. Thanks -Lv > From: Zheng, Lv > Sent: Thursday, October 23, 2014 10:12 AM > > It is reported that there is a performance issue in the ACPICA OSL > implementation around memory mappings. > > On the reported platforms, there is a debugging facility implemented in the > ACPI namespace using circular logging buffer: > Name (DPTR, 0x3AFEB000) > Name (EPTR, 0x3AFFB000) > Name (CPTR, 0x3AFEB010) > Mutex (MMUT, 0x00) > Method (MDBG, 1, Serialized) > { > Store (Acquire (MMUT, 0x03E8), Local0) > If (Local0 == Zero) > { > OperationRegion (ABLK, SystemMemory, CPTR, 0x10) > Field (ABLK, ByteAcc, NoLock, Preserve) > { > AAAA, 128 > } > Store (Arg0, AAAA) /* \MDBG.AAAA */ > CPTR = (CPTR + 0x10) /* \CPTR */ > If (CPTR >= EPTR) > { > CPTR = (DPTR + 0x10) /* \CPTR */ > } > Release (MMUT) > } > Return (Local0) > } > This function is heavily invoked by other ACPI control methods. > The reported platforms suffer from 2-5 minutes kernel stuck in the end of > accessing the mapped circular buffer system memory region. By > instrumentation, the 2-5 minutes time consumption overhead can be seen to > happen on the synchronize_rcu() invoked in the acpi_os_unmap_memory(). > > This patchset removes the synchronize_rcu() from the hot path to improve > the performance. > > Lv Zheng (6): > ACPI/OSL: Split memory operation region implementations to a seperate > file. > ACPI/OSL: Rename system memory functions. > ACPI/OSL: Cleanup memory access functions by merging duplicate code. > ACPI/OSL: Add acpi_map2virt() to merge duplicate code. > ACPI/OSL: Cleanup branch logics. > ACPI/OSL: Fix performance issue in system memory lockings. > > drivers/acpi/Makefile | 2 +- > drivers/acpi/mem.c | 414 +++++++++++++++++++++++++++++++++++++++++++++++++ > drivers/acpi/osl.c | 381 --------------------------------------------- > 3 files changed, 415 insertions(+), 382 deletions(-) > create mode 100644 drivers/acpi/mem.c > > -- > 1.7.10 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html