[Cbe-oss-dev] [PATCH 7:7] Provide new spufs file for debugging dpu scheduler [updated]
Luke Browning
lukebr at linux.vnet.ibm.com
Thu May 15 10:36:41 EST 2008
Provide ctxt debug file
Add a ctxt file to the spu virtual file system that shows
spu context information used in scheduling.
Signed-off-by: Luke Browning <lukebrowning at us.ibm.com>
---
Index: spufs/arch/powerpc/platforms/cell/spufs/file.c
===================================================================
--- spufs.orig/arch/powerpc/platforms/cell/spufs/file.c
+++ spufs/arch/powerpc/platforms/cell/spufs/file.c
@@ -2411,6 +2411,58 @@ static const struct file_operations spuf
.release = single_release,
};
+static int spufs_show_x_ctxt(struct seq_file *s, void *private)
+{
+ struct spu_context *ctx = s->private;
+ u64 mfc_control_RW;
+
+ mutex_lock(&ctx->state_mutex);
+ if (ctx->spu) {
+ struct spu *spu = ctx->spu;
+ struct spu_priv2 __iomem *priv2 = spu->priv2;
+
+ spin_lock_irq(&spu->register_lock);
+ mfc_control_RW = in_be64(&priv2->mfc_control_RW);
+ spin_unlock_irq(&spu->register_lock);
+ } else {
+ struct spu_state *csa = &ctx->csa;
+
+ mfc_control_RW = csa->priv2.mfc_control_RW;
+ }
+
+ seq_printf(s, "%c flgs(%lx) sflgs(%lx) pri(%d) ts(%d) scnt(0x%04x)"
+ " spu(%02d) %c %lx %lx %lx %lx %x %x\n",
+ ctx->state == SPU_STATE_SAVED ? 'S' : 'R',
+ ctx->flags,
+ ctx->sched_flags,
+ ctx->prio,
+ ctx->time_slice,
+ ctx->sched_count,
+ ctx->spu ? ctx->spu->number : -1,
+ !list_empty(&ctx->rq) ? 'q' : ' ',
+ ctx->csa.class_0_pending,
+ ctx->csa.class_0_dar,
+ ctx->csa.class_1_dsisr,
+ mfc_control_RW,
+ ctx->ops->runcntl_read(ctx),
+ ctx->ops->status_read(ctx));
+
+ mutex_unlock(&ctx->state_mutex);
+
+ return 0;
+}
+
+static int spufs_x_ctxt_open(struct inode *inode, struct file *file)
+{
+ return single_open(file, spufs_show_x_ctxt, SPUFS_I(inode)->i_ctx);
+}
+
+static const struct file_operations spufs_x_ctxt_fops = {
+ .open = spufs_x_ctxt_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+};
struct tree_descr spufs_dir_contents[] = {
{ "capabilities", &spufs_caps_fops, 0444, },
@@ -2447,6 +2499,7 @@ struct tree_descr spufs_dir_contents[] =
{ "proxydma_info", &spufs_proxydma_info_fops, 0444, },
{ "tid", &spufs_tid_fops, 0444, },
{ "stat", &spufs_stat_fops, 0444, },
+ { "x_ctxt", &spufs_x_ctxt_fops, 0444, },
{},
};
@@ -2472,6 +2525,7 @@ struct tree_descr spufs_dir_nosched_cont
{ "object-id", &spufs_object_id_ops, 0666, },
{ "tid", &spufs_tid_fops, 0444, },
{ "stat", &spufs_stat_fops, 0444, },
+ { "x_ctxt", &spufs_x_ctxt_fops, 0444, },
{},
};
More information about the cbe-oss-dev
mailing list