From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH] hvc_xen: introduce HVC_XEN_FRONTEND Date: Tue, 13 Mar 2012 19:20:27 -0400 Message-ID: <20120313232027.GA18386@phenom.dumpdata.com> References: <1329823842-10085-1-git-send-email-stefano.stabellini@eu.citrix.com> <20120304160635.GA449@phenom.dumpdata.com> <20120313162944.GC19228@phenom.dumpdata.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org On Tue, Mar 13, 2012 at 06:30:44PM +0000, Stefano Stabellini wrote: > On Tue, 13 Mar 2012, Konrad Rzeszutek Wilk wrote: > > > Even a 'feature-pv-on-hvm-console' flag wouldn't help. > > > > > > Maybe we need to introduce an explicit check in xenbus_probe_device_type > > > to avoid calling bus->probe if type == "console" and dir[i] == "0", what > > > do you think? > > > > If that works..? > > Yes, it does: the appended patch might be ugly but fixes the problem for > me (tested xen 4.1, xm/xend, vfb enabled and disabled so both qemu and > xenconsoled as console backends). Yup. Seems to work with PV and HVM in both Xen 4.1 (with patch) and Xen 4.0. > > --- > > xenbus: ignore console/0 > > Unfortunately xend creates a bogus console/0 frotend/backend entry pair > on xenstore that console backends cannot properly cope with. > Any guest behavior that is not completely ignoring console/0 is going > to either cause problems with xenconsoled or qemu. > Returning 0 or -ENODEV from xencons_probe is not enough because it is > going to cause the frontend state to become 4 or 6 respectively. > The best possible thing we can do here is just ignore the entry from > xenbus_probe_frontend. > > Signed-off-by: Stefano Stabellini > > diff --git a/drivers/xen/xenbus/xenbus_probe_frontend.c b/drivers/xen/xenbus/xenbus_probe_frontend.c > index 9c57819..f20c5f1 100644 > --- a/drivers/xen/xenbus/xenbus_probe_frontend.c > +++ b/drivers/xen/xenbus/xenbus_probe_frontend.c > @@ -53,6 +53,12 @@ static int xenbus_probe_frontend(struct xen_bus_type *bus, const char *type, > char *nodename; > int err; > > + /* ignore console/0 */ > + if (!strncmp(type, "console", 7) && !strncmp(name, "0", 1)) { > + DPRINTK("Ignoring buggy device entry console/0"); > + return 0; > + } > + > nodename = kasprintf(GFP_KERNEL, "%s/%s/%s", bus->root, type, name); > if (!nodename) > return -ENOMEM;