Folks --
I'm trying to experiment with running a 64 bit paravirtualized guest
in shadow page table mode, and I'm getting an error while pinning the
page table.
The call to pin the pages is in xc_linux_build.c:
static int setup_guest(int xc_handle, ...
#if defined(__x86_64__)
/*
* Pin down l4tab addr as page dir page - causes hypervisor to
provide
* correct protection for the page
*/
if ( pin_table(xc_handle, MMUEXT_PIN_L4_TABLE,
xen_cr3_to_pfn(ctxt->ctrlreg[3]), dom) )
goto error_out;
#endif
...
And Xen coughs up:
(XEN) (file=/home/sai/xen-unstable/xen/include/asm/mm.h, line=266)
Error pfn 50d: rd=ffff830000fdf080, od=0000000000000000,
caf=00000000, taf=0000000000000000
(XEN) DOM0: (file=mm.c, line=483) Could not get page ref for pfn 50d
(XEN) DOM0: (file=mm.c, line=2052) Error while pinning mfn 50d
My Xen version is:
Xen version 3.0-unstable (root@xxxxxxxxxxxxxx) (gcc version 4.0.3
(Ubuntu 4.0.3-1ubuntu5)) Thu Nov 2 10:37:27 P
ST 2006
Latest ChangeSet: Sun Sep 10 17:55:03 2006 +0100 11440:bfd00b317815
(XEN) Command line: /xen-3.gz dom0_mem=716800 com1=9600,8n1 cdb=com1
console=com1
(XEN) Physical RAM map:
My debugging session looks like:
Breakpoint 9, setup_guest (xc_handle=8, dom=20, image=0x806150
"\177ELF\002\001\001", image_size=19277,
initrd=0x42801700, nr_pages=2560, pvsi=0x0, pvke=0x0, pvss=0x0,
ctxt=0x42800130, cmdline=0x2b653d609054 "",
shared_info_frame=4052, flags=0, store_evtchn=0,
store_mfn=0x428017a8, console_evtchn=0,
console_mfn=0x428017a0, required_features=0x42800110) at
xc_linux_build.c:921
921 if ( pin_table(xc_handle, MMUEXT_PIN_L4_TABLE,
(gdb) p xc_handle
$39 = 8
(gdb) l
916 #if defined(__x86_64__)
917 /*
918 * Pin down l4tab addr as page dir page - causes
hypervisor to provide
919 * correct protection for the page
920 */
921 if ( pin_table(xc_handle, MMUEXT_PIN_L4_TABLE,
922 xen_cr3_to_pfn(ctxt->ctrlreg[3]), dom) )
923 goto error_out;
924 #endif
925
(gdb) p/x ctxt->ctrlreg
$40 = {0x0, 0x0, 0x0, 0x50d000, 0x0, 0x0, 0x0, 0x0}
(gdb) p/x dsi
$41 = {v_start = 0x0, v_end = 0x503c88, v_kernstart = 0x400000,
v_kernend = 0x503c88, v_kernentry = 0x4000e8,
elf_paddr_offset = 0x0, pae_kernel = 0x0, load_symtab = 0x0,
symtab_addr = 0x0, symtab_len = 0x0,
__elfnote_section = 0x0, __elfnote_section_end = 0x0,
__xen_guest_string = 0x80a3be}
(gdb) p dsi.__xen_guest_string
$42 = 0x80a3be "LOADER=generic,GUEST_OS=your-favorite-
os,GUEST_VER=0.1,XEN_VER=xen-3.0,BSD_SYMTAB,FEATURES=!
writable_page_tables|!auto_translated_physmap,PAE=no"
(gdb) l xen_cr3_to_pfn
Function "xen_cr3_to_pfn" not defined.
(gdb) s
pin_table (xc_handle=8, type=3, mfn=1293, dom=20) at xg_private.c:127
127 op.cmd = type;
(gdb)
I'm a little concerned about v_start being 0. I don't know how to
influence that in the link stage. But, it should work as it stands,
I would imagine.
Anything obvious jump out at any of you?
-- Randy
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|