LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Andi Kleen <ak@suse.de> To: Zachary Amsden <zach@vmware.com>, patches@x86-64.org, linux-kernel@vger.kernel.org Subject: [PATCH x86 for review II] [32/39] x86_64: x86_64 - Fix FS/GS registers for VT execution Date: Mon, 12 Feb 2007 08:38:20 +0100 (CET) [thread overview] Message-ID: <20070212073820.7163213D7F@wotan.suse.de> (raw) In-Reply-To: <20070212837.963446000@suse.de> From: Zachary Amsden <zach@vmware.com> Initialize FS and GS to __KERNEL_DS as well. The actual value of them is not important, but it is important to reload them in protected mode. At this time, they still retain the real mode values from initial boot. VT disallows execution of code under such conditions, which means hardware virtualization can not be used to boot the kernel on Intel platforms, making the boot time painfully slow. This requires moving the GS load before the load of GS_BASE, so just move all the segments loads there to keep them together in the code. Signed-off-by: Zachary Amsden <zach@vmware.com> Signed-off-by: Andi Kleen <ak@suse.de> --- arch/x86_64/kernel/head.S | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) Index: linux/arch/x86_64/kernel/head.S =================================================================== --- linux.orig/arch/x86_64/kernel/head.S +++ linux/arch/x86_64/kernel/head.S @@ -163,6 +163,20 @@ startup_64: */ lgdt cpu_gdt_descr + /* set up data segments. actually 0 would do too */ + movl $__KERNEL_DS,%eax + movl %eax,%ds + movl %eax,%ss + movl %eax,%es + + /* + * We don't really need to load %fs or %gs, but load them anyway + * to kill any stale realmode selectors. This allows execution + * under VT hardware. + */ + movl %eax,%fs + movl %eax,%gs + /* * Setup up a dummy PDA. this is just for some early bootup code * that does in_interrupt() @@ -173,12 +187,6 @@ startup_64: shrq $32,%rdx wrmsr - /* set up data segments. actually 0 would do too */ - movl $__KERNEL_DS,%eax - movl %eax,%ds - movl %eax,%ss - movl %eax,%es - /* esi is pointer to real mode structure with interesting info. pass it to C */ movl %esi, %edi
next prev parent reply other threads:[~2007-02-12 7:45 UTC|newest] Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-02-12 7:37 [PATCH x86 for review II] [1/39] i386: move startup_32() in text.head section Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [2/39] x86_64: Break init() in two parts to avoid MODPOST warnings Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [3/39] i386: arch/i386/kernel/cpu/mcheck/mce.c should #include <asm/mce.h> Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [4/39] i386: add idle notifier Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [5/39] i386: improve sched_clock() on i686 Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [6/39] i386: romsignature/checksum cleanup Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [7/39] x86_64: Fix fake numa for x86_64 machines with big IO hole Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [8/39] x86_64: Remove fastcall references in x86_64 code Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [9/39] x86_64: Use constant instead of raw number in x86_64 ioperm.c Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [10/39] x86_64: Handle 32 bit PerfMon Counter writes cleanly in x86_64 nmi_watchdog Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [11/39] i386: Handle 32 bit PerfMon Counter writes cleanly in i386 nmi_watchdog Andi Kleen 2007-02-12 7:37 ` [PATCH x86 for review II] [12/39] i386: Handle 32 bit PerfMon Counter writes cleanly in oprofile Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [13/39] i386: CONFIG_PHYSICAL_ALIGN limited to 4M? Andi Kleen 2007-02-13 6:36 ` Rene Herman 2007-02-12 7:38 ` [PATCH x86 for review II] [14/39] x86_64: cleanup Doc/x86_64/ files Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [15/39] x86_64: list x86_64 quilt tree Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [16/39] x86: simplify notify_page_fault() Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [17/39] x86_64: Tighten mce_amd driver MSR reads Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [18/39] x86_64: Allow to run a program when a machine check event is detected Andi Kleen 2007-02-12 7:54 ` Oliver Neukum 2007-02-12 8:04 ` Andi Kleen 2007-02-12 8:11 ` Bauke Jan Douma 2007-02-12 15:05 ` [patches] " Pavel Machek 2007-02-12 7:38 ` [PATCH x86 for review II] [19/39] x86_64: remove get_pmd() Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [20/39] i386: Small cleanup to TLB flush code Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [21/39] i386: rdmsr_on_cpu, wrmsr_on_cpu Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [22/39] x86_64: Kconfig typos Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [23/39] i386: use smp_call_function_single() Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [24/39] " Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [25/39] x86_64: Fix preprocessor condition Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [26/39] i386: fix 32-bit ioctls on x64_32 Andi Kleen 2007-02-12 13:24 ` Giuliano Procida 2007-02-12 22:28 ` Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [27/39] i386: APM on i386 Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [28/39] i386: fix size_or_mask and size_and_mask Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [29/39] x86_64: - Ignore long SMI interrupts in clock calibration code - update 1 Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [30/39] x86_64: Check return value of putreg in PTRACE_SETREGS Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [31/39] x86_64: Unexport __supported_pte_mask Andi Kleen 2007-02-12 7:38 ` Andi Kleen [this message] 2007-02-12 7:38 ` [PATCH x86 for review II] [33/39] x86_64: Fix off by one error in IOMMU boundary checking Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [34/39] i386: Use stack arguments for calling into EFI Andi Kleen 2007-02-12 19:45 ` Frédéric RISS 2007-02-12 7:38 ` [PATCH x86 for review II] [35/39] x86_64: Don't reserve ROMs Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [36/39] x86_64: define dma noncoherent API functions Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [37/39] x86_64: robustify bad_dma_address handling Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [38/39] x86: fix laptop bootup hang in init_acpi() Andi Kleen 2007-02-12 7:38 ` [PATCH x86 for review II] [39/39] i386: All Transmeta CPUs have constant TSCs Andi Kleen
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=20070212073820.7163213D7F@wotan.suse.de \ --to=ak@suse.de \ --cc=linux-kernel@vger.kernel.org \ --cc=patches@x86-64.org \ --cc=zach@vmware.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: linkBe 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; as well as URLs for NNTP newsgroup(s).