On Wed, Jun 08, 2016 at 08:21:27AM +0200, Alexander Gordeev wrote: > On Tue, Jun 07, 2016 at 08:48:46AM +0200, Thomas Huth wrote: > > On 06.06.2016 14:46, Alexander Gordeev wrote: > > > Cc: Thomas Huth <thuth@xxxxxxxxxx> > > > Cc: Andrew Jones <drjones@xxxxxxxxxx> > > > Reviewed-by: Andrew Jones <drjones@xxxxxxxxxx> > > > Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxx> > > > --- > > > lib/pci.c | 5 ++--- > > > lib/x86/asm/pci.h | 23 +++++++++++++++++++++-- > > > 2 files changed, 23 insertions(+), 5 deletions(-) > > > > > > diff --git a/lib/pci.c b/lib/pci.c > > > index 7ddaac639006..b0d89bf98067 100644 > > > --- a/lib/pci.c > > > +++ b/lib/pci.c > > > @@ -13,9 +13,8 @@ pcidevaddr_t pci_find_dev(uint16_t vendor_id, uint16_t device_id) > > > pcidevaddr_t dev; > > > > > > for (dev = 0; dev < 256; ++dev) { > > > - uint32_t id = pci_config_readl(dev, 0); > > > - > > > - if ((id & 0xFFFF) == vendor_id && (id >> 16) == device_id) > > > + if (pci_config_readw(dev, PCI_VENDOR_ID) == vendor_id && > > > + pci_config_readw(dev, PCI_DEVICE_ID) == device_id) > > > return dev; > > > } > > > > > > diff --git a/lib/x86/asm/pci.h b/lib/x86/asm/pci.h > > > index d00438fe91e4..821a2c1e180a 100644 > > > --- a/lib/x86/asm/pci.h > > > +++ b/lib/x86/asm/pci.h > > > @@ -9,11 +9,30 @@ > > > #include "pci.h" > > > #include "x86/asm/io.h" > > > > > > +#define PCI_CONF1_ADDRESS(dev, reg) ((0x1 << 31) | (dev << 8) | reg) > > > + > > > +static inline uint8_t pci_config_readb(pcidevaddr_t dev, uint8_t reg) > > > +{ > > > + outl(PCI_CONF1_ADDRESS(dev, reg), 0xCF8); > > > + return inb(0xCFC); > > > +} > > > + > > > +static inline uint16_t pci_config_readw(pcidevaddr_t dev, uint8_t reg) > > > +{ > > > + outl(PCI_CONF1_ADDRESS(dev, reg), 0xCF8); > > > + return inw(0xCFC); > > > +} > > > + > > > static inline uint32_t pci_config_readl(pcidevaddr_t dev, uint8_t reg) > > > { > > > - uint32_t index = reg | (dev << 8) | (0x1 << 31); > > > - outl(index, 0xCF8); > > > + outl(PCI_CONF1_ADDRESS(dev, reg), 0xCF8); > > > return inl(0xCFC); > > > } > > > > > > +static inline void pci_config_writel(pcidevaddr_t dev, uint8_t reg, uint32_t val) > > > +{ > > > + outl(PCI_CONF1_ADDRESS(dev, reg), 0xCF8); > > > + outl(val, 0xCFC); > > > +} > > > + > > > #endif > > > > Maybe add a #define for that magic value 0xCF8, now that you use it > > multiple times? > > I used to an idea 0xCF8/0xCFC in x86 world are one of those well- > known constant that people perceive better their values rather than > any names :) > > Andrew? I agree with Alex. I think CF8 and CFC are effectively the names now in the PC world :-) > > > Anyway, > > Reviewed-by: Thomas Huth <thuth@xxxxxxxxxx> > > > > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html