Pull PCI updates from Bjorn Helgaas: "Enumeration changes: - Evaluate PCI Boot Configuration _DSM to learn if firmware wants us to preserve its resource assignments (Benjamin Herrenschmidt) - Simplify resource distribution (Nicholas Johnson) - Decode 32 GT/s link speed (Gustavo Pimentel) Virtualization: - Fix incorrect caching of VF config space size (Alex Williamson) - Fix VF driver probing sysfs knobs (Alex Williamson) Peer-to-peer DMA: - Fix dma_virt_ops check (Logan Gunthorpe) Altera host bridge driver: - Allow building as module (Ley Foon Tan) Armada 8K host bridge driver: - add PHYs support (Miquel Raynal) DesignWare host bridge driver: - Export APIs to support removable loadable module (Vidya Sagar) - Enable Relaxed Ordering erratum workaround only on Tegra20 & Tegra30 (Vidya Sagar) Hyper-V host bridge driver: - Fix use-after-free in eject (Dexuan Cui) Mobiveil host bridge driver: - Clean up and fix many issues, including non-identify mapped windows, 64-bit windows, multi-MSI, class code, INTx clearing (Hou Zhiqiang) Qualcomm host bridge driver: - Use clk bulk API for 2.4.0 controllers (Bjorn Andersson) - Add QCS404 support (Bjorn Andersson) - Assert PERST for at least 100ms (Niklas Cassel) R-Car host bridge driver: - Add r8a774a1 DT support (Biju Das) Tegra host bridge driver: - Add support for Gen2, opportunistic UpdateFC and ACK (PCIe protocol details) AER, GPIO-based PERST# (Manikanta Maddireddy) - Fix many issues, including power-on failure cases, interrupt masking in suspend, UPHY settings, AFI dynamic clock gating, pending DLL transactions (Manikanta Maddireddy) Xilinx host bridge driver: - Fix NWL Multi-MSI programming (Bharat Kumar Gogada) Endpoint support: - Fix 64bit BAR support (Alan Mikhak) - Fix pcitest build issues (Alan Mikhak, Andy Shevchenko) Bug fixes: - Fix NVIDIA GPU multi-function power dependencies (Abhishek Sahu) - Fix NVIDIA GPU HDA enablement issue (Lukas Wunner) - Ignore lockdep for sysfs "remove" (Marek Vasut) Misc: - Convert docs to reST (Changbin Du, Mauro Carvalho Chehab)" * tag 'pci-v5.3-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (107 commits) PCI: Enable NVIDIA HDA controllers tools: PCI: Fix installation when `make tools/pci_install` PCI: dwc: pci-dra7xx: Fix compilation when !CONFIG_GPIOLIB PCI: Fix typos and whitespace errors PCI: mobiveil: Fix INTx interrupt clearing in mobiveil_pcie_isr() PCI: mobiveil: Fix infinite-loop in the INTx handling function PCI: mobiveil: Move PCIe PIO enablement out of inbound window routine PCI: mobiveil: Add upper 32-bit PCI base address setup in inbound window PCI: mobiveil: Add upper 32-bit CPU base address setup in outbound window PCI: mobiveil: Mask out hardcoded bits in inbound/outbound windows setup PCI: mobiveil: Clear the control fields before updating it PCI: mobiveil: Add configured inbound windows counter PCI: mobiveil: Fix the valid check for inbound and outbound windows PCI: mobiveil: Clean-up program_{ib/ob}_windows() PCI: mobiveil: Remove an unnecessary return value check PCI: mobiveil: Fix error return values PCI: mobiveil: Refactor the MEM/IO outbound window initialization PCI: mobiveil: Make some register updates more readable PCI: mobiveil: Reformat the code for readability dt-bindings: PCI: mobiveil: Change gpio_slave and apb_csr to optional ...
Showing the changes to include/linux (6 of 117 files). Show all
Unified · Split
| @@ -52,7 +52,7 @@ · 51 unmodified lines | |||
| 52 | * irq line disabled until the threaded handler has been run. | 52 | * irq line disabled until the threaded handler has been run. |
| 53 | * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend. Does not guarantee | 53 | * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend. Does not guarantee |
| 54 | * that this interrupt will wake the system from a suspended | 54 | * that this interrupt will wake the system from a suspended |
| 55 | * state. See Documentation/power/suspend-and-interrupts.txt | 55 | * state. See Documentation/power/suspend-and-interrupts.rst |
| 56 | * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set | 56 | * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set |
| 57 | * IRQF_NO_THREAD - Interrupt cannot be threaded | 57 | * IRQF_NO_THREAD - Interrupt cannot be threaded |
| 58 | * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device | 58 | * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device |
| @@ -16,6 +16,25 @@ typedef unsigned long kernel_ulong_t; · 15 unmodified lines | |||
| 16 | 16 | ||
| 17 | #define PCI_ANY_ID (~0) | 17 | #define PCI_ANY_ID (~0) |
| 18 | 18 | ||
| 19 | /** | ||
| 20 | * struct pci_device_id - PCI device ID structure | ||
| 21 | * @vendor: Vendor ID to match (or PCI_ANY_ID) | ||
| 22 | * @device: Device ID to match (or PCI_ANY_ID) | ||
| 23 | * @subvendor: Subsystem vendor ID to match (or PCI_ANY_ID) | ||
| 24 | * @subdevice: Subsystem device ID to match (or PCI_ANY_ID) | ||
| 25 | * @class: Device class, subclass, and "interface" to match. | ||
| 26 | * See Appendix D of the PCI Local Bus Spec or | ||
| 27 | * include/linux/pci_ids.h for a full list of classes. | ||
| 28 | * Most drivers do not need to specify class/class_mask | ||
| 29 | * as vendor/device is normally sufficient. | ||
| 30 | * @class_mask: Limit which sub-fields of the class field are compared. | ||
| 31 | * See drivers/scsi/sym53c8xx_2/ for example of usage. | ||
| 32 | * @driver_data: Data private to the driver. | ||
| 33 | * Most drivers don't need to use driver_data field. | ||
| 34 | * Best practice is to use driver_data as an index | ||
| 35 | * into a static list of equivalent device types, | ||
| 36 | * instead of using it as a pointer. | ||
| 37 | */ | ||
| 19 | struct pci_device_id { | 38 | struct pci_device_id { |
| 20 | __u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/ | 39 | __u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/ |
| 21 | __u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */ | 40 | __u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */ |
| @@ -257,17 +276,17 @@ struct pcmcia_device_id { · 235 unmodified lines | |||
| 257 | __u16 match_flags; | 276 | __u16 match_flags; |
| 258 | 277 | ||
| 259 | __u16 manf_id; | 278 | __u16 manf_id; |
| 260 | __u16 card_id; | 279 | __u16 card_id; |
| 261 | 280 | ||
| 262 | __u8 func_id; | 281 | __u8 func_id; |
| 263 | 282 | ||
| 264 | /* for real multi-function devices */ | 283 | /* for real multi-function devices */ |
| 265 | __u8 function; | 284 | __u8 function; |
| 266 | 285 | ||
| 267 | /* for pseudo multi-function devices */ | 286 | /* for pseudo multi-function devices */ |
| 268 | __u8 device_no; | 287 | __u8 device_no; |
| 269 | 288 | ||
| 270 | __u32 prod_id_hash[4]; | 289 | __u32 prod_id_hash[4]; |
| 271 | 290 | ||
| 272 | /* not matched against in kernelspace */ | 291 | /* not matched against in kernelspace */ |
| 273 | const char * prod_id[4]; | 292 | const char * prod_id[4]; |
| @@ -107,9 +107,10 @@ static inline void acpiphp_check_host_bridge(struct acpi_device *adev) { } · 106 unmodified lines | |||
| 107 | #endif | 107 | #endif |
| 108 | 108 | ||
| 109 | extern const guid_t pci_acpi_dsm_guid; | 109 | extern const guid_t pci_acpi_dsm_guid; |
| 110 | #define DEVICE_LABEL_DSM 0x07 | 110 | #define IGNORE_PCI_BOOT_CONFIG_DSM 0x05 |
| 111 | #define RESET_DELAY_DSM 0x08 | 111 | #define DEVICE_LABEL_DSM 0x07 |
| 112 | #define FUNCTION_DELAY_DSM 0x09 | 112 | #define RESET_DELAY_DSM 0x08 |
| 113 | #define FUNCTION_DELAY_DSM 0x09 | ||
| 113 | 114 | ||
| 114 | #else /* CONFIG_ACPI */ | 115 | #else /* CONFIG_ACPI */ |
| 115 | static inline void acpi_pci_add_bus(struct pci_bus *bus) { } | 116 | static inline void acpi_pci_add_bus(struct pci_bus *bus) { } |
| @@ -151,6 +151,8 @@ static inline const char *pci_power_name(pci_power_t state) · 150 unmodified lines | |||
| 151 | #define PCI_PM_BUS_WAIT 50 | 151 | #define PCI_PM_BUS_WAIT 50 |
| 152 | 152 | ||
| 153 | /** | 153 | /** |
| 154 | * typedef pci_channel_state_t | ||
| 155 | * | ||
| 154 | * The pci_channel state describes connectivity between the CPU and | 156 | * The pci_channel state describes connectivity between the CPU and |
| 155 | * the PCI device. If some PCI bus between here and the PCI device | 157 | * the PCI device. If some PCI bus between here and the PCI device |
| 156 | * has crashed or locked up, this info is reflected here. | 158 | * has crashed or locked up, this info is reflected here. |
| @@ -258,6 +260,7 @@ enum pci_bus_speed { · 101 unmodified lines | |||
| 258 | PCIE_SPEED_5_0GT = 0x15, | 260 | PCIE_SPEED_5_0GT = 0x15, |
| 259 | PCIE_SPEED_8_0GT = 0x16, | 261 | PCIE_SPEED_8_0GT = 0x16, |
| 260 | PCIE_SPEED_16_0GT = 0x17, | 262 | PCIE_SPEED_16_0GT = 0x17, |
| 263 | PCIE_SPEED_32_0GT = 0x18, | ||
| 261 | PCI_SPEED_UNKNOWN = 0xff, | 264 | PCI_SPEED_UNKNOWN = 0xff, |
| 262 | }; | 265 | }; |
| 263 | 266 | ||
| @@ -383,7 +386,7 @@ struct pci_dev { · 119 unmodified lines | |||
| 383 | 386 | ||
| 384 | unsigned int is_busmaster:1; /* Is busmaster */ | 387 | unsigned int is_busmaster:1; /* Is busmaster */ |
| 385 | unsigned int no_msi:1; /* May not use MSI */ | 388 | unsigned int no_msi:1; /* May not use MSI */ |
| 386 | unsigned int no_64bit_msi:1; /* May only use 32-bit MSIs */ | 389 | unsigned int no_64bit_msi:1; /* May only use 32-bit MSIs */ |
| 387 | unsigned int block_cfg_access:1; /* Config space access blocked */ | 390 | unsigned int block_cfg_access:1; /* Config space access blocked */ |
| 388 | unsigned int broken_parity_status:1; /* Generates false positive parity */ | 391 | unsigned int broken_parity_status:1; /* Generates false positive parity */ |
| 389 | unsigned int irq_reroute_variant:2; /* Needs IRQ rerouting variant */ | 392 | unsigned int irq_reroute_variant:2; /* Needs IRQ rerouting variant */ |
| @@ -506,6 +509,8 @@ struct pci_host_bridge { · 116 unmodified lines | |||
| 506 | unsigned int native_shpc_hotplug:1; /* OS may use SHPC hotplug */ | 509 | unsigned int native_shpc_hotplug:1; /* OS may use SHPC hotplug */ |
| 507 | unsigned int native_pme:1; /* OS may use PCIe PME */ | 510 | unsigned int native_pme:1; /* OS may use PCIe PME */ |
| 508 | unsigned int native_ltr:1; /* OS may use PCIe LTR */ | 511 | unsigned int native_ltr:1; /* OS may use PCIe LTR */ |
| 512 | unsigned int preserve_config:1; /* Preserve FW resource setup */ | ||
| 513 | |||
| 509 | /* Resource alignment requirements */ | 514 | /* Resource alignment requirements */ |
| 510 | resource_size_t (*align_resource)(struct pci_dev *dev, | 515 | resource_size_t (*align_resource)(struct pci_dev *dev, |
| 511 | const struct resource *res, | 516 | const struct resource *res, |
| @@ -776,6 +781,50 @@ struct pci_error_handlers { · 264 unmodified lines | |||
| 776 | 781 | ||
| 777 | 782 | ||
| 778 | struct module; | 783 | struct module; |
| 784 | |||
| 785 | /** | ||
| 786 | * struct pci_driver - PCI driver structure | ||
| 787 | * @node: List of driver structures. | ||
| 788 | * @name: Driver name. | ||
| 789 | * @id_table: Pointer to table of device IDs the driver is | ||
| 790 | * interested in. Most drivers should export this | ||
| 791 | * table using MODULE_DEVICE_TABLE(pci,...). | ||
| 792 | * @probe: This probing function gets called (during execution | ||
| 793 | * of pci_register_driver() for already existing | ||
| 794 | * devices or later if a new device gets inserted) for | ||
| 795 | * all PCI devices which match the ID table and are not | ||
| 796 | * "owned" by the other drivers yet. This function gets | ||
| 797 | * passed a "struct pci_dev \*" for each device whose | ||
| 798 | * entry in the ID table matches the device. The probe | ||
| 799 | * function returns zero when the driver chooses to | ||
| 800 | * take "ownership" of the device or an error code | ||
| 801 | * (negative number) otherwise. | ||
| 802 | * The probe function always gets called from process | ||
| 803 | * context, so it can sleep. | ||
| 804 | * @remove: The remove() function gets called whenever a device | ||
| 805 | * being handled by this driver is removed (either during | ||
| 806 | * deregistration of the driver or when it's manually | ||
| 807 | * pulled out of a hot-pluggable slot). | ||
| 808 | * The remove function always gets called from process | ||
| 809 | * context, so it can sleep. | ||
| 810 | * @suspend: Put device into low power state. | ||
| 811 | * @suspend_late: Put device into low power state. | ||
| 812 | * @resume_early: Wake device from low power state. | ||
| 813 | * @resume: Wake device from low power state. | ||
| 814 | * (Please see Documentation/power/pci.rst for descriptions | ||
| 815 | * of PCI Power Management and the related functions.) | ||
| 816 | * @shutdown: Hook into reboot_notifier_list (kernel/sys.c). | ||
| 817 | * Intended to stop any idling DMA operations. | ||
| 818 | * Useful for enabling wake-on-lan (NIC) or changing | ||
| 819 | * the power state of a device before reboot. | ||
| 820 | * e.g. drivers/net/e100.c. | ||
| 821 | * @sriov_configure: Optional driver callback to allow configuration of | ||
| 822 | * number of VFs to enable via sysfs "sriov_numvfs" file. | ||
| 823 | * @err_handler: See Documentation/PCI/pci-error-recovery.rst | ||
| 824 | * @groups: Sysfs attribute groups. | ||
| 825 | * @driver: Driver model structure. | ||
| 826 | * @dynids: List of dynamically added device IDs. | ||
| 827 | */ | ||
| 779 | struct pci_driver { | 828 | struct pci_driver { |
| 780 | struct list_head node; | 829 | struct list_head node; |
| 781 | const char *name; | 830 | const char *name; |
| @@ -2207,7 +2256,7 @@ static inline u8 pci_vpd_srdt_tag(const u8 *srdt) · 1425 unmodified lines | |||
| 2207 | 2256 | ||
| 2208 | /** | 2257 | /** |
| 2209 | * pci_vpd_info_field_size - Extracts the information field length | 2258 | * pci_vpd_info_field_size - Extracts the information field length |
| 2210 | * @lrdt: Pointer to the beginning of an information field header | 2259 | * @info_field: Pointer to the beginning of an information field header |
| 2211 | * | 2260 | * |
| 2212 | * Returns the extracted information field length. | 2261 | * Returns the extracted information field length. |
| 2213 | */ | 2262 | */ |
| @@ -1112,7 +1112,7 @@ · 1111 unmodified lines | |||
| 1112 | 1112 | ||
| 1113 | #define PCI_VENDOR_ID_AL 0x10b9 | 1113 | #define PCI_VENDOR_ID_AL 0x10b9 |
| 1114 | #define PCI_DEVICE_ID_AL_M1533 0x1533 | 1114 | #define PCI_DEVICE_ID_AL_M1533 0x1533 |
| 1115 | #define PCI_DEVICE_ID_AL_M1535 0x1535 | 1115 | #define PCI_DEVICE_ID_AL_M1535 0x1535 |
| 1116 | #define PCI_DEVICE_ID_AL_M1541 0x1541 | 1116 | #define PCI_DEVICE_ID_AL_M1541 0x1541 |
| 1117 | #define PCI_DEVICE_ID_AL_M1563 0x1563 | 1117 | #define PCI_DEVICE_ID_AL_M1563 0x1563 |
| 1118 | #define PCI_DEVICE_ID_AL_M1621 0x1621 | 1118 | #define PCI_DEVICE_ID_AL_M1621 0x1621 |
| @@ -1336,6 +1336,7 @@ · 217 unmodified lines | |||
| 1336 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS 0x0752 | 1336 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS 0x0752 |
| 1337 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759 | 1337 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759 |
| 1338 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS 0x07D8 | 1338 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS 0x07D8 |
| 1339 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_320M 0x08A0 | ||
| 1339 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS 0x0AA2 | 1340 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS 0x0AA2 |
| 1340 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA 0x0D85 | 1341 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA 0x0D85 |
| 1341 | 1342 | ||
| @@ -1752,7 +1753,7 @@ · 410 unmodified lines | |||
| 1752 | #define PCI_VENDOR_ID_STALLION 0x124d | 1753 | #define PCI_VENDOR_ID_STALLION 0x124d |
| 1753 | 1754 | ||
| 1754 | /* Allied Telesyn */ | 1755 | /* Allied Telesyn */ |
| 1755 | #define PCI_VENDOR_ID_AT 0x1259 | 1756 | #define PCI_VENDOR_ID_AT 0x1259 |
| 1756 | #define PCI_SUBDEVICE_ID_AT_2700FX 0x2701 | 1757 | #define PCI_SUBDEVICE_ID_AT_2700FX 0x2701 |
| 1757 | #define PCI_SUBDEVICE_ID_AT_2701FX 0x2703 | 1758 | #define PCI_SUBDEVICE_ID_AT_2701FX 0x2703 |
| 1758 | 1759 | ||
| @@ -2550,7 +2551,7 @@ · 791 unmodified lines | |||
| 2550 | #define PCI_DEVICE_ID_KORENIX_JETCARDF2 0x1700 | 2551 | #define PCI_DEVICE_ID_KORENIX_JETCARDF2 0x1700 |
| 2551 | #define PCI_DEVICE_ID_KORENIX_JETCARDF3 0x17ff | 2552 | #define PCI_DEVICE_ID_KORENIX_JETCARDF3 0x17ff |
| 2552 | 2553 | ||
| 2553 | #define PCI_VENDOR_ID_HUAWEI 0x19e5 | 2554 | #define PCI_VENDOR_ID_HUAWEI 0x19e5 |
| 2554 | 2555 | ||
| 2555 | #define PCI_VENDOR_ID_NETRONOME 0x19ee | 2556 | #define PCI_VENDOR_ID_NETRONOME 0x19ee |
| 2556 | #define PCI_DEVICE_ID_NETRONOME_NFP4000 0x4000 | 2557 | #define PCI_DEVICE_ID_NETRONOME_NFP4000 0x4000 |
| @@ -271,7 +271,7 @@ typedef struct pm_message { · 270 unmodified lines | |||
| 271 | * actions to be performed by a device driver's callbacks generally depend on | 271 | * actions to be performed by a device driver's callbacks generally depend on |
| 272 | * the platform and subsystem the device belongs to. | 272 | * the platform and subsystem the device belongs to. |
| 273 | * | 273 | * |
| 274 | * Refer to Documentation/power/runtime_pm.txt for more information about the | 274 | * Refer to Documentation/power/runtime_pm.rst for more information about the |
| 275 | * role of the @runtime_suspend(), @runtime_resume() and @runtime_idle() | 275 | * role of the @runtime_suspend(), @runtime_resume() and @runtime_idle() |
| 276 | * callbacks in device runtime power management. | 276 | * callbacks in device runtime power management. |
| 277 | */ | 277 | */ |