public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] ACPI/OSL: Rework of ACPICA memory OSLs to improve performance.
@ 2014-10-23  2:11 Lv Zheng
  2014-10-23  2:12 ` [PATCH 1/6] ACPI/OSL: Split memory operation region implementations to a seperate file Lv Zheng
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Lv Zheng @ 2014-10-23  2:11 UTC (permalink / raw)
  To: Rafael J. Wysocki, Len Brown
  Cc: Lv Zheng, Lv Zheng, linux-kernel, linux-acpi, Fei Yang

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-10-28  5:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-23  2:11 [PATCH 0/6] ACPI/OSL: Rework of ACPICA memory OSLs to improve performance Lv Zheng
2014-10-23  2:12 ` [PATCH 1/6] ACPI/OSL: Split memory operation region implementations to a seperate file Lv Zheng
2014-10-23  2:12 ` [PATCH 2/6] ACPI/OSL: Rename system memory functions Lv Zheng
2014-10-23  2:12 ` [PATCH 3/6] ACPI/OSL: Cleanup memory access functions by merging duplicate code Lv Zheng
2014-10-23  2:12 ` [PATCH 4/6] ACPI/OSL: Add acpi_map2virt() to merge " Lv Zheng
2014-10-23  2:12 ` [PATCH 5/6] ACPI/OSL: Cleanup branch logics Lv Zheng
2014-10-23  2:12 ` [PATCH 6/6] ACPI/OSL: Fix performance issue in system memory lockings Lv Zheng
2014-10-28  5:15 ` [PATCH 0/6] ACPI/OSL: Rework of ACPICA memory OSLs to improve performance Zheng, Lv

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox