On 04/11/2018 08:17 AM, Christian König wrote:
Am 11.04.2018 um 14:03 schrieb Tom St Denis:


On 04/11/2018 07:58 AM, Christian König wrote:

  -    if (size & 3 || *pos & 3)
+    if (size & 3 || size > (4 * AMDGPU_DEBUGFS_MAX_SGPR_READ))

I think checking the position alignment here is still necessary, cause we can't read from not dw boundaries don't we?

The index is a dword index as fed into SQ_IND_INDEX (offset => start => regno as you trace from the debugfs entry to gfx_v8_0_read_wave_sgprs to wave_read_regs (or analogues...)).

SQ_IND_INDEX doesn't take a byte offset but a dword offset, for instance:

include/asic_reg/gc/gc_9_0_offset.h:#define ixSQ_WAVE_TTMP0 0x026c
include/asic_reg/gc/gc_9_0_offset.h:#define ixSQ_WAVE_TTMP1 0x026d
include/asic_reg/gc/gc_9_0_offset.h:#define ixSQ_WAVE_TTMP2 0x026e


The current way for instance would prohibit reading (directly) SQ_WAVE_TTMP1.

I agree it's not really how a typical file device works but it's not a typical file device :-).  It's assumed every read would be preceded by a seek to set the higher order bits anyways.

So pos=0 is one dw and pos=1 is another one? If that's the case then that would be a bug since pos is by definition a byte offset.

I suggest to keep the limitation and instead fix how pos is interpreted instead.

It would break copies of umr out there already (in ways that won't be obvious and therefore result in lost time/etc). Since umr is probably the only user of this it's not really a big deal. Ideally, everyone uses the latest umr each day :-) but that's not realistically the case.

I agree that had I written this today I would keep the file offset consistent with the byte offset into the register file (shift down by 4 before calling the callback).

Since you need to seek to a very specific address to use this device it's not the sort of thing that someone would cat and then expect sensible output anyways.

Tom
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to