From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH 5 of 6] unplug emulated devices Date: Thu, 22 Apr 2010 17:02:43 -0400 Message-ID: <20100422210243.GL31220@phenom.dumpdata.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Stefano Stabellini Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Thu, Apr 22, 2010 at 04:16:50PM +0100, Stefano Stabellini wrote: > Hi all, > this patch adds a xen_unplug command line option to the kernel to unplug > xen emulated devices. For those folks who don't understand the pain^H^H^Htransition from emulated device to a PV device, can you do a more detailed writeup? Why don't we want this be enabled by default? Perhaps you want to make the parameter only parse the disable option - devices which we _dont_ want to be unplugged. So paramter name would 'xen_keep_plugged='. > > Signed-off-by: Stefano Stabellini > > --- > arch/x86/xen/enlighten.c | 30 +++++++++++++++++++++++++++++- > 1 files changed, 29 insertions(+), 1 deletions(-) > > diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c > index 2ce2da1..7acb130 100644 > --- a/arch/x86/xen/enlighten.c > +++ b/arch/x86/xen/enlighten.c > @@ -37,6 +37,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -86,6 +87,7 @@ struct shared_info xen_dummy_shared_info; > void *xen_initial_gdt; > > int xen_have_vector_callback; > +int unplug; > > /* > * Point at some empty memory to start with. We map the real shared_info > @@ -1389,9 +1391,35 @@ void __init xen_guest_init(void) > x86_platform_ipi_callback = do_hvm_pv_evtchn_intr; > xen_have_vector_callback = 1; > } > - > + if (unplug) { > + /* unplug emulated devices */ > + outw(UNPLUG_ALL, XEN_IOPORT_UNPLUG); > + } > have_vcpu_info_placement = 0; > x86_init.irqs.intr_init = xen_init_IRQ; > machine_ops = xen_machine_ops; > } > > +static int __init parse_unplug(char *arg) > +{ > + char *p, *q; > + > + for (p = arg; p; p = q) { > + q = strchr(arg, ','); > + if (q) > + *q++ = '\0'; > + if (!strcmp(p, "all")) > + unplug |= UNPLUG_ALL; > + else if (!strcmp(p, "ide-disks")) > + unplug |= UNPLUG_ALL_IDE_DISKS; > + else if (!strcmp(p, "aux-ide-disks")) > + unplug |= UNPLUG_AUX_IDE_DISKS; > + else if (!strcmp(p, "nics")) > + unplug |= UNPLUG_ALL_NICS; > + else > + printk(KERN_WARNING "unrecognised option '%s' " > + "in module parameter 'dev_unplug'\n", p); > + } > + return 0; > +} > +early_param("xen_unplug", parse_unplug); > -- > 1.5.4.3 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel