s390/pci: define kernel parameters for PCI multifunction
authorPierre Morel <pmorel@linux.ibm.com>
Fri, 7 Feb 2020 12:35:08 +0000 (13:35 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 28 Apr 2020 11:49:46 +0000 (13:49 +0200)
Using PCI multifunctions in S390 is a new feature we may want
to ignore to continue provide the same topology as in the past
to userland even if the configuration supports exposing the
topology of a multi-Function device.

A new boolean parameters allows to overwrite the kernel
pci configuration:

- pci=norid when on, disallow the use a new firmware field,
  RID, which provides the PCI <bus>:<device>.<function> part
  of the PCI address.

To be used in the following patches and satisfy the checkpatch.pl
the variable is exposed in pci.h

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/pci.h
arch/s390/pci/pci.c

index 0e519197ea2d09ec09ad62c214c802ca4a56cb5c..ec28bbc2d3d16a0125ff8438a5c4edbf1a657a12 100644 (file)
@@ -168,6 +168,7 @@ static inline bool zdev_enabled(struct zpci_dev *zdev)
 
 extern const struct attribute_group *zpci_attr_groups[];
 extern unsigned int s390_pci_force_floating __initdata;
+extern unsigned int s390_pci_no_rid;
 
 /* -----------------------------------------------------------------------------
   Prototypes
index 94ca121933deef8fd5f17ef0a400ba3588b60f5f..3386a46f6bde068734e33b65c617ea3ee03dfe77 100644 (file)
@@ -48,6 +48,8 @@ static unsigned int zpci_num_domains_allocated;
        min(((unsigned long) ZPCI_NR_DEVICES * PCI_STD_NUM_BARS / 2),   \
            ZPCI_IOMAP_MAX_ENTRIES)
 
+unsigned int s390_pci_no_rid;
+
 static DEFINE_SPINLOCK(zpci_iomap_lock);
 static unsigned long *zpci_iomap_bitmap;
 struct zpci_iomap_entry *zpci_iomap_start;
@@ -844,6 +846,10 @@ char * __init pcibios_setup(char *str)
                s390_pci_force_floating = 1;
                return NULL;
        }
+       if (!strcmp(str, "norid")) {
+               s390_pci_no_rid = 1;
+               return NULL;
+       }
        return str;
 }