All of lore.kernel.org
 help / color / mirror / Atom feed
From: Magnus Damm <magnus@valinux.co.jp>
To: Andi Kleen <ak@suse.de>
Cc: Magnus Damm <magnus.damm@gmail.com>,
	fastboot@lists.osdl.org, linux-kernel@vger.kernel.org,
	ebiederm@xmission.com
Subject: Re: [Fastboot] [PATCH][RFC] x86_64: Reload CS when startup_64 is used.
Date: Tue, 22 Aug 2006 09:47:08 +0900	[thread overview]
Message-ID: <1156207628.21411.78.camel@localhost> (raw)
In-Reply-To: <200608211616.50387.ak@suse.de>

On Mon, 2006-08-21 at 16:16 +0200, Andi Kleen wrote:
> On Monday 21 August 2006 15:29, Magnus Damm wrote:
> > On 8/21/06, Andi Kleen <ak@suse.de> wrote:
> > >
> > > >
> > > > +     /* Reload CS with a value that is within our GDT. We need to do this
> > > > +      * if we were loaded by a 64 bit bootloader that happened to use a
> > > > +      * CS that is larger than the GDT limit. This is true if we came here
> > > > +      * from kexec running under Xen.
> > > > +      */
> > > > +     movq    %rsp, %rdx
> > > > +     movq    $__KERNEL_DS, %rax
> > > > +     pushq   %rax /* SS */
> > > > +     pushq   %rdx /* RSP */
> > > > +     movq    $__KERNEL_CS, %rax
> > > > +     movq    $cs_reloaded, %rdx
> > > > +     pushq   %rax /* CS */
> > > > +     pushq   %rdx /* RIP */
> > > > +     lretq
> > >
> > > Can't you just use a normal far jump? That might be simpler.
> > 
> > I couldn't find a far jump that took a 64-bit address to jump to. But
> > I guess that the kernel will be loaded in the lowest 4G regardless so
> > I guess 32-bit pointers are ok, right? That will make it simpler for
> > sure.
> 
> Yes, that code always runs in the identity mapping and at 2MB.
> 
> > 
> > What do you think about reloading CS? Is it the right thing to do, or
> > is it correct as it is today where we depend on that CS == _KERNEL_CS?
> > I need to fix kexec-tools regardless, but maybe it is a good idea to
> > make the 64-bit kernel boot a bit robust too.
> 
> Reloading CS is ok, although longer term I plan to switch the kernel
> to uncompress already in 64bit. Then you would need the same GDT anyways.

I think reloading CS is the right thing to do. IMO it is not sane to
depend on that the 64-bit boot loader sets up CS to 0x18 for us.

Having a dependency like that (unless there is a good reason and it is
documented somehow) is good to avoid, regardless of 64-bit uncompress or
not. I mean, if you plan on making the bzImage code 64-bit then it needs
to reload CS too, right?

Thanks,

/ magnus


  reply	other threads:[~2006-08-22  0:46 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-21  9:54 [PATCH][RFC] x86_64: Reload CS when startup_64 is used Magnus Damm
2006-08-21 10:19 ` Andi Kleen
2006-08-21 13:29   ` [Fastboot] " Magnus Damm
2006-08-21 14:16     ` Andi Kleen
2006-08-22  0:47       ` Magnus Damm [this message]
2006-08-21 14:17     ` Vivek Goyal
2006-08-21 14:24       ` Andi Kleen
2006-08-21 14:46         ` Vivek Goyal
2006-08-21 15:04           ` Andi Kleen
2006-08-21 20:02             ` Eric W. Biederman
2006-08-21 20:10               ` Andi Kleen
2006-08-21 21:00                 ` Eric W. Biederman
2006-08-21 21:02 ` Eric W. Biederman
2006-08-22  0:58   ` Magnus Damm
2006-08-22  3:41     ` Eric W. Biederman
2006-08-22  4:10       ` Magnus Damm
2006-08-22  8:03       ` Andi Kleen
2006-08-22  8:37         ` [PATCH] " Eric W. Biederman
2006-08-22  8:53           ` [Fastboot] " Magnus Damm
2006-08-22  9:25             ` Eric W. Biederman
2006-08-23  3:10               ` Magnus Damm
2006-08-22  9:01           ` Andi Kleen
2006-08-22  9:20             ` 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=1156207628.21411.78.camel@localhost \
    --to=magnus@valinux.co.jp \
    --cc=ak@suse.de \
    --cc=ebiederm@xmission.com \
    --cc=fastboot@lists.osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=magnus.damm@gmail.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.