2011/8/26 Jan Kiszka <jan.kis...@siemens.com>: > On 2011-08-26 16:21, Zeus Gómez Marmolejo wrote: >> Hi all, >> >> I just want to do a very simple task. I'm using QEMU for debugging a new OS >> and I see that there is a memory region that is being updated by an unknown >> task. I don't know if it's another process or the kernel itself. >> >> So I would like to put a physical memory watchpoint. I don't know how to do >> that. As the GDB stub is operating using virtual addressing, I cannot place >> a watchpoint on an address as it's not stopping. >> >> To make it short, I want the equivalent of the Bochs command "watch write >> addr", which inserts a write watch point at physical address 'addr'. I >> haven't seen this is possible on the QEMU monitor... > > Indeed, it isn't. It's impossible with KVM (due to lacking hardware > support) but would be feasible with TCG if you extend (or ad-hoc hack) > QEMU code accordingly.
Why impossible? The existing watchpoints replace original physical memory with io_mem_watch MMIO, virtual addresses are translated to physical in exec.c:tlb_set_page(). The only missing piece is to allow setting watchpoints with physical addresses directly. Since KVM can handle MMIO, I think it should also be able to handle watchpoints. > The alternative is to trace the guest OS's page mapping and set watches > on all virtual addresses that refer to the physical one in question. But > I guess that is already part of what you want to debug... > > Jan > > -- > Siemens AG, Corporate Technology, CT T DE IT 1 > Corporate Competence Center Embedded Linux > >