> I have tried to add "-B ata-dma-enabled=0", then
> previous warnning has disappeared, but one new issue
>  appears: the guest will reboot again and again. 
> I got following message from screen:
> 
> panic[cpu0]/thread=f502c360: Processor does not support PAE
> 
> f50574dc unix:mmu_init+380 (0, f4c00010, f502ba)
> f5057528 unix:startup_memlist+da (f5057540, f4d38b9a, )
> f5057530 unix:startup+26 (f4c00010, f50532c8, )
> f5057540 genunix:main+1e ()

Are you sure that the "-B ata-dma-enabled=0" kernel
argument affects whether or not you get that "Processor
does not support PAE" panic ?   Are you trying to 
boot a PV or a HVM domain?  

The ata driver timeout warnings should be printed
much later, when the root filesystem is going to be
mounted.

The above "Processor does not support PAE" panic
should happen much earlier, before the root filesystem
gets mounted.  So I don't expect that
"-B ata-dma-enabled=0"  affects the panic from mmu_init().


What kind of processor is installed in your system?

Problem under Xen seems to be that the hypervisor
was compiled to emulate a 3-level mmu (similar to an 
x86 cpu with PAE support), the Solaris kernel has 
already decided to use the 3-level code, but later on
in mmu_init() checks whether the processor's CPUID
instruction reports the presence of the PAE mmu
feature.  With old processors (Pentium-M, Pentium-II,
old AMD Athlons) the PAE mmu feature isn't present.

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/i86pc/vm/hat_i86.c#526

    526         if (mmu.pae_hat && (x86_feature & X86_PAE) == 0)
    527                 panic("Processor does not support PAE");

IMO, under the hypervisor we shouldn't panic here.

For my Tecra S1 laptop with Pentium-M cpu (which has no PAE
support), I've changed that panic into a cmn_err warning and
just continue.  Works just fine, both for an OpenSolaris dom0 and
OpenSolaris PV domUs.


The other option is to compile and install a new xen hypervisor
which has the 3-level mmu support removed.


For a quick test you can also try to boot Solaris under debugger
control and patch out that "(x86_feature & X86_PAE) == 0" test.
Boot the kernel with options "-kd", disassemble the code at
location "mmu_init+13f":

[0]> mmu_init+13f::dis
mmu_init+0xfd:                  cmpl   $0x0,0xf502c06c  <mmu+0x34>
mmu_init+0x104:                 jne    +0x25    <mmu_init+0x12b>
mmu_init+0x106:                 cmpl   $0x20,%ebx
mmu_init+0x109:                 jbe    +0xa     <mmu_init+0x115>
mmu_init+0x10b:                 movl   $0xfffff,0xf502c048      <mmu+0x10>
mmu_init+0x115:                 movl   $0x4,0xf502c088  <mmu+0x50>
mmu_init+0x11f:                 movl   $0x2,0xf502c08c  <mmu+0x54>
mmu_init+0x129:                 jmp    +0x24    <mmu_init+0x14f>
mmu_init+0x12b:                 movl   $0x8,0xf502c088  <mmu+0x50>
mmu_init+0x135:                 movl   $0x3,0xf502c08c  <mmu+0x54>
mmu_init+0x13f:                 movl   0xf5000774,%eax  <x86_feature>     
<<<<<<<<<<<<<<<<
mmu_init+0x144:                 andl   $0x200,%eax                              
    <<<<<<<<<<<<<<<<
mmu_init+0x149:                 je     +0x227   <mmu_init+0x376>              
<<<<<<<<<<<<<<<<
mmu_init+0x14f:                 movl   0xf5000774,%eax  <x86_feature>
mmu_init+0x154:                 andl   $0x400,%eax
mmu_init+0x159:                 je     +0x229   <mmu_init+0x388>
mmu_init+0x15f:                 cmpl   $0x0,0xf5000a48  <kbm_largepage_support>
mmu_init+0x166:                 jne    +0xe     <mmu_init+0x176>
mmu_init+0x168:                 xorl   %eax,%eax
mmu_init+0x16a:                 movl   %eax,0xf502c054  <mmu+0x1c>
mmu_init+0x16f:                 movl   %eax,0xf502c058  <mmu+0x20>


Changing that "andl   $0x200,%eax" at "mmu_init+0x144"
into an "orl $0x200,%eax" would we a way to disable the
X86_PAE feature test:

[0]> mmu_init+0x144?w d
mmu_init+0x144: 0x25    =       0xd

[0]> mmu_init+0x13f::dis
...
mmu_init+0x13f:                 movl   0xf5000774,%eax  <x86_feature>
mmu_init+0x144:                 orl    $0x200,%eax
mmu_init+0x149:                 je     +0x227   <mmu_init+0x376>

...


Now try to start the kernel with the "::cont" command:

[0]> ::cont
 
 
This message posted from opensolaris.org
_______________________________________________
xen-discuss mailing list
[email protected]

Reply via email to