Merge tag 'pci-v6.15-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci

Pull PCI fixes from Bjorn Helgaas:

- When releasing a start-aligned resource, e.g., a bridge window, save
start/end/flags for the next assignment attempt; fixes a v6.15-rc1
regression (Ilpo Järvinen)

- Move set_pcie_speed.sh from TEST_PROGS to TEST_FILE; fixes a bwctrl
selftest v6.15-rc1 regression (Ilpo Järvinen)

- Add Manivannan Sadhasivam as maintainer of native host bridge and
endpoint drivers (Manivannan Sadhasivam)

- In endpoint test driver, defer IRQ allocation from .probe() until
ioctl() to fix a regression on platforms where the Vendor/Device ID
match doesn't include driver_data (Niklas Cassel)

* tag 'pci-v6.15-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci:
misc: pci_endpoint_test: Defer IRQ allocation until ioctl(PCITEST_SET_IRQTYPE)
MAINTAINERS: Move Manivannan Sadhasivam as PCI Native host bridge and endpoint maintainer
selftests/pcie_bwctrl: Fix test progs list
PCI: Restore assigned resources fully after release

Changed files
+8 -22
drivers
tools
testing
selftests
pcie_bwctrl
+1 -1
MAINTAINERS
··· 18704 18704 PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS 18705 18705 M: Lorenzo Pieralisi <lpieralisi@kernel.org> 18706 18706 M: Krzysztof Wilczyński <kw@linux.com> 18707 - R: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 18707 + M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 18708 18708 R: Rob Herring <robh@kernel.org> 18709 18709 L: linux-pci@vger.kernel.org 18710 18710 S: Supported
+1 -20
drivers/misc/pci_endpoint_test.c
··· 122 122 struct pci_endpoint_test_data { 123 123 enum pci_barno test_reg_bar; 124 124 size_t alignment; 125 - int irq_type; 126 125 }; 127 126 128 127 static inline u32 pci_endpoint_test_readl(struct pci_endpoint_test *test, ··· 947 948 test_reg_bar = data->test_reg_bar; 948 949 test->test_reg_bar = test_reg_bar; 949 950 test->alignment = data->alignment; 950 - test->irq_type = data->irq_type; 951 951 } 952 952 953 953 init_completion(&test->irq_raised); ··· 967 969 } 968 970 969 971 pci_set_master(pdev); 970 - 971 - ret = pci_endpoint_test_alloc_irq_vectors(test, test->irq_type); 972 - if (ret) 973 - goto err_disable_irq; 974 972 975 973 for (bar = 0; bar < PCI_STD_NUM_BARS; bar++) { 976 974 if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) { ··· 1003 1009 goto err_ida_remove; 1004 1010 } 1005 1011 1006 - ret = pci_endpoint_test_request_irq(test); 1007 - if (ret) 1008 - goto err_kfree_test_name; 1009 - 1010 1012 pci_endpoint_test_get_capabilities(test); 1011 1013 1012 1014 misc_device = &test->miscdev; ··· 1010 1020 misc_device->name = kstrdup(name, GFP_KERNEL); 1011 1021 if (!misc_device->name) { 1012 1022 ret = -ENOMEM; 1013 - goto err_release_irq; 1023 + goto err_kfree_test_name; 1014 1024 } 1015 1025 misc_device->parent = &pdev->dev; 1016 1026 misc_device->fops = &pci_endpoint_test_fops; ··· 1026 1036 err_kfree_name: 1027 1037 kfree(misc_device->name); 1028 1038 1029 - err_release_irq: 1030 - pci_endpoint_test_release_irq(test); 1031 - 1032 1039 err_kfree_test_name: 1033 1040 kfree(test->name); 1034 1041 ··· 1038 1051 pci_iounmap(pdev, test->bar[bar]); 1039 1052 } 1040 1053 1041 - err_disable_irq: 1042 - pci_endpoint_test_free_irq_vectors(test); 1043 1054 pci_release_regions(pdev); 1044 1055 1045 1056 err_disable_pdev: ··· 1077 1092 static const struct pci_endpoint_test_data default_data = { 1078 1093 .test_reg_bar = BAR_0, 1079 1094 .alignment = SZ_4K, 1080 - .irq_type = PCITEST_IRQ_TYPE_MSI, 1081 1095 }; 1082 1096 1083 1097 static const struct pci_endpoint_test_data am654_data = { 1084 1098 .test_reg_bar = BAR_2, 1085 1099 .alignment = SZ_64K, 1086 - .irq_type = PCITEST_IRQ_TYPE_MSI, 1087 1100 }; 1088 1101 1089 1102 static const struct pci_endpoint_test_data j721e_data = { 1090 1103 .alignment = 256, 1091 - .irq_type = PCITEST_IRQ_TYPE_MSI, 1092 1104 }; 1093 1105 1094 1106 static const struct pci_endpoint_test_data rk3588_data = { 1095 1107 .alignment = SZ_64K, 1096 - .irq_type = PCITEST_IRQ_TYPE_MSI, 1097 1108 }; 1098 1109 1099 1110 /*
+4
drivers/pci/setup-bus.c
··· 187 187 panic("%s: kzalloc() failed!\n", __func__); 188 188 tmp->res = r; 189 189 tmp->dev = dev; 190 + tmp->start = r->start; 191 + tmp->end = r->end; 192 + tmp->flags = r->flags; 190 193 191 194 /* Fallback is smallest one or list is empty */ 192 195 n = head; ··· 548 545 pci_dbg(dev, "%s %pR: releasing\n", res_name, res); 549 546 550 547 release_resource(res); 548 + restore_dev_resource(dev_res); 551 549 } 552 550 /* Restore start/end/flags from saved list */ 553 551 list_for_each_entry(save_res, &save_head, list)
+2 -1
tools/testing/selftests/pcie_bwctrl/Makefile
··· 1 - TEST_PROGS = set_pcie_cooling_state.sh set_pcie_speed.sh 1 + TEST_PROGS = set_pcie_cooling_state.sh 2 + TEST_FILES = set_pcie_speed.sh 2 3 include ../lib.mk