From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Wolf Subject: Re: [PATCH] qemu-xen: Fix PV segfault Date: Wed, 02 Jul 2008 13:30:53 +0200 Message-ID: <486B66ED.4060207@suse.de> References: <4863E1F6.60909@suse.de> <18538.27111.959001.890654@mariner.uk.xensource.com> <486B3428.5000006@suse.de> <18539.22171.11790.948574@mariner.uk.xensource.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070101020809030908000609" Return-path: In-Reply-To: <18539.22171.11790.948574@mariner.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ian Jackson Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------070101020809030908000609 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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 --------------070101020809030908000609 Content-Type: text/x-patch; name="fix-pv-segfault.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="fix-pv-segfault.patch" >>From acd73e1af736e0b0e6fe4af234f828b6a572a841 Mon Sep 17 00:00:00 2001 From: Kevin Wolf 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 --- 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 --------------070101020809030908000609 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------070101020809030908000609--