Merge branch 'pci/misc'
- Reorder struct pci_dev to avoid holes and reduce size (Christophe JAILLET) - Change pdev->rom_attr_enabled to single bit since it's only a boolean value (Christophe JAILLET) - Use struct_size() in pirq_convert_irt_table() instead of hand-writing it (Christophe JAILLET) - Explicitly include correct DT includes to untangle headers (Rob Herring) - Fix a DOE race between destroy_work_on_stack() and the stack-allocated task->work struct going out of scope in pci_doe() (Ira Weiny) - Use pci_dev_id() when possible instead of manually composing ID from dev->bus->number and dev->devfn (Xiongfeng Wang, Zheng Zengkai) - Move pci_create_resource_files() declarations to linux/pci.h for alpha build warnings (Arnd Bergmann) - Remove unused hotplug function declarations (Yue Haibing) - Remove unused mvebu struct mvebu_pcie.busn (Pali Rohár) - Unexport pcie_port_bus_type (Bjorn Helgaas) - Remove unnecessary sysfs ID local variable initialization (Bjorn Helgaas) - Fix BAR value printk formatting to accommodate 32-bit values (Bjorn Helgaas) - Use consistent pointer types for config access syscall get_user() and put_user() uses (Bjorn Helgaas) - Simplify AER_RECOVER_RING_SIZE definition (Bjorn Helgaas) - Simplify pci_pio_to_address() (Bjorn Helgaas) - Simplify pci_dev_driver() (Bjorn Helgaas) - Fix pci_bus_resetable(), pci_slot_resetable() name typos (Bjorn Helgaas) - Fix code and doc typos and code formatting (Bjorn Helgaas) - Tidy config space save/restore messages (Bjorn Helgaas) * pci/misc: PCI: Tidy config space save/restore messages PCI: Fix code formatting inconsistencies PCI: Fix typos in docs and comments PCI: Fix pci_bus_resetable(), pci_slot_resetable() name typos PCI: Simplify pci_dev_driver() PCI: Simplify pci_pio_to_address() PCI/AER: Simplify AER_RECOVER_RING_SIZE definition PCI: Use consistent put_user() pointer types PCI: Fix printk field formatting PCI: Remove unnecessary initializations PCI: Unexport pcie_port_bus_type PCI: mvebu: Remove unused busn member PCI: Remove unused function declarations PCI/sysfs: Move declarations to linux/pci.h PCI/P2PDMA: Use pci_dev_id() to simplify the code PCI/IOV: Use pci_dev_id() to simplify the code PCI/AER: Use pci_dev_id() to simplify the code PCI: apple: Use pci_dev_id() to simplify the code PCI/DOE: Fix destroy_work_on_stack() race PCI: Explicitly include correct DT includes x86/PCI: Use struct_size() in pirq_convert_irt_table() PCI: Change pdev->rom_attr_enabled to single bit PCI: Reorder pci_dev fields to reduce holes
This commit is contained in:
commit
43cc31da91
@ -17,7 +17,7 @@ chipsets are able to deal with these errors; these include PCI-E chipsets,
|
||||
and the PCI-host bridges found on IBM Power4, Power5 and Power6-based
|
||||
pSeries boxes. A typical action taken is to disconnect the affected device,
|
||||
halting all I/O to it. The goal of a disconnection is to avoid system
|
||||
corruption; for example, to halt system memory corruption due to DMA's
|
||||
corruption; for example, to halt system memory corruption due to DMAs
|
||||
to "wild" addresses. Typically, a reconnection mechanism is also
|
||||
offered, so that the affected PCI device(s) are reset and put back
|
||||
into working condition. The reset phase requires coordination
|
||||
@ -178,9 +178,9 @@ is STEP 6 (Permanent Failure).
|
||||
complex and not worth implementing.
|
||||
|
||||
The current powerpc implementation doesn't much care if the device
|
||||
attempts I/O at this point, or not. I/O's will fail, returning
|
||||
attempts I/O at this point, or not. I/Os will fail, returning
|
||||
a value of 0xff on read, and writes will be dropped. If more than
|
||||
EEH_MAX_FAILS I/O's are attempted to a frozen adapter, EEH
|
||||
EEH_MAX_FAILS I/Os are attempted to a frozen adapter, EEH
|
||||
assumes that the device driver has gone into an infinite loop
|
||||
and prints an error to syslog. A reboot is then required to
|
||||
get the device working again.
|
||||
@ -204,7 +204,7 @@ instead will have gone directly to STEP 3 (Link Reset) or STEP 4 (Slot Reset)
|
||||
.. note::
|
||||
|
||||
The following is proposed; no platform implements this yet:
|
||||
Proposal: All I/O's should be done _synchronously_ from within
|
||||
Proposal: All I/Os should be done _synchronously_ from within
|
||||
this callback, errors triggered by them will be returned via
|
||||
the normal pci_check_whatever() API, no new error_detected()
|
||||
callback will be issued due to an error happening here. However,
|
||||
@ -258,7 +258,7 @@ Powerpc platforms implement two levels of slot reset:
|
||||
soft reset(default) and fundamental(optional) reset.
|
||||
|
||||
Powerpc soft reset consists of asserting the adapter #RST line and then
|
||||
restoring the PCI BAR's and PCI configuration header to a state
|
||||
restoring the PCI BARs and PCI configuration header to a state
|
||||
that is equivalent to what it would be after a fresh system
|
||||
power-on followed by power-on BIOS/system firmware initialization.
|
||||
Soft reset is also known as hot-reset.
|
||||
@ -362,7 +362,7 @@ permanent failure in some way. If the device is hotplug-capable,
|
||||
the operator will probably want to remove and replace the device.
|
||||
Note, however, not all failures are truly "permanent". Some are
|
||||
caused by over-heating, some by a poorly seated card. Many
|
||||
PCI error events are caused by software bugs, e.g. DMA's to
|
||||
PCI error events are caused by software bugs, e.g. DMAs to
|
||||
wild addresses or bogus split transactions due to programming
|
||||
errors. See the discussion in Documentation/powerpc/eeh-pci-error-recovery.rst
|
||||
for additional detail on real-life experience of the causes of
|
||||
|
@ -88,7 +88,4 @@ extern void pci_adjust_legacy_attr(struct pci_bus *bus,
|
||||
enum pci_mmap_state mmap_type);
|
||||
#define HAVE_PCI_LEGACY 1
|
||||
|
||||
extern int pci_create_resource_files(struct pci_dev *dev);
|
||||
extern void pci_remove_resource_files(struct pci_dev *dev);
|
||||
|
||||
#endif /* __ALPHA_PCI_H */
|
||||
|
@ -136,14 +136,14 @@ static inline struct irq_routing_table *pirq_convert_irt_table(u8 *addr,
|
||||
if (ir->signature != IRT_SIGNATURE || !ir->used || ir->size < ir->used)
|
||||
return NULL;
|
||||
|
||||
size = sizeof(*ir) + ir->used * sizeof(ir->slots[0]);
|
||||
size = struct_size(ir, slots, ir->used);
|
||||
if (size > limit - addr)
|
||||
return NULL;
|
||||
|
||||
DBG(KERN_DEBUG "PCI: $IRT Interrupt Routing Table found at 0x%lx\n",
|
||||
__pa(ir));
|
||||
|
||||
size = sizeof(*rt) + ir->used * sizeof(rt->slots[0]);
|
||||
size = struct_size(rt, slots, ir->used);
|
||||
rt = kzalloc(size, GFP_KERNEL);
|
||||
if (!rt)
|
||||
return NULL;
|
||||
|
@ -14,8 +14,8 @@
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
|
@ -6,11 +6,10 @@
|
||||
* Author: Tom Joseph <tjoseph@cadence.com>
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/of_device.h>
|
||||
#include "pcie-cadence.h"
|
||||
|
||||
#define CDNS_PLAT_CPU_TO_BUS_ADDR 0x0FFFFFFF
|
||||
|
@ -4,6 +4,7 @@
|
||||
// Author: Cyrille Pitchen <cyrille.pitchen@free-electrons.com>
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
#include "pcie-cadence.h"
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
#define CDNS_PCIE_LM_ID_SUBSYS(sub) \
|
||||
(((sub) << CDNS_PCIE_LM_ID_SUBSYS_SHIFT) & CDNS_PCIE_LM_ID_SUBSYS_MASK)
|
||||
|
||||
/* Root Port Requestor ID Register */
|
||||
/* Root Port Requester ID Register */
|
||||
#define CDNS_PCIE_LM_RP_RID (CDNS_PCIE_LM_BASE + 0x0228)
|
||||
#define CDNS_PCIE_LM_RP_RID_MASK GENMASK(15, 0)
|
||||
#define CDNS_PCIE_LM_RP_RID_SHIFT 0
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci.h>
|
||||
|
@ -14,11 +14,11 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/phy/phy.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include "pcie-designware.h"
|
||||
|
@ -17,8 +17,8 @@
|
||||
#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
|
||||
#include <linux/mfd/syscon/imx7-iomuxc-gpr.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/msi.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/phy/phy.h>
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include <linux/clk.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
@ -17,6 +16,7 @@
|
||||
#include <linux/resource.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/phy/phy.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include "pcie-designware.h"
|
||||
|
@ -10,7 +10,7 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/resource.h>
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/resource.h>
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/phy/phy.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -9,9 +9,11 @@
|
||||
#include <linux/clk.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/iopoll.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/pci_regs.h>
|
||||
#include <linux/phy/phy.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/reset.h>
|
||||
|
||||
#include "../../pci.h"
|
||||
|
@ -16,8 +16,7 @@
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/phy/phy.h>
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include <linux/iopoll.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci.h>
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/iopoll.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/phy/phy.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -17,9 +17,6 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/msi.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -15,8 +15,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci.h>
|
||||
|
@ -9,8 +9,8 @@
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci-ecam.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -19,8 +19,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -5,7 +5,7 @@
|
||||
* Copyright (C) 2020 Jiaxun Yang <jiaxun.yang@flygoat.com>
|
||||
*/
|
||||
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pci_ids.h>
|
||||
|
@ -87,7 +87,6 @@ struct mvebu_pcie {
|
||||
struct resource io;
|
||||
struct resource realio;
|
||||
struct resource mem;
|
||||
struct resource busn;
|
||||
int nports;
|
||||
};
|
||||
|
||||
|
@ -20,8 +20,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -9,11 +9,10 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irqchip/chained_irq.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -670,7 +670,7 @@ static struct apple_pcie_port *apple_pcie_get_port(struct pci_dev *pdev)
|
||||
static int apple_pcie_add_device(struct apple_pcie_port *port,
|
||||
struct pci_dev *pdev)
|
||||
{
|
||||
u32 sid, rid = PCI_DEVID(pdev->bus->number, pdev->devfn);
|
||||
u32 sid, rid = pci_dev_id(pdev);
|
||||
int idx, err;
|
||||
|
||||
dev_dbg(&pdev->dev, "added to bus %s, index %d\n",
|
||||
@ -701,7 +701,7 @@ static int apple_pcie_add_device(struct apple_pcie_port *port,
|
||||
static void apple_pcie_release_device(struct apple_pcie_port *port,
|
||||
struct pci_dev *pdev)
|
||||
{
|
||||
u32 rid = PCI_DEVID(pdev->bus->number, pdev->devfn);
|
||||
u32 rid = pci_dev_id(pdev);
|
||||
int idx;
|
||||
|
||||
mutex_lock(&port->pcie->lock);
|
||||
|
@ -24,10 +24,8 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pci_ids.h>
|
||||
#include <linux/phy/phy.h>
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/iopoll.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/phy/phy.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -293,8 +293,8 @@ static int pci_doe_recv_resp(struct pci_doe_mb *doe_mb, struct pci_doe_task *tas
|
||||
static void signal_task_complete(struct pci_doe_task *task, int rv)
|
||||
{
|
||||
task->rv = rv;
|
||||
task->complete(task);
|
||||
destroy_work_on_stack(&task->work);
|
||||
task->complete(task);
|
||||
}
|
||||
|
||||
static void signal_task_abort(struct pci_doe_task *task, int rv)
|
||||
|
@ -986,22 +986,22 @@ static struct config_group *epf_ntb_add_cfs(struct pci_epf *epf,
|
||||
/*==== virtual PCI bus driver, which only load virtual NTB PCI driver ====*/
|
||||
|
||||
static u32 pci_space[] = {
|
||||
0xffffffff, /*DeviceID, Vendor ID*/
|
||||
0, /*Status, Command*/
|
||||
0xffffffff, /*Class code, subclass, prog if, revision id*/
|
||||
0x40, /*bist, header type, latency Timer, cache line size*/
|
||||
0, /*BAR 0*/
|
||||
0, /*BAR 1*/
|
||||
0, /*BAR 2*/
|
||||
0, /*BAR 3*/
|
||||
0, /*BAR 4*/
|
||||
0, /*BAR 5*/
|
||||
0, /*Cardbus cis point*/
|
||||
0, /*Subsystem ID Subystem vendor id*/
|
||||
0, /*ROM Base Address*/
|
||||
0, /*Reserved, Cap. Point*/
|
||||
0, /*Reserved,*/
|
||||
0, /*Max Lat, Min Gnt, interrupt pin, interrupt line*/
|
||||
0xffffffff, /* Device ID, Vendor ID */
|
||||
0, /* Status, Command */
|
||||
0xffffffff, /* Base Class, Subclass, Prog Intf, Revision ID */
|
||||
0x40, /* BIST, Header Type, Latency Timer, Cache Line Size */
|
||||
0, /* BAR 0 */
|
||||
0, /* BAR 1 */
|
||||
0, /* BAR 2 */
|
||||
0, /* BAR 3 */
|
||||
0, /* BAR 4 */
|
||||
0, /* BAR 5 */
|
||||
0, /* Cardbus CIS Pointer */
|
||||
0, /* Subsystem ID, Subsystem Vendor ID */
|
||||
0, /* ROM Base Address */
|
||||
0, /* Reserved, Capabilities Pointer */
|
||||
0, /* Reserved */
|
||||
0, /* Max_Lat, Min_Gnt, Interrupt Pin, Interrupt Line */
|
||||
};
|
||||
|
||||
static int pci_read(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val)
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include <linux/device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
|
||||
#include <linux/pci-epc.h>
|
||||
#include <linux/pci-epf.h>
|
||||
|
@ -178,7 +178,6 @@ void acpiphp_unregister_hotplug_slot(struct acpiphp_slot *slot);
|
||||
int acpiphp_enable_slot(struct acpiphp_slot *slot);
|
||||
int acpiphp_disable_slot(struct acpiphp_slot *slot);
|
||||
u8 acpiphp_get_power_status(struct acpiphp_slot *slot);
|
||||
u8 acpiphp_get_attention_status(struct acpiphp_slot *slot);
|
||||
u8 acpiphp_get_latch_status(struct acpiphp_slot *slot);
|
||||
u8 acpiphp_get_adapter_status(struct acpiphp_slot *slot);
|
||||
|
||||
|
@ -83,8 +83,6 @@ extern int cpci_debug;
|
||||
* board/chassis drivers.
|
||||
*/
|
||||
u8 cpci_get_attention_status(struct slot *slot);
|
||||
u8 cpci_get_latch_status(struct slot *slot);
|
||||
u8 cpci_get_adapter_status(struct slot *slot);
|
||||
u16 cpci_get_hs_csr(struct slot *slot);
|
||||
int cpci_set_attention_status(struct slot *slot, int status);
|
||||
int cpci_check_and_clear_ins(struct slot *slot);
|
||||
|
@ -264,8 +264,6 @@ extern struct list_head ibmphp_slot_head;
|
||||
void ibmphp_free_ebda_hpc_queue(void);
|
||||
int ibmphp_access_ebda(void);
|
||||
struct slot *ibmphp_get_slot_from_physical_num(u8);
|
||||
int ibmphp_get_total_hp_slots(void);
|
||||
void ibmphp_free_ibm_slot(struct slot *);
|
||||
void ibmphp_free_bus_info_queue(void);
|
||||
void ibmphp_free_ebda_pci_rsrc_queue(void);
|
||||
struct bus_info *ibmphp_find_same_bus_num(u32);
|
||||
|
@ -41,8 +41,7 @@ int pci_iov_vf_id(struct pci_dev *dev)
|
||||
return -EINVAL;
|
||||
|
||||
pf = pci_physfn(dev);
|
||||
return (((dev->bus->number << 8) + dev->devfn) -
|
||||
((pf->bus->number << 8) + pf->devfn + pf->sriov->offset)) /
|
||||
return (pci_dev_id(dev) - (pci_dev_id(pf) + pf->sriov->offset)) /
|
||||
pf->sriov->stride;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_iov_vf_id);
|
||||
|
@ -336,7 +336,7 @@ bool pci_msi_domain_supports(struct pci_dev *pdev, unsigned int feature_mask,
|
||||
if (!irq_domain_is_msi_parent(domain)) {
|
||||
/*
|
||||
* For "global" PCI/MSI interrupt domains the associated
|
||||
* msi_domain_info::flags is the authoritive source of
|
||||
* msi_domain_info::flags is the authoritative source of
|
||||
* information.
|
||||
*/
|
||||
info = domain->host_data;
|
||||
@ -344,7 +344,7 @@ bool pci_msi_domain_supports(struct pci_dev *pdev, unsigned int feature_mask,
|
||||
} else {
|
||||
/*
|
||||
* For MSI parent domains the supported feature set
|
||||
* is avaliable in the parent ops. This makes checks
|
||||
* is available in the parent ops. This makes checks
|
||||
* possible before actually instantiating the
|
||||
* per device domain because the parent is never
|
||||
* expanding the PCI/MSI functionality.
|
||||
|
@ -435,7 +435,7 @@ static const struct pci_p2pdma_whitelist_entry {
|
||||
/* Intel Xeon E7 v3/Xeon E5 v3/Core i7 */
|
||||
{PCI_VENDOR_ID_INTEL, 0x2f00, REQ_SAME_HOST_BRIDGE},
|
||||
{PCI_VENDOR_ID_INTEL, 0x2f01, REQ_SAME_HOST_BRIDGE},
|
||||
/* Intel SkyLake-E */
|
||||
/* Intel Skylake-E */
|
||||
{PCI_VENDOR_ID_INTEL, 0x2030, 0},
|
||||
{PCI_VENDOR_ID_INTEL, 0x2031, 0},
|
||||
{PCI_VENDOR_ID_INTEL, 0x2032, 0},
|
||||
@ -532,8 +532,7 @@ static bool host_bridge_whitelist(struct pci_dev *a, struct pci_dev *b,
|
||||
|
||||
static unsigned long map_types_idx(struct pci_dev *client)
|
||||
{
|
||||
return (pci_domain_nr(client->bus) << 16) |
|
||||
(client->bus->number << 8) | client->devfn;
|
||||
return (pci_domain_nr(client->bus) << 16) | pci_dev_id(client);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -193,7 +193,7 @@ static ssize_t new_id_store(struct device_driver *driver, const char *buf,
|
||||
u32 vendor, device, subvendor = PCI_ANY_ID,
|
||||
subdevice = PCI_ANY_ID, class = 0, class_mask = 0;
|
||||
unsigned long driver_data = 0;
|
||||
int fields = 0;
|
||||
int fields;
|
||||
int retval = 0;
|
||||
|
||||
fields = sscanf(buf, "%x %x %x %x %x %x %lx",
|
||||
@ -260,7 +260,7 @@ static ssize_t remove_id_store(struct device_driver *driver, const char *buf,
|
||||
struct pci_driver *pdrv = to_pci_driver(driver);
|
||||
u32 vendor, device, subvendor = PCI_ANY_ID,
|
||||
subdevice = PCI_ANY_ID, class = 0, class_mask = 0;
|
||||
int fields = 0;
|
||||
int fields;
|
||||
size_t retval = -ENODEV;
|
||||
|
||||
fields = sscanf(buf, "%x %x %x %x %x %x",
|
||||
@ -1474,14 +1474,15 @@ static struct pci_driver pci_compat_driver = {
|
||||
*/
|
||||
struct pci_driver *pci_dev_driver(const struct pci_dev *dev)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (dev->driver)
|
||||
return dev->driver;
|
||||
else {
|
||||
int i;
|
||||
for (i = 0; i <= PCI_ROM_RESOURCE; i++)
|
||||
if (dev->resource[i].flags & IORESOURCE_BUSY)
|
||||
return &pci_compat_driver;
|
||||
}
|
||||
|
||||
for (i = 0; i <= PCI_ROM_RESOURCE; i++)
|
||||
if (dev->resource[i].flags & IORESOURCE_BUSY)
|
||||
return &pci_compat_driver;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(pci_dev_driver);
|
||||
@ -1705,7 +1706,6 @@ struct bus_type pcie_port_bus_type = {
|
||||
.name = "pci_express",
|
||||
.match = pcie_port_bus_match,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(pcie_port_bus_type);
|
||||
#endif
|
||||
|
||||
static int __init pci_driver_init(void)
|
||||
|
@ -1291,7 +1291,7 @@ end:
|
||||
*
|
||||
* Call pci_power_up() to put @dev into D0, read from its PCI_PM_CTRL register
|
||||
* to confirm the state change, restore its BARs if they might be lost and
|
||||
* reconfigure ASPM in acordance with the new power state.
|
||||
* reconfigure ASPM in accordance with the new power state.
|
||||
*
|
||||
* If pci_restore_state() is going to be called right after a power state change
|
||||
* to D0, it is more efficient to use pci_power_up() directly instead of this
|
||||
@ -1686,7 +1686,7 @@ int pci_save_state(struct pci_dev *dev)
|
||||
/* XXX: 100% dword access ok here? */
|
||||
for (i = 0; i < 16; i++) {
|
||||
pci_read_config_dword(dev, i * 4, &dev->saved_config_space[i]);
|
||||
pci_dbg(dev, "saving config space at offset %#x (reading %#x)\n",
|
||||
pci_dbg(dev, "save config %#04x: %#010x\n",
|
||||
i * 4, dev->saved_config_space[i]);
|
||||
}
|
||||
dev->state_saved = true;
|
||||
@ -1717,7 +1717,7 @@ static void pci_restore_config_dword(struct pci_dev *pdev, int offset,
|
||||
return;
|
||||
|
||||
for (;;) {
|
||||
pci_dbg(pdev, "restoring config space at offset %#x (was %#x, writing %#x)\n",
|
||||
pci_dbg(pdev, "restore config %#04x: %#010x -> %#010x\n",
|
||||
offset, val, saved_val);
|
||||
pci_write_config_dword(pdev, offset, saved_val);
|
||||
if (retry-- <= 0)
|
||||
@ -4205,16 +4205,12 @@ int pci_register_io_range(struct fwnode_handle *fwnode, phys_addr_t addr,
|
||||
|
||||
phys_addr_t pci_pio_to_address(unsigned long pio)
|
||||
{
|
||||
phys_addr_t address = (phys_addr_t)OF_BAD_ADDR;
|
||||
|
||||
#ifdef PCI_IOBASE
|
||||
if (pio >= MMIO_UPPER_LIMIT)
|
||||
return address;
|
||||
|
||||
address = logic_pio_to_hwaddr(pio);
|
||||
if (pio < MMIO_UPPER_LIMIT)
|
||||
return logic_pio_to_hwaddr(pio);
|
||||
#endif
|
||||
|
||||
return address;
|
||||
return (phys_addr_t) OF_BAD_ADDR;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_pio_to_address);
|
||||
|
||||
@ -5641,7 +5637,7 @@ int pci_try_reset_function(struct pci_dev *dev)
|
||||
EXPORT_SYMBOL_GPL(pci_try_reset_function);
|
||||
|
||||
/* Do any devices on or below this bus prevent a bus reset? */
|
||||
static bool pci_bus_resetable(struct pci_bus *bus)
|
||||
static bool pci_bus_resettable(struct pci_bus *bus)
|
||||
{
|
||||
struct pci_dev *dev;
|
||||
|
||||
@ -5651,7 +5647,7 @@ static bool pci_bus_resetable(struct pci_bus *bus)
|
||||
|
||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||
if (dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET ||
|
||||
(dev->subordinate && !pci_bus_resetable(dev->subordinate)))
|
||||
(dev->subordinate && !pci_bus_resettable(dev->subordinate)))
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -5709,7 +5705,7 @@ unlock:
|
||||
}
|
||||
|
||||
/* Do any devices on or below this slot prevent a bus reset? */
|
||||
static bool pci_slot_resetable(struct pci_slot *slot)
|
||||
static bool pci_slot_resettable(struct pci_slot *slot)
|
||||
{
|
||||
struct pci_dev *dev;
|
||||
|
||||
@ -5721,7 +5717,7 @@ static bool pci_slot_resetable(struct pci_slot *slot)
|
||||
if (!dev->slot || dev->slot != slot)
|
||||
continue;
|
||||
if (dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET ||
|
||||
(dev->subordinate && !pci_bus_resetable(dev->subordinate)))
|
||||
(dev->subordinate && !pci_bus_resettable(dev->subordinate)))
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -5857,7 +5853,7 @@ static int pci_slot_reset(struct pci_slot *slot, bool probe)
|
||||
{
|
||||
int rc;
|
||||
|
||||
if (!slot || !pci_slot_resetable(slot))
|
||||
if (!slot || !pci_slot_resettable(slot))
|
||||
return -ENOTTY;
|
||||
|
||||
if (!probe)
|
||||
@ -5924,7 +5920,7 @@ static int pci_bus_reset(struct pci_bus *bus, bool probe)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!bus->self || !pci_bus_resetable(bus))
|
||||
if (!bus->self || !pci_bus_resettable(bus))
|
||||
return -ENOTTY;
|
||||
|
||||
if (probe)
|
||||
|
@ -153,8 +153,8 @@ int pci_hp_add_bridge(struct pci_dev *dev);
|
||||
void pci_create_legacy_files(struct pci_bus *bus);
|
||||
void pci_remove_legacy_files(struct pci_bus *bus);
|
||||
#else
|
||||
static inline void pci_create_legacy_files(struct pci_bus *bus) { return; }
|
||||
static inline void pci_remove_legacy_files(struct pci_bus *bus) { return; }
|
||||
static inline void pci_create_legacy_files(struct pci_bus *bus) { }
|
||||
static inline void pci_remove_legacy_files(struct pci_bus *bus) { }
|
||||
#endif
|
||||
|
||||
/* Lock for read/write access to pci device and bus lists */
|
||||
@ -428,9 +428,9 @@ void dpc_process_error(struct pci_dev *pdev);
|
||||
pci_ers_result_t dpc_reset_link(struct pci_dev *pdev);
|
||||
bool pci_dpc_recovered(struct pci_dev *pdev);
|
||||
#else
|
||||
static inline void pci_save_dpc_state(struct pci_dev *dev) {}
|
||||
static inline void pci_restore_dpc_state(struct pci_dev *dev) {}
|
||||
static inline void pci_dpc_init(struct pci_dev *pdev) {}
|
||||
static inline void pci_save_dpc_state(struct pci_dev *dev) { }
|
||||
static inline void pci_restore_dpc_state(struct pci_dev *dev) { }
|
||||
static inline void pci_dpc_init(struct pci_dev *pdev) { }
|
||||
static inline bool pci_dpc_recovered(struct pci_dev *pdev) { return false; }
|
||||
#endif
|
||||
|
||||
@ -442,12 +442,12 @@ void pcie_walk_rcec(struct pci_dev *rcec,
|
||||
int (*cb)(struct pci_dev *, void *),
|
||||
void *userdata);
|
||||
#else
|
||||
static inline void pci_rcec_init(struct pci_dev *dev) {}
|
||||
static inline void pci_rcec_exit(struct pci_dev *dev) {}
|
||||
static inline void pcie_link_rcec(struct pci_dev *rcec) {}
|
||||
static inline void pci_rcec_init(struct pci_dev *dev) { }
|
||||
static inline void pci_rcec_exit(struct pci_dev *dev) { }
|
||||
static inline void pcie_link_rcec(struct pci_dev *rcec) { }
|
||||
static inline void pcie_walk_rcec(struct pci_dev *rcec,
|
||||
int (*cb)(struct pci_dev *, void *),
|
||||
void *userdata) {}
|
||||
void *userdata) { }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCI_ATS
|
||||
@ -490,16 +490,9 @@ static inline int pci_iov_init(struct pci_dev *dev)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
static inline void pci_iov_release(struct pci_dev *dev)
|
||||
|
||||
{
|
||||
}
|
||||
static inline void pci_iov_remove(struct pci_dev *dev)
|
||||
{
|
||||
}
|
||||
static inline void pci_restore_iov_state(struct pci_dev *dev)
|
||||
{
|
||||
}
|
||||
static inline void pci_iov_release(struct pci_dev *dev) { }
|
||||
static inline void pci_iov_remove(struct pci_dev *dev) { }
|
||||
static inline void pci_restore_iov_state(struct pci_dev *dev) { }
|
||||
static inline int pci_iov_bus_range(struct pci_bus *bus)
|
||||
{
|
||||
return 0;
|
||||
@ -724,7 +717,7 @@ static inline int pci_dev_acpi_reset(struct pci_dev *dev, bool probe)
|
||||
{
|
||||
return -ENOTTY;
|
||||
}
|
||||
static inline void pci_set_acpi_fwnode(struct pci_dev *dev) {}
|
||||
static inline void pci_set_acpi_fwnode(struct pci_dev *dev) { }
|
||||
static inline int pci_acpi_program_hp_params(struct pci_dev *dev)
|
||||
{
|
||||
return -ENODEV;
|
||||
@ -745,7 +738,7 @@ static inline pci_power_t acpi_pci_get_power_state(struct pci_dev *dev)
|
||||
{
|
||||
return PCI_UNKNOWN;
|
||||
}
|
||||
static inline void acpi_pci_refresh_power_state(struct pci_dev *dev) {}
|
||||
static inline void acpi_pci_refresh_power_state(struct pci_dev *dev) { }
|
||||
static inline int acpi_pci_wakeup(struct pci_dev *dev, bool enable)
|
||||
{
|
||||
return -ENODEV;
|
||||
|
@ -699,7 +699,7 @@ static void __aer_print_error(struct pci_dev *dev,
|
||||
void aer_print_error(struct pci_dev *dev, struct aer_err_info *info)
|
||||
{
|
||||
int layer, agent;
|
||||
int id = ((dev->bus->number << 8) | dev->devfn);
|
||||
int id = pci_dev_id(dev);
|
||||
const char *level;
|
||||
|
||||
if (!info->status) {
|
||||
@ -834,7 +834,7 @@ static bool is_error_source(struct pci_dev *dev, struct aer_err_info *e_info)
|
||||
if ((PCI_BUS_NUM(e_info->id) != 0) &&
|
||||
!(dev->bus->bus_flags & PCI_BUS_FLAGS_NO_AERSID)) {
|
||||
/* Device ID match? */
|
||||
if (e_info->id == ((dev->bus->number << 8) | dev->devfn))
|
||||
if (e_info->id == pci_dev_id(dev))
|
||||
return true;
|
||||
|
||||
/* Continue id comparing if there is no multiple error */
|
||||
@ -968,8 +968,7 @@ static void handle_error_source(struct pci_dev *dev, struct aer_err_info *info)
|
||||
|
||||
#ifdef CONFIG_ACPI_APEI_PCIEAER
|
||||
|
||||
#define AER_RECOVER_RING_ORDER 4
|
||||
#define AER_RECOVER_RING_SIZE (1 << AER_RECOVER_RING_ORDER)
|
||||
#define AER_RECOVER_RING_SIZE 16
|
||||
|
||||
struct aer_recover_entry {
|
||||
u8 bus;
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/msi.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_pci.h>
|
||||
#include <linux/pci_hotplug.h>
|
||||
#include <linux/slab.h>
|
||||
@ -2137,7 +2136,7 @@ static void pci_configure_relaxed_ordering(struct pci_dev *dev)
|
||||
{
|
||||
struct pci_dev *root;
|
||||
|
||||
/* PCI_EXP_DEVICE_RELAX_EN is RsvdP in VFs */
|
||||
/* PCI_EXP_DEVCTL_RELAX_EN is RsvdP in VFs */
|
||||
if (dev->is_virtfn)
|
||||
return;
|
||||
|
||||
|
@ -363,7 +363,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_CBUS_3, quirk_isa_d
|
||||
|
||||
#ifdef CONFIG_HAS_IOPORT
|
||||
/*
|
||||
* Intel NM10 "TigerPoint" LPC PM1a_STS.BM_STS must be clear
|
||||
* Intel NM10 "Tiger Point" LPC PM1a_STS.BM_STS must be clear
|
||||
* for some HT machines to use C4 w/o hanging.
|
||||
*/
|
||||
static void quirk_tigerpoint_bm_sts(struct pci_dev *dev)
|
||||
@ -376,7 +376,7 @@ static void quirk_tigerpoint_bm_sts(struct pci_dev *dev)
|
||||
pm1a = inw(pmbase);
|
||||
|
||||
if (pm1a & 0x10) {
|
||||
pci_info(dev, FW_BUG "TigerPoint LPC.BM_STS cleared\n");
|
||||
pci_info(dev, FW_BUG "Tiger Point LPC.BM_STS cleared\n");
|
||||
outw(0x10, pmbase);
|
||||
}
|
||||
}
|
||||
@ -3075,7 +3075,7 @@ static void __nv_msi_ht_cap_quirk(struct pci_dev *dev, int all)
|
||||
|
||||
/*
|
||||
* HT MSI mapping should be disabled on devices that are below
|
||||
* a non-Hypertransport host bridge. Locate the host bridge...
|
||||
* a non-HyperTransport host bridge. Locate the host bridge.
|
||||
*/
|
||||
host_bridge = pci_get_domain_bus_and_slot(pci_domain_nr(dev->bus), 0,
|
||||
PCI_DEVFN(0, 0));
|
||||
@ -5731,7 +5731,7 @@ int pci_idt_bus_quirk(struct pci_bus *bus, int devfn, u32 *l, int timeout)
|
||||
/*
|
||||
* Microsemi Switchtec NTB uses devfn proxy IDs to move TLPs between
|
||||
* NT endpoints via the internal switch fabric. These IDs replace the
|
||||
* originating requestor ID TLPs which access host memory on peer NTB
|
||||
* originating Requester ID TLPs which access host memory on peer NTB
|
||||
* ports. Therefore, all proxy IDs must be aliased to the NTB device
|
||||
* to permit access when the IOMMU is turned on.
|
||||
*/
|
||||
|
@ -1799,7 +1799,7 @@ static void remove_dev_resources(struct pci_dev *dev, struct resource *io,
|
||||
* Make sure prefetchable memory is reduced from
|
||||
* the correct resource. Specifically we put 32-bit
|
||||
* prefetchable memory in non-prefetchable window
|
||||
* if there is an 64-bit pretchable window.
|
||||
* if there is an 64-bit prefetchable window.
|
||||
*
|
||||
* See comments in __pci_bus_size_bridges() for
|
||||
* more information.
|
||||
|
@ -104,7 +104,7 @@ static void pci_std_update_resource(struct pci_dev *dev, int resno)
|
||||
pci_read_config_dword(dev, reg, &check);
|
||||
|
||||
if ((new ^ check) & mask) {
|
||||
pci_err(dev, "BAR %d: error updating (%#08x != %#08x)\n",
|
||||
pci_err(dev, "BAR %d: error updating (%#010x != %#010x)\n",
|
||||
resno, new, check);
|
||||
}
|
||||
|
||||
@ -113,7 +113,7 @@ static void pci_std_update_resource(struct pci_dev *dev, int resno)
|
||||
pci_write_config_dword(dev, reg + 4, new);
|
||||
pci_read_config_dword(dev, reg + 4, &check);
|
||||
if (check != new) {
|
||||
pci_err(dev, "BAR %d: error updating (high %#08x != %#08x)\n",
|
||||
pci_err(dev, "BAR %d: error updating (high %#010x != %#010x)\n",
|
||||
resno, new, check);
|
||||
}
|
||||
}
|
||||
|
@ -52,13 +52,13 @@ SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,
|
||||
|
||||
switch (len) {
|
||||
case 1:
|
||||
err = put_user(byte, (unsigned char __user *)buf);
|
||||
err = put_user(byte, (u8 __user *)buf);
|
||||
break;
|
||||
case 2:
|
||||
err = put_user(word, (unsigned short __user *)buf);
|
||||
err = put_user(word, (u16 __user *)buf);
|
||||
break;
|
||||
case 4:
|
||||
err = put_user(dword, (unsigned int __user *)buf);
|
||||
err = put_user(dword, (u32 __user *)buf);
|
||||
break;
|
||||
}
|
||||
pci_dev_put(dev);
|
||||
@ -70,13 +70,13 @@ error:
|
||||
they get instead of a machine check on x86. */
|
||||
switch (len) {
|
||||
case 1:
|
||||
put_user(-1, (unsigned char __user *)buf);
|
||||
put_user(-1, (u8 __user *)buf);
|
||||
break;
|
||||
case 2:
|
||||
put_user(-1, (unsigned short __user *)buf);
|
||||
put_user(-1, (u16 __user *)buf);
|
||||
break;
|
||||
case 4:
|
||||
put_user(-1, (unsigned int __user *)buf);
|
||||
put_user(-1, (u32 __user *)buf);
|
||||
break;
|
||||
}
|
||||
pci_dev_put(dev);
|
||||
|
@ -366,8 +366,8 @@ struct pci_dev {
|
||||
pci_power_t current_state; /* Current operating state. In ACPI,
|
||||
this is D0-D3, D0 being fully
|
||||
functional, and D3 being off. */
|
||||
unsigned int imm_ready:1; /* Supports Immediate Readiness */
|
||||
u8 pm_cap; /* PM capability offset */
|
||||
unsigned int imm_ready:1; /* Supports Immediate Readiness */
|
||||
unsigned int pme_support:5; /* Bitmask of states from which PME#
|
||||
can be generated */
|
||||
unsigned int pme_poll:1; /* Poll device's PME status bit */
|
||||
@ -392,9 +392,9 @@ struct pci_dev {
|
||||
|
||||
#ifdef CONFIG_PCIEASPM
|
||||
struct pcie_link_state *link_state; /* ASPM link state */
|
||||
u16 l1ss; /* L1SS Capability pointer */
|
||||
unsigned int ltr_path:1; /* Latency Tolerance Reporting
|
||||
supported from root to here */
|
||||
u16 l1ss; /* L1SS Capability pointer */
|
||||
#endif
|
||||
unsigned int pasid_no_tlp:1; /* PASID works without TLP Prefix */
|
||||
unsigned int eetlp_prefix_path:1; /* End-to-End TLP Prefix */
|
||||
@ -464,13 +464,13 @@ struct pci_dev {
|
||||
unsigned int no_vf_scan:1; /* Don't scan for VFs after IOV enablement */
|
||||
unsigned int no_command_memory:1; /* No PCI_COMMAND_MEMORY */
|
||||
unsigned int rom_bar_overlap:1; /* ROM BAR disable broken */
|
||||
unsigned int rom_attr_enabled:1; /* Display of ROM attribute enabled? */
|
||||
pci_dev_flags_t dev_flags;
|
||||
atomic_t enable_cnt; /* pci_enable_device has been called */
|
||||
|
||||
spinlock_t pcie_cap_lock; /* Protects RMW ops in capability accessors */
|
||||
u32 saved_config_space[16]; /* Config space saved at suspend time */
|
||||
struct hlist_head saved_cap_space;
|
||||
int rom_attr_enabled; /* Display of ROM attribute enabled? */
|
||||
struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE]; /* sysfs file for resources */
|
||||
struct bin_attribute *res_attr_wc[DEVICE_COUNT_RESOURCE]; /* sysfs file for WC mapping of resources */
|
||||
|
||||
@ -1433,7 +1433,6 @@ void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge);
|
||||
void pci_assign_unassigned_bus_resources(struct pci_bus *bus);
|
||||
void pci_assign_unassigned_root_bus_resources(struct pci_bus *bus);
|
||||
int pci_reassign_bridge_resources(struct pci_dev *bridge, unsigned long type);
|
||||
void pdev_enable_device(struct pci_dev *);
|
||||
int pci_enable_resources(struct pci_dev *, int mask);
|
||||
void pci_assign_irq(struct pci_dev *dev);
|
||||
struct resource *pci_find_resource(struct pci_dev *dev, struct resource *res);
|
||||
@ -2290,6 +2289,11 @@ int pcibios_alloc_irq(struct pci_dev *dev);
|
||||
void pcibios_free_irq(struct pci_dev *dev);
|
||||
resource_size_t pcibios_default_alignment(void);
|
||||
|
||||
#if !defined(HAVE_PCI_MMAP) && !defined(ARCH_GENERIC_PCI_MMAP_RESOURCE)
|
||||
extern int pci_create_resource_files(struct pci_dev *dev);
|
||||
extern void pci_remove_resource_files(struct pci_dev *dev);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PCI_MMCONFIG) || defined(CONFIG_ACPI_MCFG)
|
||||
void __init pci_mmcfg_early_init(void);
|
||||
void __init pci_mmcfg_late_init(void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user