Re: [kvm-unit-tests PATCH v4 03/12] pci: x86: Add remaining PCI configuration space accessors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux