On Tue, 2021-12-07 at 15:57 -0500, Matthew Rosato wrote: > Intercepted zPCI instructions will specify the desired function via a > function handle. Add a routine to find the device with the specified > handle. > > Acked-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx> > Signed-off-by: Matthew Rosato <mjrosato@xxxxxxxxxxxxx> Reviewed-by: Eric Farman <farman@xxxxxxxxxxxxx> > --- > arch/s390/include/asm/pci.h | 1 + > arch/s390/pci/pci.c | 16 ++++++++++++++++ > 2 files changed, 17 insertions(+) > > diff --git a/arch/s390/include/asm/pci.h > b/arch/s390/include/asm/pci.h > index 1a8f9f42da3a..00a2c24d6d2b 100644 > --- a/arch/s390/include/asm/pci.h > +++ b/arch/s390/include/asm/pci.h > @@ -275,6 +275,7 @@ static inline struct zpci_dev *to_zpci_dev(struct > device *dev) > } > > struct zpci_dev *get_zdev_by_fid(u32); > +struct zpci_dev *get_zdev_by_fh(u32 fh); > > /* DMA */ > int zpci_dma_init(void); > diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c > index 9b4d3d78b444..af1c0ae017b1 100644 > --- a/arch/s390/pci/pci.c > +++ b/arch/s390/pci/pci.c > @@ -76,6 +76,22 @@ struct zpci_dev *get_zdev_by_fid(u32 fid) > return zdev; > } > > +struct zpci_dev *get_zdev_by_fh(u32 fh) > +{ > + struct zpci_dev *tmp, *zdev = NULL; > + > + spin_lock(&zpci_list_lock); > + list_for_each_entry(tmp, &zpci_list, entry) { > + if (tmp->fh == fh) { > + zdev = tmp; > + break; > + } > + } > + spin_unlock(&zpci_list_lock); > + return zdev; > +} > +EXPORT_SYMBOL_GPL(get_zdev_by_fh); > + > void zpci_remove_reserved_devices(void) > { > struct zpci_dev *tmp, *zdev;