Message ID | 20210921220459.2437386-8-ben.widawsky@intel.com |
---|---|
State | New, archived |
Headers | show |
Series | cxl_pci refactor for reusability | expand |
On Tue, Sep 21, 2021 at 3:05 PM Ben Widawsky <ben.widawsky@intel.com> wrote: > > Reduce maintenance burden of DVSEC query implementation by using the > centralized PCI core implementation. > > Cc: linuxppc-dev@lists.ozlabs.org > Cc: Frederic Barrat <fbarrat@linux.ibm.com> > Cc: Andrew Donnellan <ajd@linux.ibm.com> > Signed-off-by: Ben Widawsky <ben.widawsky@intel.com> > --- > drivers/misc/ocxl/config.c | 13 +------------ > 1 file changed, 1 insertion(+), 12 deletions(-) > > diff --git a/drivers/misc/ocxl/config.c b/drivers/misc/ocxl/config.c > index a68738f38252..e401a51596b9 100644 > --- a/drivers/misc/ocxl/config.c > +++ b/drivers/misc/ocxl/config.c > @@ -33,18 +33,7 @@ > > static int find_dvsec(struct pci_dev *dev, int dvsec_id) > { > - int vsec = 0; > - u16 vendor, id; > - > - while ((vsec = pci_find_next_ext_capability(dev, vsec, > - OCXL_EXT_CAP_ID_DVSEC))) { > - pci_read_config_word(dev, vsec + OCXL_DVSEC_VENDOR_OFFSET, > - &vendor); > - pci_read_config_word(dev, vsec + OCXL_DVSEC_ID_OFFSET, &id); > - if (vendor == PCI_VENDOR_ID_IBM && id == dvsec_id) > - return vsec; > - } > - return 0; > + return pci_find_dvsec_capability(dev, PCI_VENDOR_ID_IBM, dvsec_id); > } What about: arch/powerpc/platforms/powernv/ocxl.c::find_dvsec_from_pos() ...? With that converted the redundant definitions below: OCXL_EXT_CAP_ID_DVSEC OCXL_DVSEC_VENDOR_OFFSET OCXL_DVSEC_ID_OFFSET ...can be cleaned up in favor of the core definitions.
On 22/09/2021 02:44, Dan Williams wrote: > On Tue, Sep 21, 2021 at 3:05 PM Ben Widawsky <ben.widawsky@intel.com> wrote: >> >> Reduce maintenance burden of DVSEC query implementation by using the >> centralized PCI core implementation. >> >> Cc: linuxppc-dev@lists.ozlabs.org >> Cc: Frederic Barrat <fbarrat@linux.ibm.com> >> Cc: Andrew Donnellan <ajd@linux.ibm.com> >> Signed-off-by: Ben Widawsky <ben.widawsky@intel.com> >> --- >> drivers/misc/ocxl/config.c | 13 +------------ >> 1 file changed, 1 insertion(+), 12 deletions(-) >> >> diff --git a/drivers/misc/ocxl/config.c b/drivers/misc/ocxl/config.c >> index a68738f38252..e401a51596b9 100644 >> --- a/drivers/misc/ocxl/config.c >> +++ b/drivers/misc/ocxl/config.c >> @@ -33,18 +33,7 @@ >> >> static int find_dvsec(struct pci_dev *dev, int dvsec_id) >> { >> - int vsec = 0; >> - u16 vendor, id; >> - >> - while ((vsec = pci_find_next_ext_capability(dev, vsec, >> - OCXL_EXT_CAP_ID_DVSEC))) { >> - pci_read_config_word(dev, vsec + OCXL_DVSEC_VENDOR_OFFSET, >> - &vendor); >> - pci_read_config_word(dev, vsec + OCXL_DVSEC_ID_OFFSET, &id); >> - if (vendor == PCI_VENDOR_ID_IBM && id == dvsec_id) >> - return vsec; >> - } >> - return 0; >> + return pci_find_dvsec_capability(dev, PCI_VENDOR_ID_IBM, dvsec_id); >> } That looks fine, thanks for spotting it. You can add this for the next revision: Acked-by: Frederic Barrat <fbarrat@linux.ibm.com> > > What about: > > arch/powerpc/platforms/powernv/ocxl.c::find_dvsec_from_pos() > > ...? With that converted the redundant definitions below: > > OCXL_EXT_CAP_ID_DVSEC > OCXL_DVSEC_VENDOR_OFFSET > OCXL_DVSEC_ID_OFFSET > > ...can be cleaned up in favor of the core definitions. That would be great. Are you guys willing to do it? If not, I could have a follow-on patch, if I don't forget :-) Thanks, Fred
diff --git a/drivers/misc/ocxl/config.c b/drivers/misc/ocxl/config.c index a68738f38252..e401a51596b9 100644 --- a/drivers/misc/ocxl/config.c +++ b/drivers/misc/ocxl/config.c @@ -33,18 +33,7 @@ static int find_dvsec(struct pci_dev *dev, int dvsec_id) { - int vsec = 0; - u16 vendor, id; - - while ((vsec = pci_find_next_ext_capability(dev, vsec, - OCXL_EXT_CAP_ID_DVSEC))) { - pci_read_config_word(dev, vsec + OCXL_DVSEC_VENDOR_OFFSET, - &vendor); - pci_read_config_word(dev, vsec + OCXL_DVSEC_ID_OFFSET, &id); - if (vendor == PCI_VENDOR_ID_IBM && id == dvsec_id) - return vsec; - } - return 0; + return pci_find_dvsec_capability(dev, PCI_VENDOR_ID_IBM, dvsec_id); } static int find_dvsec_afu_ctrl(struct pci_dev *dev, u8 afu_idx)
Reduce maintenance burden of DVSEC query implementation by using the centralized PCI core implementation. Cc: linuxppc-dev@lists.ozlabs.org Cc: Frederic Barrat <fbarrat@linux.ibm.com> Cc: Andrew Donnellan <ajd@linux.ibm.com> Signed-off-by: Ben Widawsky <ben.widawsky@intel.com> --- drivers/misc/ocxl/config.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-)