forked from Minki/linux
pci-v5.0-fixes-2
-----BEGIN PGP SIGNATURE----- iQJIBAABCgAyFiEEgMe7l+5h9hnxdsnuWYigwDrT+vwFAlxCIKsUHGJoZWxnYWFz QGdvb2dsZS5jb20ACgkQWYigwDrT+vwQcxAAtwJUtcHo5fFIloz+PXRCAbpk4dPa 2/8op8KQsWnqStf6Wjk5tkQ8dt9Zx8SKV40vbt4MjwdRr1qLCe0z9+OGUJG+KTMG OWFfNFb4at1vOTw7EZ4EXJnkecink654dA4jeVKkN/2+d8Qj2EUjs6aM0+gYngF/ bR9K8P0l427AtCKos2/bbTqM8OgoaFfP93gQ7UcspaktlTdzKH30kEDqLpM4JV0p Ai/3L0qaFx6ORxzktNGWnKO8ngJB9sj1TS5lcQ+Paz0RhjXzKFKlrEGeZSMoQLA4 5S5vLME/+nlx8dN1/uE4WubM9hhSJQtkNRllqSu7MvlhQfXbowsM+Y1FvfHPV2Bm h8fSpBBNy7EFoAifb6eNkshIu9TYwlQv1rnWs2LZm4AZbAC2Ft0mULgnCu0fdW2T VzvzKCCKmGnm+uVD0Fxkt5Rk9L0UQCmLalgBVLQIjwqKMkZNH8pQnSKDJlBSEjKS S5KWRohHoqFQoJ5E7P0G8yw9lMspYS8uaeVOfbT4Ns+GbUp6HuIs0hNRhETWPjKq 7GSbUIRlf8QK7rmMx+LmGcld2iRLedBVmRdRcDIJF1b7B07lm13cdvn3Wr0S9HLU sYYCm+W55I6LTuGuLaIPRLAOK8fL0kK3g30b9o/ZzhpgnaRQI7FLIE6XszEtBIor a/8sGRJIGa5MW9g= =P0KV -----END PGP SIGNATURE----- Merge tag 'pci-v5.0-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci Pull PCI fixes from Bjorn Helgaas:: - Fix PCI kconfig menu organization (Rob Herring) - Fix pci_alloc_irq_vectors_affinity() error return to allow "reduce and retry" for drivers using IRQ sets (Ming Lei) - Fix "pci=disable_acs_redir" initdata use-after-free problem (Logan Gunthorpe) * tag 'pci-v5.0-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: PCI: Fix __initdata issue with "pci=disable_acs_redir" parameter PCI/MSI: Return -ENOSPC from pci_alloc_irq_vectors_affinity() PCI: Fix PCI kconfig menu organization
This commit is contained in:
commit
d28f3e7219
@ -21,13 +21,14 @@ menuconfig PCI
|
||||
support for PCI-X and the foundations for PCI Express support.
|
||||
Say 'Y' here unless you know what you are doing.
|
||||
|
||||
if PCI
|
||||
|
||||
config PCI_DOMAINS
|
||||
bool
|
||||
depends on PCI
|
||||
|
||||
config PCI_DOMAINS_GENERIC
|
||||
bool
|
||||
depends on PCI
|
||||
select PCI_DOMAINS
|
||||
|
||||
config PCI_SYSCALL
|
||||
@ -37,7 +38,6 @@ source "drivers/pci/pcie/Kconfig"
|
||||
|
||||
config PCI_MSI
|
||||
bool "Message Signaled Interrupts (MSI and MSI-X)"
|
||||
depends on PCI
|
||||
select GENERIC_MSI_IRQ
|
||||
help
|
||||
This allows device drivers to enable MSI (Message Signaled
|
||||
@ -59,7 +59,6 @@ config PCI_MSI_IRQ_DOMAIN
|
||||
config PCI_QUIRKS
|
||||
default y
|
||||
bool "Enable PCI quirk workarounds" if EXPERT
|
||||
depends on PCI
|
||||
help
|
||||
This enables workarounds for various PCI chipset bugs/quirks.
|
||||
Disable this only if your target machine is unaffected by PCI
|
||||
@ -67,7 +66,7 @@ config PCI_QUIRKS
|
||||
|
||||
config PCI_DEBUG
|
||||
bool "PCI Debugging"
|
||||
depends on PCI && DEBUG_KERNEL
|
||||
depends on DEBUG_KERNEL
|
||||
help
|
||||
Say Y here if you want the PCI core to produce a bunch of debug
|
||||
messages to the system log. Select this if you are having a
|
||||
@ -77,7 +76,6 @@ config PCI_DEBUG
|
||||
|
||||
config PCI_REALLOC_ENABLE_AUTO
|
||||
bool "Enable PCI resource re-allocation detection"
|
||||
depends on PCI
|
||||
depends on PCI_IOV
|
||||
help
|
||||
Say Y here if you want the PCI core to detect if PCI resource
|
||||
@ -90,7 +88,6 @@ config PCI_REALLOC_ENABLE_AUTO
|
||||
|
||||
config PCI_STUB
|
||||
tristate "PCI Stub driver"
|
||||
depends on PCI
|
||||
help
|
||||
Say Y or M here if you want be able to reserve a PCI device
|
||||
when it is going to be assigned to a guest operating system.
|
||||
@ -99,7 +96,6 @@ config PCI_STUB
|
||||
|
||||
config PCI_PF_STUB
|
||||
tristate "PCI PF Stub driver"
|
||||
depends on PCI
|
||||
depends on PCI_IOV
|
||||
help
|
||||
Say Y or M here if you want to enable support for devices that
|
||||
@ -111,7 +107,7 @@ config PCI_PF_STUB
|
||||
|
||||
config XEN_PCIDEV_FRONTEND
|
||||
tristate "Xen PCI Frontend"
|
||||
depends on PCI && X86 && XEN
|
||||
depends on X86 && XEN
|
||||
select PCI_XEN
|
||||
select XEN_XENBUS_FRONTEND
|
||||
default y
|
||||
@ -133,7 +129,6 @@ config PCI_BRIDGE_EMUL
|
||||
|
||||
config PCI_IOV
|
||||
bool "PCI IOV support"
|
||||
depends on PCI
|
||||
select PCI_ATS
|
||||
help
|
||||
I/O Virtualization is a PCI feature supported by some devices
|
||||
@ -144,7 +139,6 @@ config PCI_IOV
|
||||
|
||||
config PCI_PRI
|
||||
bool "PCI PRI support"
|
||||
depends on PCI
|
||||
select PCI_ATS
|
||||
help
|
||||
PRI is the PCI Page Request Interface. It allows PCI devices that are
|
||||
@ -154,7 +148,6 @@ config PCI_PRI
|
||||
|
||||
config PCI_PASID
|
||||
bool "PCI PASID support"
|
||||
depends on PCI
|
||||
select PCI_ATS
|
||||
help
|
||||
Process Address Space Identifiers (PASIDs) can be used by PCI devices
|
||||
@ -167,7 +160,7 @@ config PCI_PASID
|
||||
|
||||
config PCI_P2PDMA
|
||||
bool "PCI peer-to-peer transfer support"
|
||||
depends on PCI && ZONE_DEVICE
|
||||
depends on ZONE_DEVICE
|
||||
select GENERIC_ALLOCATOR
|
||||
help
|
||||
Enableѕ drivers to do PCI peer-to-peer transactions to and from
|
||||
@ -184,12 +177,11 @@ config PCI_P2PDMA
|
||||
|
||||
config PCI_LABEL
|
||||
def_bool y if (DMI || ACPI)
|
||||
depends on PCI
|
||||
select NLS
|
||||
|
||||
config PCI_HYPERV
|
||||
tristate "Hyper-V PCI Frontend"
|
||||
depends on PCI && X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
|
||||
depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
|
||||
help
|
||||
The PCI device frontend driver allows the kernel to import arbitrary
|
||||
PCI devices from a PCI backend to support PCI driver domains.
|
||||
@ -198,3 +190,5 @@ source "drivers/pci/hotplug/Kconfig"
|
||||
source "drivers/pci/controller/Kconfig"
|
||||
source "drivers/pci/endpoint/Kconfig"
|
||||
source "drivers/pci/switch/Kconfig"
|
||||
|
||||
endif
|
||||
|
@ -1168,7 +1168,8 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
|
||||
const struct irq_affinity *affd)
|
||||
{
|
||||
static const struct irq_affinity msi_default_affd;
|
||||
int vecs = -ENOSPC;
|
||||
int msix_vecs = -ENOSPC;
|
||||
int msi_vecs = -ENOSPC;
|
||||
|
||||
if (flags & PCI_IRQ_AFFINITY) {
|
||||
if (!affd)
|
||||
@ -1179,16 +1180,17 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
|
||||
}
|
||||
|
||||
if (flags & PCI_IRQ_MSIX) {
|
||||
vecs = __pci_enable_msix_range(dev, NULL, min_vecs, max_vecs,
|
||||
affd);
|
||||
if (vecs > 0)
|
||||
return vecs;
|
||||
msix_vecs = __pci_enable_msix_range(dev, NULL, min_vecs,
|
||||
max_vecs, affd);
|
||||
if (msix_vecs > 0)
|
||||
return msix_vecs;
|
||||
}
|
||||
|
||||
if (flags & PCI_IRQ_MSI) {
|
||||
vecs = __pci_enable_msi_range(dev, min_vecs, max_vecs, affd);
|
||||
if (vecs > 0)
|
||||
return vecs;
|
||||
msi_vecs = __pci_enable_msi_range(dev, min_vecs, max_vecs,
|
||||
affd);
|
||||
if (msi_vecs > 0)
|
||||
return msi_vecs;
|
||||
}
|
||||
|
||||
/* use legacy irq if allowed */
|
||||
@ -1199,7 +1201,9 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
|
||||
}
|
||||
}
|
||||
|
||||
return vecs;
|
||||
if (msix_vecs == -ENOSPC)
|
||||
return -ENOSPC;
|
||||
return msi_vecs;
|
||||
}
|
||||
EXPORT_SYMBOL(pci_alloc_irq_vectors_affinity);
|
||||
|
||||
|
@ -6195,7 +6195,8 @@ static int __init pci_setup(char *str)
|
||||
} else if (!strncmp(str, "pcie_scan_all", 13)) {
|
||||
pci_add_flags(PCI_SCAN_ALL_PCIE_DEVS);
|
||||
} else if (!strncmp(str, "disable_acs_redir=", 18)) {
|
||||
disable_acs_redir_param = str + 18;
|
||||
disable_acs_redir_param =
|
||||
kstrdup(str + 18, GFP_KERNEL);
|
||||
} else {
|
||||
printk(KERN_ERR "PCI: Unknown option `%s'\n",
|
||||
str);
|
||||
|
Loading…
Reference in New Issue
Block a user