[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [PATCH] qemu-xen: Fix PV segfault
Ian Jackson schrieb: > Kevin Wolf writes ("Re: [PATCH] qemu-xen: Fix PV segfault"): >> Ian Jackson schrieb: >>> Kevin Wolf writes ("[PATCH] qemu-xen: Fix PV segfault"): >>>> Don't access cur_cpu with CONFIG_DM, for PV machines it is NULL. >>> I'm not sure I understand the execution context here properly. Is >>> this for blktap ? It would be better to make cur_cpu be set to some >>> sensible value. >> No, this is completely independent of blktap. Currently, PV machines >> just don't have a virtual cpu in qemu - in contrary to FV machines which >> call a complete pc_machine.init() during their initialization. > > Evidently this is a configuration I haven't tested. My PV machines > don't use a qemu-dm at all. AFAIK, you automatically get qemu-dm as soon as you use VNC. So this is probably the most common use case. While I'm at it: There's another problem with qemu-xen, I can establish a VNC connection only if I was connected via xm console before. Maybe I can take a look at this later this week. > I would very much prefer an answer which didn't make any additional > changes to vl.c (or other code shared with upstream). If such changes > are necessary they should be textually small. This will make keeping > us up to date with qemu upstream much easier. Yes, I couldn't agree more. Attached is a new version of the patch which creates a dummy CPU for PV machines. Now it touches no upstream code any more. Kevin >From acd73e1af736e0b0e6fe4af234f828b6a572a841 Mon Sep 17 00:00:00 2001 From: Kevin Wolf <kwolf@xxxxxxx> Date: Wed, 2 Jul 2008 13:23:49 +0200 Subject: [PATCH] qemu-xen: Fix PV segfault Create a dummy CPU during PV machine initialization. This avoids NULL pointer accesses. Signed-off-by: Kevin Wolf <kwolf@xxxxxxx> --- hw/xen_machine_pv.c | 5 ++++- i386-dm/helper2.c | 4 ++++ 2 files changed, 8 insertions(+), 1 deletions(-) diff --git a/hw/xen_machine_pv.c b/hw/xen_machine_pv.c index 0fec0aa..e51addb 100644 --- a/hw/xen_machine_pv.c +++ b/hw/xen_machine_pv.c @@ -45,13 +45,16 @@ static void xen_init_pv(ram_addr_t ram_size, int vga_ram_size, { struct xenfb *xenfb; extern int domid; - + CPUState *env; #ifndef CONFIG_STUBDOM /* Initialize tapdisk client */ init_blktap(); #endif + /* Initialize a dummy CPU */ + env = cpu_init(NULL); + /* Connect to text console */ if (serial_hds[0]) { if (xencons_init(domid, serial_hds[0]) < 0) { diff --git a/i386-dm/helper2.c b/i386-dm/helper2.c index 44bed2b..6437c37 100644 --- a/i386-dm/helper2.c +++ b/i386-dm/helper2.c @@ -112,6 +112,10 @@ CPUX86State *cpu_x86_init(const char *cpu_model) return NULL; cpu_exec_init(env); + /* There is no shared_page for PV, we're done now */ + if (shared_page == NULL) + return env; + /* init various static tables */ if (!inited) { inited = 1; -- 1.5.4.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |