aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Winkler <tomas.winkler@intel.com>2016-02-07 15:46:51 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-02-07 16:00:52 -0500
commita96c548291719ae40da1b3c52493f40a63d3dd84 (patch)
treec6cdc728ac35b9b0c717a675a4a2d615cb852a17
parent3a20a5c339cce042e53557be067e121e4e984adf (diff)
mei: trace pci configuration space io
Use tracing events also for reading and writing pci configuration space <debugfs>/tracing/events/mei/mei_pci_reg_{read,write} Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/misc/mei/hw-me.c10
-rw-r--r--drivers/misc/mei/hw-txe.c10
-rw-r--r--drivers/misc/mei/mei-trace.c2
-rw-r--r--drivers/misc/mei/mei-trace.h38
4 files changed, 56 insertions, 4 deletions
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c
index 25b1997a62cb..e2fb44cc5c37 100644
--- a/drivers/misc/mei/hw-me.c
+++ b/drivers/misc/mei/hw-me.c
@@ -189,8 +189,11 @@ static int mei_me_fw_status(struct mei_device *dev,
189 189
190 fw_status->count = fw_src->count; 190 fw_status->count = fw_src->count;
191 for (i = 0; i < fw_src->count && i < MEI_FW_STATUS_MAX; i++) { 191 for (i = 0; i < fw_src->count && i < MEI_FW_STATUS_MAX; i++) {
192 ret = pci_read_config_dword(pdev, 192 ret = pci_read_config_dword(pdev, fw_src->status[i],
193 fw_src->status[i], &fw_status->status[i]); 193 &fw_status->status[i]);
194 trace_mei_pci_cfg_read(dev->dev, "PCI_CFG_HSF_X",
195 fw_src->status[i],
196 fw_status->status[i]);
194 if (ret) 197 if (ret)
195 return ret; 198 return ret;
196 } 199 }
@@ -215,6 +218,7 @@ static void mei_me_hw_config(struct mei_device *dev)
215 218
216 reg = 0; 219 reg = 0;
217 pci_read_config_dword(pdev, PCI_CFG_HFS_1, &reg); 220 pci_read_config_dword(pdev, PCI_CFG_HFS_1, &reg);
221 trace_mei_pci_cfg_read(dev->dev, "PCI_CFG_HFS_1", PCI_CFG_HFS_1, reg);
218 hw->d0i3_supported = 222 hw->d0i3_supported =
219 ((reg & PCI_CFG_HFS_1_D0I3_MSK) == PCI_CFG_HFS_1_D0I3_MSK); 223 ((reg & PCI_CFG_HFS_1_D0I3_MSK) == PCI_CFG_HFS_1_D0I3_MSK);
220 224
@@ -1248,6 +1252,7 @@ static bool mei_me_fw_type_nm(struct pci_dev *pdev)
1248 u32 reg; 1252 u32 reg;
1249 1253
1250 pci_read_config_dword(pdev, PCI_CFG_HFS_2, &reg); 1254 pci_read_config_dword(pdev, PCI_CFG_HFS_2, &reg);
1255 trace_mei_pci_cfg_read(&pdev->dev, "PCI_CFG_HFS_2", PCI_CFG_HFS_2, reg);
1251 /* make sure that bit 9 (NM) is up and bit 10 (DM) is down */ 1256 /* make sure that bit 9 (NM) is up and bit 10 (DM) is down */
1252 return (reg & 0x600) == 0x200; 1257 return (reg & 0x600) == 0x200;
1253} 1258}
@@ -1260,6 +1265,7 @@ static bool mei_me_fw_type_sps(struct pci_dev *pdev)
1260 u32 reg; 1265 u32 reg;
1261 /* Read ME FW Status check for SPS Firmware */ 1266 /* Read ME FW Status check for SPS Firmware */
1262 pci_read_config_dword(pdev, PCI_CFG_HFS_1, &reg); 1267 pci_read_config_dword(pdev, PCI_CFG_HFS_1, &reg);
1268 trace_mei_pci_cfg_read(&pdev->dev, "PCI_CFG_HFS_1", PCI_CFG_HFS_1, reg);
1263 /* if bits [19:16] = 15, running SPS Firmware */ 1269 /* if bits [19:16] = 15, running SPS Firmware */
1264 return (reg & 0xf0000) == 0xf0000; 1270 return (reg & 0xf0000) == 0xf0000;
1265} 1271}
diff --git a/drivers/misc/mei/hw-txe.c b/drivers/misc/mei/hw-txe.c
index bae680c648ff..4a6c1b85f11e 100644
--- a/drivers/misc/mei/hw-txe.c
+++ b/drivers/misc/mei/hw-txe.c
@@ -28,6 +28,9 @@
28#include "client.h" 28#include "client.h"
29#include "hbm.h" 29#include "hbm.h"
30 30
31#include "mei-trace.h"
32
33
31/** 34/**
32 * mei_txe_reg_read - Reads 32bit data from the txe device 35 * mei_txe_reg_read - Reads 32bit data from the txe device
33 * 36 *
@@ -640,8 +643,11 @@ static int mei_txe_fw_status(struct mei_device *dev,
640 643
641 fw_status->count = fw_src->count; 644 fw_status->count = fw_src->count;
642 for (i = 0; i < fw_src->count && i < MEI_FW_STATUS_MAX; i++) { 645 for (i = 0; i < fw_src->count && i < MEI_FW_STATUS_MAX; i++) {
643 ret = pci_read_config_dword(pdev, 646 ret = pci_read_config_dword(pdev, fw_src->status[i],
644 fw_src->status[i], &fw_status->status[i]); 647 &fw_status->status[i]);
648 trace_mei_pci_cfg_read(dev->dev, "PCI_CFG_HSF_X",
649 fw_src->status[i],
650 fw_status->status[i]);
645 if (ret) 651 if (ret)
646 return ret; 652 return ret;
647 } 653 }
diff --git a/drivers/misc/mei/mei-trace.c b/drivers/misc/mei/mei-trace.c
index 388efb519138..e19e6acb191b 100644
--- a/drivers/misc/mei/mei-trace.c
+++ b/drivers/misc/mei/mei-trace.c
@@ -22,4 +22,6 @@
22 22
23EXPORT_TRACEPOINT_SYMBOL(mei_reg_read); 23EXPORT_TRACEPOINT_SYMBOL(mei_reg_read);
24EXPORT_TRACEPOINT_SYMBOL(mei_reg_write); 24EXPORT_TRACEPOINT_SYMBOL(mei_reg_write);
25EXPORT_TRACEPOINT_SYMBOL(mei_pci_cfg_read);
26EXPORT_TRACEPOINT_SYMBOL(mei_pci_cfg_write);
25#endif /* __CHECKER__ */ 27#endif /* __CHECKER__ */
diff --git a/drivers/misc/mei/mei-trace.h b/drivers/misc/mei/mei-trace.h
index 47e1bc6551d4..86e5068837c1 100644
--- a/drivers/misc/mei/mei-trace.h
+++ b/drivers/misc/mei/mei-trace.h
@@ -64,6 +64,44 @@ TRACE_EVENT(mei_reg_write,
64 __get_str(dev), __entry->reg, __entry->offs, __entry->val) 64 __get_str(dev), __entry->reg, __entry->offs, __entry->val)
65); 65);
66 66
67TRACE_EVENT(mei_pci_cfg_read,
68 TP_PROTO(const struct device *dev, const char *reg, u32 offs, u32 val),
69 TP_ARGS(dev, reg, offs, val),
70 TP_STRUCT__entry(
71 __string(dev, dev_name(dev))
72 __field(const char *, reg)
73 __field(u32, offs)
74 __field(u32, val)
75 ),
76 TP_fast_assign(
77 __assign_str(dev, dev_name(dev))
78 __entry->reg = reg;
79 __entry->offs = offs;
80 __entry->val = val;
81 ),
82 TP_printk("[%s] pci cfg read %s:[%#x] = %#x",
83 __get_str(dev), __entry->reg, __entry->offs, __entry->val)
84);
85
86TRACE_EVENT(mei_pci_cfg_write,
87 TP_PROTO(const struct device *dev, const char *reg, u32 offs, u32 val),
88 TP_ARGS(dev, reg, offs, val),
89 TP_STRUCT__entry(
90 __string(dev, dev_name(dev))
91 __field(const char *, reg)
92 __field(u32, offs)
93 __field(u32, val)
94 ),
95 TP_fast_assign(
96 __assign_str(dev, dev_name(dev))
97 __entry->reg = reg;
98 __entry->offs = offs;
99 __entry->val = val;
100 ),
101 TP_printk("[%s] pci cfg write %s[%#x] = %#x)",
102 __get_str(dev), __entry->reg, __entry->offs, __entry->val)
103);
104
67#endif /* _MEI_TRACE_H_ */ 105#endif /* _MEI_TRACE_H_ */
68 106
69/* This part must be outside protection */ 107/* This part must be outside protection */