Skip to content

Commit 90ddb3f

Browse files
committed
Merge tag 'pci-v6.3-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci
Pull PCI updates from Bjorn Helgaas: "Enumeration: - Rework portdrv shutdown so it disables interrupts but doesn't disable bus mastering, which leads to hangs on Loongson LS7A - Add mechanism to prevent Max_Read_Request_Size (MRRS) increases, again to avoid hardware issues on Loongson LS7A (and likely other devices based on DesignWare IP) - Ignore devices with a firmware (DT or ACPI) node that says the device is disabled Resource management: - Distribute spare resources to unconfigured hotplug bridges at boot-time (not just when hot-adding such a bridge), which makes hot-adding devices to docks work better. Tried this in v6.1 but had to revert for regressions, so try again - Fix root bus issue that dropped resources that happened to end at 0, e.g., [bus 00] PCI device hotplug: - Remove device locking when marking device as disconnected so this doesn't have to wait for concurrent driver bind/unbind to complete - Quirk more Qualcomm bridges that don't fully implement the PCIe Slot Status 'Command Completed' bit Power management: - Account for _S0W of the target bridge in acpi_pci_bridge_d3() so we don't miss hot-add notifications for USB4 docks, Thunderbolt, etc Reset: - Observe delay after reset, e.g., resuming from system sleep, regardless of whether a bridge can suspend to D3cold at runtime - Wait for secondary bus to become ready after a bridge reset Virtualization: - Avoid FLR on some AMD FCH AHCI adapters where it doesn't work - Allow independent IOMMU groups for some Wangxun NICs that prevent peer-to-peer transactions but don't advertise an ACS Capability Error handling: - Configure End-to-End-CRC (ECRC) only if Linux owns the AER Capability - Remove redundant Device Control Error Reporting Enable in the AER service driver since this is already done for all devices during enumeration ASPM: - Add pci_enable_link_state() interface to allow drivers to enable ASPM link state Endpoint framework: - Move dra7xx and tegra194 linkup processing from hard IRQ to threaded IRQ handler - Add a separate lock for endpoint controller list of endpoint function drivers to prevent deadlock in callbacks - Pass events from endpoint controller to endpoint function drivers via callbacks instead of notifiers Synopsys DesignWare eDMA controller driver (acked by Vinod): - Fix CPU vs PCI address issues - Fix source vs destination address issues - Fix issues with interleaved transfer semantics - Fix channel count initialization issue (issue still exists in several other drivers) - Clean up and improve debugfs usage so it will work on platforms with several eDMA devices Baikal T-1 PCIe controller driver: - Set a 64-bit DMA mask Freescale i.MX6 PCIe controller driver: - Add i.MX8MM, i.MX8MQ, i.MX8MP endpoint mode DT binding and driver support Intel VMD host bridge driver: - Add quirk to configure PCIe ASPM and LTR. This is normally done by BIOS, and will be for future products Marvell MVEBU PCIe controller driver: - Mark this driver as broken in Kconfig since bugs prevent its daily usage MediaTek MT7621 PCIe controller driver: - Delay PHY port initialization to improve boot reliability for ZBT WE1326, ZBT WF3526-P, and some Netgear models Qualcomm PCIe controller driver: - Add MSM8998 DT compatible string - Unify MSM8996 and MSM8998 clock orderings - Add SM8350 DT binding and driver support - Add IPQ8074 Gen3 DT binding and driver support - Correct qcom,perst-regs in DT binding - Add qcom_pcie_host_deinit() so the PHY is powered off and regulators and clocks are disabled on late host-init errors Socionext UniPhier Pro5 controller driver: - Clean up uniphier-ep reg, clocks, resets, and their names in DT binding Synopsys DesignWare PCIe controller driver: - Restrict coherent DMA mask to 32 bits for MSI, but allow controller drivers to set 64-bit streaming DMA mask - Add eDMA engine support in both Root Port and Endpoint controllers Miscellaneous: - Remove MODULE_LICENSE from boolean drivers so they don't look like modules so modprobe can complain about them" * tag 'pci-v6.3-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci: (86 commits) PCI: dwc: Add Root Port and Endpoint controller eDMA engine support PCI: bt1: Set 64-bit DMA mask PCI: dwc: Restrict only coherent DMA mask for MSI address allocation dmaengine: dw-edma: Prepare dw_edma_probe() for builtin callers dmaengine: dw-edma: Depend on DW_EDMA instead of selecting it dmaengine: dw-edma: Add mem-mapped LL-entries support PCI: Remove MODULE_LICENSE so boolean drivers don't look like modules PCI: hv: Drop duplicate PCI_MSI dependency PCI/P2PDMA: Annotate RCU dereference PCI/sysfs: Constify struct kobj_type pci_slot_ktype PCI: hotplug: Allow marking devices as disconnected during bind/unbind PCI: pciehp: Add Qualcomm quirk for Command Completed erratum PCI: qcom: Add IPQ8074 Gen3 port support dt-bindings: PCI: qcom: Add IPQ8074 Gen3 port dt-bindings: PCI: qcom: Sort compatibles alphabetically PCI: qcom: Fix host-init error handling PCI: qcom: Add SM8350 support dt-bindings: PCI: qcom: Add SM8350 dt-bindings: PCI: qcom-ep: Correct qcom,perst-regs dt-bindings: PCI: qcom: Unify MSM8996 and MSM8998 clock order ...
2 parents 8cbd923 + 3eb5d0f commit 90ddb3f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+1570
-811
lines changed

