s390/pci: Expose new port attribute for PCIe functions
authorAlexander Schmidt <alexs@linux.ibm.com>
Fri, 28 Feb 2020 15:31:13 +0000 (10:31 -0500)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 28 Apr 2020 11:49:46 +0000 (13:49 +0200)
Add SysFS attribute that provides the port number for PCI functions
representing a single port of a multi-port device.

Signed-off-by: Alexander Schmidt <alexs@linux.ibm.com>
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/include/asm/pci_clp.h
arch/s390/pci/pci_clp.c
arch/s390/pci/pci_sysfs.c

index 7485ee5..11560bf 100644 (file)
@@ -108,6 +108,7 @@ struct zpci_dev {
        u8              pfgid;          /* function group ID */
        u8              pft;            /* pci function type */
        u16             domain;
+       u8              port;
 
        struct mutex lock;
        u8 pfip[CLP_PFIP_NR_SEGMENTS];  /* pci function internal path */
index bd2cb4e..d8122f5 100644 (file)
@@ -102,7 +102,8 @@ struct clp_rsp_query_pci {
        u16 pchid;
        __le32 bar[PCI_STD_NUM_BARS];
        u8 pfip[CLP_PFIP_NR_SEGMENTS];  /* pci function internal path */
-       u32                     : 16;
+       u16                     : 12;
+       u16 port                :  4;
        u8 fmb_len;
        u8 pft;                         /* pci function type */
        u64 sdma;                       /* start dma as */
index ea794ae..f7bca8c 100644 (file)
@@ -155,6 +155,7 @@ static int clp_store_query_pci_fn(struct zpci_dev *zdev,
        zdev->pfgid = response->pfgid;
        zdev->pft = response->pft;
        zdev->vfn = response->vfn;
+       zdev->port = response->port;
        zdev->uid = response->uid;
        zdev->fmb_length = sizeof(u32) * response->fmb_len;
 
index 215f174..8ea8d04 100644 (file)
@@ -33,6 +33,7 @@ zpci_attr(pchid, "0x%04x\n", pchid);
 zpci_attr(pfgid, "0x%02x\n", pfgid);
 zpci_attr(vfn, "0x%04x\n", vfn);
 zpci_attr(pft, "0x%02x\n", pft);
+zpci_attr(port, "%d\n", port);
 zpci_attr(uid, "0x%x\n", uid);
 zpci_attr(segment0, "0x%02x\n", pfip[0]);
 zpci_attr(segment1, "0x%02x\n", pfip[1]);
@@ -142,6 +143,7 @@ static struct attribute *zpci_dev_attrs[] = {
        &dev_attr_pchid.attr,
        &dev_attr_pfgid.attr,
        &dev_attr_pft.attr,
+       &dev_attr_port.attr,
        &dev_attr_vfn.attr,
        &dev_attr_uid.attr,
        &dev_attr_recover.attr,