<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="gmail_quote"><div></div></div></blockquote><br></div>I think I&#39;m getting closer to why it&#39;s not supported on the guest:<br><br>./lguest 64 ../../../diffs/linux-2.6.35.8/vmlinux<div class="im"><br>
lguest: unhandled trap 13 at 0x1001081 (0x10)<br><br></div>    1081:    ea 88 10 00 00 10 00     ljmp   $0x10,$0x1088<br><br></div></blockquote><div><br> So I think the problem is in<br><br>ENTRY(startup_32)<br>        /* test KEEP_SEGMENTS flag to see if the bootloader is asking<br>
                us to not reload segments */<br>        testb $(1&lt;&lt;6), BP_loadflags(%esi)<br>        jnz 2f<br><br>/*<br> * Set segments to known values.<br> */<br>        lgdt pa(boot_gdt_descr)<br>        movl $(__BOOT_DS),%eax<br>
        movl %eax,%ds<br>        movl %eax,%es<br>        movl %eax,%fs<br>        movl %eax,%gs<br>2:<br><br>and<br><br>#ifdef CONFIG_PAX_KERNEXEC_WAT<br>        movl $pa(boot_gdt),%edi<br>        movl $__LOAD_PHYSICAL_ADDR,%eax<br>
        movw %ax,__BOOT_CS + 2(%edi)<br>        rorl $16,%eax<br>        movb %al,__BOOT_CS + 4(%edi)<br>        movb %ah,__BOOT_CS + 7(%edi)<br>        rorl $16,%eax<br>        ljmp $(__BOOT_CS),$1f<br><br><br>Since it does not set lgdt due to the paravirt boot code setting &quot;don&#39;t reset segments&quot; it&#39;s not initialized properly.<br>
<br>If I make the reset of lgdt unconditional it doesn&#39;t work (probably due to requiring the need of the hypervisor to make that change :-). If I #ifdef out the initial ljmp it dies at <br><br># ./lguest 64 ../../../diffs/linux-2.6.35.8/vmlinux<br>
lguest: unhandled trap 14 at 0x100ad26 (0xffffffdc)<br><br>        set_early_handler handler=early_protection_fault,trapno=13<br>        set_early_handler handler=early_page_fault,trapno=14<br><br>Checking addresses near by it:<br>
<br>00008d20 &lt;irqfd_inject&gt;:<br>    8d20:       55                      push   %ebp<br>    8d21:       89 e5                   mov    %esp,%ebp<br>    8d23:       83 ec 0c                sub    $0xc,%esp<br>    8d26:       89 5d f8                mov    %ebx,-0x8(%ebp)<br>
<br>emulator_set_cached_descriptor:<br>    ad24:       09 d0                   or     %edx,%eax<br>    ad26:       89 45 dc                mov    %eax,-0x24(%ebp)<br><br>0000bd20 &lt;ftrace_raw_output_kvm_nested_vmrun&gt;:<br>
    bd20:       55                      push   %ebp<br>    bd21:       83 e9 14                sub    $0x14,%ecx<br>    bd24:       89 e5                   mov    %esp,%ebp<br>    bd26:       83 ec 34                sub    $0x34,%esp<br>
<br>So I&#39;m not sure... need to work out how to get more indepth debugging information for it, for me to be able to work out what the problems are :\ <br><br>I can&#39;t even get KERNEXEC working on a real machine either (model name    : Intel(R) Atom(TM) CPU N270   @ 1.60GHz) :/<br>
<br>I&#39;ll try getting PAE/NX working instead for the time being and come back to kernexec later.<br><br><br></div></div>