Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-09 Thread Avi Kivity

Zachary Amsden wrote:

Avi Kivity wrote:


We haven't seen any issue with the 2.6.22 boot decompressor.  Which 
of the four (fs, gs, ldt, or tr) were proving problematic and why?


It was tr that was affecting Workstation, since we boot through normal 
BIOS path, and only a 16-bit task was loaded at this point.




Ah.  Maybe we didn't have an exit while we were in long mode with the 
16-bit tss, so VT didn't notice the illegal combination.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-09 Thread Zachary Amsden

Avi Kivity wrote:


We haven't seen any issue with the 2.6.22 boot decompressor.  Which of 
the four (fs, gs, ldt, or tr) were proving problematic and why?


It was tr that was affecting Workstation, since we boot through normal 
BIOS path, and only a 16-bit task was loaded at this point.


Just to make the state comprehensive, I opted to reload everything.

Zach
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-09 Thread Avi Kivity

Zachary Amsden wrote:


Since I was just involved in the boot decompressor for another bug, I 
took a look at this.  2.6.22 switches it to be 64-bit code.  VT is 
very picky about what state it can run in.  Not using VT on Intel 
64-bit hardware cripples performance, running at far below normal 
speed, and taking minutes to decompress the kernel, which is nearly 
instantaneous otherwise.


To get back into VT in this case, not only do we need to load FS and 
GS, we also need to setup an initial LDT and task.  Can you try the 
attached patch and see that it does the right thing?


I've also cc'd the KVM developers, as the same problem will affect 
them, and hopefully the same patch will fix it.




We haven't seen any issue with the 2.6.22 boot decompressor.  Which of 
the four (fs, gs, ldt, or tr) were proving problematic and why?



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-09 Thread Avi Kivity

Zachary Amsden wrote:


Since I was just involved in the boot decompressor for another bug, I 
took a look at this.  2.6.22 switches it to be 64-bit code.  VT is 
very picky about what state it can run in.  Not using VT on Intel 
64-bit hardware cripples performance, running at far below normal 
speed, and taking minutes to decompress the kernel, which is nearly 
instantaneous otherwise.


To get back into VT in this case, not only do we need to load FS and 
GS, we also need to setup an initial LDT and task.  Can you try the 
attached patch and see that it does the right thing?


I've also cc'd the KVM developers, as the same problem will affect 
them, and hopefully the same patch will fix it.




We haven't seen any issue with the 2.6.22 boot decompressor.  Which of 
the four (fs, gs, ldt, or tr) were proving problematic and why?



-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-09 Thread Zachary Amsden

Avi Kivity wrote:


We haven't seen any issue with the 2.6.22 boot decompressor.  Which of 
the four (fs, gs, ldt, or tr) were proving problematic and why?


It was tr that was affecting Workstation, since we boot through normal 
BIOS path, and only a 16-bit task was loaded at this point.


Just to make the state comprehensive, I opted to reload everything.

Zach
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-09 Thread Avi Kivity

Zachary Amsden wrote:

Avi Kivity wrote:


We haven't seen any issue with the 2.6.22 boot decompressor.  Which 
of the four (fs, gs, ldt, or tr) were proving problematic and why?


It was tr that was affecting Workstation, since we boot through normal 
BIOS path, and only a 16-bit task was loaded at this point.




Ah.  Maybe we didn't have an exit while we were in long mode with the 
16-bit tss, so VT didn't notice the illegal combination.

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-04 Thread Gabriel Barazer

On 08/04/2007 6:23:00 PM +0200, Zachary Amsden <[EMAIL PROTECTED]> wrote:

Gabriel Barazer wrote:

Hi,

After upgrading kernel to 2.6.22 on a Vmware workstation guest version 
5.5 and 6 , the kernel decompression stage ("Decompressing Linux...") 
is hanging for a very long time (~5 minutes) before finally  
succeeding (displaying "done.\nBooting the kernel.\n"). During this 
time, the VM process is eating all the CPU time during the 
decompression, like an infinite loop.
Between these 2 strings is the gunzip() function at 
boot/compressed/misc.c which does the real job, and the problem seemed 
to appear since commit 1ab60e0f72f71ec54831e525a3e1154f1c092408. 
(2.6.22-rc1 hangs, 2.6.21.6 works). The problem occurs with or without 
CONFIG_RELOCATABLE enabled.


What are the possible solutions to confirm where the problem is coming 
from ?


Since I was just involved in the boot decompressor for another bug, I 
took a look at this.  2.6.22 switches it to be 64-bit code.  VT is very 
picky about what state it can run in.  Not using VT on Intel 64-bit 
hardware cripples performance, running at far below normal speed, and 
taking minutes to decompress the kernel, which is nearly instantaneous 
otherwise.


To get back into VT in this case, not only do we need to load FS and GS, 
we also need to setup an initial LDT and task.  Can you try the attached 
patch and see that it does the right thing?


It Works (tm) ! Tried compiling with and without the patch, with exactly 
the same config, just to be sure. Decompressing the kernel is now 
lightning fast.


Thanks !

I've also cc'd the KVM developers, as the same problem will affect them, 
and hopefully the same patch will fix it.
VT is very picky about when it can enter execution.
Get all segments setup and get LDT and TR into valid state to allow
VT execution under VMware and KVM (untested).

This makes the boot decompression run under VT, which makes it several
orders of magnitude faster on 64-bit Intel hardware.

Before, I was seeing times up to a minute or more to decompress a 1.3MB kernel
on a very fast box.

Signed-off-by: Zachary Amsden <[EMAIL PROTECTED]>


===
--- a/arch/x86_64/boot/compressed/head.S
+++ a/arch/x86_64/boot/compressed/head.S
@@ -195,6 +195,11 @@
 	movl	%eax, %ds
 	movl	%eax, %es
 	movl	%eax, %ss
+	movl	%eax, %fs
+	movl	%eax, %gs
+	lldt	%ax
+	movl$0x20, %eax
+	ltr	%ax
 
 	/* Compute the decompressed kernel start address.  It is where
 	 * we were loaded at aligned to a 2M boundary. %rbp contains the
@@ -295,6 +300,8 @@
 	.quad	0x	/* NULL descriptor */
 	.quad	0x00af9a00	/* __KERNEL_CS */
 	.quad	0x00cf9200	/* __KERNEL_DS */
+	.quad	0x00808900	/* TS descriptor */
+	.quad   0x	/* TS continued */
 gdt_end:
 	.bss
 /* Stack for uncompression */


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-04 Thread Zachary Amsden

Gabriel Barazer wrote:

Hi,

After upgrading kernel to 2.6.22 on a Vmware workstation guest version 
5.5 and 6 , the kernel decompression stage ("Decompressing Linux...") 
is hanging for a very long time (~5 minutes) before finally  
succeeding (displaying "done.\nBooting the kernel.\n"). During this 
time, the VM process is eating all the CPU time during the 
decompression, like an infinite loop.
Between these 2 strings is the gunzip() function at 
boot/compressed/misc.c which does the real job, and the problem seemed 
to appear since commit 1ab60e0f72f71ec54831e525a3e1154f1c092408. 
(2.6.22-rc1 hangs, 2.6.21.6 works). The problem occurs with or without 
CONFIG_RELOCATABLE enabled.


What are the possible solutions to confirm where the problem is coming 
from ?


Since I was just involved in the boot decompressor for another bug, I 
took a look at this.  2.6.22 switches it to be 64-bit code.  VT is very 
picky about what state it can run in.  Not using VT on Intel 64-bit 
hardware cripples performance, running at far below normal speed, and 
taking minutes to decompress the kernel, which is nearly instantaneous 
otherwise.


To get back into VT in this case, not only do we need to load FS and GS, 
we also need to setup an initial LDT and task.  Can you try the attached 
patch and see that it does the right thing?


I've also cc'd the KVM developers, as the same problem will affect them, 
and hopefully the same patch will fix it.


Thanks, Zach

Zach
VT is very picky about when it can enter execution.
Get all segments setup and get LDT and TR into valid state to allow
VT execution under VMware and KVM (untested).

This makes the boot decompression run under VT, which makes it several
orders of magnitude faster on 64-bit Intel hardware.

Before, I was seeing times up to a minute or more to decompress a 1.3MB kernel
on a very fast box.

Signed-off-by: Zachary Amsden <[EMAIL PROTECTED]>


===
--- a/arch/x86_64/boot/compressed/head.S
+++ a/arch/x86_64/boot/compressed/head.S
@@ -195,6 +195,11 @@
 	movl	%eax, %ds
 	movl	%eax, %es
 	movl	%eax, %ss
+	movl	%eax, %fs
+	movl	%eax, %gs
+	lldt	%ax
+	movl$0x20, %eax
+	ltr	%ax
 
 	/* Compute the decompressed kernel start address.  It is where
 	 * we were loaded at aligned to a 2M boundary. %rbp contains the
@@ -295,6 +300,8 @@
 	.quad	0x	/* NULL descriptor */
 	.quad	0x00af9a00	/* __KERNEL_CS */
 	.quad	0x00cf9200	/* __KERNEL_DS */
+	.quad	0x00808900	/* TS descriptor */
+	.quad   0x	/* TS continued */
 gdt_end:
 	.bss
 /* Stack for uncompression */


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-04 Thread Zachary Amsden

Gabriel Barazer wrote:

Hi,

After upgrading kernel to 2.6.22 on a Vmware workstation guest version 
5.5 and 6 , the kernel decompression stage (Decompressing Linux...) 
is hanging for a very long time (~5 minutes) before finally  
succeeding (displaying done.\nBooting the kernel.\n). During this 
time, the VM process is eating all the CPU time during the 
decompression, like an infinite loop.
Between these 2 strings is the gunzip() function at 
boot/compressed/misc.c which does the real job, and the problem seemed 
to appear since commit 1ab60e0f72f71ec54831e525a3e1154f1c092408. 
(2.6.22-rc1 hangs, 2.6.21.6 works). The problem occurs with or without 
CONFIG_RELOCATABLE enabled.


What are the possible solutions to confirm where the problem is coming 
from ?


Since I was just involved in the boot decompressor for another bug, I 
took a look at this.  2.6.22 switches it to be 64-bit code.  VT is very 
picky about what state it can run in.  Not using VT on Intel 64-bit 
hardware cripples performance, running at far below normal speed, and 
taking minutes to decompress the kernel, which is nearly instantaneous 
otherwise.


To get back into VT in this case, not only do we need to load FS and GS, 
we also need to setup an initial LDT and task.  Can you try the attached 
patch and see that it does the right thing?


I've also cc'd the KVM developers, as the same problem will affect them, 
and hopefully the same patch will fix it.


Thanks, Zach

Zach
VT is very picky about when it can enter execution.
Get all segments setup and get LDT and TR into valid state to allow
VT execution under VMware and KVM (untested).

This makes the boot decompression run under VT, which makes it several
orders of magnitude faster on 64-bit Intel hardware.

Before, I was seeing times up to a minute or more to decompress a 1.3MB kernel
on a very fast box.

Signed-off-by: Zachary Amsden [EMAIL PROTECTED]


===
--- a/arch/x86_64/boot/compressed/head.S
+++ a/arch/x86_64/boot/compressed/head.S
@@ -195,6 +195,11 @@
 	movl	%eax, %ds
 	movl	%eax, %es
 	movl	%eax, %ss
+	movl	%eax, %fs
+	movl	%eax, %gs
+	lldt	%ax
+	movl$0x20, %eax
+	ltr	%ax
 
 	/* Compute the decompressed kernel start address.  It is where
 	 * we were loaded at aligned to a 2M boundary. %rbp contains the
@@ -295,6 +300,8 @@
 	.quad	0x	/* NULL descriptor */
 	.quad	0x00af9a00	/* __KERNEL_CS */
 	.quad	0x00cf9200	/* __KERNEL_DS */
+	.quad	0x00808900	/* TS descriptor */
+	.quad   0x	/* TS continued */
 gdt_end:
 	.bss
 /* Stack for uncompression */


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-08-04 Thread Gabriel Barazer

On 08/04/2007 6:23:00 PM +0200, Zachary Amsden [EMAIL PROTECTED] wrote:

Gabriel Barazer wrote:

Hi,

After upgrading kernel to 2.6.22 on a Vmware workstation guest version 
5.5 and 6 , the kernel decompression stage (Decompressing Linux...) 
is hanging for a very long time (~5 minutes) before finally  
succeeding (displaying done.\nBooting the kernel.\n). During this 
time, the VM process is eating all the CPU time during the 
decompression, like an infinite loop.
Between these 2 strings is the gunzip() function at 
boot/compressed/misc.c which does the real job, and the problem seemed 
to appear since commit 1ab60e0f72f71ec54831e525a3e1154f1c092408. 
(2.6.22-rc1 hangs, 2.6.21.6 works). The problem occurs with or without 
CONFIG_RELOCATABLE enabled.


What are the possible solutions to confirm where the problem is coming 
from ?


Since I was just involved in the boot decompressor for another bug, I 
took a look at this.  2.6.22 switches it to be 64-bit code.  VT is very 
picky about what state it can run in.  Not using VT on Intel 64-bit 
hardware cripples performance, running at far below normal speed, and 
taking minutes to decompress the kernel, which is nearly instantaneous 
otherwise.


To get back into VT in this case, not only do we need to load FS and GS, 
we also need to setup an initial LDT and task.  Can you try the attached 
patch and see that it does the right thing?


It Works (tm) ! Tried compiling with and without the patch, with exactly 
the same config, just to be sure. Decompressing the kernel is now 
lightning fast.


Thanks !

I've also cc'd the KVM developers, as the same problem will affect them, 
and hopefully the same patch will fix it.
VT is very picky about when it can enter execution.
Get all segments setup and get LDT and TR into valid state to allow
VT execution under VMware and KVM (untested).

This makes the boot decompression run under VT, which makes it several
orders of magnitude faster on 64-bit Intel hardware.

Before, I was seeing times up to a minute or more to decompress a 1.3MB kernel
on a very fast box.

Signed-off-by: Zachary Amsden [EMAIL PROTECTED]


===
--- a/arch/x86_64/boot/compressed/head.S
+++ a/arch/x86_64/boot/compressed/head.S
@@ -195,6 +195,11 @@
 	movl	%eax, %ds
 	movl	%eax, %es
 	movl	%eax, %ss
+	movl	%eax, %fs
+	movl	%eax, %gs
+	lldt	%ax
+	movl$0x20, %eax
+	ltr	%ax
 
 	/* Compute the decompressed kernel start address.  It is where
 	 * we were loaded at aligned to a 2M boundary. %rbp contains the
@@ -295,6 +300,8 @@
 	.quad	0x	/* NULL descriptor */
 	.quad	0x00af9a00	/* __KERNEL_CS */
 	.quad	0x00cf9200	/* __KERNEL_DS */
+	.quad	0x00808900	/* TS descriptor */
+	.quad   0x	/* TS continued */
 gdt_end:
 	.bss
 /* Stack for uncompression */


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-07-25 Thread Zachary Amsden

Gabriel Barazer wrote:

Hi,

After upgrading kernel to 2.6.22 on a Vmware workstation guest version 
5.5 and 6 , the kernel decompression stage ("Decompressing Linux...") 
is hanging for a very long time (~5 minutes) before finally  
succeeding (displaying "done.\nBooting the kernel.\n"). During this 
time, the VM process is eating all the CPU time during the 
decompression, like an infinite loop. 


LKML is not the right place for this question.  You are running on Intel 
hardware?


Bring the discussion over to http://www.vmware.com/community forums

Zach
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.22 x86_64 : kernel initial decompression hangs on vmware

2007-07-25 Thread Zachary Amsden

Gabriel Barazer wrote:

Hi,

After upgrading kernel to 2.6.22 on a Vmware workstation guest version 
5.5 and 6 , the kernel decompression stage (Decompressing Linux...) 
is hanging for a very long time (~5 minutes) before finally  
succeeding (displaying done.\nBooting the kernel.\n). During this 
time, the VM process is eating all the CPU time during the 
decompression, like an infinite loop. 


LKML is not the right place for this question.  You are running on Intel 
hardware?


Bring the discussion over to http://www.vmware.com/community forums

Zach
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/