diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2016-02-07 15:46:51 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-02-07 16:00:52 -0500 |
commit | a96c548291719ae40da1b3c52493f40a63d3dd84 (patch) | |
tree | c6cdc728ac35b9b0c717a675a4a2d615cb852a17 | |
parent | 3a20a5c339cce042e53557be067e121e4e984adf (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.c | 10 | ||||
-rw-r--r-- | drivers/misc/mei/hw-txe.c | 10 | ||||
-rw-r--r-- | drivers/misc/mei/mei-trace.c | 2 | ||||
-rw-r--r-- | drivers/misc/mei/mei-trace.h | 38 |
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, ®); | 220 | pci_read_config_dword(pdev, PCI_CFG_HFS_1, ®); |
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, ®); | 1254 | pci_read_config_dword(pdev, PCI_CFG_HFS_2, ®); |
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, ®); | 1267 | pci_read_config_dword(pdev, PCI_CFG_HFS_1, ®); |
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 | ||
23 | EXPORT_TRACEPOINT_SYMBOL(mei_reg_read); | 23 | EXPORT_TRACEPOINT_SYMBOL(mei_reg_read); |
24 | EXPORT_TRACEPOINT_SYMBOL(mei_reg_write); | 24 | EXPORT_TRACEPOINT_SYMBOL(mei_reg_write); |
25 | EXPORT_TRACEPOINT_SYMBOL(mei_pci_cfg_read); | ||
26 | EXPORT_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 | ||
67 | TRACE_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 | |||
86 | TRACE_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 */ |