All of lore.kernel.org
 help / color / mirror / Atom feed
From: Uros Bizjak <ubizjak@gmail.com>
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: x86@kernel.org, Andi Kleen <andi@firstfloor.org>
Subject: [PATCH, x86]: Add selfsnoop support
Date: Fri, 26 Dec 2008 11:49:14 +0100	[thread overview]
Message-ID: <4954B6AA.1060603@gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 492 bytes --]

Hello!

This patch ports the patch that implemented selfsnoop support [1] to 
2.6.28-git. Unfortunately, the thread about the implementation died at 
[2] without any resolution.

The patch works OK on my x86_64, but I don't think this qualifies as a 
thorough test...

This is actually Andi Kleen's patch, his signed-off-by: signature is at [1].

[1] http://lkml.indiana.edu/hypermail/linux/kernel/0802.1/1331.html
[2] http://lkml.indiana.edu/hypermail/linux/kernel/0802.1/1891.html

Uros.



[-- Attachment #2: p --]
[-- Type: text/plain, Size: 1241 bytes --]

diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
index cfdf8c2..bb6740b 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -229,6 +229,7 @@ extern const char * const x86_power_flags[32];
 #define cpu_has_ds		boot_cpu_has(X86_FEATURE_DS)
 #define cpu_has_pebs		boot_cpu_has(X86_FEATURE_PEBS)
 #define cpu_has_clflush		boot_cpu_has(X86_FEATURE_CLFLSH)
+#define cpu_has_selfsnoop	boot_cpu_has(X86_FEATURE_SELFSNOOP)
 #define cpu_has_bts		boot_cpu_has(X86_FEATURE_BTS)
 #define cpu_has_gbpages		boot_cpu_has(X86_FEATURE_GBPAGES)
 #define cpu_has_arch_perfmon	boot_cpu_has(X86_FEATURE_ARCH_PERFMON)
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index e89d248..07d0518 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -150,7 +150,7 @@ static void __cpa_flush_all(void *arg)
 	 */
 	__flush_tlb_all();
 
-	if (cache && boot_cpu_data.x86_model >= 4)
+	if (cache && boot_cpu_data.x86_model >= 4 && cpu_has_selfsnoop)
 		wbinvd();
 }
 
@@ -181,7 +181,7 @@ static void cpa_flush_range(unsigned long start, int numpages, int cache)
 
 	on_each_cpu(__cpa_flush_range, NULL, 1);
 
-	if (!cache)
+	if (!cache || cpu_has_selfsnoop)
 		return;
 
 	/*

             reply	other threads:[~2008-12-26 10:49 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-26 10:49 Uros Bizjak [this message]
2008-12-26 10:55 ` [PATCH, x86]: Corr: Add selfsnoop support Uros Bizjak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4954B6AA.1060603@gmail.com \
    --to=ubizjak@gmail.com \
    --cc=andi@firstfloor.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.