mirror of https://gitee.com/openkylin/linux.git
Merge branch 'pci/misc' into next
* pci/misc: PCI: Enable access to non-standard VPD for Chelsio devices (cxgb3) PCI: Expand "VPD access disabled" quirk message PCI: pciehp: Remove loading message PCI: hotplug: Remove hotplug core message PCI: Remove service driver load/unload messages PCI/AER: Log AER IRQ when claiming Root Port PCI/AER: Log errors with PCI device, not PCIe service device PCI/AER: Remove unused version macros PCI/PME: Log PME IRQ when claiming Root Port PCI/PME: Drop unused support for PMEs from Root Complex Event Collectors PCI: Move config space size macros to pci_regs.h
This commit is contained in:
commit
c1f2e80c19
|
@ -23,6 +23,9 @@
|
|||
*
|
||||
* Send feedback to <kristen.c.accardi@intel.com>
|
||||
*
|
||||
* Authors:
|
||||
* Greg Kroah-Hartman <greg@kroah.com>
|
||||
* Scott Murray <scottm@somanetworks.com>
|
||||
*/
|
||||
|
||||
#include <linux/module.h> /* try_module_get & module_put */
|
||||
|
@ -50,15 +53,9 @@
|
|||
#define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
|
||||
#define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
|
||||
|
||||
|
||||
/* local variables */
|
||||
static bool debug;
|
||||
|
||||
#define DRIVER_VERSION "0.5"
|
||||
#define DRIVER_AUTHOR "Greg Kroah-Hartman <greg@kroah.com>, Scott Murray <scottm@somanetworks.com>"
|
||||
#define DRIVER_DESC "PCI Hot Plug PCI Core"
|
||||
|
||||
|
||||
static LIST_HEAD(pci_hotplug_slot_list);
|
||||
static DEFINE_MUTEX(pci_hp_mutex);
|
||||
|
||||
|
@ -534,7 +531,6 @@ static int __init pci_hotplug_init(void)
|
|||
return result;
|
||||
}
|
||||
|
||||
info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
|
||||
return result;
|
||||
}
|
||||
device_initcall(pci_hotplug_init);
|
||||
|
|
|
@ -25,6 +25,10 @@
|
|||
*
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
* Authors:
|
||||
* Dan Zink <dan.zink@compaq.com>
|
||||
* Greg Kroah-Hartman <greg@kroah.com>
|
||||
* Dely Sy <dely.l.sy@intel.com>"
|
||||
*/
|
||||
|
||||
#include <linux/moduleparam.h>
|
||||
|
@ -42,10 +46,6 @@ bool pciehp_poll_mode;
|
|||
int pciehp_poll_time;
|
||||
static bool pciehp_force;
|
||||
|
||||
#define DRIVER_VERSION "0.4"
|
||||
#define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>"
|
||||
#define DRIVER_DESC "PCI Express Hot Plug Controller Driver"
|
||||
|
||||
/*
|
||||
* not really modular, but the easiest way to keep compat with existing
|
||||
* bootargs behaviour is to continue using module_param here.
|
||||
|
@ -333,7 +333,6 @@ static int __init pcied_init(void)
|
|||
|
||||
retval = pcie_port_service_register(&hpdriver_portdrv);
|
||||
dbg("pcie_port_service_register = %d\n", retval);
|
||||
info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
|
||||
if (retval)
|
||||
dbg("Failure to register service\n");
|
||||
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
#ifndef DRIVERS_PCI_H
|
||||
#define DRIVERS_PCI_H
|
||||
|
||||
#define PCI_CFG_SPACE_SIZE 256
|
||||
#define PCI_CFG_SPACE_EXP_SIZE 4096
|
||||
|
||||
#define PCI_FIND_CAP_TTL 48
|
||||
|
||||
extern const unsigned char pcie_link_speed[];
|
||||
|
|
|
@ -30,13 +30,6 @@
|
|||
#include "aerdrv.h"
|
||||
#include "../../pci.h"
|
||||
|
||||
/*
|
||||
* Version Information
|
||||
*/
|
||||
#define DRIVER_VERSION "v1.0"
|
||||
#define DRIVER_AUTHOR "tom.l.nguyen@intel.com"
|
||||
#define DRIVER_DESC "Root Port Advanced Error Reporting Driver"
|
||||
|
||||
static int aer_probe(struct pcie_device *dev);
|
||||
static void aer_remove(struct pcie_device *dev);
|
||||
static pci_ers_result_t aer_error_detected(struct pci_dev *dev,
|
||||
|
@ -297,12 +290,12 @@ static int aer_probe(struct pcie_device *dev)
|
|||
{
|
||||
int status;
|
||||
struct aer_rpc *rpc;
|
||||
struct device *device = &dev->device;
|
||||
struct device *device = &dev->port->dev;
|
||||
|
||||
/* Alloc rpc data structure */
|
||||
rpc = aer_alloc_rpc(dev);
|
||||
if (!rpc) {
|
||||
dev_printk(KERN_DEBUG, device, "alloc rpc failed\n");
|
||||
dev_printk(KERN_DEBUG, device, "alloc AER rpc failed\n");
|
||||
aer_remove(dev);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
@ -310,7 +303,8 @@ static int aer_probe(struct pcie_device *dev)
|
|||
/* Request IRQ ISR */
|
||||
status = request_irq(dev->irq, aer_irq, IRQF_SHARED, "aerdrv", dev);
|
||||
if (status) {
|
||||
dev_printk(KERN_DEBUG, device, "request IRQ failed\n");
|
||||
dev_printk(KERN_DEBUG, device, "request AER IRQ %d failed\n",
|
||||
dev->irq);
|
||||
aer_remove(dev);
|
||||
return status;
|
||||
}
|
||||
|
@ -318,8 +312,8 @@ static int aer_probe(struct pcie_device *dev)
|
|||
rpc->isr = 1;
|
||||
|
||||
aer_enable_rootport(rpc);
|
||||
|
||||
return status;
|
||||
dev_info(device, "AER enabled with IRQ %d\n", dev->irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -300,8 +300,6 @@ static irqreturn_t pcie_pme_irq(int irq, void *context)
|
|||
*/
|
||||
static int pcie_pme_set_native(struct pci_dev *dev, void *ign)
|
||||
{
|
||||
dev_info(&dev->dev, "Signaling PME through PCIe PME interrupt\n");
|
||||
|
||||
device_set_run_wake(&dev->dev, true);
|
||||
dev->pme_interrupt = true;
|
||||
return 0;
|
||||
|
@ -319,23 +317,8 @@ static int pcie_pme_set_native(struct pci_dev *dev, void *ign)
|
|||
static void pcie_pme_mark_devices(struct pci_dev *port)
|
||||
{
|
||||
pcie_pme_set_native(port, NULL);
|
||||
if (port->subordinate) {
|
||||
if (port->subordinate)
|
||||
pci_walk_bus(port->subordinate, pcie_pme_set_native, NULL);
|
||||
} else {
|
||||
struct pci_bus *bus = port->bus;
|
||||
struct pci_dev *dev;
|
||||
|
||||
/* Check if this is a root port event collector. */
|
||||
if (pci_pcie_type(port) != PCI_EXP_TYPE_RC_EC || !bus)
|
||||
return;
|
||||
|
||||
down_read(&pci_bus_sem);
|
||||
list_for_each_entry(dev, &bus->devices, bus_list)
|
||||
if (pci_is_pcie(dev)
|
||||
&& pci_pcie_type(dev) == PCI_EXP_TYPE_RC_END)
|
||||
pcie_pme_set_native(dev, NULL);
|
||||
up_read(&pci_bus_sem);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -364,12 +347,14 @@ static int pcie_pme_probe(struct pcie_device *srv)
|
|||
ret = request_irq(srv->irq, pcie_pme_irq, IRQF_SHARED, "PCIe PME", srv);
|
||||
if (ret) {
|
||||
kfree(data);
|
||||
} else {
|
||||
pcie_pme_mark_devices(port);
|
||||
pcie_pme_interrupt_enable(port, true);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
dev_info(&port->dev, "Signaling PME with IRQ %d\n", srv->irq);
|
||||
|
||||
pcie_pme_mark_devices(port);
|
||||
pcie_pme_interrupt_enable(port, true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool pcie_pme_check_wakeup(struct pci_bus *bus)
|
||||
|
|
|
@ -499,7 +499,6 @@ static int pcie_port_probe_service(struct device *dev)
|
|||
if (status)
|
||||
return status;
|
||||
|
||||
dev_printk(KERN_DEBUG, dev, "service driver %s loaded\n", driver->name);
|
||||
get_device(dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -524,8 +523,6 @@ static int pcie_port_remove_service(struct device *dev)
|
|||
pciedev = to_pcie_device(dev);
|
||||
driver = to_service_driver(dev->driver);
|
||||
if (driver && driver->remove) {
|
||||
dev_printk(KERN_DEBUG, dev, "unloading service driver %s\n",
|
||||
driver->name);
|
||||
driver->remove(pciedev);
|
||||
put_device(dev);
|
||||
}
|
||||
|
|
|
@ -2156,7 +2156,7 @@ static void quirk_blacklist_vpd(struct pci_dev *dev)
|
|||
{
|
||||
if (dev->vpd) {
|
||||
dev->vpd->len = 0;
|
||||
dev_warn(&dev->dev, FW_BUG "VPD access disabled\n");
|
||||
dev_warn(&dev->dev, FW_BUG "disabling VPD access (can't determine size of non-standard VPD format)\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3255,6 +3255,25 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C
|
|||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
|
||||
quirk_thunderbolt_hotplug_msi);
|
||||
|
||||
static void quirk_chelsio_extend_vpd(struct pci_dev *dev)
|
||||
{
|
||||
pci_set_vpd_size(dev, 8192);
|
||||
}
|
||||
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x20, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x21, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x22, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x23, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x24, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x25, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x26, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x30, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x31, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x32, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x35, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x36, quirk_chelsio_extend_vpd);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x37, quirk_chelsio_extend_vpd);
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
/*
|
||||
* Apple: Shutdown Cactus Ridge Thunderbolt controller.
|
||||
|
|
|
@ -31,8 +31,6 @@
|
|||
|
||||
#include "vfio_pci_private.h"
|
||||
|
||||
#define PCI_CFG_SPACE_SIZE 256
|
||||
|
||||
/* Fake capability ID for standard config space */
|
||||
#define PCI_CAP_ID_BASIC 0
|
||||
|
||||
|
|
|
@ -22,6 +22,14 @@
|
|||
#ifndef LINUX_PCI_REGS_H
|
||||
#define LINUX_PCI_REGS_H
|
||||
|
||||
/*
|
||||
* Conventional PCI and PCI-X Mode 1 devices have 256 bytes of
|
||||
* configuration space. PCI-X Mode 2 and PCIe devices have 4096 bytes of
|
||||
* configuration space.
|
||||
*/
|
||||
#define PCI_CFG_SPACE_SIZE 256
|
||||
#define PCI_CFG_SPACE_EXP_SIZE 4096
|
||||
|
||||
/*
|
||||
* Under PCI, each device has 256 bytes of configuration address space,
|
||||
* of which the first 64 bytes are standardized as follows:
|
||||
|
|
Loading…
Reference in New Issue