Documentation/admin-guide/kernel-parameters.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4303,7 +4303,9 @@
43034303
specified, e.g., 12@pci:8086:9c22:103c:198f
43044304
for 4096-byte alignment.
43054305
ecrc= Enable/disable PCIe ECRC (transaction layer
4306-
end-to-end CRC checking).
4306+
end-to-end CRC checking). Only effective if
4307+
OS has native AER control (either granted by
4308+
ACPI _OSC or forced via "pcie_ports=native")
43074309
bios: Use BIOS/firmware settings. This is the
43084310
the default.
43094311
off: Turn ECRC off

Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ properties:
2424
- fsl,imx8mq-pcie
2525
- fsl,imx8mm-pcie
2626
- fsl,imx8mp-pcie
27+
- fsl,imx8mm-pcie-ep
28+
- fsl,imx8mq-pcie-ep
29+
- fsl,imx8mp-pcie-ep
2730

2831
reg:
2932
items:

Documentation/devicetree/bindings/pci/qcom,pcie-ep.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,10 @@ properties:
4747
enable registers
4848
$ref: "/schemas/types.yaml#/definitions/phandle-array"
4949
items:
50-
minItems: 3
51-
maxItems: 3
50+
- items:
51+
- description: Syscon to TCSR system registers
52+
- description: Perst enable offset
53+
- description: Perst separation enable offset
5254

5355
interrupts:
5456
items:

Documentation/devicetree/bindings/pci/qcom,pcie.yaml

Lines changed: 67 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,31 @@ description: |
1616
1717
properties:
1818
compatible:
19-
enum:
20-
- qcom,pcie-ipq8064
21-
- qcom,pcie-ipq8064-v2
22-
- qcom,pcie-apq8064
23-
- qcom,pcie-apq8084
24-
- qcom,pcie-msm8996
25-
- qcom,pcie-ipq4019
26-
- qcom,pcie-ipq8074
27-
- qcom,pcie-qcs404
28-
- qcom,pcie-sa8540p
29-
- qcom,pcie-sc7280
30-
- qcom,pcie-sc8180x
31-
- qcom,pcie-sc8280xp
32-
- qcom,pcie-sdm845
33-
- qcom,pcie-sm8150
34-
- qcom,pcie-sm8250
35-
- qcom,pcie-sm8450-pcie0
36-
- qcom,pcie-sm8450-pcie1
37-
- qcom,pcie-ipq6018
19+
oneOf:
20+
- enum:
21+
- qcom,pcie-apq8064
22+
- qcom,pcie-apq8084
23+
- qcom,pcie-ipq4019
24+
- qcom,pcie-ipq6018
25+
- qcom,pcie-ipq8064
26+
- qcom,pcie-ipq8064-v2
27+
- qcom,pcie-ipq8074
28+
- qcom,pcie-ipq8074-gen3
29+
- qcom,pcie-msm8996
30+
- qcom,pcie-qcs404
31+
- qcom,pcie-sa8540p
32+
- qcom,pcie-sc7280
33+
- qcom,pcie-sc8180x
34+
- qcom,pcie-sc8280xp
35+
- qcom,pcie-sdm845
36+
- qcom,pcie-sm8150
37+
- qcom,pcie-sm8250
38+
- qcom,pcie-sm8350
39+
- qcom,pcie-sm8450-pcie0
40+
- qcom,pcie-sm8450-pcie1
41+
- items:
42+
- const: qcom,pcie-msm8998
43+
- const: qcom,pcie-msm8996
3844

