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 | 52 | * irq line disabled until the threaded handler has been run. |
| 53 | 53 | * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend. Does not guarantee |
| 54 | 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 | 56 | * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set |
| 57 | 57 | * IRQF_NO_THREAD - Interrupt cannot be threaded |
| 58 | 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 | 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 | 38 | struct pci_device_id { |
| 20 | 39 | __u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/ |
| 21 | 40 | __u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */ |
| @@ -257,17 +276,17 @@ struct pcmcia_device_id { · 235 unmodified lines | ||
| 257 | 276 | __u16 match_flags; |
| 258 | 277 | |
| 259 | 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 | 283 | /* for real multi-function devices */ |
| 265 | − __u8 function; | |
| 284 | + __u8 function; | |
| 266 | 285 | |
| 267 | 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 | 291 | /* not matched against in kernelspace */ |
| 273 | 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 | 107 | #endif |
| 108 | 108 | |
| 109 | 109 | extern const guid_t pci_acpi_dsm_guid; |
| 110 | −#define DEVICE_LABEL_DSM 0x07 | |
| 111 | −#define RESET_DELAY_DSM 0x08 | |
| 112 | −#define FUNCTION_DELAY_DSM 0x09 | |
| 110 | +#define IGNORE_PCI_BOOT_CONFIG_DSM 0x05 | |
| 111 | +#define DEVICE_LABEL_DSM 0x07 | |
| 112 | +#define RESET_DELAY_DSM 0x08 | |
| 113 | +#define FUNCTION_DELAY_DSM 0x09 | |
| 113 | 114 | |
| 114 | 115 | #else /* CONFIG_ACPI */ |
| 115 | 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 | 151 | #define PCI_PM_BUS_WAIT 50 |
| 152 | 152 | |
| 153 | 153 | /** |
| 154 | + * typedef pci_channel_state_t | |
| 155 | + * | |
| 154 | 156 | * The pci_channel state describes connectivity between the CPU and |
| 155 | 157 | * the PCI device. If some PCI bus between here and the PCI device |
| 156 | 158 | * has crashed or locked up, this info is reflected here. |
| @@ -258,6 +260,7 @@ enum pci_bus_speed { · 101 unmodified lines | ||
| 258 | 260 | PCIE_SPEED_5_0GT = 0x15, |
| 259 | 261 | PCIE_SPEED_8_0GT = 0x16, |
| 260 | 262 | PCIE_SPEED_16_0GT = 0x17, |
| 263 | + PCIE_SPEED_32_0GT = 0x18, | |
| 261 | 264 | PCI_SPEED_UNKNOWN = 0xff, |
| 262 | 265 | }; |
| 263 | 266 | |
| @@ -383,7 +386,7 @@ struct pci_dev { · 119 unmodified lines | ||
| 383 | 386 | |
| 384 | 387 | unsigned int is_busmaster:1; /* Is busmaster */ |
| 385 | 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 | 390 | unsigned int block_cfg_access:1; /* Config space access blocked */ |
| 388 | 391 | unsigned int broken_parity_status:1; /* Generates false positive parity */ |
| 389 | 392 | unsigned int irq_reroute_variant:2; /* Needs IRQ rerouting variant */ |
| @@ -506,6 +509,8 @@ struct pci_host_bridge { · 116 unmodified lines | ||
| 506 | 509 | unsigned int native_shpc_hotplug:1; /* OS may use SHPC hotplug */ |
| 507 | 510 | unsigned int native_pme:1; /* OS may use PCIe PME */ |
| 508 | 511 | unsigned int native_ltr:1; /* OS may use PCIe LTR */ |
| 512 | + unsigned int preserve_config:1; /* Preserve FW resource setup */ | |
| 513 | + | |
| 509 | 514 | /* Resource alignment requirements */ |
| 510 | 515 | resource_size_t (*align_resource)(struct pci_dev *dev, |
| 511 | 516 | const struct resource *res, |
| @@ -776,6 +781,50 @@ struct pci_error_handlers { · 264 unmodified lines | ||
| 776 | 781 | |
| 777 | 782 | |
| 778 | 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 | 828 | struct pci_driver { |
| 780 | 829 | struct list_head node; |
| 781 | 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 | 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 | 2261 | * Returns the extracted information field length. |
| 2213 | 2262 | */ |
| @@ -1112,7 +1112,7 @@ · 1111 unmodified lines | ||
| 1112 | 1112 | |
| 1113 | 1113 | #define PCI_VENDOR_ID_AL 0x10b9 |
| 1114 | 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 | 1116 | #define PCI_DEVICE_ID_AL_M1541 0x1541 |
| 1117 | 1117 | #define PCI_DEVICE_ID_AL_M1563 0x1563 |
| 1118 | 1118 | #define PCI_DEVICE_ID_AL_M1621 0x1621 |
| @@ -1336,6 +1336,7 @@ · 217 unmodified lines | ||
| 1336 | 1336 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS 0x0752 |
| 1337 | 1337 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759 |
| 1338 | 1338 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS 0x07D8 |
| 1339 | +#define PCI_DEVICE_ID_NVIDIA_GEFORCE_320M 0x08A0 | |
| 1339 | 1340 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS 0x0AA2 |
| 1340 | 1341 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA 0x0D85 |
| 1341 | 1342 | |
| @@ -1752,7 +1753,7 @@ · 410 unmodified lines | ||
| 1752 | 1753 | #define PCI_VENDOR_ID_STALLION 0x124d |
| 1753 | 1754 | |
| 1754 | 1755 | /* Allied Telesyn */ |
| 1755 | −#define PCI_VENDOR_ID_AT 0x1259 | |
| 1756 | +#define PCI_VENDOR_ID_AT 0x1259 | |
| 1756 | 1757 | #define PCI_SUBDEVICE_ID_AT_2700FX 0x2701 |
| 1757 | 1758 | #define PCI_SUBDEVICE_ID_AT_2701FX 0x2703 |
| 1758 | 1759 | |
| @@ -2550,7 +2551,7 @@ · 791 unmodified lines | ||
| 2550 | 2551 | #define PCI_DEVICE_ID_KORENIX_JETCARDF2 0x1700 |
| 2551 | 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 | 2556 | #define PCI_VENDOR_ID_NETRONOME 0x19ee |
| 2556 | 2557 | #define PCI_DEVICE_ID_NETRONOME_NFP4000 0x4000 |
| @@ -271,7 +271,7 @@ typedef struct pm_message { · 270 unmodified lines | ||
| 271 | 271 | * actions to be performed by a device driver's callbacks generally depend on |
| 272 | 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 | 275 | * role of the @runtime_suspend(), @runtime_resume() and @runtime_idle() |
| 276 | 276 | * callbacks in device runtime power management. |
| 277 | 277 | */ |