diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-06-07 15:45:58 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-06-07 15:45:58 -0400 |
commit | 3a3869f1c443383ef8354ffa0e5fb8df65d8b549 (patch) | |
tree | 7972a4444f04a91f4baab5896df33d4e55d9909d /drivers/misc/pci_endpoint_test.c | |
parent | 3036bc45364f98515a2c446d7fac2c34dcfbeff4 (diff) | |
parent | 488ad6d3678beee65bcd74e6a9764bd7cee9d3d3 (diff) |
Merge tag 'pci-v4.18-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas:
- unify AER decoding for native and ACPI CPER sources (Alexandru
Gagniuc)
- add TLP header info to AER tracepoint (Thomas Tai)
- add generic pcie_wait_for_link() interface (Oza Pawandeep)
- handle AER ERR_FATAL by removing and re-enumerating devices, as
Downstream Port Containment does (Oza Pawandeep)
- factor out common code between AER and DPC recovery (Oza Pawandeep)
- stop triggering DPC for ERR_NONFATAL errors (Oza Pawandeep)
- share ERR_FATAL recovery path between AER and DPC (Oza Pawandeep)
- disable ASPM L1.2 substate if we don't have LTR (Bjorn Helgaas)
- respect platform ownership of LTR (Bjorn Helgaas)
- clear interrupt status in top half to avoid interrupt storm (Oza
Pawandeep)
- neaten pci=earlydump output (Andy Shevchenko)
- avoid errors when extended config space inaccessible (Gilles Buloz)
- prevent sysfs disable of device while driver attached (Christoph
Hellwig)
- use core interface to report PCIe link properties in bnx2x, bnxt_en,
cxgb4, ixgbe (Bjorn Helgaas)
- remove unused pcie_get_minimum_link() (Bjorn Helgaas)
- fix use-before-set error in ibmphp (Dan Carpenter)
- fix pciehp timeouts caused by Command Completed errata (Bjorn
Helgaas)
- fix refcounting in pnv_php hotplug (Julia Lawall)
- clear pciehp Presence Detect and Data Link Layer Status Changed on
resume so we don't miss hotplug events (Mika Westerberg)
- only request pciehp control if we support it, so platform can use
ACPI hotplug otherwise (Mika Westerberg)
- convert SHPC to be builtin only (Mika Westerberg)
- request SHPC control via _OSC if we support it (Mika Westerberg)
- simplify SHPC handoff from firmware (Mika Westerberg)
- fix an SHPC quirk that mistakenly included *all* AMD bridges as well
as devices from any vendor with device ID 0x7458 (Bjorn Helgaas)
- assign a bus number even to non-native hotplug bridges to leave
space for acpiphp additions, to fix a common Thunderbolt xHCI
hot-add failure (Mika Westerberg)
- keep acpiphp from scanning native hotplug bridges, to fix common
Thunderbolt hot-add failures (Mika Westerberg)
- improve "partially hidden behind bridge" messages from core (Mika
Westerberg)
- add macros for PCIe Link Control 2 register (Frederick Lawler)
- replace IB/hfi1 custom macros with PCI core versions (Frederick
Lawler)
- remove dead microblaze and xtensa code (Bjorn Helgaas)
- use dev_printk() when possible in xtensa and mips (Bjorn Helgaas)
- remove unused pcie_port_acpi_setup() and portdrv_acpi.c (Bjorn
Helgaas)
- add managed interface to get PCI host bridge resources from OF (Jan
Kiszka)
- add support for unbinding generic PCI host controller (Jan Kiszka)
- fix memory leaks when unbinding generic PCI host controller (Jan
Kiszka)
- request legacy VGA framebuffer only for VGA devices to avoid false
device conflicts (Bjorn Helgaas)
- turn on PCI_COMMAND_IO & PCI_COMMAND_MEMORY in pci_enable_device()
like everybody else, not in pcibios_fixup_bus() (Bjorn Helgaas)
- add generic enable function for simple SR-IOV hardware (Alexander
Duyck)
- use generic SR-IOV enable for ena, nvme (Alexander Duyck)
- add ACS quirk for Intel 7th & 8th Gen mobile (Alex Williamson)
- add ACS quirk for Intel 300 series (Mika Westerberg)
- enable register clock for Armada 7K/8K (Gregory CLEMENT)
- reduce Keystone "link already up" log level (Fabio Estevam)
- move private DT functions to drivers/pci/ (Rob Herring)
- factor out dwc CONFIG_PCI Kconfig dependencies (Rob Herring)
- add DesignWare support to the endpoint test driver (Gustavo
Pimentel)
- add DesignWare support for endpoint mode (Gustavo Pimentel)
- use devm_ioremap_resource() instead of devm_ioremap() in dra7xx and
artpec6 (Gustavo Pimentel)
- fix Qualcomm bitwise NOT issue (Dan Carpenter)
- add Qualcomm runtime PM support (Srinivas Kandagatla)
- fix DesignWare enumeration below bridges (Koen Vandeputte)
- use usleep() instead of mdelay() in endpoint test (Jia-Ju Bai)
- add configfs entries for pci_epf_driver device IDs (Kishon Vijay
Abraham I)
- clean up pci_endpoint_test driver (Gustavo Pimentel)
- update Layerscape maintainer email addresses (Minghuan Lian)
- add COMPILE_TEST to improve build test coverage (Rob Herring)
- fix Hyper-V bus registration failure caused by domain/serial number
confusion (Sridhar Pitchai)
- improve Hyper-V refcounting and coding style (Stephen Hemminger)
- avoid potential Hyper-V hang waiting for a response that will never
come (Dexuan Cui)
- implement Mediatek chained IRQ handling (Honghui Zhang)
- fix vendor ID & class type for Mediatek MT7622 (Honghui Zhang)
- add Mobiveil PCIe host controller driver (Subrahmanya Lingappa)
- add Mobiveil MSI support (Subrahmanya Lingappa)
- clean up clocks, MSI, IRQ mappings in R-Car probe failure paths
(Marek Vasut)
- poll more frequently (5us vs 5ms) while waiting for R-Car data link
active (Marek Vasut)
- use generic OF parsing interface in R-Car (Vladimir Zapolskiy)
- add R-Car V3H (R8A77980) "compatible" string (Sergei Shtylyov)
- add R-Car gen3 PHY support (Sergei Shtylyov)
- improve R-Car PHYRDY polling (Sergei Shtylyov)
- clean up R-Car macros (Marek Vasut)
- use runtime PM for R-Car controller clock (Dien Pham)
- update arm64 defconfig for Rockchip (Shawn Lin)
- refactor Rockchip code to facilitate both root port and endpoint
mode (Shawn Lin)
- add Rockchip endpoint mode driver (Shawn Lin)
- support VMD "membar shadow" feature (Jon Derrick)
- support VMD bus number offsets (Jon Derrick)
- add VMD "no AER source ID" quirk for more device IDs (Jon Derrick)
- remove unnecessary host controller CONFIG_PCIEPORTBUS Kconfig
selections (Bjorn Helgaas)
- clean up quirks.c organization and whitespace (Bjorn Helgaas)
* tag 'pci-v4.18-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (144 commits)
PCI/AER: Replace struct pcie_device with pci_dev
PCI/AER: Remove unused parameters
PCI: qcom: Include gpio/consumer.h
PCI: Improve "partially hidden behind bridge" log message
PCI: Improve pci_scan_bridge() and pci_scan_bridge_extend() doc
PCI: Move resource distribution for single bridge outside loop
PCI: Account for all bridges on bus when distributing bus numbers
ACPI / hotplug / PCI: Drop unnecessary parentheses
ACPI / hotplug / PCI: Mark stale PCI devices disconnected
ACPI / hotplug / PCI: Don't scan bridges managed by native hotplug
PCI: hotplug: Add hotplug_is_native()
PCI: shpchp: Add shpchp_is_native()
PCI: shpchp: Fix AMD POGO identification
PCI: mobiveil: Add MSI support
PCI: mobiveil: Add Mobiveil PCIe Host Bridge IP driver
PCI/AER: Decode Error Source Requester ID
PCI/AER: Remove aer_recover_work_func() forward declaration
PCI/DPC: Use the generic pcie_do_fatal_recovery() path
PCI/AER: Pass service type to pcie_do_fatal_recovery()
PCI/DPC: Disable ERR_NONFATAL handling by DPC
...
Diffstat (limited to 'drivers/misc/pci_endpoint_test.c')
-rw-r--r-- | drivers/misc/pci_endpoint_test.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c index fe8897e64635..7b370466a227 100644 --- a/drivers/misc/pci_endpoint_test.c +++ b/drivers/misc/pci_endpoint_test.c | |||
@@ -203,7 +203,7 @@ static bool pci_endpoint_test_msi_irq(struct pci_endpoint_test *test, | |||
203 | if (!val) | 203 | if (!val) |
204 | return false; | 204 | return false; |
205 | 205 | ||
206 | if (test->last_irq - pdev->irq == msi_num - 1) | 206 | if (pci_irq_vector(pdev, msi_num - 1) == test->last_irq) |
207 | return true; | 207 | return true; |
208 | 208 | ||
209 | return false; | 209 | return false; |
@@ -233,7 +233,7 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_test *test, size_t size) | |||
233 | orig_src_addr = dma_alloc_coherent(dev, size + alignment, | 233 | orig_src_addr = dma_alloc_coherent(dev, size + alignment, |
234 | &orig_src_phys_addr, GFP_KERNEL); | 234 | &orig_src_phys_addr, GFP_KERNEL); |
235 | if (!orig_src_addr) { | 235 | if (!orig_src_addr) { |
236 | dev_err(dev, "failed to allocate source buffer\n"); | 236 | dev_err(dev, "Failed to allocate source buffer\n"); |
237 | ret = false; | 237 | ret = false; |
238 | goto err; | 238 | goto err; |
239 | } | 239 | } |
@@ -259,7 +259,7 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_test *test, size_t size) | |||
259 | orig_dst_addr = dma_alloc_coherent(dev, size + alignment, | 259 | orig_dst_addr = dma_alloc_coherent(dev, size + alignment, |
260 | &orig_dst_phys_addr, GFP_KERNEL); | 260 | &orig_dst_phys_addr, GFP_KERNEL); |
261 | if (!orig_dst_addr) { | 261 | if (!orig_dst_addr) { |
262 | dev_err(dev, "failed to allocate destination address\n"); | 262 | dev_err(dev, "Failed to allocate destination address\n"); |
263 | ret = false; | 263 | ret = false; |
264 | goto err_orig_src_addr; | 264 | goto err_orig_src_addr; |
265 | } | 265 | } |
@@ -321,7 +321,7 @@ static bool pci_endpoint_test_write(struct pci_endpoint_test *test, size_t size) | |||
321 | orig_addr = dma_alloc_coherent(dev, size + alignment, &orig_phys_addr, | 321 | orig_addr = dma_alloc_coherent(dev, size + alignment, &orig_phys_addr, |
322 | GFP_KERNEL); | 322 | GFP_KERNEL); |
323 | if (!orig_addr) { | 323 | if (!orig_addr) { |
324 | dev_err(dev, "failed to allocate address\n"); | 324 | dev_err(dev, "Failed to allocate address\n"); |
325 | ret = false; | 325 | ret = false; |
326 | goto err; | 326 | goto err; |
327 | } | 327 | } |
@@ -382,7 +382,7 @@ static bool pci_endpoint_test_read(struct pci_endpoint_test *test, size_t size) | |||
382 | orig_addr = dma_alloc_coherent(dev, size + alignment, &orig_phys_addr, | 382 | orig_addr = dma_alloc_coherent(dev, size + alignment, &orig_phys_addr, |
383 | GFP_KERNEL); | 383 | GFP_KERNEL); |
384 | if (!orig_addr) { | 384 | if (!orig_addr) { |
385 | dev_err(dev, "failed to allocate destination address\n"); | 385 | dev_err(dev, "Failed to allocate destination address\n"); |
386 | ret = false; | 386 | ret = false; |
387 | goto err; | 387 | goto err; |
388 | } | 388 | } |
@@ -513,31 +513,31 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev, | |||
513 | if (!no_msi) { | 513 | if (!no_msi) { |
514 | irq = pci_alloc_irq_vectors(pdev, 1, 32, PCI_IRQ_MSI); | 514 | irq = pci_alloc_irq_vectors(pdev, 1, 32, PCI_IRQ_MSI); |
515 | if (irq < 0) | 515 | if (irq < 0) |
516 | dev_err(dev, "failed to get MSI interrupts\n"); | 516 | dev_err(dev, "Failed to get MSI interrupts\n"); |
517 | test->num_irqs = irq; | 517 | test->num_irqs = irq; |
518 | } | 518 | } |
519 | 519 | ||
520 | err = devm_request_irq(dev, pdev->irq, pci_endpoint_test_irqhandler, | 520 | err = devm_request_irq(dev, pdev->irq, pci_endpoint_test_irqhandler, |
521 | IRQF_SHARED, DRV_MODULE_NAME, test); | 521 | IRQF_SHARED, DRV_MODULE_NAME, test); |
522 | if (err) { | 522 | if (err) { |
523 | dev_err(dev, "failed to request IRQ %d\n", pdev->irq); | 523 | dev_err(dev, "Failed to request IRQ %d\n", pdev->irq); |
524 | goto err_disable_msi; | 524 | goto err_disable_msi; |
525 | } | 525 | } |
526 | 526 | ||
527 | for (i = 1; i < irq; i++) { | 527 | for (i = 1; i < irq; i++) { |
528 | err = devm_request_irq(dev, pdev->irq + i, | 528 | err = devm_request_irq(dev, pci_irq_vector(pdev, i), |
529 | pci_endpoint_test_irqhandler, | 529 | pci_endpoint_test_irqhandler, |
530 | IRQF_SHARED, DRV_MODULE_NAME, test); | 530 | IRQF_SHARED, DRV_MODULE_NAME, test); |
531 | if (err) | 531 | if (err) |
532 | dev_err(dev, "failed to request IRQ %d for MSI %d\n", | 532 | dev_err(dev, "failed to request IRQ %d for MSI %d\n", |
533 | pdev->irq + i, i + 1); | 533 | pci_irq_vector(pdev, i), i + 1); |
534 | } | 534 | } |
535 | 535 | ||
536 | for (bar = BAR_0; bar <= BAR_5; bar++) { | 536 | for (bar = BAR_0; bar <= BAR_5; bar++) { |
537 | if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) { | 537 | if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) { |
538 | base = pci_ioremap_bar(pdev, bar); | 538 | base = pci_ioremap_bar(pdev, bar); |
539 | if (!base) { | 539 | if (!base) { |
540 | dev_err(dev, "failed to read BAR%d\n", bar); | 540 | dev_err(dev, "Failed to read BAR%d\n", bar); |
541 | WARN_ON(bar == test_reg_bar); | 541 | WARN_ON(bar == test_reg_bar); |
542 | } | 542 | } |
543 | test->bar[bar] = base; | 543 | test->bar[bar] = base; |
@@ -557,7 +557,7 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev, | |||
557 | id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL); | 557 | id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL); |
558 | if (id < 0) { | 558 | if (id < 0) { |
559 | err = id; | 559 | err = id; |
560 | dev_err(dev, "unable to get id\n"); | 560 | dev_err(dev, "Unable to get id\n"); |
561 | goto err_iounmap; | 561 | goto err_iounmap; |
562 | } | 562 | } |
563 | 563 | ||
@@ -573,7 +573,7 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev, | |||
573 | 573 | ||
574 | err = misc_register(misc_device); | 574 | err = misc_register(misc_device); |
575 | if (err) { | 575 | if (err) { |
576 | dev_err(dev, "failed to register device\n"); | 576 | dev_err(dev, "Failed to register device\n"); |
577 | goto err_kfree_name; | 577 | goto err_kfree_name; |
578 | } | 578 | } |
579 | 579 | ||
@@ -592,7 +592,7 @@ err_iounmap: | |||
592 | } | 592 | } |
593 | 593 | ||
594 | for (i = 0; i < irq; i++) | 594 | for (i = 0; i < irq; i++) |
595 | devm_free_irq(dev, pdev->irq + i, test); | 595 | devm_free_irq(&pdev->dev, pci_irq_vector(pdev, i), test); |
596 | 596 | ||
597 | err_disable_msi: | 597 | err_disable_msi: |
598 | pci_disable_msi(pdev); | 598 | pci_disable_msi(pdev); |
@@ -625,7 +625,7 @@ static void pci_endpoint_test_remove(struct pci_dev *pdev) | |||
625 | pci_iounmap(pdev, test->bar[bar]); | 625 | pci_iounmap(pdev, test->bar[bar]); |
626 | } | 626 | } |
627 | for (i = 0; i < test->num_irqs; i++) | 627 | for (i = 0; i < test->num_irqs; i++) |
628 | devm_free_irq(&pdev->dev, pdev->irq + i, test); | 628 | devm_free_irq(&pdev->dev, pci_irq_vector(pdev, i), test); |
629 | pci_disable_msi(pdev); | 629 | pci_disable_msi(pdev); |
630 | pci_release_regions(pdev); | 630 | pci_release_regions(pdev); |
631 | pci_disable_device(pdev); | 631 | pci_disable_device(pdev); |
@@ -634,6 +634,7 @@ static void pci_endpoint_test_remove(struct pci_dev *pdev) | |||
634 | static const struct pci_device_id pci_endpoint_test_tbl[] = { | 634 | static const struct pci_device_id pci_endpoint_test_tbl[] = { |
635 | { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA74x) }, | 635 | { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA74x) }, |
636 | { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA72x) }, | 636 | { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA72x) }, |
637 | { PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, 0xedda) }, | ||
637 | { } | 638 | { } |
638 | }; | 639 | }; |
639 | MODULE_DEVICE_TABLE(pci, pci_endpoint_test_tbl); | 640 | MODULE_DEVICE_TABLE(pci, pci_endpoint_test_tbl); |