aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/pci/pci_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/pci/pci_event.c')
-rw-r--r--arch/s390/pci/pci_event.c35
1 files changed, 14 insertions, 21 deletions
diff --git a/arch/s390/pci/pci_event.c b/arch/s390/pci/pci_event.c
index 0aecaf954845..278e671ec9ac 100644
--- a/arch/s390/pci/pci_event.c
+++ b/arch/s390/pci/pci_event.c
@@ -10,6 +10,7 @@
10 10
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/pci.h> 12#include <linux/pci.h>
13#include <asm/pci_debug.h>
13 14
14/* Content Code Description for PCI Function Error */ 15/* Content Code Description for PCI Function Error */
15struct zpci_ccdf_err { 16struct zpci_ccdf_err {
@@ -41,25 +42,15 @@ struct zpci_ccdf_avail {
41 u16 pec; /* PCI event code */ 42 u16 pec; /* PCI event code */
42} __packed; 43} __packed;
43 44
44static void zpci_event_log_err(struct zpci_ccdf_err *ccdf)
45{
46 struct zpci_dev *zdev = get_zdev_by_fid(ccdf->fid);
47
48 zpci_err("SEI error CCD:\n");
49 zpci_err_hex(ccdf, sizeof(*ccdf));
50 dev_err(&zdev->pdev->dev, "event code: 0x%x\n", ccdf->pec);
51}
52
53static void zpci_event_log_avail(struct zpci_ccdf_avail *ccdf) 45static void zpci_event_log_avail(struct zpci_ccdf_avail *ccdf)
54{ 46{
55 struct zpci_dev *zdev = get_zdev_by_fid(ccdf->fid); 47 struct zpci_dev *zdev = get_zdev_by_fid(ccdf->fid);
48 struct pci_dev *pdev = zdev ? zdev->pdev : NULL;
56 49
57 pr_err("%s%s: availability event: fh: 0x%x fid: 0x%x event code: 0x%x reason:", 50 pr_info("%s: Event 0x%x reconfigured PCI function 0x%x\n",
58 (zdev) ? dev_driver_string(&zdev->pdev->dev) : "?", 51 pdev ? pci_name(pdev) : "n/a", ccdf->pec, ccdf->fid);
59 (zdev) ? dev_name(&zdev->pdev->dev) : "?", 52 zpci_err("avail CCDF:\n");
60 ccdf->fh, ccdf->fid, ccdf->pec); 53 zpci_err_hex(ccdf, sizeof(*ccdf));
61 print_hex_dump(KERN_CONT, "ccdf", DUMP_PREFIX_OFFSET,
62 16, 1, ccdf, sizeof(*ccdf), false);
63 54
64 switch (ccdf->pec) { 55 switch (ccdf->pec) {
65 case 0x0301: 56 case 0x0301:
@@ -79,14 +70,16 @@ static void zpci_event_log_avail(struct zpci_ccdf_avail *ccdf)
79void zpci_event_error(void *data) 70void zpci_event_error(void *data)
80{ 71{
81 struct zpci_ccdf_err *ccdf = data; 72 struct zpci_ccdf_err *ccdf = data;
82 struct zpci_dev *zdev; 73 struct zpci_dev *zdev = get_zdev_by_fid(ccdf->fid);
74
75 zpci_err("error CCDF:\n");
76 zpci_err_hex(ccdf, sizeof(*ccdf));
83 77
84 zpci_event_log_err(ccdf); 78 if (!zdev)
85 zdev = get_zdev_by_fid(ccdf->fid);
86 if (!zdev) {
87 pr_err("Error event for unknown fid: %x", ccdf->fid);
88 return; 79 return;
89 } 80
81 pr_err("%s: Event 0x%x reports an error for PCI function 0x%x\n",
82 pci_name(zdev->pdev), ccdf->pec, ccdf->fid);
90} 83}
91 84
92void zpci_event_availability(void *data) 85void zpci_event_availability(void *data)