3945
reg:
4046
minItems: 4
@@ -153,6 +159,7 @@ allOf:
153159
contains:
154160
enum:
155161
- qcom,pcie-ipq6018
162+
- qcom,pcie-ipq8074-gen3
156163
then:
157164
properties:
158165
reg:
@@ -195,6 +202,7 @@ allOf:
195202
- qcom,pcie-sc8180x
196203
- qcom,pcie-sc8280xp
197204
- qcom,pcie-sm8250
205+
- qcom,pcie-sm8350
198206
- qcom,pcie-sm8450-pcie0
199207
- qcom,pcie-sm8450-pcie1
200208
then:
@@ -312,27 +320,17 @@ allOf:
312320
enum:
313321
- qcom,pcie-msm8996
314322
then:
315-
oneOf:
316-
- properties:
317-
clock-names:
318-
items:
319-
- const: pipe # Pipe Clock driving internal logic
320-
- const: aux # Auxiliary (AUX) clock
321-
- const: cfg # Configuration clock
322-
- const: bus_master # Master AXI clock
323-
- const: bus_slave # Slave AXI clock
324-
- properties:
325-
clock-names:
326-
items:
327-
- const: pipe # Pipe Clock driving internal logic
328-
- const: bus_master # Master AXI clock
329-
- const: bus_slave # Slave AXI clock
330-
- const: cfg # Configuration clock
331-
- const: aux # Auxiliary (AUX) clock
332323
properties:
333324
clocks:
334325
minItems: 5
335326
maxItems: 5
327+
clock-names:
328+
items:
329+
- const: pipe # Pipe Clock driving internal logic
330+
- const: aux # Auxiliary (AUX) clock
331+
- const: cfg # Configuration clock
332+
- const: bus_master # Master AXI clock
333+
- const: bus_slave # Slave AXI clock
336334
resets: false
337335
reset-names: false
338336

@@ -373,6 +371,7 @@ allOf:
373371
contains:
374372
enum:
375373
- qcom,pcie-ipq6018
374+
- qcom,pcie-ipq8074-gen3
376375
then:
377376
properties:
378377
clocks:
@@ -550,6 +549,35 @@ allOf:
550549
items:
551550
- const: pci # PCIe core reset
552551

552+
- if:
553+
properties:
554+
compatible:
555+
contains:
556+
enum:
557+
- qcom,pcie-sm8350
558+
then:
559+
properties:
560+
clocks:
561+
minItems: 8
562+
maxItems: 9
563+
clock-names:
564+
minItems: 8
565+
items:
566+
- const: aux # Auxiliary clock
567+
- const: cfg # Configuration clock
568+
- const: bus_master # Master AXI clock
569+
- const: bus_slave # Slave AXI clock
570+
- const: slave_q2a # Slave Q2A clock
571+
- const: tbu # PCIe TBU clock
572+
- const: ddrss_sf_tbu # PCIe SF TBU clock
573+
- const: aggre1 # Aggre NoC PCIe1 AXI clock
574+
- const: aggre0 # Aggre NoC PCIe0 AXI clock
575+
resets:
576+
maxItems: 1
577+
reset-names:
578+
items:
579+
- const: pci # PCIe core reset
580+
553581
- if:
554582
properties:
555583
compatible:
@@ -664,6 +692,7 @@ allOf:
664692
- qcom,pcie-ipq8064
665693
- qcom,pcie-ipq8064v2
666694
- qcom,pcie-ipq8074
695+
- qcom,pcie-ipq8074-gen3
667696
- qcom,pcie-qcs404
668697
then:
669698
required:
@@ -692,6 +721,7 @@ allOf:
692721
- qcom,pcie-sdm845
693722
- qcom,pcie-sm8150
694723
- qcom,pcie-sm8250
724+
- qcom,pcie-sm8350
695725
- qcom,pcie-sm8450-pcie0
696726
- qcom,pcie-sm8450-pcie1
697727
then:
@@ -746,6 +776,7 @@ allOf:
746776
- qcom,pcie-ipq8064
747777
- qcom,pcie-ipq8064-v2
748778
- qcom,pcie-ipq8074
779+
- qcom,pcie-ipq8074-gen3
749780
- qcom,pcie-qcs404
750781
- qcom,pcie-sa8540p
751782
then:

