I am using amdgpu driver on 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Amethyst XT [Radeon R9 M295X Mac Edition / R9 380X] [1002:6938] (rev f1) Running the following script for i in $(seq 0 65535); do echo -n "$i: "; dd if=amdgpu_regs bs=4 skip=$i count=1 2>/dev/null | hexdump -e '"%08x"'; echo; done hangs the machine at register 14829 and the data from the register is not printed. I tried reading the registers twice just to be sure it hangs in the same place repeatedly, and it was 14829 in both cases. I have reports this is reproducible using vanilla kernel.
That's perfectly normal behavior. Register 14829 probably don't exists on your hardware generation and so accessing it causes an unresolvable BUS stall.
Can't anything be done to avoid the hang? Running cat on that file will hang the machine as well.
Not really. You could do large lists of which registers are save for accessing, but we have 256KB register space and need an individual list for pretty much every hardware generation. Sorry but just accessing random registers through the debugfs interface is simply not expected to work.