[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1AE640813FDE7649BE1B193DEA596E88026885AD@SHSMSX101.ccr.corp.intel.com>
Date: Tue, 28 Oct 2014 05:15:51 +0000
From: "Zheng, Lv" <lv.zheng@...el.com>
To: "Wysocki, Rafael J" <rafael.j.wysocki@...el.com>,
"Brown, Len" <len.brown@...el.com>
CC: Lv Zheng <zetalog@...il.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-acpi@...r.kernel.org" <linux-acpi@...r.kernel.org>,
"Yang, Fei" <fei.yang@...el.com>
Subject: RE: [PATCH 0/6] ACPI/OSL: Rework of ACPICA memory OSLs to improve
performance.
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-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists