无法使用gdb写入qemu中的iomem区域

Can't write into iomem region in qemu using gdb

我正在尝试在 qemu 中添加一个新设备。

在各自的cpu文件中,使用sysbus_mmio_map设置基址。

sysbus_mmio_map(SYS_BUS_DEVICE(&s->brif), 0, BASE_ADDRESS);

在新建的设备文件中,

memory_region_init_io(&s->iomem, obj, &ops, s, "brif", SIZE);
sysbus_init_mmio((SYS_BUS_DEVICE(obj), &s->iomem);

ops有相应的读写处理程序。

当我使用 gdb 访问 IO 内存区域时,我的读取处理程序被调用,但是当我使用 gdb 写入 IO 内存区域时,我的写入处理程序没有被调用。

我错过了什么?

更新:如果我从客户机内部的代码 运行 写入 IO 内存区域,我确实得到了写入处理程序,问题仅出现在我尝试从 gdb 访问时。

我相信这只是一个错误。使用此 bugreport(包含补丁)。