All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nadav Amit <nadav.amit@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH kvm-unit-tests] i386: setup segment registers before percpu areas
Date: Wed, 24 Jun 2020 12:58:01 -0700	[thread overview]
Message-ID: <A954DB27-C5E8-435B-A1D7-76D21943F70F@gmail.com> (raw)
In-Reply-To: <20200624141429.382157-1-pbonzini@redhat.com>

> On Jun 24, 2020, at 7:14 AM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> 
> The base of the percpu area is stored in the %gs base, and writing
> to %gs destroys it.  Move setup_segments earlier, before the %gs
> base is written.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> x86/cstart.S | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/x86/cstart.S b/x86/cstart.S
> index 5ad70b5..77dc34d 100644
> --- a/x86/cstart.S
> +++ b/x86/cstart.S
> @@ -106,6 +106,7 @@ MSR_GS_BASE = 0xc0000101
> .globl start
> start:
>         mov $stacktop, %esp
> +        setup_segments
>         push %ebx
>         call setup_multiboot
>         call setup_libcflat
> @@ -118,7 +119,6 @@ start:
> 
> prepare_32:
>         lgdtl gdt32_descr
> -	setup_segments
> 
> 	mov %cr4, %eax
> 	bts $4, %eax  // pse
> — 
> 2.26.2

As I said in a different thread, this change breaks my setup. It is better
not to make any assumption (or as few as possible) about the GDT content
after boot and load the GDTR before setting up the segments. So I prefer to
load the GDT before the segments. How about this change instead of yours?

-- >8 --

From: Nadav Amit <namit@vmware.com>
Date: Wed, 24 Jun 2020 19:50:36 +0000
Subject: [PATCH] x86: load gdt while loading segments

Signed-off-by: Nadav Amit <namit@vmware.com>
---
 x86/cstart.S | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/x86/cstart.S b/x86/cstart.S
index dd33d4d..1d8b8ac 100644
--- a/x86/cstart.S
+++ b/x86/cstart.S
@@ -95,6 +95,8 @@ MSR_GS_BASE = 0xc0000101
 .endm
 
 .macro setup_segments
+	lgdtl gdt32_descr
+
 	mov $0x10, %ax
 	mov %ax, %ds
 	mov %ax, %es
@@ -106,6 +108,8 @@ MSR_GS_BASE = 0xc0000101
 .globl start
 start:
         mov $stacktop, %esp
+	setup_segments
+
         push %ebx
         call setup_multiboot
         call setup_libcflat
@@ -117,9 +121,6 @@ start:
         jmpl $8, $start32
 
 prepare_32:
-        lgdtl gdt32_descr
-	setup_segments
-
 	mov %cr4, %eax
 	bts $4, %eax  // pse
 	mov %eax, %cr4
-- 



  reply	other threads:[~2020-06-24 19:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-24 14:14 [PATCH kvm-unit-tests] i386: setup segment registers before percpu areas Paolo Bonzini
2020-06-24 19:58 ` Nadav Amit [this message]
2020-06-25  8:01   ` Paolo Bonzini
2020-06-25 11:09   ` Paolo Bonzini

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=A954DB27-C5E8-435B-A1D7-76D21943F70F@gmail.com \
    --to=nadav.amit@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.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.