On 14/10/16 19:55, Boris Ostrovsky wrote: > On 10/14/2016 02:38 PM, Andrew Cooper wrote: >>> + jmp *%rax >>> + >>> +#else /* CONFIG_X86_64 */ >>> + >>> + call setup_pgtable_32 >>> + >>> + mov $_pa(initial_page_table), %eax >>> + movl %eax, %cr3 >>> + >>> + movl %cr0, %eax >>> + orl $(X86_CR0_PG | X86_CR0_PE), %eax >>> + movl %eax, %cr0 >>> + >>> + ljmp $__BOOT_CS,$1f >>> +1: >>> + call xen_prepare_pvh >> Why does xen_prepare_pvh need paging? I can't spot anything which >> should need it, and it feels conceptually wrong. > xen_prepare_pvh() deals with virtual addresses. How can we run without paging?
Ah yes - with a high-half kernel, that way around doesn't work. Sorry for the noise - I have been spending too long working with virtual addresses down round 0, where that specifically can be solved by setting %ds with a suitable non-zero base. ~Andrew