diff mbox

xen-pvdevice: make device-id property compulsory

Message ID 1384356307-16446-1-git-send-email-paul.durrant@citrix.com
State New
Headers show

Commit Message

Paul Durrant Nov. 13, 2013, 3:25 p.m. UTC
The intention of the Xen PV device is that it is used as a parent
device for PV drivers in Xen HVM guests and the set of PV drivers that
bind to the device is determined by its device ID (and possibly
vendor ID and revision). As such, the device should not have a default
device ID, it should always be supplied by the Xen toolstack.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
---
 hw/xen/xen_pvdevice.c    |    6 +++++-
 include/hw/pci/pci_ids.h |    1 -
 2 files changed, 5 insertions(+), 2 deletions(-)

Comments

Stefano Stabellini Nov. 13, 2013, 6:06 p.m. UTC | #1
On Wed, 13 Nov 2013, Paul Durrant wrote:
> The intention of the Xen PV device is that it is used as a parent
> device for PV drivers in Xen HVM guests and the set of PV drivers that
> bind to the device is determined by its device ID (and possibly
> vendor ID and revision). As such, the device should not have a default
> device ID, it should always be supplied by the Xen toolstack.
> 
> Signed-off-by: Paul Durrant <paul.durrant@citrix.com>

I'll add it to my queue


>  hw/xen/xen_pvdevice.c    |    6 +++++-
>  include/hw/pci/pci_ids.h |    1 -
>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/xen/xen_pvdevice.c b/hw/xen/xen_pvdevice.c
> index 1132c89..c218947 100644
> --- a/hw/xen/xen_pvdevice.c
> +++ b/hw/xen/xen_pvdevice.c
> @@ -74,6 +74,10 @@ static int xen_pv_init(PCIDevice *pci_dev)
>      XenPVDevice *d = XEN_PV_DEVICE(pci_dev);
>      uint8_t *pci_conf;
>  
> +    /* device-id property must always be supplied */
> +    if (d->device_id == 0xffff)
> +	    return -1;
> +
>      pci_conf = pci_dev->config;
>  
>      pci_set_word(pci_conf + PCI_VENDOR_ID, d->vendor_id);
> @@ -99,7 +103,7 @@ static int xen_pv_init(PCIDevice *pci_dev)
>  
>  static Property xen_pv_props[] = {
>      DEFINE_PROP_UINT16("vendor-id", XenPVDevice, vendor_id, PCI_VENDOR_ID_XEN),
> -    DEFINE_PROP_UINT16("device-id", XenPVDevice, device_id, PCI_DEVICE_ID_XEN_PVDEVICE),
> +    DEFINE_PROP_UINT16("device-id", XenPVDevice, device_id, 0xffff),
>      DEFINE_PROP_UINT8("revision", XenPVDevice, revision, 0x01),
>      DEFINE_PROP_UINT32("size", XenPVDevice, size, 0x400000),
>      DEFINE_PROP_END_OF_LIST()
> diff --git a/include/hw/pci/pci_ids.h b/include/hw/pci/pci_ids.h
> index 4c0002b..e597070 100644
> --- a/include/hw/pci/pci_ids.h
> +++ b/include/hw/pci/pci_ids.h
> @@ -146,7 +146,6 @@
>  
>  #define PCI_VENDOR_ID_XEN                0x5853
>  #define PCI_DEVICE_ID_XEN_PLATFORM       0x0001
> -#define PCI_DEVICE_ID_XEN_PVDEVICE       0x0002
>  
>  #define PCI_VENDOR_ID_NEC                0x1033
>  #define PCI_DEVICE_ID_NEC_UPD720200      0x0194
> -- 
> 1.7.10.4
> 
>
Paul Durrant Nov. 14, 2013, 9:51 a.m. UTC | #2
> -----Original Message-----
> From: Stefano Stabellini [mailto:stefano.stabellini@eu.citrix.com]
> Sent: 13 November 2013 18:06
> To: Paul Durrant
> Cc: qemu-devel@nongnu.org; xen-devel@lists.xen.org
> Subject: Re: [Qemu-devel] [PATCH] xen-pvdevice: make device-id property
> compulsory
> 
> On Wed, 13 Nov 2013, Paul Durrant wrote:
> > The intention of the Xen PV device is that it is used as a parent
> > device for PV drivers in Xen HVM guests and the set of PV drivers that
> > bind to the device is determined by its device ID (and possibly
> > vendor ID and revision). As such, the device should not have a default
> > device ID, it should always be supplied by the Xen toolstack.
> >
> > Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> 
> I'll add it to my queue
> 

Thanks!

  Paul
diff mbox

Patch

diff --git a/hw/xen/xen_pvdevice.c b/hw/xen/xen_pvdevice.c
index 1132c89..c218947 100644
--- a/hw/xen/xen_pvdevice.c
+++ b/hw/xen/xen_pvdevice.c
@@ -74,6 +74,10 @@  static int xen_pv_init(PCIDevice *pci_dev)
     XenPVDevice *d = XEN_PV_DEVICE(pci_dev);
     uint8_t *pci_conf;
 
+    /* device-id property must always be supplied */
+    if (d->device_id == 0xffff)
+	    return -1;
+
     pci_conf = pci_dev->config;
 
     pci_set_word(pci_conf + PCI_VENDOR_ID, d->vendor_id);
@@ -99,7 +103,7 @@  static int xen_pv_init(PCIDevice *pci_dev)
 
 static Property xen_pv_props[] = {
     DEFINE_PROP_UINT16("vendor-id", XenPVDevice, vendor_id, PCI_VENDOR_ID_XEN),
-    DEFINE_PROP_UINT16("device-id", XenPVDevice, device_id, PCI_DEVICE_ID_XEN_PVDEVICE),
+    DEFINE_PROP_UINT16("device-id", XenPVDevice, device_id, 0xffff),
     DEFINE_PROP_UINT8("revision", XenPVDevice, revision, 0x01),
     DEFINE_PROP_UINT32("size", XenPVDevice, size, 0x400000),
     DEFINE_PROP_END_OF_LIST()
diff --git a/include/hw/pci/pci_ids.h b/include/hw/pci/pci_ids.h
index 4c0002b..e597070 100644
--- a/include/hw/pci/pci_ids.h
+++ b/include/hw/pci/pci_ids.h
@@ -146,7 +146,6 @@ 
 
 #define PCI_VENDOR_ID_XEN                0x5853
 #define PCI_DEVICE_ID_XEN_PLATFORM       0x0001
-#define PCI_DEVICE_ID_XEN_PVDEVICE       0x0002
 
 #define PCI_VENDOR_ID_NEC                0x1033
 #define PCI_DEVICE_ID_NEC_UPD720200      0x0194