From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: Re: [Xen-devel] [PATCH 12/12] Unplug emulated disks and nics Date: Fri, 18 Jun 2010 00:35:46 +0100 Message-ID: <4C1AB152.107@goop.org> References: <1275570645-27189-1-git-send-email-stefano.stabellini@eu.citrix.com> <1275570645-27189-12-git-send-email-stefano.stabellini@eu.citrix.com> <20100614212017.GA8600@phenom.dumpdata.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Stefano Stabellini Cc: Konrad Rzeszutek Wilk , "linux-kernel@vger.kernel.org" , "xen-devel@lists.xensource.com" , "ddutile@redhat.com" , "sheng@linux.intel.com" List-Id: xen-devel@lists.xenproject.org On 06/17/2010 04:42 PM, Stefano Stabellini wrote: > On Mon, 14 Jun 2010, Konrad Rzeszutek Wilk wrote: > >>> +#if (defined(CONFIG_XEN_NETDEV_FRONTEND) || \ >>> + defined(CONFIG_XEN_NETDEV_FRONTEND_MODULE)) && \ >>> + (defined(CONFIG_XEN_PLATFORM_PCI) || \ >>> + defined(CONFIG_XEN_PLATFORM_PCI_MODULE)) >>> + printk(KERN_INFO "Netfront and the Xen platform PCI driver have " >>> + "been compiled for this kernel: unplug emulated NICs.\n"); >>> + xen_emul_unplug |= XEN_UNPLUG_ALL_NICS; >>> +#endif >>> +#if (defined(CONFIG_XEN_BLKDEV_FRONTEND) || \ >>> + defined(CONFIG_XEN_BLKDEV_FRONTEND_MODULE)) && \ >>> + (defined(CONFIG_XEN_PLATFORM_PCI) || \ >>> + defined(CONFIG_XEN_PLATFORM_PCI_MODULE)) >>> + printk(KERN_INFO "Blkfront and the Xen platform PCI driver have " >>> + "been compiled for this kernel: unplug emulated disks.\n" >>> + "You might have to change the root device\n" >>> + "from /dev/hd[a-d] to /dev/xvd[a-d]\n" >>> + "in your root= kernel command line option\n"); >>> + xen_emul_unplug |= XEN_UNPLUG_ALL_IDE_DISKS; >>> +#endif >>> >> Wow. Can you move those checks to the header file and make it deal with >> the #ifdef and setting of xen_emul_unplug? >> >> > I tried, but it didn't improve the elegance of the code, mainly because I > want to keep the printk in place, so the code would look very much like > this, but instead of being in platform-pci-unplug.c would be in > platform_pci.h. > What about using Kconfig to define an appropriate symbol and just #ifdef on that? >>> + } >>> + /* Now unplug the emulated devices */ >>> + if (xen_platform_pci_enabled && !(xen_emul_unplug & XEN_UNPLUG_IGNORE)) >>> + outw(xen_emul_unplug, XEN_IOPORT_UNPLUG); >>> +} >>> + >>> +static int __init parse_xen_emul_unplug(char *arg) >>> +{ >>> + char *p, *q; >>> + >>> + for (p = arg; p; p = q) { >>> + q = strchr(arg, ','); >>> + if (q) >>> + *q++ = '\0'; >>> + if (!strcmp(p, "all")) >>> + xen_emul_unplug |= XEN_UNPLUG_ALL; >>> >> strncmp.. >> >> > is it really needed considering that we know that both strings are NULL > terminated and one of them is a constant? > strncmp would avoid having to modify the string in place. J