From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Wang Subject: [PATCH] acpi: do not flush cache if cx->type != ACPI_STATE_C3 Date: Thu, 12 Apr 2012 15:11:00 +0200 Message-ID: <4F86D464.4080601@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich , Keir Fraser Cc: yang.z.zhang@intel.com, Andre Przywara , "xen-devel@lists.xensource.com" , Wei Huang , "Ostrovsky, Boris" List-Id: xen-devel@lists.xenproject.org Hi Jan, This is a revised fix from my last post[1]. We found that the performance issue[2] is actually caused by an unnecessary cache flush when fall-through happens. According to acpi spec, c2 has cache consistency, we don't need cache flush if cx->type != ACPI_STATE_C3. This fix improves performance of some OEM systems significantly. I would suggest to back port it to 4.1, 4.0 and even 3.4. Thanks, We [1] http://lists.xen.org/archives/html/xen-devel/2012-04/msg00395.html [2] http://forums.citrix.com/thread.jspa?threadID=297461&tstart=0&start=0 # HG changeset patch # Parent 6efb9f934bfb4c46af375612fb01e65d15518380 # User Wei Wang acpi: do not flush cache if cx->type != ACPI_STATE_C3 Signed-off-by: Wei Wang diff -r 6efb9f934bfb -r 85775fd04cf4 xen/arch/x86/acpi/cpu_idle.c --- a/xen/arch/x86/acpi/cpu_idle.c Thu Apr 05 11:24:26 2012 +0100 +++ b/xen/arch/x86/acpi/cpu_idle.c Thu Apr 12 14:15:09 2012 +0200 @@ -509,7 +509,8 @@ static void acpi_processor_idle(void) else if ( !power->flags.bm_check ) { /* SMP with no shared cache... Invalidate cache */ - ACPI_FLUSH_CPU_CACHE(); + if ( cx->type == ACPI_STATE_C3 ) + ACPI_FLUSH_CPU_CACHE(); } /* Invoke C3 */