diff options
Diffstat (limited to 'arch/s390/pci/pci.c')
-rw-r--r-- | arch/s390/pci/pci.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c index bf7c73d71eef..66670ff262a0 100644 --- a/arch/s390/pci/pci.c +++ b/arch/s390/pci/pci.c | |||
@@ -407,8 +407,8 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) | |||
407 | struct msi_msg msg; | 407 | struct msi_msg msg; |
408 | int rc; | 408 | int rc; |
409 | 409 | ||
410 | if (type != PCI_CAP_ID_MSIX && type != PCI_CAP_ID_MSI) | 410 | if (type == PCI_CAP_ID_MSI && nvec > 1) |
411 | return -EINVAL; | 411 | return 1; |
412 | msi_vecs = min(nvec, ZPCI_MSI_VEC_MAX); | 412 | msi_vecs = min(nvec, ZPCI_MSI_VEC_MAX); |
413 | msi_vecs = min_t(unsigned int, msi_vecs, CONFIG_PCI_NR_MSI); | 413 | msi_vecs = min_t(unsigned int, msi_vecs, CONFIG_PCI_NR_MSI); |
414 | 414 | ||
@@ -919,17 +919,23 @@ static void zpci_mem_exit(void) | |||
919 | kmem_cache_destroy(zdev_fmb_cache); | 919 | kmem_cache_destroy(zdev_fmb_cache); |
920 | } | 920 | } |
921 | 921 | ||
922 | static unsigned int s390_pci_probe; | 922 | static unsigned int s390_pci_probe = 1; |
923 | static unsigned int s390_pci_initialized; | ||
923 | 924 | ||
924 | char * __init pcibios_setup(char *str) | 925 | char * __init pcibios_setup(char *str) |
925 | { | 926 | { |
926 | if (!strcmp(str, "on")) { | 927 | if (!strcmp(str, "off")) { |
927 | s390_pci_probe = 1; | 928 | s390_pci_probe = 0; |
928 | return NULL; | 929 | return NULL; |
929 | } | 930 | } |
930 | return str; | 931 | return str; |
931 | } | 932 | } |
932 | 933 | ||
934 | bool zpci_is_enabled(void) | ||
935 | { | ||
936 | return s390_pci_initialized; | ||
937 | } | ||
938 | |||
933 | static int __init pci_base_init(void) | 939 | static int __init pci_base_init(void) |
934 | { | 940 | { |
935 | int rc; | 941 | int rc; |
@@ -961,6 +967,7 @@ static int __init pci_base_init(void) | |||
961 | if (rc) | 967 | if (rc) |
962 | goto out_find; | 968 | goto out_find; |
963 | 969 | ||
970 | s390_pci_initialized = 1; | ||
964 | return 0; | 971 | return 0; |
965 | 972 | ||
966 | out_find: | 973 | out_find: |
@@ -978,5 +985,6 @@ subsys_initcall_sync(pci_base_init); | |||
978 | 985 | ||
979 | void zpci_rescan(void) | 986 | void zpci_rescan(void) |
980 | { | 987 | { |
981 | clp_rescan_pci_devices_simple(); | 988 | if (zpci_is_enabled()) |
989 | clp_rescan_pci_devices_simple(); | ||
982 | } | 990 | } |