[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 5 of 6] unplug emulated devices



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 <stefano.stabellini@xxxxxxxxxxxxx>
> 
> ---
>  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 <xen/interface/memory.h>
>  #include <xen/interface/hvm/hvm_op.h>
>  #include <xen/interface/hvm/params.h>
> +#include <xen/interface/platform_pci.h>
>  #include <xen/features.h>
>  #include <xen/page.h>
>  #include <xen/hvm.h>
> @@ -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@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.