[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 1/8] driver/pci: Get next capability without passing caps
Modify function pci_find_next_cap_ttl to support returning position of next capability when array "caps" is empty or size "n" is zero. That can help caller to get next capability offset if caller just has a information of current capability offset. That will be used in a follow-on change. Signed-off-by: Jiqian Chen <Jiqian.Chen@xxxxxxx> --- cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> cc: Anthony PERARD <anthony.perard@xxxxxxxxxx> cc: Michal Orzel <michal.orzel@xxxxxxx> cc: Jan Beulich <jbeulich@xxxxxxxx> cc: Julien Grall <julien@xxxxxxx> cc: "Roger Pau Monné" <roger.pau@xxxxxxxxxx> cc: Stefano Stabellini <sstabellini@xxxxxxxxxx> --- v1->v2 changes: new patch Best regards, Jiqian Chen. --- xen/drivers/pci/pci.c | 6 +++++- xen/include/xen/pci.h | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/xen/drivers/pci/pci.c b/xen/drivers/pci/pci.c index edf5b9f7ae9f..ec81d0db6133 100644 --- a/xen/drivers/pci/pci.c +++ b/xen/drivers/pci/pci.c @@ -40,7 +40,7 @@ unsigned int pci_find_cap_offset(pci_sbdf_t sbdf, unsigned int cap) } unsigned int pci_find_next_cap_ttl(pci_sbdf_t sbdf, unsigned int pos, - const unsigned int caps[], unsigned int n, + const unsigned int *caps, unsigned int n, unsigned int *ttl) { while ( (*ttl)-- ) @@ -55,6 +55,10 @@ unsigned int pci_find_next_cap_ttl(pci_sbdf_t sbdf, unsigned int pos, if ( id == 0xff ) break; + + if ( !caps || n == 0 ) + return pos; + for ( i = 0; i < n; i++ ) { if ( id == caps[i] ) diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h index ef601966533e..cc84f2cbebfc 100644 --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -251,7 +251,7 @@ int pci_mmcfg_write(unsigned int seg, unsigned int bus, unsigned int devfn, int reg, int len, u32 value); unsigned int pci_find_cap_offset(pci_sbdf_t sbdf, unsigned int cap); unsigned int pci_find_next_cap_ttl(pci_sbdf_t sbdf, unsigned int pos, - const unsigned int caps[], unsigned int n, + const unsigned int *caps, unsigned int n, unsigned int *ttl); unsigned int pci_find_next_cap(pci_sbdf_t sbdf, unsigned int pos, unsigned int cap); -- 2.34.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |