Gerd Hoffmann wrote:
> Gerd Hoffmann wrote:
>
>> Jeremy Fitzhardinge wrote:
>>
>>> Gerd Hoffmann wrote:
>>>
>>>> Hi,
>>>>
>>>> paravirt kernel doesn't boot as xen guest for me, see attachment.
>>>>
>>>>
>>> Hm, I just booted a pae kernel from the current paravirt repo and got it
>>> to usermode. What's your .config? Also, what line is getting the fault?
>>>
>> config is attached.
>>
>> It faults in fork syscall, down in pgd_walk(). It finds a pmd entry
>> pointing to a machine page where the mfn_to_pfn translation returns -1
>> aka 0xffffffff. Trying to find a struct page for that one doesn't work ...
>>
>
> Looks like a slot-3 pmd got reused for slot-0, with some stale entries
> for the hypervisor hole in there for some reason ...
>
> quick and dirty sledge hammer fix:
>
> --- paravirt-2.6.20-rc4-hg691.orig/arch/i386/paravirt-xen/enlighten.c
> +++ paravirt-2.6.20-rc4-hg691/arch/i386/paravirt-xen/enlighten.c
> @@ -522,6 +522,7 @@ static fastcall void xen_alloc_pd(u32 pf
> static fastcall void xen_release_pd(u32 pfn)
> {
> make_lowmem_page_readwrite(__va(PFN_PHYS(pfn)));
> + memset(__va(PFN_PHYS(pfn)), 0, PAGE_SIZE);
> }
>
> static fastcall void xen_release_pt(u32 pfn)
>
Does this work?
diff -r 252f3ed87072 arch/i386/mm/pgtable.c
--- a/arch/i386/mm/pgtable.c Mon Jan 08 16:57:56 2007 -0800
+++ b/arch/i386/mm/pgtable.c Wed Jan 10 13:13:40 2007 -0800
@@ -265,6 +265,7 @@ static void pgd_ctor(pgd_t *pgd)
swapper_pg_dir + USER_PTRS_PER_PGD,
KERNEL_PGD_PTRS);
} else {
+ memset(pgd, 0, USER_PTRS_PER_PGD*sizeof(pgd_t));
spin_lock_irqsave(&pgd_lock, flags);
pgd_list_add(pgd);
spin_unlock_irqrestore(&pgd_lock, flags);
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/virtualization