2010-11-02 05:08:45

by Alex Williamson

[permalink] [raw]
Subject: [PATCH] vfio: Extended capability fixes

- Virtual channel position gets truncated as a u8
- Print the ecap that's unknown, not the last cap we saw
- Print actual config offset, which provides enough info to make
some sense of the error.

Signed-off-by: Alex Williamson <[email protected]>
---

drivers/vfio/vfio_pci_config.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/vfio/vfio_pci_config.c b/drivers/vfio/vfio_pci_config.c
index 8af995d..8304316 100644
--- a/drivers/vfio/vfio_pci_config.c
+++ b/drivers/vfio/vfio_pci_config.c
@@ -410,7 +410,7 @@ static int vfio_msi_cap_len(struct vfio_dev *vdev, u8 pos)
* Determine extended capability length for VC (2 & 9) and
* MFVC capabilities
*/
-static int vfio_vc_cap_len(struct vfio_dev *vdev, u8 pos)
+static int vfio_vc_cap_len(struct vfio_dev *vdev, u16 pos)
{
struct pci_dev *pdev = vdev->pdev;
u32 dw;
@@ -580,7 +580,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
printk(KERN_WARNING
"%s: pci config conflict at %x, "
"caps %x %x\n",
- __func__, i, map[pos+i], cap);
+ __func__, pos+i, map[pos+i], cap);
map[pos+i] = cap;
}
ret = pci_read_config_byte(pdev, pos + PCI_CAP_LIST_NEXT, &pos);
@@ -683,7 +683,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
if (len == 0 || len == 0xFF) {
printk(KERN_WARNING
"%s: unknown length for pci ext cap %x\n",
- __func__, cap);
+ __func__, ecap);
len = PCI_CAP_SIZEOF;
}
for (i = 0; i < len; i++) {
@@ -691,7 +691,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
printk(KERN_WARNING
"%s: pci config conflict at %x, "
"caps %x %x\n",
- __func__, i, map[epos+i], ecap);
+ __func__, epos+i, map[epos+i], ecap);
map[epos+i] = ecap;
}


2010-11-02 19:11:39

by Michael S. Tsirkin

[permalink] [raw]
Subject: Re: [PATCH] vfio: Extended capability fixes

On Mon, Nov 01, 2010 at 11:08:35PM -0600, Alex Williamson wrote:
> - Virtual channel position gets truncated as a u8
> - Print the ecap that's unknown, not the last cap we saw
> - Print actual config offset, which provides enough info to make
> some sense of the error.
>
> Signed-off-by: Alex Williamson <[email protected]>
> ---
>
> drivers/vfio/vfio_pci_config.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/vfio/vfio_pci_config.c b/drivers/vfio/vfio_pci_config.c
> index 8af995d..8304316 100644
> --- a/drivers/vfio/vfio_pci_config.c
> +++ b/drivers/vfio/vfio_pci_config.c
> @@ -410,7 +410,7 @@ static int vfio_msi_cap_len(struct vfio_dev *vdev, u8 pos)
> * Determine extended capability length for VC (2 & 9) and
> * MFVC capabilities
> */
> -static int vfio_vc_cap_len(struct vfio_dev *vdev, u8 pos)
> +static int vfio_vc_cap_len(struct vfio_dev *vdev, u16 pos)
> {
> struct pci_dev *pdev = vdev->pdev;
> u32 dw;
> @@ -580,7 +580,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
> printk(KERN_WARNING
> "%s: pci config conflict at %x, "
> "caps %x %x\n",
> - __func__, i, map[pos+i], cap);
> + __func__, pos+i, map[pos+i], cap);
> map[pos+i] = cap;
> }
> ret = pci_read_config_byte(pdev, pos + PCI_CAP_LIST_NEXT, &pos);
> @@ -683,7 +683,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
> if (len == 0 || len == 0xFF) {
> printk(KERN_WARNING
> "%s: unknown length for pci ext cap %x\n",
> - __func__, cap);
> + __func__, ecap);
> len = PCI_CAP_SIZEOF;
> }
> for (i = 0; i < len; i++) {
> @@ -691,7 +691,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
> printk(KERN_WARNING
> "%s: pci config conflict at %x, "
> "caps %x %x\n",
> - __func__, i, map[epos+i], ecap);
> + __func__, epos+i, map[epos+i], ecap);
> map[epos+i] = ecap;

Not related to this patch, but I am surprised checkpatch does not
complain about lack of spaces around + here and elsewhere.
Or does it?

> }
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

2010-11-02 22:18:21

by Tom Lyon

[permalink] [raw]
Subject: Re: [PATCH] vfio: Extended capability fixes

Applied. Thanks!

