mirror of https://gitee.com/openkylin/linux.git
PCI: Add pci_bus_set_ops
pci_bus_set_ops changes pci_ops associated with a pci_bus. This can be used by debug tools such as PCIE AER error injection to fake some PCI configuration registers. Acked-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
parent
1eb3948716
commit
a72b46c384
|
@ -66,6 +66,25 @@ EXPORT_SYMBOL(pci_bus_write_config_byte);
|
|||
EXPORT_SYMBOL(pci_bus_write_config_word);
|
||||
EXPORT_SYMBOL(pci_bus_write_config_dword);
|
||||
|
||||
/**
|
||||
* pci_bus_set_ops - Set raw operations of pci bus
|
||||
* @bus: pci bus struct
|
||||
* @ops: new raw operations
|
||||
*
|
||||
* Return previous raw operations
|
||||
*/
|
||||
struct pci_ops *pci_bus_set_ops(struct pci_bus *bus, struct pci_ops *ops)
|
||||
{
|
||||
struct pci_ops *old_ops;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&pci_lock, flags);
|
||||
old_ops = bus->ops;
|
||||
bus->ops = ops;
|
||||
spin_unlock_irqrestore(&pci_lock, flags);
|
||||
return old_ops;
|
||||
}
|
||||
EXPORT_SYMBOL(pci_bus_set_ops);
|
||||
|
||||
/**
|
||||
* pci_read_vpd - Read one entry from Vital Product Data
|
||||
|
|
|
@ -637,6 +637,7 @@ int pci_bus_write_config_word(struct pci_bus *bus, unsigned int devfn,
|
|||
int where, u16 val);
|
||||
int pci_bus_write_config_dword(struct pci_bus *bus, unsigned int devfn,
|
||||
int where, u32 val);
|
||||
struct pci_ops *pci_bus_set_ops(struct pci_bus *bus, struct pci_ops *ops);
|
||||
|
||||
static inline int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue