From: Michael Barabanov <baraban@fsmlabs.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Robert Love <rml@tech9.net>,
manfred@colorfullife.com, linux-kernel@vger.kernel.org,
hpa@zytor.com, Victor Yodaiken <yodaiken@fsmlabs.com>
Subject: Re: Using %cr2 to reference "current"
Date: Tue, 6 Nov 2001 10:31:21 -0700 [thread overview]
Message-ID: <20011106103121.A26976@hq2> (raw)
In-Reply-To: <1005033690.808.2.camel@phantasy> <E1613t5-00005M-00@the-village.bc.nu>
In-Reply-To: <E1613t5-00005M-00@the-village.bc.nu>
Here's my version of hard cpu id (RTLinux version):
extern inline int rtl_getcpuid(void)
{
unsigned cpu;
__asm__ (
"str %%ax\n\t"
"shr $5, %%eax\n\t"
"sub $3, %%eax\n\t"
: "=a"(cpu));
return cpu;
}
No cr2 involved; extremely fast. This takes advantage of the fact that
TSS-CPU mapping is 1-1 in 2.4.
Michael.
Alan Cox (alan@lxorguk.ukuu.org.uk) wrote:
> > I too am confused. More so, the difference between hard_get_current and
> > get_current is confusing. I further question things because I suspect
>
> hard_get_current always works
> get_current assumes %cr2 is loaded correctly
>
> > do_page_fault, cpu_init" but all these functions call other functions
> > that may very well use get_current. How is this going to work?
>
> do_page_fault and cpu_init load %cr2
>
> > Further, the preemptible kernel patch oopses with this patch (IOW, don't
> > use 2.4.13-ac8 + preempt-kernel, unless you remove all these bits like I
> > did :>). I think it may be because of:
>
> You must ensure that you don't pre-empt until %cr2 is loaded. Obviously this
> isnt a problem with the traditional low latency patch but if you pre-empty
> very early in page fault handling then I suspect you might get the odd
> suprise.
>
> The reasoning behind all this is to fix the cache pessimal nature of the x86
> stack layout - we had all task structs on the same cache colour and all
> stacks aligned within pages (so every apache thread waiting at the same
> point is on the same colour too and each wait queue entry on their stacks
> is linked to entries all the same colour)
>
> Alan
next prev parent reply other threads:[~2001-11-06 17:37 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-06 7:18 Using %cr2 to reference "current" H. Peter Anvin
2001-11-06 8:01 ` Robert Love
2001-11-06 10:55 ` Alan Cox
2001-11-06 17:31 ` Michael Barabanov [this message]
2001-11-06 14:14 ` Manfred Spraul
2001-11-06 10:58 ` Alan Cox
2001-11-06 17:04 ` Linus Torvalds
2001-11-06 17:46 ` Alan Cox
2001-11-06 17:59 ` Linus Torvalds
2001-11-06 18:14 ` Alan Cox
2001-11-06 16:55 ` Marcelo Tosatti
2001-11-06 18:14 ` Linus Torvalds
2001-11-06 18:31 ` Alan Cox
2001-11-06 22:38 ` Linus Torvalds
2001-11-07 0:00 ` Martin Dalecki
2001-11-06 23:19 ` Alan Cox
2001-11-07 0:43 ` Martin Dalecki
2001-11-07 0:27 ` Alan Cox
2001-11-07 0:35 ` Jeff Garzik
2001-11-07 14:00 ` Martin Dalecki
2001-11-07 13:38 ` Alan Cox
2001-11-07 14:59 ` Martin Dalecki
2001-11-07 14:17 ` Alan Cox
2001-11-07 14:34 ` Dirk Moerenhout
2001-11-07 14:54 ` Alan Cox
2001-11-07 15:32 ` David Howells
2001-11-07 14:39 ` Intel compiler [Re: Using %cr2 to reference "current"] Sebastian Heidl
2001-11-07 22:05 ` lists
2001-11-07 15:36 ` Using %cr2 to reference "current" Martin Dalecki
2001-11-08 14:08 ` Martin Dalecki
2001-11-13 16:49 ` Merge BUG in 2.4.15-pre4 serial.c Martin Dalecki
2001-11-13 16:21 ` Russell King
2001-11-13 17:37 ` Martin Dalecki
2001-11-13 16:53 ` Russell King
2001-11-13 18:05 ` Martin Dalecki
2001-11-13 17:11 ` Alan Cox
2001-11-13 18:23 ` Martin Dalecki
2001-11-07 20:04 ` Using %cr2 to reference "current" Andrew Morton
2001-11-11 13:16 ` Martin Dalecki
2001-11-11 13:06 ` Keith Owens
2001-11-12 11:28 ` PATCH 2.4.14 mregparm=3 compilation fixes Martin Dalecki
2001-11-12 16:10 ` Keith Owens
2001-11-12 16:25 ` Christoph Hellwig
2001-11-12 17:56 ` Martin Dalecki
2001-11-12 16:42 ` Linus Torvalds
2001-11-12 18:51 ` Martin Dalecki
2001-11-12 20:05 ` Corsspatch patch-2.4.15-pre2 patch-2.4.15-pre3 Martin Dalecki
2001-11-12 20:13 ` BUG BUG hunt the bugs!!! patch-2.4.15-pre5 Martin Dalecki
2001-11-06 17:02 ` Using %cr2 to reference "current" Linus Torvalds
2001-11-06 17:13 ` Benjamin LaHaise
2001-11-06 17:49 ` Linus Torvalds
2001-11-06 18:19 ` Alan Cox
2001-11-09 21:52 ` Jamie Lokier
2001-11-06 18:42 ` Benjamin LaHaise
2001-11-06 19:09 ` H. Peter Anvin
2001-11-06 19:16 ` Dave Jones
2001-11-06 20:10 ` Ricky Beam
2001-11-06 23:09 ` Alan Cox
2001-11-06 23:15 ` Dave Jones
-- strict thread matches above, loose matches on Subject: below --
2001-11-06 22:05 Mikael Pettersson
2002-11-10 21:23 Igor Levicki
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=20011106103121.A26976@hq2 \
--to=baraban@fsmlabs.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=manfred@colorfullife.com \
--cc=rml@tech9.net \
--cc=yodaiken@fsmlabs.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 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.