On Monday, November 01, 2010 10:08:35 pm Alex Williamson wrote:
> - Virtual channel position gets truncated as a u8
> - Print the ecap that's unknown, not the last cap we saw
> - Print actual config offset, which provides enough info to make
> some sense of the error.
>
> Signed-off-by: Alex Williamson <[email protected]>
> ---
>
> drivers/vfio/vfio_pci_config.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/vfio/vfio_pci_config.c
> b/drivers/vfio/vfio_pci_config.c index 8af995d..8304316 100644
> --- a/drivers/vfio/vfio_pci_config.c
> +++ b/drivers/vfio/vfio_pci_config.c
> @@ -410,7 +410,7 @@ static int vfio_msi_cap_len(struct vfio_dev *vdev, u8
> pos) * Determine extended capability length for VC (2 & 9) and
> * MFVC capabilities
> */
> -static int vfio_vc_cap_len(struct vfio_dev *vdev, u8 pos)
> +static int vfio_vc_cap_len(struct vfio_dev *vdev, u16 pos)
> {
> struct pci_dev *pdev = vdev->pdev;
> u32 dw;
> @@ -580,7 +580,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
> printk(KERN_WARNING
> "%s: pci config conflict at %x, "
> "caps %x %x\n",
> - __func__, i, map[pos+i], cap);
> + __func__, pos+i, map[pos+i], cap);
> map[pos+i] = cap;
> }
> ret = pci_read_config_byte(pdev, pos + PCI_CAP_LIST_NEXT, &pos);
> @@ -683,7 +683,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
> if (len == 0 || len == 0xFF) {
> printk(KERN_WARNING
> "%s: unknown length for pci ext cap %x\n",
> - __func__, cap);
> + __func__, ecap);
> len = PCI_CAP_SIZEOF;
> }
> for (i = 0; i < len; i++) {
> @@ -691,7 +691,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
> printk(KERN_WARNING
> "%s: pci config conflict at %x, "
> "caps %x %x\n",
> - __func__, i, map[epos+i], ecap);
> + __func__, epos+i, map[epos+i], ecap);
> map[epos+i] = ecap;
> }

2010-11-02 22:19:07

by Tom Lyon

[permalink] [raw]
Subject: Re: [PATCH] vfio: Extended capability fixes

On Tuesday, November 02, 2010 12:11:08 pm Michael S. Tsirkin wrote:
> On Mon, Nov 01, 2010 at 11:08:35PM -0600, Alex Williamson wrote:
> > - Virtual channel position gets truncated as a u8
> >
> > - Print the ecap that's unknown, not the last cap we saw
> > - Print actual config offset, which provides enough info to make
> >
> > some sense of the error.
> >
> > Signed-off-by: Alex Williamson <[email protected]>
> > ---
> >
> > drivers/vfio/vfio_pci_config.c | 8 ++++----
> > 1 files changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/vfio/vfio_pci_config.c
> > b/drivers/vfio/vfio_pci_config.c index 8af995d..8304316 100644
> > --- a/drivers/vfio/vfio_pci_config.c
> > +++ b/drivers/vfio/vfio_pci_config.c
> > @@ -410,7 +410,7 @@ static int vfio_msi_cap_len(struct vfio_dev *vdev, u8
> > pos)
> >
> > * Determine extended capability length for VC (2 & 9) and
> > * MFVC capabilities
> > */
> >
> > -static int vfio_vc_cap_len(struct vfio_dev *vdev, u8 pos)
> > +static int vfio_vc_cap_len(struct vfio_dev *vdev, u16 pos)
> >
> > {
> >
> > struct pci_dev *pdev = vdev->pdev;
> > u32 dw;
> >
> > @@ -580,7 +580,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
> >
> > printk(KERN_WARNING
> >
> > "%s: pci config conflict at %x, "
> > "caps %x %x\n",
> >
> > - __func__, i, map[pos+i], cap);
> > + __func__, pos+i, map[pos+i], cap);
> >
> > map[pos+i] = cap;
> >
> > }
> > ret = pci_read_config_byte(pdev, pos + PCI_CAP_LIST_NEXT, &pos);
> >
> > @@ -683,7 +683,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
> >
> > if (len == 0 || len == 0xFF) {
> >
> > printk(KERN_WARNING
> >
> > "%s: unknown length for pci ext cap %x\n",
> >
> > - __func__, cap);
> > + __func__, ecap);
> >
> > len = PCI_CAP_SIZEOF;
> >
> > }
> > for (i = 0; i < len; i++) {
> >
> > @@ -691,7 +691,7 @@ int vfio_build_config_map(struct vfio_dev *vdev)
> >
> > printk(KERN_WARNING
> >
> > "%s: pci config conflict at %x, "
> > "caps %x %x\n",
> >
> > - __func__, i, map[epos+i], ecap);
> > + __func__, epos+i, map[epos+i], ecap);
> >
> > map[epos+i] = ecap;
>
> Not related to this patch, but I am surprised checkpatch does not
> complain about lack of spaces around + here and elsewhere.
> Or does it?
It did not complain.

>
> > }
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel"
> > in the body of a message to [email protected]
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at http://www.tux.org/lkml/