>-static void amdvi_mmio_trace(hwaddr addr, unsigned size)
>+static inline uint8_t amdvi_mmio_get_index(hwaddr addr)
> {
> uint8_t index = (addr & ~0x2000) / 8;
>
> if ((addr & 0x2000)) {
> /* high table */
> index = index >= AMDVI_MMIO_REGS_HIGH ? AMDVI_MMIO_REGS_HIGH : index;
>- trace_amdvi_mmio_read(amdvi_mmio_high[index], addr, size, addr &
>~0x07);
> } else {
> index = index >= AMDVI_MMIO_REGS_LOW ? AMDVI_MMIO_REGS_LOW : index;
>- trace_amdvi_mmio_read(amdvi_mmio_low[index], addr, size, addr &
>~0x07);
> }
>+
>+ return index;
>+}
>+
>+static void amdvi_mmio_trace_read(hwaddr addr, unsigned size)
>+{
>+ uint8_t index = amdvi_mmio_get_index(addr);
>+ trace_amdvi_mmio_read(amdvi_mmio_low[index], addr, size, addr & ~0x07);
>+}
>+
>+static void amdvi_mmio_trace_write(hwaddr addr, unsigned size, uint64_t val)
>+{
>+ uint8_t index = amdvi_mmio_get_index(addr);
>+ trace_amdvi_mmio_write(amdvi_mmio_low[index], addr, size, val,
Shouldn't you be picking between amdvi_mmio_low and amdvi_mmio_high in the
above 2 fuctions depending on the addr value?