diff options
author | Marcin Ślusarz <marcin.slusarz@gmail.com> | 2014-09-09 23:54:36 +0200 |
---|---|---|
committer | Marcin Ślusarz <marcin.slusarz@gmail.com> | 2014-09-10 00:20:52 +0200 |
commit | 410816724aa26a66f16fb374ee194c7e28af9aab (patch) | |
tree | c75f806d6236a2fb46acf49c74d80f64c2ca4cf4 /rnn | |
parent | ac2f7462ad5dd462e9e849678a7977818a6b3d41 (diff) |
demmt/nvrm: deal with paddings
- rename fields which are always 0 in my traces to _pad*
- rename fields marked as paddings which are sometimes != 0 to unk*
- print fields marked as paddings when they are != 0
Diffstat (limited to 'rnn')
-rw-r--r-- | rnn/demmt_nvrm.c | 56 | ||||
-rw-r--r-- | rnn/nvrm_ioctl.h | 24 | ||||
-rw-r--r-- | rnn/nvrm_mthd.h | 12 |
3 files changed, 61 insertions, 31 deletions
diff --git a/rnn/demmt_nvrm.c b/rnn/demmt_nvrm.c index ac8b03a1..32d84c60 100644 --- a/rnn/demmt_nvrm.c +++ b/rnn/demmt_nvrm.c @@ -235,6 +235,8 @@ static const char *pfx = ""; #define print_i32(strct, field) do { mmt_log_cont("%s" #field ": %d", pfx, strct->field); pfx = sep; } while (0) #define print_i32_align(strct, field, algn) do { mmt_log_cont("%s" #field ": %" #algn "d", pfx, strct->field); pfx = sep; } while (0) +#define print_pad_u32(strct, field) do { if (strct->field) mmt_log_cont("%s%s" #field ": 0x%08x%s", pfx, colors->err, strct->field, colors->reset); pfx = sep; } while (0) + #define print_str(strct, field) do { mmt_log_cont("%s" #field ": \"%s\"", pfx, strct->field); pfx = sep; } while (0) #define print_ptr(strct, field, args, argc) \ @@ -380,6 +382,7 @@ static void decode_nvrm_ioctl_create(struct nvrm_ioctl_create *s, struct mmt_mem print_class(s, cls); struct mmt_buf *data = print_ptr(s, ptr, args, argc); print_status(s, status); + print_pad_u32(s, _pad); print_ln(); if (data) @@ -391,6 +394,7 @@ static void decode_nvrm_ioctl_call(struct nvrm_ioctl_call *s, struct mmt_memory_ print_cid(s, cid); print_handle(s, handle, cid); print_u32(s, mthd); + print_pad_u32(s, _pad); print_ptr(s, ptr, args, argc); print_u32(s, size); print_status(s, status); @@ -409,6 +413,7 @@ static void decode_nvrm_ioctl_unk4d(struct nvrm_ioctl_unk4d *s, struct mmt_memor print_u64(s, unk30); print_u64(s, unk38); print_status(s, status); + print_pad_u32(s, _pad); print_ln(); if (data) @@ -428,10 +433,11 @@ static void decode_nvrm_ioctl_create_vspace(struct nvrm_ioctl_create_vspace *s) print_handle(s, handle, cid); print_class(s, cls); print_u32(s, flags); - print_u32(s, unk14); + print_pad_u32(s, _pad1); print_u64(s, foffset); print_u64(s, limit); print_status(s, status); + print_pad_u32(s, _pad2); print_ln(); } @@ -441,11 +447,12 @@ static void decode_nvrm_ioctl_create_dma(struct nvrm_ioctl_create_dma *s) print_handle(s, handle, cid); print_class(s, cls); print_u32(s, flags); - print_u32(s, unk10); + print_pad_u32(s, _pad1); print_handle(s, parent, cid); print_u64(s, base); print_u64(s, limit); print_status(s, status); + print_pad_u32(s, _pad2); print_ln(); } @@ -454,10 +461,12 @@ static void decode_nvrm_ioctl_host_map(struct nvrm_ioctl_host_map *s) print_cid(s, cid); print_handle(s, subdev, cid); print_handle(s, handle, cid); + print_pad_u32(s, _pad); print_u64(s, base); print_u64(s, limit); print_u64(s, foffset); print_status(s, status); + print_u32(s, unk); print_ln(); } @@ -479,9 +488,10 @@ static void decode_nvrm_ioctl_vspace_map(struct nvrm_ioctl_vspace_map *s) print_u64(s, base); print_u64(s, size); print_u32(s, flags); - print_u32(s, unk24); + print_pad_u32(s, _pad1); print_u64(s, addr); print_status(s, status); + print_pad_u32(s, _pad2); print_ln(); } @@ -490,8 +500,10 @@ static void decode_nvrm_ioctl_host_unmap(struct nvrm_ioctl_host_unmap *s) print_cid(s, cid); print_handle(s, subdev, cid); print_handle(s, handle, cid); + print_pad_u32(s, _pad); print_u64(s, foffset); print_status(s, status); + print_pad_u32(s, _pad2); print_ln(); } @@ -536,6 +548,7 @@ static void decode_nvrm_ioctl_vspace_unmap(struct nvrm_ioctl_vspace_unmap *s) print_u64(s, unk10); print_u64(s, addr); print_status(s, status); + print_pad_u32(s, _pad); print_ln(); } @@ -544,10 +557,11 @@ static void decode_nvrm_ioctl_unk5e(struct nvrm_ioctl_unk5e *s) print_cid(s, cid); print_handle(s, subdev, cid); print_handle(s, handle, cid); + print_pad_u32(s, _pad1); print_u64(s, foffset); print_u64(s, ptr); print_status(s, status); - print_u32(s, unk24); + print_pad_u32(s, _pad2); print_ln(); } @@ -607,6 +621,7 @@ static void decode_nvrm_ioctl_query(struct nvrm_ioctl_query *s, struct mmt_memor print_u32(s, size); struct mmt_buf *data = print_ptr(s, ptr, args, argc); print_status(s, status); + print_pad_u32(s, _pad); print_ln(); if (data) @@ -633,7 +648,7 @@ static void decode_nvrm_ioctl_unk38(struct nvrm_ioctl_unk38 *s, struct mmt_memor print_u32(s, size); struct mmt_buf *data = print_ptr(s, ptr, args, argc); print_status(s, status); - print_u32(s, unk1c); + print_pad_u32(s, _pad); print_ln(); if (data) @@ -654,7 +669,7 @@ static void decode_nvrm_ioctl_unk41(struct nvrm_ioctl_unk41 *s, struct mmt_memor print_u32(s, unk28); print_u32(s, unk2c); print_status(s, status); - print_u32(s, unk34); + print_pad_u32(s, _pad); print_ln(); if (data1) @@ -670,7 +685,7 @@ static void decode_nvrm_ioctl_unk48(struct nvrm_ioctl_unk48 *s) print_cid(s, cid); print_handle(s, handle, cid); print_u32(s, unk08); - print_u32(s, unk0c); + print_pad_u32(s, _pad); print_ln(); } @@ -904,7 +919,7 @@ static void decode_nvrm_mthd_device_get_classes(struct nvrm_mthd_device_get_clas struct mmt_memory_dump *args, int argc) { print_u32(m, cnt); - print_u32(m, unk04); + print_pad_u32(m, _pad); struct mmt_buf *data = print_ptr(m, ptr, args, argc); print_ln(); @@ -976,6 +991,7 @@ static void decode_nvrm_mthd_subdevice_fb_get_params(struct nvrm_mthd_subdevice_ struct mmt_memory_dump *args, int argc) { print_u32(m, cnt); + print_pad_u32(m, _pad); struct mmt_buf *data = print_ptr(m, ptr, args, argc); print_ln(); @@ -1006,15 +1022,26 @@ static void decode_nvrm_mthd_subdevice_get_bus_info(struct nvrm_mthd_subdevice_g { print_u32(m, unk00); print_u32(m, unk04); - print_u32(m, unk08); + print_pad_u32(m, _pad1); print_i32_align(m, regs_size_mb, 4); print_u64(m, regs_base); - print_u32(m, unk18); + print_pad_u32(m, _pad2); print_i32_align(m, fb_size_mb, 4); print_u64(m, fb_base); - print_u32(m, unk28); + print_pad_u32(m, _pad3); print_i32_align(m, ramin_size_mb, 4); print_u64(m, ramin_base); + print_u32(m, unk38); + print_u32(m, unk3c); + print_u64(m, unk40); + print_u64(m, unk48); + print_u64(m, unk50); + print_u64(m, unk58); + print_u64(m, unk60); + print_u64(m, unk68); + print_u64(m, unk70); + print_u64(m, unk78); + print_u64(m, unk80); print_ln(); } @@ -1022,6 +1049,7 @@ static void decode_nvrm_mthd_subdevice_get_fifo_engines(struct nvrm_mthd_subdevi struct mmt_memory_dump *args, int argc) { print_u32(m, cnt); + print_pad_u32(m, _pad); struct mmt_buf *data = print_ptr(m, ptr, args, argc); print_ln(); @@ -1056,6 +1084,7 @@ static void decode_nvrm_mthd_subdevice_bus_get_params(struct nvrm_mthd_subdevice struct mmt_memory_dump *args, int argc) { print_u32(m, cnt); + print_pad_u32(m, _pad); struct mmt_buf *data = print_ptr(m, ptr, args, argc); print_ln(); @@ -1067,7 +1096,7 @@ static void decode_nvrm_mthd_device_unk1102(struct nvrm_mthd_device_unk1102 *m, struct mmt_memory_dump *args, int argc) { print_u32(m, cnt); - print_u32(m, unk04); + print_pad_u32(m, _pad); struct mmt_buf *data = print_ptr(m, ptr, args, argc); print_ln(); @@ -1079,7 +1108,7 @@ static void decode_nvrm_mthd_subdevice_unk0101(struct nvrm_mthd_subdevice_unk010 struct mmt_memory_dump *args, int argc) { print_u32(m, cnt); - print_u32(m, unk04); + print_pad_u32(m, _ptr); struct mmt_buf *data = print_ptr(m, ptr, args, argc); print_ln(); @@ -1097,6 +1126,7 @@ static void decode_nvrm_mthd_subdevice_unk1201(struct nvrm_mthd_subdevice_unk120 struct mmt_memory_dump *args, int argc) { print_u32(m, cnt); + print_pad_u32(m, _pad); struct mmt_buf *data = print_ptr(m, ptr, args, argc); print_ln(); diff --git a/rnn/nvrm_ioctl.h b/rnn/nvrm_ioctl.h index f71123fe..4a1ce5b1 100644 --- a/rnn/nvrm_ioctl.h +++ b/rnn/nvrm_ioctl.h @@ -56,7 +56,7 @@ struct nvrm_ioctl_create_vspace { uint32_t handle; uint32_t cls; uint32_t flags; - uint32_t unk14; /* maybe pad */ + uint32_t _pad1; uint64_t foffset; uint64_t limit; uint32_t status; @@ -152,7 +152,7 @@ struct nvrm_ioctl_unk38 { uint32_t size; uint64_t ptr; uint32_t status; - uint32_t unk1c; + uint32_t _pad; }; #define NVRM_IOCTL_UNK38 _IOWR(NVRM_IOCTL_MAGIC, 0x38, struct nvrm_ioctl_unk38) @@ -167,7 +167,7 @@ struct nvrm_ioctl_unk41 { uint32_t unk28; uint32_t unk2c; uint32_t status; - uint32_t unk34; + uint32_t _pad; }; #define NVRM_IOCTL_UNK41 _IOWR(NVRM_IOCTL_MAGIC, 0x41, struct nvrm_ioctl_unk41) @@ -175,7 +175,7 @@ struct nvrm_ioctl_unk48 { uint32_t cid; uint32_t handle; uint32_t unk08; - uint32_t unk0c; + uint32_t _pad; }; #define NVRM_IOCTL_UNK48 _IOWR(NVRM_IOCTL_MAGIC, 0x48, struct nvrm_ioctl_unk48) @@ -255,7 +255,7 @@ struct nvrm_ioctl_host_map { uint64_t limit; uint64_t foffset; uint32_t status; - uint32_t _pad2; + uint32_t unk; }; #define NVRM_IOCTL_HOST_MAP _IOWR(NVRM_IOCTL_MAGIC, 0x4e, struct nvrm_ioctl_host_map) @@ -272,7 +272,7 @@ struct nvrm_ioctl_host_unmap { struct nvrm_ioctl_unk52 { uint64_t ptr; - uint32_t unk08; + uint32_t unk08;/*cnt?*/ uint32_t status; }; #define NVRM_IOCTL_UNK52 _IOWR(NVRM_IOCTL_MAGIC, 0x52, struct nvrm_ioctl_unk52) @@ -282,12 +282,12 @@ struct nvrm_ioctl_create_dma { uint32_t handle; uint32_t cls; uint32_t flags; - uint32_t unk10; + uint32_t _pad1; uint32_t parent; uint64_t base; uint64_t limit; uint32_t status; - uint32_t _pad; + uint32_t _pad2; }; #define NVRM_IOCTL_CREATE_DMA _IOWR(NVRM_IOCTL_MAGIC, 0x54, struct nvrm_ioctl_create_dma) @@ -299,10 +299,10 @@ struct nvrm_ioctl_vspace_map { uint64_t base; uint64_t size; uint32_t flags; - uint32_t unk24; + uint32_t _pad1; uint64_t addr; uint32_t status; - uint32_t _pad; + uint32_t _pad2; }; #define NVRM_IOCTL_VSPACE_MAP _IOWR(NVRM_IOCTL_MAGIC, 0x57, struct nvrm_ioctl_vspace_map) @@ -330,11 +330,11 @@ struct nvrm_ioctl_unk5e { uint32_t cid; uint32_t subdev; uint32_t handle; - uint32_t _pad; + uint32_t _pad1; uint64_t foffset; uint64_t ptr; /* to just-mmapped thing */ uint32_t status; - uint32_t unk24; + uint32_t _pad2; }; #define NVRM_IOCTL_UNK5E _IOWR(NVRM_IOCTL_MAGIC, 0x5e, struct nvrm_ioctl_unk5e) diff --git a/rnn/nvrm_mthd.h b/rnn/nvrm_mthd.h index 16fd0389..7b9ef61e 100644 --- a/rnn/nvrm_mthd.h +++ b/rnn/nvrm_mthd.h @@ -98,7 +98,7 @@ struct nvrm_mthd_context_unk021b { struct nvrm_mthd_device_get_classes { uint32_t cnt; /* out */ - uint32_t unk04; + uint32_t _pad; uint64_t ptr; }; #define NVRM_MTHD_DEVICE_GET_CLASSES 0x00800201 @@ -120,7 +120,7 @@ struct nvrm_mthd_device_get_persistence_mode { struct nvrm_mthd_device_unk1102 { uint32_t cnt; - uint32_t unk04; + uint32_t _pad; uint64_t ptr; }; #define NVRM_MTHD_DEVICE_UNK1102 0x00801102 @@ -151,7 +151,7 @@ struct nvrm_mthd_device_unk170d { struct nvrm_mthd_subdevice_unk0101 { uint32_t cnt; - uint32_t unk04; + uint32_t _ptr; uint64_t ptr; }; #define NVRM_MTHD_SUBDEVICE_UNK0101 0x20800101 @@ -342,13 +342,13 @@ struct nvrm_mthd_subdevice_bus_get_params { struct nvrm_mthd_subdevice_get_bus_info { uint32_t unk00; uint32_t unk04; - uint32_t unk08; + uint32_t _pad1; uint32_t regs_size_mb; uint64_t regs_base; - uint32_t unk18; + uint32_t _pad2; uint32_t fb_size_mb; uint64_t fb_base; - uint32_t unk28; + uint32_t _pad3; uint32_t ramin_size_mb; uint64_t ramin_base; uint32_t unk38; |