From: Mike Travis <travis@sgi.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
"Eric W. Biederman" <ebiederm@xmission.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Christoph Lameter <cl@linux-foundation.org>,
Jack Steiner <steiner@sgi.com>,
linux-kernel@vger.kernel.org
Subject: [RFC 14/15] x86_64: Remove xxx_pda() operations
Date: Wed, 09 Jul 2008 09:51:43 -0700 [thread overview]
Message-ID: <20080709165131.219641000@polaris-admin.engr.sgi.com> (raw)
In-Reply-To: <20080709165129.292635000@polaris-admin.engr.sgi.com>
[-- Attachment #1: zero_based_remove_pda_ops --]
[-- Type: text/plain, Size: 3591 bytes --]
* As there are no more references to xxx_pda() ops then remove them.
Based on linux-2.6.tip/master
Signed-off-by: Christoph Lameter <cl@linux-foundation.org>
Signed-off-by: Mike Travis <travis@sgi.com>
---
include/asm-x86/pda.h | 77 ++++----------------------------------------------
1 file changed, 7 insertions(+), 70 deletions(-)
--- linux-2.6.tip.orig/include/asm-x86/pda.h
+++ linux-2.6.tip/include/asm-x86/pda.h
@@ -21,7 +21,7 @@ struct x8664_pda {
offset 40!!! */
char *irqstackptr;
short nodenumber; /* number of current node (32k max) */
- short in_bootmem; /* pda lives in bootmem */
+ short unused1; /* unused */
unsigned int __softirq_pending;
unsigned int __nmi_count; /* number of NMI on this CPUs */
short mmu_state;
@@ -42,12 +42,6 @@ extern void pda_init(int);
#define cpu_pda(cpu) (&per_cpu(pda, cpu))
/*
- * There is no fast way to get the base address of the PDA, all the accesses
- * have to mention %fs/%gs. So it needs to be done this Torvaldian way.
- */
-extern void __bad_pda_field(void) __attribute__((noreturn));
-
-/*
* proxy_pda doesn't actually exist, but tell gcc it is accessed for
* all PDA accesses so it gets read/write dependencies right.
*/
@@ -55,69 +49,11 @@ extern struct x8664_pda _proxy_pda;
#define pda_offset(field) offsetof(struct x8664_pda, field)
-#define pda_to_op(op, field, val) \
-do { \
- typedef typeof(_proxy_pda.field) T__; \
- if (0) { T__ tmp__; tmp__ = (val); } /* type checking */ \
- switch (sizeof(_proxy_pda.field)) { \
- case 2: \
- asm(op "w %1,%%gs:%c2" : \
- "+m" (_proxy_pda.field) : \
- "ri" ((T__)val), \
- "i"(pda_offset(field))); \
- break; \
- case 4: \
- asm(op "l %1,%%gs:%c2" : \
- "+m" (_proxy_pda.field) : \
- "ri" ((T__)val), \
- "i" (pda_offset(field))); \
- break; \
- case 8: \
- asm(op "q %1,%%gs:%c2": \
- "+m" (_proxy_pda.field) : \
- "ri" ((T__)val), \
- "i"(pda_offset(field))); \
- break; \
- default: \
- __bad_pda_field(); \
- } \
-} while (0)
-
-#define pda_from_op(op, field) \
-({ \
- typeof(_proxy_pda.field) ret__; \
- switch (sizeof(_proxy_pda.field)) { \
- case 2: \
- asm(op "w %%gs:%c1,%0" : \
- "=r" (ret__) : \
- "i" (pda_offset(field)), \
- "m" (_proxy_pda.field)); \
- break; \
- case 4: \
- asm(op "l %%gs:%c1,%0": \
- "=r" (ret__): \
- "i" (pda_offset(field)), \
- "m" (_proxy_pda.field)); \
- break; \
- case 8: \
- asm(op "q %%gs:%c1,%0": \
- "=r" (ret__) : \
- "i" (pda_offset(field)), \
- "m" (_proxy_pda.field)); \
- break; \
- default: \
- __bad_pda_field(); \
- } \
- ret__; \
-})
-
-#define read_pda(field) pda_from_op("mov", field)
-#define write_pda(field, val) pda_to_op("mov", field, val)
-#define add_pda(field, val) pda_to_op("add", field, val)
-#define sub_pda(field, val) pda_to_op("sub", field, val)
-#define or_pda(field, val) pda_to_op("or", field, val)
-
-/* This is not atomic against other CPUs -- CPU preemption needs to be off */
+/*
+ * This is not atomic against other CPUs -- CPU preemption needs to be off
+ * NOTE: This relies on the fact that the cpu_pda is the *first* field in
+ * the per cpu area. Move it and you'll need to change this.
+ */
#define test_and_clear_bit_pda(bit, field) \
({ \
int old__; \
@@ -127,6 +63,7 @@ do { \
old__; \
})
+
#endif
#define PDA_STACKOFFSET (5*8)
--
next prev parent reply other threads:[~2008-07-09 16:54 UTC|newest]
Thread overview: 190+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-09 16:51 [RFC 00/15] x86_64: Optimize percpu accesses Mike Travis
2008-07-09 16:51 ` [RFC 01/15] x86_64: Cleanup early setup_percpu references Mike Travis
2008-07-09 16:51 ` [RFC 02/15] x86_64: Fold pda into per cpu area Mike Travis
2008-07-09 22:02 ` Eric W. Biederman
2008-07-13 17:54 ` Ingo Molnar
2008-07-14 14:24 ` Mike Travis
2008-07-09 16:51 ` [RFC 03/15] x86_64: Reference zero-based percpu variables offset from gs Mike Travis
2008-07-09 16:51 ` [RFC 04/15] x86_64: Replace cpu_pda ops with percpu ops Mike Travis
2008-07-09 16:51 ` [RFC 05/15] x86_64: Replace xxx_pda() operations with x86_xxx_percpu() Mike Travis
2008-07-09 16:51 ` [RFC 06/15] x86_64: Replace xxx_pda() operations in include_asm-x86_current_h Mike Travis
2008-07-09 16:51 ` [RFC 07/15] x86_64: Replace xxx_pda() operations in include_asm-x86_hardirq_64_h Mike Travis
2008-07-09 16:51 ` [RFC 08/15] x86_64: Replace xxx_pda() operations in include_asm-x86_mmu_context_64_h Mike Travis
2008-07-09 16:51 ` [RFC 09/15] x86_64: Replace xxx_pda() operations in include_asm-x86_percpu_h Mike Travis
2008-07-09 16:51 ` [RFC 10/15] x86_64: Replace xxx_pda() operations in include_asm-x86_smp_h Mike Travis
2008-07-09 16:51 ` [RFC 11/15] x86_64: Replace xxx_pda() operations in include_asm-x86_stackprotector_h Mike Travis
2008-07-09 16:51 ` [RFC 12/15] x86_64: Replace xxx_pda() operations in include_asm-x86_thread_info_h Mike Travis
2008-07-09 16:51 ` [RFC 13/15] x86_64: Replace xxx_pda() operations in include_asm-x86_topology_h Mike Travis
2008-07-09 16:51 ` Mike Travis [this message]
2008-07-09 16:51 ` [RFC 15/15] x86_64: Remove cpu_pda() macro Mike Travis
2008-07-09 17:19 ` [RFC 00/15] x86_64: Optimize percpu accesses H. Peter Anvin
2008-07-09 17:40 ` Mike Travis
2008-07-09 17:42 ` H. Peter Anvin
2008-07-09 18:05 ` Mike Travis
2008-07-09 17:44 ` Jeremy Fitzhardinge
2008-07-09 18:09 ` Mike Travis
2008-07-09 18:30 ` H. Peter Anvin
2008-07-09 19:34 ` Ingo Molnar
2008-07-09 19:44 ` H. Peter Anvin
2008-07-09 20:26 ` Adrian Bunk
2008-07-09 21:03 ` Mike Travis
2008-07-09 21:23 ` Jeremy Fitzhardinge
2008-07-25 15:49 ` Mike Travis
2008-07-25 16:08 ` Jeremy Fitzhardinge
2008-07-25 16:46 ` Mike Travis
2008-07-25 16:58 ` Jeremy Fitzhardinge
2008-07-25 18:12 ` Mike Travis
2008-07-09 17:27 ` Jeremy Fitzhardinge
2008-07-09 17:39 ` Christoph Lameter
2008-07-09 17:51 ` Jeremy Fitzhardinge
2008-07-09 18:14 ` Mike Travis
2008-07-09 18:22 ` Jeremy Fitzhardinge
2008-07-09 18:31 ` Mike Travis
2008-07-09 19:08 ` Jeremy Fitzhardinge
2008-07-09 18:02 ` Mike Travis
2008-07-09 18:13 ` Christoph Lameter
2008-07-09 18:26 ` Jeremy Fitzhardinge
2008-07-09 18:34 ` Christoph Lameter
2008-07-09 18:37 ` H. Peter Anvin
2008-07-09 18:48 ` Jeremy Fitzhardinge
2008-07-09 18:53 ` Christoph Lameter
2008-07-09 19:07 ` Jeremy Fitzhardinge
2008-07-09 19:12 ` Christoph Lameter
2008-07-09 19:32 ` Jeremy Fitzhardinge
2008-07-09 19:41 ` Ingo Molnar
2008-07-09 19:45 ` H. Peter Anvin
2008-07-09 19:52 ` Christoph Lameter
2008-07-09 20:00 ` Ingo Molnar
2008-07-09 20:09 ` Jeremy Fitzhardinge
2008-07-09 21:05 ` Mike Travis
2008-07-09 19:44 ` Christoph Lameter
2008-07-09 19:48 ` Jeremy Fitzhardinge
2008-07-09 18:27 ` Mike Travis
2008-07-09 18:46 ` Jeremy Fitzhardinge
2008-07-09 20:22 ` Eric W. Biederman
2008-07-09 20:35 ` Jeremy Fitzhardinge
2008-07-09 20:53 ` Eric W. Biederman
2008-07-09 21:03 ` Ingo Molnar
2008-07-09 21:16 ` H. Peter Anvin
2008-07-09 21:10 ` Arjan van de Ven
2008-07-09 23:20 ` Eric W. Biederman
2008-07-09 18:31 ` H. Peter Anvin
2008-07-09 18:00 ` Mike Travis
2008-07-09 19:05 ` Jeremy Fitzhardinge
2008-07-09 19:28 ` Ingo Molnar
2008-07-09 20:55 ` Mike Travis
2008-07-09 21:12 ` Ingo Molnar
2008-07-09 20:00 ` Eric W. Biederman
2008-07-09 20:05 ` Jeremy Fitzhardinge
2008-07-09 20:15 ` Ingo Molnar
2008-07-09 20:07 ` Ingo Molnar
2008-07-09 20:11 ` Jeremy Fitzhardinge
2008-07-09 20:18 ` Christoph Lameter
2008-07-09 20:33 ` Jeremy Fitzhardinge
2008-07-09 20:42 ` H. Peter Anvin
2008-07-09 20:48 ` Jeremy Fitzhardinge
2008-07-09 21:06 ` Eric W. Biederman
2008-07-09 21:16 ` H. Peter Anvin
2008-07-09 21:20 ` Jeremy Fitzhardinge
2008-07-09 21:25 ` Christoph Lameter
2008-07-09 21:36 ` H. Peter Anvin
2008-07-09 21:41 ` Jeremy Fitzhardinge
2008-07-09 22:22 ` Eric W. Biederman
2008-07-09 22:32 ` Jeremy Fitzhardinge
2008-07-09 23:36 ` Eric W. Biederman
2008-07-10 0:19 ` H. Peter Anvin
2008-07-10 0:24 ` Jeremy Fitzhardinge
2008-07-10 14:14 ` Christoph Lameter
2008-07-10 14:26 ` H. Peter Anvin
2008-07-10 15:26 ` Christoph Lameter
2008-07-10 15:42 ` H. Peter Anvin
2008-07-10 16:24 ` Christoph Lameter
2008-07-10 16:33 ` H. Peter Anvin
2008-07-10 16:45 ` Christoph Lameter
2008-07-10 17:33 ` Jeremy Fitzhardinge
2008-07-10 17:42 ` Christoph Lameter
2008-07-10 17:53 ` Jeremy Fitzhardinge
2008-07-10 17:55 ` H. Peter Anvin
2008-07-10 20:52 ` Christoph Lameter
2008-07-10 20:58 ` Jeremy Fitzhardinge
2008-07-10 21:03 ` H. Peter Anvin
2008-07-11 0:55 ` Mike Travis
2008-07-10 21:05 ` Christoph Lameter
2008-07-10 21:22 ` Eric W. Biederman
2008-07-10 21:29 ` H. Peter Anvin
2008-07-11 0:12 ` Mike Travis
2008-07-11 0:14 ` H. Peter Anvin
2008-07-11 0:58 ` Mike Travis
2008-07-11 1:41 ` H. Peter Anvin
2008-07-11 15:37 ` Christoph Lameter
2008-07-11 0:42 ` Eric W. Biederman
2008-07-11 15:36 ` Christoph Lameter
2008-07-10 17:53 ` H. Peter Anvin
2008-07-10 17:26 ` Eric W. Biederman
2008-07-10 17:38 ` Christoph Lameter
2008-07-10 19:11 ` Mike Travis
2008-07-10 19:12 ` Eric W. Biederman
2008-07-10 17:46 ` Mike Travis
2008-07-10 17:51 ` H. Peter Anvin
2008-07-10 19:09 ` Eric W. Biederman
2008-07-10 19:18 ` Mike Travis
2008-07-10 19:32 ` H. Peter Anvin
2008-07-10 23:37 ` Mike Travis
2008-07-10 20:17 ` Eric W. Biederman
2008-07-10 20:24 ` Ingo Molnar
2008-07-10 21:33 ` Eric W. Biederman
2008-07-11 1:39 ` Mike Travis
2008-07-11 2:57 ` Eric W. Biederman
2008-07-10 0:23 ` Jeremy Fitzhardinge
2008-07-09 20:35 ` H. Peter Anvin
2008-07-09 20:39 ` Arjan van de Ven
2008-07-09 20:44 ` H. Peter Anvin
2008-07-09 20:50 ` Jeremy Fitzhardinge
2008-07-09 21:12 ` H. Peter Anvin
2008-07-09 21:26 ` Jeremy Fitzhardinge
2008-07-09 21:37 ` H. Peter Anvin
2008-07-09 22:10 ` Eric W. Biederman
2008-07-09 22:23 ` H. Peter Anvin
2008-07-09 23:54 ` Eric W. Biederman
2008-07-10 16:22 ` Mike Travis
2008-07-10 16:25 ` H. Peter Anvin
2008-07-10 16:35 ` Christoph Lameter
2008-07-10 16:39 ` H. Peter Anvin
2008-07-10 16:47 ` Christoph Lameter
2008-07-10 17:21 ` Jeremy Fitzhardinge
2008-07-10 17:31 ` Christoph Lameter
2008-07-10 17:48 ` Jeremy Fitzhardinge
2008-07-10 18:00 ` H. Peter Anvin
2008-07-10 17:20 ` Mike Travis
2008-07-10 17:07 ` Jeremy Fitzhardinge
2008-07-10 17:12 ` Christoph Lameter
2008-07-10 17:25 ` Jeremy Fitzhardinge
2008-07-10 17:34 ` Christoph Lameter
2008-07-10 17:41 ` Mike Travis
2008-07-10 18:01 ` H. Peter Anvin
2008-07-10 20:51 ` Christoph Lameter
2008-07-10 20:58 ` H. Peter Anvin
2008-07-10 21:07 ` Christoph Lameter
2008-07-10 21:11 ` H. Peter Anvin
2008-07-11 15:32 ` Christoph Lameter
2008-07-11 16:07 ` H. Peter Anvin
2008-07-11 16:57 ` Eric W. Biederman
2008-07-11 17:10 ` H. Peter Anvin
2008-07-10 21:26 ` Eric W. Biederman
2008-07-10 18:48 ` Eric W. Biederman
2008-07-10 18:54 ` Jeremy Fitzhardinge
2008-07-10 19:18 ` Eric W. Biederman
2008-07-10 19:56 ` Jeremy Fitzhardinge
2008-07-10 20:22 ` Eric W. Biederman
2008-07-10 20:54 ` Jeremy Fitzhardinge
2008-07-11 6:59 ` Rusty Russell
2008-07-10 20:25 ` Eric W. Biederman
2008-07-10 17:57 ` H. Peter Anvin
2008-07-10 18:08 ` H. Peter Anvin
2008-07-09 20:46 ` Jeremy Fitzhardinge
2008-07-09 20:14 ` Arjan van de Ven
2008-07-09 20:33 ` Eric W. Biederman
2008-07-09 21:01 ` Ingo Molnar
2008-07-09 21:39 ` Mike Travis
2008-07-09 21:47 ` Jeremy Fitzhardinge
2008-07-09 21:55 ` Eric W. Biederman
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=20080709165131.219641000@polaris-admin.engr.sgi.com \
--to=travis@sgi.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux-foundation.org \
--cc=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=steiner@sgi.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®