Skip to content

Commit 5bc1018

Browse files
committed
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
2 parents d22aad2 + 442caca commit 5bc1018

File tree

4 files changed

+8
-22
lines changed

4 files changed

+8
-22
lines changed

MAINTAINERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18704,7 +18704,7 @@ F: drivers/pci/controller/pci-xgene-msi.c
1870418704
PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS
1870518705
M: Lorenzo Pieralisi <[email protected]>
1870618706
M: Krzysztof Wilczyński <[email protected]>
18707-
R: Manivannan Sadhasivam <[email protected]>
18707+
M: Manivannan Sadhasivam <[email protected]>
1870818708
R: Rob Herring <[email protected]>
1870918709
1871018710
S: Supported

drivers/misc/pci_endpoint_test.c

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ struct pci_endpoint_test {
122122
struct pci_endpoint_test_data {
123123
enum pci_barno test_reg_bar;
124124
size_t alignment;
125-
int irq_type;
126125
};
127126

128127
static inline u32 pci_endpoint_test_readl(struct pci_endpoint_test *test,
@@ -948,7 +947,6 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev,
948947
test_reg_bar = data->test_reg_bar;
949948
test->test_reg_bar = test_reg_bar;
950949
test->alignment = data->alignment;
951-
test->irq_type = data->irq_type;
952950
}
953951

954952
init_completion(&test->irq_raised);
@@ -970,10 +968,6 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev,
970968

971969
pci_set_master(pdev);
972970

973-
ret = pci_endpoint_test_alloc_irq_vectors(test, test->irq_type);
974-
if (ret)
975-
goto err_disable_irq;
976-
977971
for (bar = 0; bar < PCI_STD_NUM_BARS; bar++) {
978972
if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) {
979973
base = pci_ioremap_bar(pdev, bar);
@@ -1009,18 +1003,14 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev,
10091003
goto err_ida_remove;
10101004
}
10111005

1012-
ret = pci_endpoint_test_request_irq(test);
1013-
if (ret)
1014-
goto err_kfree_test_name;
1015-
10161006
pci_endpoint_test_get_capabilities(test);
10171007

10181008
misc_device = &test->miscdev;
10191009
misc_device->minor = MISC_DYNAMIC_MINOR;
10201010
misc_device->name = kstrdup(name, GFP_KERNEL);
10211011
if (!misc_device->name) {
10221012
ret = -ENOMEM;
1023-
goto err_release_irq;
1013+
goto err_kfree_test_name;
10241014
}
10251015
misc_device->parent = &pdev->dev;
10261016
misc_device->fops = &pci_endpoint_test_fops;
@@ -1036,9 +1026,6 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev,
10361026
err_kfree_name:
10371027
kfree(misc_device->name);
10381028

1039-
err_release_irq:
1040-
pci_endpoint_test_release_irq(test);
1041-
10421029
err_kfree_test_name:
10431030
kfree(test->name);
10441031

@@ -1051,8 +1038,6 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev,
10511038
pci_iounmap(pdev, test->bar[bar]);
10521039
}
10531040

1054-
err_disable_irq:
1055-
pci_endpoint_test_free_irq_vectors(test);
10561041
pci_release_regions(pdev);
10571042

10581043
err_disable_pdev:
@@ -1092,23 +1077,19 @@ static void pci_endpoint_test_remove(struct pci_dev *pdev)
10921077
static const struct pci_endpoint_test_data default_data = {
10931078
.test_reg_bar = BAR_0,
10941079
.alignment = SZ_4K,
1095-
.irq_type = PCITEST_IRQ_TYPE_MSI,
10961080
};
10971081

10981082
static const struct pci_endpoint_test_data am654_data = {
10991083
.test_reg_bar = BAR_2,
11001084
.alignment = SZ_64K,
1101-
.irq_type = PCITEST_IRQ_TYPE_MSI,
11021085
};
11031086

11041087
static const struct pci_endpoint_test_data j721e_data = {
11051088
.alignment = 256,
1106-
.irq_type = PCITEST_IRQ_TYPE_MSI,
11071089
};
11081090

11091091
static const struct pci_endpoint_test_data rk3588_data = {
11101092
.alignment = SZ_64K,
1111-
.irq_type = PCITEST_IRQ_TYPE_MSI,
11121093
};
11131094

11141095
/*

drivers/pci/setup-bus.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,9 @@ static void pdev_sort_resources(struct pci_dev *dev, struct list_head *head)
187187
panic("%s: kzalloc() failed!\n", __func__);
188188
tmp->res = r;
189189
tmp->dev = dev;
190+
tmp->start = r->start;
191+
tmp->end = r->end;
192+
tmp->flags = r->flags;
190193

191194
/* Fallback is smallest one or list is empty */
192195
n = head;
@@ -545,6 +548,7 @@ static void __assign_resources_sorted(struct list_head *head,
545548
pci_dbg(dev, "%s %pR: releasing\n", res_name, res);
546549

547550
release_resource(res);
551+
restore_dev_resource(dev_res);
548552
}
549553
/* Restore start/end/flags from saved list */
550554
list_for_each_entry(save_res, &save_head, list)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
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
23
include ../lib.mk

0 commit comments

Comments
 (0)