[SRU][F][PATCH 3/12] s390/pci: Expose new port attribute for PCIe functions
frank.heimes at canonical.com
frank.heimes at canonical.com
Mon May 18 18:24:29 UTC 2020
From: Alexander Schmidt <alexs at linux.ibm.com>
BugLink: https://bugs.launchpad.net/bugs/1874056
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 at linux.ibm.com>
Signed-off-by: Pierre Morel <pmorel at linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle at linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor at linux.ibm.com>
(backported from commit e6ab7490ffaed83d6581f512e66c7c8cc6f58c2d)
Signed-off-by: Frank Heimes <frank.heimes at canonical.com>
---
arch/s390/include/asm/pci.h | 1 +
arch/s390/include/asm/pci_clp.h | 3 ++-
arch/s390/pci/pci_clp.c | 1 +
arch/s390/pci/pci_sysfs.c | 2 ++
4 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h
index 3e95403d210f..0fdec3f44e23 100644
--- a/arch/s390/include/asm/pci.h
+++ b/arch/s390/include/asm/pci.h
@@ -111,6 +111,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 */
diff --git a/arch/s390/include/asm/pci_clp.h b/arch/s390/include/asm/pci_clp.h
index 50359172cc48..a7a157bf9784 100644
--- a/arch/s390/include/asm/pci_clp.h
+++ b/arch/s390/include/asm/pci_clp.h
@@ -102,7 +102,8 @@ struct clp_rsp_query_pci {
u16 pchid;
__le32 bar[PCI_BAR_COUNT];
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 */
diff --git a/arch/s390/pci/pci_clp.c b/arch/s390/pci/pci_clp.c
index cfc9ae9df85d..193e5b0d0296 100644
--- a/arch/s390/pci/pci_clp.c
+++ b/arch/s390/pci/pci_clp.c
@@ -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;
diff --git a/arch/s390/pci/pci_sysfs.c b/arch/s390/pci/pci_sysfs.c
index 215f17437a4f..8ea8d04ed86d 100644
--- a/arch/s390/pci/pci_sysfs.c
+++ b/arch/s390/pci/pci_sysfs.c
@@ -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,
--
2.25.1
More information about the kernel-team
mailing list