[libvirt PATCH v3 1/1] Add a PCI/PCIe device VPD Capability

Dmitrii Shcherbakov dmitrii.shcherbakov at canonical.com
Fri Sep 17 12:52:16 UTC 2021


Hi Peter,

Thanks for the quick reply.

> This is a quick note, not a full review

Ack, appreciate the early feedback.

> it can be properly split into multiple smaller chunks

I will look into splitting it into parts related to the binary parser, XML
handling and docs at least.

There are some dependencies between parts but I can turn it into a set of
sequential changes.

> function naming

There are some that use glib conventions with underscores (for _class_init,
_init, _finalize, _get_type functions).

In this case, I followed the existing examples from virobject,
vireventthread, viridentity and I assumed
that this is an exception from the camel case preference in the coding
guide. Is that the case or are you talking about other issues in function
naming?

> comment usage
> indentation

I will go over the patch again and fix it in places not noticed by auto
checks.

> doesn't pass the test suite

Been using the CI helper to run tests in a container while doing the
changes and before submitting:
https://gist.github.com/dshcherb/6d8dca51d4503ec32e753f0b5434342d

But I can see that some checks have different behaviors in different
distros - I will test more combinations going forward.

Best Regards,
Dmitrii Shcherbakov
LP/MM/oftc: dmitriis


On Fri, Sep 17, 2021 at 2:10 PM Peter Krempa <pkrempa at redhat.com> wrote:

> On Fri, Sep 17, 2021 at 13:54:49 +0300, Dmitrii Shcherbakov wrote:
> > Add support for deserializing the binary PCI/PCIe VPD format and
> > exposing VPD resources as XML elements in a new nested capability
> > of PCI/PCIe devices called 'vpd'.
> >
> > The VPD format is specified in "I.3. VPD Definitions" in PCI specs
> > (2.2+) and "6.28.1 VPD Format" PCIe 4.0. As section 6.28 in PCIe 4.0
> > notes, the PCI Local Bus and PCIe VPD formats are binary compatible
> > and PCIe 4.0 merely started incorporating what was already present in
> > PCI specs.
> >
> > Linux kernel exposes a binary blob in the VPD format via sysfs since
> > v2.6.26 (commit 94e6108803469a37ee1e3c92dafdd1d59298602f) which requires
> > a parser to interpret.
> >
> > Signed-off-by: Dmitrii Shcherbakov <dmitrii.shcherbakov at canonical.com>
> > ---
>
> This is a quick note, not a full review:
>
> >  build-aux/syntax-check.mk                     |   4 +-
> >  docs/drvnodedev.html.in                       |  46 ++
> >  docs/formatnode.html.in                       |  24 +-
> >  docs/schemas/nodedev.rng                      |  40 +
> >  include/libvirt/libvirt-nodedev.h             |   1 +
> >  po/POTFILES.in                                |   1 +
> >  src/conf/node_device_conf.c                   | 258 ++++++
> >  src/conf/node_device_conf.h                   |   6 +-
> >  src/conf/virnodedeviceobj.c                   |   7 +-
> >  src/libvirt_private.syms                      |  17 +
> >  src/node_device/node_device_driver.c          |   2 +
> >  src/node_device/node_device_udev.c            |   2 +
> >  src/util/meson.build                          |   1 +
> >  src/util/virpci.c                             |  60 ++
> >  src/util/virpci.h                             |   3 +
> >  src/util/virpcivpd.c                          | 771 +++++++++++++++++
> >  src/util/virpcivpd.h                          | 106 +++
> >  src/util/virpcivpdpriv.h                      |  42 +
> >  tests/meson.build                             |   1 +
> >  .../pci_0000_42_00_0_vpd.xml                  |  33 +
> >  .../pci_0000_42_00_0_vpd.xml                  |   1 +
> >  tests/nodedevxml2xmltest.c                    |   1 +
> >  tests/testutils.c                             |  51 ++
> >  tests/testutils.h                             |   6 +
> >  tests/virpcitest.c                            |   3 +
> >  tests/virpcivpdtest.c                         | 777 ++++++++++++++++++
> >  tools/virsh-nodedev.c                         |   3 +
> >  27 files changed, 2262 insertions(+), 5 deletions(-)
> >  create mode 100644 src/util/virpcivpd.c
> >  create mode 100644 src/util/virpcivpd.h
> >  create mode 100644 src/util/virpcivpdpriv.h
> >  create mode 100644 tests/nodedevschemadata/pci_0000_42_00_0_vpd.xml
> >  create mode 120000 tests/nodedevxml2xmlout/pci_0000_42_00_0_vpd.xml
> >  create mode 100644 tests/virpcivpdtest.c
>
> Firstly your patch is massive and it looks to me as it can be properly
> split into multiple smaller chunks as our contributor guidelines ask
> for. [1]
>
> Additionally few of the functions I had a look at don't conform to our
> coding standard at least in term of comment usage, function naming and
> indentation.
>
> Lastly it doesn't pass the test suite (ninja test). Note that once
> you'll split the patch, the testsuite must pass after every commit.
>
> [1] https://www.libvirt.org/hacking.html
>     https://www.libvirt.org/best-practices.html
>     https://www.libvirt.org/coding-style.html
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20210917/c0c9db72/attachment-0001.htm>


More information about the libvir-list mailing list