Documentation/devicetree/bindings/pci/socionext,uniphier-pcie-ep.yaml

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@ description: |
1515
maintainers:
1616
- Kunihiko Hayashi <[email protected]>
1717

18-
allOf:
19-
- $ref: /schemas/pci/snps,dw-pcie-ep.yaml#
20-
2118
properties:
2219
compatible:
2320
enum:
@@ -29,40 +26,25 @@ properties:
2926
maxItems: 5
3027

3128
reg-names:
32-
oneOf:
33-
- items:
34-
- const: dbi
35-
- const: dbi2
36-
- const: link
37-
- const: addr_space
38-
- items:
39-
- const: dbi
40-
- const: dbi2
41-
- const: link
42-
- const: addr_space
43-
- const: atu
29+
minItems: 4
30+
items:
31+
- const: dbi
32+
- const: dbi2
33+
- const: link
34+
- const: addr_space
35+
- const: atu
4436

4537
clocks:
4638
minItems: 1
4739
maxItems: 2
4840

49-
clock-names:
50-
oneOf:
51-
- items: # for Pro5
52-
- const: gio
53-
- const: link
54-
- const: link # for NX1
41+
clock-names: true
5542

5643
resets:
5744
minItems: 1
5845
maxItems: 2
5946

60-
reset-names:
61-
oneOf:
62-
- items: # for Pro5
63-
- const: gio
64-
- const: link
65-
- const: link # for NX1
47+
reset-names: true
6648

6749
num-ib-windows:
6850
const: 16
@@ -78,6 +60,46 @@ properties:
7860
phy-names:
7961
const: pcie-phy
8062

63+
allOf:
64+
- $ref: /schemas/pci/snps,dw-pcie-ep.yaml#
65+
- if:
66+
properties:
67+
compatible:
68+
contains:
69+
const: socionext,uniphier-pro5-pcie-ep
70+
then:
71+
properties:
72+
reg:
73+
maxItems: 4
74+
reg-names:
75+
maxItems: 4
76+
clocks:
77+
minItems: 2
78+
clock-names:
79+
items:
80+
- const: gio
81+
- const: link
82+
resets:
83+
minItems: 2
84+
reset-names:
85+
items:
86+
- const: gio
87+
- const: link
88+
else:
89+
properties:
90+
reg:
91+
minItems: 5
92+
reg-names:
93+
minItems: 5
94+
clocks:
95+
maxItems: 1
96+
clock-names:
97+
const: link
98+
resets:
99+
maxItems: 1
100+
reset-names:
101+
const: link
102+
81103
required:
82104
- compatible
83105
- reg

drivers/acpi/device_pm.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,25 @@ void acpi_dev_power_up_children_with_adr(struct acpi_device *adev)
484484
acpi_dev_for_each_child(adev, acpi_power_up_if_adr_present, NULL);
485485
}
486486

487+
/**
488+
* acpi_dev_power_state_for_wake - Deepest power state for wakeup signaling
489+
* @adev: ACPI companion of the target device.
490+
*
491+
* Evaluate _S0W for @adev and return the value produced by it or return
492+
* ACPI_STATE_UNKNOWN on errors (including _S0W not present).
493+
*/
494+
u8 acpi_dev_power_state_for_wake(struct acpi_device *adev)
495+
{
496+
unsigned long long state;
497+
acpi_status status;
498+
499+
status = acpi_evaluate_integer(adev->handle, "_S0W", NULL, &state);
500+
if (ACPI_FAILURE(status))
501+
return ACPI_STATE_UNKNOWN;
502+
503+
return state;
504+
}
505+
487506
#ifdef CONFIG_PM
488507
static DEFINE_MUTEX(acpi_pm_notifier_lock);
489508
static DEFINE_MUTEX(acpi_pm_notifier_install_lock);

drivers/dma/dw-edma/Kconfig

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,14 @@ config DW_EDMA
99
Support the Synopsys DesignWare eDMA controller, normally
1010
implemented on endpoints SoCs.
1111

12+
if DW_EDMA
13+
1214
config DW_EDMA_PCIE
1315
tristate "Synopsys DesignWare eDMA PCIe driver"
1416
depends on PCI && PCI_MSI
15-
select DW_EDMA
1617
help
1718
Provides a glue-logic between the Synopsys DesignWare
1819
eDMA controller and an endpoint PCIe device. This also serves
1920
as a reference design to whom desires to use this IP.
21+
22+
endif # DW_EDMA

0 commit comments

Comments
 (0)