video: rockchip: mpp_service add dump session

Add the dump session function to show iova stats.

Tested on RK3588 Debian:
[root@RK3588:/]# cat /proc/mpp_service/sessions-summary
session iova range dump:
   0: 0x00000000fff80000..0x00000000ffffffff (       512 KiB)
   1: 0x00000000f8000000..0x00000000fca09fff (     75816 KiB)
   2: 0x00000000f7c00000..0x00000000f7ffbfff (      4080 KiB)
   3: 0x00000000f7b00000..0x00000000f7bb2fff (       716 KiB)
   4: 0x00000000f7a80000..0x00000000f7ae0fff (       388 KiB)
   5: 0x00000000f7a00000..0x00000000f7a7ffff (       512 KiB)
   6: 0x00000000f0000000..0x00000000f4a09fff (     75816 KiB)
   7: 0x00000000efc00000..0x00000000efffbfff (      4080 KiB)
   8: 0x00000000e8000000..0x00000000eca09fff (     75816 KiB)
   9: 0x00000000e7c00000..0x00000000e7ffbfff (      4080 KiB)
  10: 0x00000000e0000000..0x00000000e4a09fff (     75816 KiB)
  11: 0x00000000dfc00000..0x00000000dfffbfff (      4080 KiB)
  12: 0x00000000d8000000..0x00000000dca09fff (     75816 KiB)
  13: 0x00000000d7c00000..0x00000000d7ffbfff (      4080 KiB)
  14: 0x00000000d0000000..0x00000000d4a09fff (     75816 KiB)
  15: 0x00000000c8000000..0x00000000cca09fff (     75816 KiB)
  16: 0x00000000c7f00000..0x00000000c7fb2fff (       716 KiB)
  17: 0x00000000c7e80000..0x00000000c7efffff (       512 KiB)
  18: 0x00000000c0000000..0x00000000c4a09fff (     75816 KiB)
  19: 0x00000000bfc00000..0x00000000bfffbfff (      4080 KiB)
  20: 0x00000000bfb00000..0x00000000bfbb2fff (       716 KiB)
  21: 0x00000000b8000000..0x00000000bca09fff (     75816 KiB)
  22: 0x00000000b0000000..0x00000000b4a09fff (     75816 KiB)
  23: 0x00000000a8000000..0x00000000aca09fff (     75816 KiB)
  24: 0x00000000a0000000..0x00000000a4a09fff (     75816 KiB)
session: pid=2296 index=1
 device: fdc38100.rkvdec-core
 memory: 916 MiB

Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com>
Change-Id: I545a26e37e50ee94e1eeae51eebf35d70cedc49f
This commit is contained in:
Jianqun Xu
2022-04-14 16:55:16 +08:00
committed by Tao Huang
parent b8d9ef07ae
commit f4052bc00c

View File

@@ -184,6 +184,55 @@ static int mpp_show_version(struct seq_file *seq, void *offset)
return 0;
}
static int mpp_dump_session(struct mpp_session *session, struct seq_file *s)
{
struct mpp_dma_session *dma = session->dma;
struct mpp_dma_buffer *n;
struct mpp_dma_buffer *buffer;
phys_addr_t end;
unsigned long z = 0, t = 0;
int i = 0;
#define K(size) ((unsigned long)((size) >> 10))
if (!dma)
return 0;
seq_puts(s, "session iova range dump:\n");
mutex_lock(&dma->list_mutex);
list_for_each_entry_safe(buffer, n, &dma->used_list, link) {
end = buffer->iova + buffer->size - 1;
z = (unsigned long)buffer->size;
t += z;
seq_printf(s, "%4d: ", i++);
seq_printf(s, "%pa..%pa (%10lu %s)\n", &buffer->iova, &end,
(z >= 1024) ? (K(z)) : z,
(z >= 1024) ? "KiB" : "Bytes");
}
i = 0;
list_for_each_entry_safe(buffer, n, &dma->unused_list, link) {
if (!buffer->dmabuf)
continue;
end = buffer->iova + buffer->size - 1;
z = (unsigned long)buffer->size;
t += z;
seq_printf(s, "%4d: ", i++);
seq_printf(s, "%pa..%pa (%10lu %s)\n", &buffer->iova, &end,
(z >= 1024) ? (K(z)) : z,
(z >= 1024) ? "KiB" : "Bytes");
}
mutex_unlock(&dma->list_mutex);
seq_printf(s, "session: pid=%d index=%d\n", session->pid, session->index);
seq_printf(s, " device: %s\n", dev_name(session->mpp->dev));
seq_printf(s, " memory: %lu MiB\n", K(K(t)));
return 0;
}
static int mpp_show_session_summary(struct seq_file *seq, void *offset)
{
struct mpp_session *session = NULL, *n;
@@ -202,6 +251,8 @@ static int mpp_show_session_summary(struct seq_file *seq, void *offset)
continue;
mpp = session->mpp;
mpp_dump_session(session, seq);
if (mpp->dev_ops->dump_session)
mpp->dev_ops->dump_session(session, seq);
}