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
--
next prev parent 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.