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

Re: [Xen-devel] [PATCH] xen/pvhvm: If xen_platform_pci=0 is set don't blow up.



On Fri, Dec 13, 2013 at 10:58:11AM +0100, Fabio Fantoni wrote:
> Il 13/12/2013 02:29, Konrad Rzeszutek Wilk ha scritto:
> >On Thu, Dec 12, 2013 at 10:43:21AM +0000, Ian Campbell wrote:
> >>On Wed, 2013-12-11 at 15:26 -0500, Konrad Rzeszutek Wilk wrote:
> >>
> >>>diff --git a/arch/x86/xen/platform-pci-unplug.c 
> >>>b/arch/x86/xen/platform-pci-unplug.c
> >>>index 0a78524..2fb9088 100644
> >>>--- a/arch/x86/xen/platform-pci-unplug.c
> >>>+++ b/arch/x86/xen/platform-pci-unplug.c
> >>>@@ -69,6 +69,75 @@ static int check_platform_magic(void)
> >>>   return 0;
> >>>  }
> >>>+bool xen_has_pv_devices()
> >>>+{
> >>>+  if (!xen_domain())
> >>>+          return false;
> >>>+
> >>>+  /* PV domains always have them. */
> >>>+  if (xen_pv_domain())
> >>>+          return true;
> >>>+
> >>>+  /* And user has xen_platform_pci=0 set in guest config as
> >>>+   * driver did not modify the value. */
> >>>+  if (xen_platform_pci_unplug == 0)
> >>>+          return false;
> >>>+
> >>>+  if (xen_platform_pci_unplug & XEN_UNPLUG_NEVER)
> >>>+          return false;
> >>>+
> >>>+  if (xen_platform_pci_unplug & XEN_UNPLUG_ALL)
> >>>+          return true;
> >>>+
> >>>+  /* And the calleer has to follow with xen_pv_{disk,nic}_devices
> >>"caller" (or "callee"? probably not)
> >>
> >>>+   * to be certain which driver can load. */
> >>In the XEN_UNPLUG_UNNECESSARY case won't we end up here and return
> >>false, when in fact this means we have PV devices which we want to use?
> >Yes. Thanks for spotting that bug.
> 
> Thanks for your patch.
> 
> I tested the first version of this patch and was working, I should
> wait a third version before do another test or I should test also
> the second version?

Lets wait until I get an Reviewed-by from either Stefano or Ian.

Wouldn't want to spend extra cycles to retest the similar patch over and
over.
> 
> Thanks for any reply.

Thank you for the question!
> 
> >>>+  return false;
> >>>+}
> >>>+EXPORT_SYMBOL_GPL(xen_has_pv_devices);
> >>>+
> >>>+bool __xen_has_pv_device(int state)
> >>   ^static?
> >Yes :-)
> >>>[...]diff --git a/include/xen/platform_pci.h b/include/xen/platform_pci.h
> >>>index 438c256..b49eeab 100644
> >>>--- a/include/xen/platform_pci.h
> >>>+++ b/include/xen/platform_pci.h
> >>>@@ -48,4 +48,27 @@ static inline int xen_must_unplug_disks(void) {
> >>>  extern int xen_platform_pci_unplug;
> >>I think with all this stuff you could now make xen_platform_pci_unplug
> >>private to the .c file?
> >Yes, I have another patch that does that.
> >>>+#if defined(CONFIG_XEN_PVHVM)
> >>>+extern bool xen_has_pv_devices(void);
> >>>+extern bool xen_has_pv_disk_devices(void);
> >>>+extern bool xen_has_pv_nic_devices(void);
> >>>+extern bool xen_has_pv_and_legacy_disk_devices(void);
> >>The logic and usage for all these looked right so far as my cold fuddled
> >>brain could determine.
> >Yeeey!
> >>Ian.
> >>
> >_______________________________________________
> >Xen-devel mailing list
> >Xen-devel@xxxxxxxxxxxxx
> >http://lists.xen.org/xen-devel
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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