mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 11:50:43 +09:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user