Roger Cruz
2010-Aug-03 19:06 UTC
[Xen-devel] Problems booting Xen on Toshiba Satellite L505
I have tried Xen-3.4.2 and Xen-4.1-unstable on a new i3 Toshiba Satellite L505 and with both versions, I get a blinking cursor upon boot. I used the code from 3.4.2 to narrow down the problem to this section of code in x86_64.S /* Initialise IDT with simple error defaults. */ leaq ignore_int(%rip),%rcx movl %ecx,%eax andl $0xFFFF0000,%eax orl $0x00008E00,%eax shlq $32,%rax movl %ecx,%edx andl $0x0000FFFF,%edx orl $(__HYPERVISOR_CS64<<16),%edx orq %rdx,%rax shrq $32,%rcx movl %ecx,%edx leaq idt_table(%rip),%rdi movl $256,%ecx 1: movq %rax,(%rdi) movq %rdx,8(%rdi) addq $16,%rdi loop 1b The code never gets out of the loop to execute the following lines: /* Pass off the Multiboot info structure to C land. */ mov multiboot_ptr(%rip),%edi call __start_xen By playing around with the loop counter in ECX, I determined that loading vectors 0-6 works (ie, it gets out of the loop)... but as soon as vector 7 is written, we never get out of the loop and I get a blinking cursor. Does anyone have any ideas or suggestions? Thanks Roger R. Cruz _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2010-Aug-03 20:01 UTC
Re: [Xen-devel] Problems booting Xen on Toshiba Satellite L505
On 03/08/2010 20:06, "Roger Cruz" <roger.cruz@virtualcomputer.com> wrote:> > > I have tried Xen-3.4.2 and Xen-4.1-unstable on a new i3 Toshiba Satellite L505 > and with both versions, I get a blinking cursor upon boot. I used the code > from 3.4.2 to narrow down the problem to this section of code in x86_64.SNever heard of anything like this. You''ll have to fiddle around some more I''m afraid. Can you get any output onto the screen before this point, and maybe get some debug tracing out that way... Does everything work okay if you get out of the loop? Vector 7 is device-not-available, so could be FPU related perhaps. K.> /* Initialise IDT with simple error defaults. */ > leaq ignore_int(%rip),%rcx > movl %ecx,%eax > andl $0xFFFF0000,%eax > orl $0x00008E00,%eax > shlq $32,%rax > movl %ecx,%edx > andl $0x0000FFFF,%edx > orl $(__HYPERVISOR_CS64<<16),%edx > orq %rdx,%rax > shrq $32,%rcx > movl %ecx,%edx > leaq idt_table(%rip),%rdi > movl $256,%ecx > 1: movq %rax,(%rdi) > movq %rdx,8(%rdi) > addq $16,%rdi > loop 1b > > The code never gets out of the loop to execute the following lines: > > /* Pass off the Multiboot info structure to C land. */ > mov multiboot_ptr(%rip),%edi > call __start_xen > > By playing around with the loop counter in ECX, I determined that loading > vectors 0-6 works (ie, it gets out of the loop)... but as soon as vector 7 is > written, we never get out of the loop and I get a blinking cursor. Does > anyone have any ideas or suggestions? > > Thanks > > Roger R. Cruz > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Roger Cruz
2010-Aug-03 20:26 UTC
RE: [Xen-devel] Problems booting Xen on Toshiba Satellite L505
There is no output at this point. The only output before is when we are in real-mode and I purposely used the vga boot option with an illegal value. This allows me to then see the list of valid values and enter one. After that point, the code switches from real to protected mode. Based on my level of understanding, in order to make further BIOS calls to print anything to the screen, I would have to switch to real mode and then back to protected. I would probably spend a lot of time trying to get that part right so right now I''m simply using a "ud2" instruction to cause a reboot. I move that instruction around the code and that is how I managed to narrow down the problem to the IDT initialization. I''ll continue to play with this but I only have the laptop for one more day, so if anyone else has suggestions, I''m all ears. Thanks for your help Keir. Roger R. Cruz -----Original Message----- From: Keir Fraser [mailto:keir.fraser@eu.citrix.com] Sent: Tue 8/3/2010 4:01 PM To: Roger Cruz; xen-devel@lists.xensource.com Subject: Re: [Xen-devel] Problems booting Xen on Toshiba Satellite L505 On 03/08/2010 20:06, "Roger Cruz" <roger.cruz@virtualcomputer.com> wrote:> > > I have tried Xen-3.4.2 and Xen-4.1-unstable on a new i3 Toshiba Satellite L505 > and with both versions, I get a blinking cursor upon boot. I used the code > from 3.4.2 to narrow down the problem to this section of code in x86_64.SNever heard of anything like this. You''ll have to fiddle around some more I''m afraid. Can you get any output onto the screen before this point, and maybe get some debug tracing out that way... Does everything work okay if you get out of the loop? Vector 7 is device-not-available, so could be FPU related perhaps. K.> /* Initialise IDT with simple error defaults. */ > leaq ignore_int(%rip),%rcx > movl %ecx,%eax > andl $0xFFFF0000,%eax > orl $0x00008E00,%eax > shlq $32,%rax > movl %ecx,%edx > andl $0x0000FFFF,%edx > orl $(__HYPERVISOR_CS64<<16),%edx > orq %rdx,%rax > shrq $32,%rcx > movl %ecx,%edx > leaq idt_table(%rip),%rdi > movl $256,%ecx > 1: movq %rax,(%rdi) > movq %rdx,8(%rdi) > addq $16,%rdi > loop 1b > > The code never gets out of the loop to execute the following lines: > > /* Pass off the Multiboot info structure to C land. */ > mov multiboot_ptr(%rip),%edi > call __start_xen > > By playing around with the loop counter in ECX, I determined that loading > vectors 0-6 works (ie, it gets out of the loop)... but as soon as vector 7 is > written, we never get out of the loop and I get a blinking cursor. Does > anyone have any ideas or suggestions? > > Thanks > > Roger R. Cruz > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2010-Aug-03 21:38 UTC
Re: [Xen-devel] Problems booting Xen on Toshiba Satellite L505
On 03/08/2010 21:26, "Roger Cruz" <roger.cruz@virtualcomputer.com> wrote:> > > There is no output at this point. The only output before is when we are in > real-mode and I purposely used the vga boot option with an illegal value. > This allows me to then see the list of valid values and enter one. After that > point, the code switches from real to protected mode. Based on my level of > understanding, in order to make further BIOS calls to print anything to the > screen, I would have to switch to real mode and then back to protected. I > would probably spend a lot of time trying to get that part right so right now > I''m simply using a "ud2" instruction to cause a reboot. I move that > instruction around the code and that is how I managed to narrow down the > problem to the IDT initialization.You should be able to dump characters out to a graphics card in text mode. See the code at label ''print_err'' in head.S for example. -- Keir> I''ll continue to play with this but I only have the laptop for one more day, > so if anyone else has suggestions, I''m all ears. > > Thanks for your help Keir. > > Roger R. Cruz > > -----Original Message----- > From: Keir Fraser [mailto:keir.fraser@eu.citrix.com] > Sent: Tue 8/3/2010 4:01 PM > To: Roger Cruz; xen-devel@lists.xensource.com > Subject: Re: [Xen-devel] Problems booting Xen on Toshiba Satellite L505 > > On 03/08/2010 20:06, "Roger Cruz" <roger.cruz@virtualcomputer.com> wrote: > >> >> >> I have tried Xen-3.4.2 and Xen-4.1-unstable on a new i3 Toshiba Satellite >> L505 >> and with both versions, I get a blinking cursor upon boot. I used the code >> from 3.4.2 to narrow down the problem to this section of code in x86_64.S > > Never heard of anything like this. You''ll have to fiddle around some more > I''m afraid. Can you get any output onto the screen before this point, and > maybe get some debug tracing out that way... Does everything work okay if > you get out of the loop? Vector 7 is device-not-available, so could be FPU > related perhaps. > > K. > >> /* Initialise IDT with simple error defaults. */ >> leaq ignore_int(%rip),%rcx >> movl %ecx,%eax >> andl $0xFFFF0000,%eax >> orl $0x00008E00,%eax >> shlq $32,%rax >> movl %ecx,%edx >> andl $0x0000FFFF,%edx >> orl $(__HYPERVISOR_CS64<<16),%edx >> orq %rdx,%rax >> shrq $32,%rcx >> movl %ecx,%edx >> leaq idt_table(%rip),%rdi >> movl $256,%ecx >> 1: movq %rax,(%rdi) >> movq %rdx,8(%rdi) >> addq $16,%rdi >> loop 1b >> >> The code never gets out of the loop to execute the following lines: >> >> /* Pass off the Multiboot info structure to C land. */ >> mov multiboot_ptr(%rip),%edi >> call __start_xen >> >> By playing around with the loop counter in ECX, I determined that loading >> vectors 0-6 works (ie, it gets out of the loop)... but as soon as vector 7 is >> written, we never get out of the loop and I get a blinking cursor. Does >> anyone have any ideas or suggestions? >> >> Thanks >> >> Roger R. Cruz >> >> > > > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Roger Cruz
2010-Aug-04 19:09 UTC
RE: [Xen-devel] Problems booting Xen on Toshiba Satellite L505
This turned out to be a buggy BIOS on these Toshiba laptops. There is a work-around in the Ubuntu forums which fixes it. Thanks for your help Keir. http://ubuntuforums.org/showthread.php?t=1470732&page=2 http://kerneltrap.org/mailarchive/git-commits-head/2010/5/20/34989 Roger R. Cruz -----Original Message----- From: Keir Fraser [mailto:keir.fraser@eu.citrix.com] Sent: Tue 8/3/2010 4:01 PM To: Roger Cruz; xen-devel@lists.xensource.com Subject: Re: [Xen-devel] Problems booting Xen on Toshiba Satellite L505 On 03/08/2010 20:06, "Roger Cruz" <roger.cruz@virtualcomputer.com> wrote:> > > I have tried Xen-3.4.2 and Xen-4.1-unstable on a new i3 Toshiba Satellite L505 > and with both versions, I get a blinking cursor upon boot. I used the code > from 3.4.2 to narrow down the problem to this section of code in x86_64.SNever heard of anything like this. You''ll have to fiddle around some more I''m afraid. Can you get any output onto the screen before this point, and maybe get some debug tracing out that way... Does everything work okay if you get out of the loop? Vector 7 is device-not-available, so could be FPU related perhaps. K.> /* Initialise IDT with simple error defaults. */ > leaq ignore_int(%rip),%rcx > movl %ecx,%eax > andl $0xFFFF0000,%eax > orl $0x00008E00,%eax > shlq $32,%rax > movl %ecx,%edx > andl $0x0000FFFF,%edx > orl $(__HYPERVISOR_CS64<<16),%edx > orq %rdx,%rax > shrq $32,%rcx > movl %ecx,%edx > leaq idt_table(%rip),%rdi > movl $256,%ecx > 1: movq %rax,(%rdi) > movq %rdx,8(%rdi) > addq $16,%rdi > loop 1b > > The code never gets out of the loop to execute the following lines: > > /* Pass off the Multiboot info structure to C land. */ > mov multiboot_ptr(%rip),%edi > call __start_xen > > By playing around with the loop counter in ECX, I determined that loading > vectors 0-6 works (ie, it gets out of the loop)... but as soon as vector 7 is > written, we never get out of the loop and I get a blinking cursor. Does > anyone have any ideas or suggestions? > > Thanks > > Roger R. Cruz > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel