From: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
To: linuxppc-dev@lists.ozlabs.org,
Frederic Barrat <fbarrat@linux.vnet.ibm.com>
Cc: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>,
Andrew Donnellan <andrew.donnellan@au1.ibm.com>,
Christophe Lombard <christophe_lombard@fr.ibm.com>,
Philippe Bergheaud <philippe.bergheaud@fr.ibm.com>,
"Alastair D'Silva" <alastair@linux.ibm.com>
Subject: [PATCH 1/3] cxl: Introduce various enums/defines for PSL9 trace arrays
Date: Fri, 9 Feb 2018 09:55:33 +0530 [thread overview]
Message-ID: <20180209042535.16845-2-vaibhav@linux.vnet.ibm.com> (raw)
In-Reply-To: <20180209042535.16845-1-vaibhav@linux.vnet.ibm.com>
We introduce a new enum named cxl_psl9_traceid that represents
individual trace-arrays available on PSL9. In addition a set of new
defines named s CXL_PSL9_TRACESTATE_XXX are introduced that represent
various states a trace-array can be in. Value of each define is the
value reported by PSL_CTCCFG register for the corresponding state of
trace-array. Also a new macro named CXL_PSL9_TRACE_STATE() is
introduced that makes it convenient to evaluate state of a trace-array
from the PSL_CTCCFG register.
The patch re-factors cxl_stop_trace_psl9() to use these new
enums/defines and renames 'cxl_service_layer_ops.debugfs_stoptrace'
function pointer to 'cxl_service_layer_ops.stop_psltrace'.
This patch shouldn't cause any behavioral changes.
Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
---
drivers/misc/cxl/cxl.h | 29 ++++++++++++++++++++++++++---
drivers/misc/cxl/native.c | 8 ++++----
drivers/misc/cxl/pci.c | 15 +++++++--------
3 files changed, 37 insertions(+), 15 deletions(-)
diff --git a/drivers/misc/cxl/cxl.h b/drivers/misc/cxl/cxl.h
index 4f015da78f28..81da307b60c0 100644
--- a/drivers/misc/cxl/cxl.h
+++ b/drivers/misc/cxl/cxl.h
@@ -418,8 +418,31 @@ static const cxl_p2n_reg_t CXL_PSL_WED_An = {0x0A0};
#define CXL_CARD_MINOR(adapter) (adapter->adapter_num * CXL_DEV_MINORS)
#define CXL_DEVT_ADAPTER(dev) (MINOR(dev) / CXL_DEV_MINORS)
-#define CXL_PSL9_TRACEID_MAX 0xAU
-#define CXL_PSL9_TRACESTATE_FIN 0x3U
+/* Various trace arrays available on PSL9 */
+enum cxl_psl9_traceid {
+ CXL_PSL9_TRACEID_RX0 = 0,
+ CXL_PSL9_TRACEID_RX1, /* 1 */
+ CXL_PSL9_TRACEID_XSL, /* 2 */
+ CXL_PSL9_TRACEID_CT0, /* 3 */
+ CXL_PSL9_TRACEID_CT1, /* 4 */
+ CXL_PSL9_TRACEID_LA0, /* 5 */
+ CXL_PSL9_TRACEID_LA1, /* 6 */
+ CXL_PSL9_TRACEID_JM0, /* 7 */
+ CXL_PSL9_TRACEID_DMA0, /* 8 */
+ CXL_PSL9_TRACEID_DMA1, /* 9 */
+ CXL_PSL9_TRACEID_REOA, /* 10 */
+ CXL_PSL9_TRACEID_MAX
+};
+
+/* State of tracearray as reported in PSL9_CTCCFG */
+#define CXL_PSL9_TRACESTATE_IDLE 0x0U
+#define CXL_PSL9_TRACESTATE_INIT 0x1U
+#define CXL_PSL9_TRACESTATE_WFT 0x2U
+#define CXL_PSL9_TRACESTATE_FIN 0x3U
+
+/* Find the Trace Array state from PSL9_CTCCFG Reg */
+#define CXL_PSL9_TRACE_STATE(STATE, TRACE_ID) \
+ ((STATE) >> (62 - (TRACE_ID) * 2) & 0x3)
enum cxl_context_status {
CLOSED,
@@ -654,7 +677,7 @@ struct cxl_service_layer_ops {
void (*debugfs_add_afu_regs)(struct cxl_afu *afu, struct dentry *dir);
void (*psl_irq_dump_registers)(struct cxl_context *ctx);
void (*err_irq_dump_registers)(struct cxl *adapter);
- void (*debugfs_stop_trace)(struct cxl *adapter);
+ void (*stop_psltrace)(struct cxl *adapter);
void (*write_timebase_ctrl)(struct cxl *adapter);
u64 (*timebase_read)(struct cxl *adapter);
int capi_mode;
diff --git a/drivers/misc/cxl/native.c b/drivers/misc/cxl/native.c
index 1b3d7c65ea3f..bba9e1bb8b4d 100644
--- a/drivers/misc/cxl/native.c
+++ b/drivers/misc/cxl/native.c
@@ -1135,9 +1135,9 @@ static irqreturn_t native_handle_psl_slice_error(struct cxl_context *ctx,
if (ctx->afu->adapter->native->sl_ops->psl_irq_dump_registers)
ctx->afu->adapter->native->sl_ops->psl_irq_dump_registers(ctx);
- if (ctx->afu->adapter->native->sl_ops->debugfs_stop_trace) {
+ if (ctx->afu->adapter->native->sl_ops->stop_psltrace) {
dev_crit(&ctx->afu->dev, "STOPPING CXL TRACE\n");
- ctx->afu->adapter->native->sl_ops->debugfs_stop_trace(ctx->afu->adapter);
+ ctx->afu->adapter->native->sl_ops->stop_psltrace(ctx->afu->adapter);
}
return cxl_ops->ack_irq(ctx, 0, errstat);
@@ -1303,9 +1303,9 @@ static irqreturn_t native_irq_err(int irq, void *data)
err_ivte = cxl_p1_read(adapter, CXL_PSL_ErrIVTE);
dev_crit(&adapter->dev, "PSL_ErrIVTE: 0x%016llx\n", err_ivte);
- if (adapter->native->sl_ops->debugfs_stop_trace) {
+ if (adapter->native->sl_ops->stop_psltrace) {
dev_crit(&adapter->dev, "STOPPING CXL TRACE\n");
- adapter->native->sl_ops->debugfs_stop_trace(adapter);
+ adapter->native->sl_ops->stop_psltrace(adapter);
}
if (adapter->native->sl_ops->err_irq_dump_registers)
diff --git a/drivers/misc/cxl/pci.c b/drivers/misc/cxl/pci.c
index 9bc30c20b66b..926b13973b73 100644
--- a/drivers/misc/cxl/pci.c
+++ b/drivers/misc/cxl/pci.c
@@ -1747,15 +1747,14 @@ static void cxl_deconfigure_adapter(struct cxl *adapter)
static void cxl_stop_trace_psl9(struct cxl *adapter)
{
int traceid;
- u64 trace_state, trace_mask;
+ u64 trace_cfg, trace_state;
struct pci_dev *dev = to_pci_dev(adapter->dev.parent);
+ trace_cfg = cxl_p1_read(adapter, CXL_PSL9_CTCCFG);
/* read each tracearray state and issue mmio to stop them is needed */
- for (traceid = 0; traceid <= CXL_PSL9_TRACEID_MAX; ++traceid) {
- trace_state = cxl_p1_read(adapter, CXL_PSL9_CTCCFG);
- trace_mask = (0x3ULL << (62 - traceid * 2));
- trace_state = (trace_state & trace_mask) >> (62 - traceid * 2);
- dev_dbg(&dev->dev, "cxl: Traceid-%d trace_state=0x%0llX\n",
+ for (traceid = 0; traceid < CXL_PSL9_TRACEID_MAX; ++traceid) {
+ trace_state = CXL_PSL9_TRACE_STATE(trace_cfg, traceid);
+ dev_dbg(&dev->dev, "Traceid-%d trace_state=0x%0llX\n",
traceid, trace_state);
/* issue mmio if the trace array isn't in FIN state */
@@ -1799,7 +1798,7 @@ static const struct cxl_service_layer_ops psl9_ops = {
.debugfs_add_afu_regs = cxl_debugfs_add_afu_regs_psl9,
.psl_irq_dump_registers = cxl_native_irq_dump_regs_psl9,
.err_irq_dump_registers = cxl_native_err_irq_dump_regs_psl9,
- .debugfs_stop_trace = cxl_stop_trace_psl9,
+ .stop_psltrace = cxl_stop_trace_psl9,
.timebase_read = timebase_read_psl9,
.capi_mode = OPAL_PHB_CAPI_MODE_CAPI,
.needs_reset_before_disable = true,
@@ -1822,7 +1821,7 @@ static const struct cxl_service_layer_ops psl8_ops = {
.debugfs_add_afu_regs = cxl_debugfs_add_afu_regs_psl8,
.psl_irq_dump_registers = cxl_native_irq_dump_regs_psl8,
.err_irq_dump_registers = cxl_native_err_irq_dump_regs_psl8,
- .debugfs_stop_trace = cxl_stop_trace_psl8,
+ .stop_psltrace = cxl_stop_trace_psl8,
.write_timebase_ctrl = write_timebase_ctrl_psl8,
.timebase_read = timebase_read_psl8,
.capi_mode = OPAL_PHB_CAPI_MODE_CAPI,
--
2.14.3
next prev parent reply other threads:[~2018-02-09 4:26 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-09 4:25 [PATCH 0/3] Provide ability to enable PSL traces on card probe Vaibhav Jain
2018-02-09 4:25 ` Vaibhav Jain [this message]
2018-02-09 13:08 ` [PATCH 1/3] cxl: Introduce various enums/defines for PSL9 trace arrays christophe lombard
2018-02-11 16:46 ` Vaibhav Jain
2018-02-09 4:25 ` [PATCH 2/3] cxl: Introduce module parameter 'enable_psltrace' Vaibhav Jain
2018-02-09 13:14 ` christophe lombard
2018-02-11 17:10 ` Vaibhav Jain
2018-02-12 10:46 ` christophe lombard
2018-02-12 13:54 ` Frederic Barrat
2018-02-13 11:07 ` Vaibhav Jain
2018-02-09 4:25 ` [PATCH 3/3] cxl: Provide implementation for sl_ops.start_psltrace on PSL9 Vaibhav Jain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180209042535.16845-2-vaibhav@linux.vnet.ibm.com \
--to=vaibhav@linux.vnet.ibm.com \
--cc=alastair@linux.ibm.com \
--cc=andrew.donnellan@au1.ibm.com \
--cc=christophe_lombard@fr.ibm.com \
--cc=fbarrat@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=philippe.bergheaud@fr.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).