Messages in this thread |  | | Date | Sat, 05 Apr 2008 15:39:05 +0300 | From | Avi Kivity <> | Subject | Re: mmiotrace bug: recursive probe hit |
| |
Pekka Enberg wrote: > On Sat, Apr 5, 2008 at 10:36 AM, Avi Kivity <avi@qumranet.com> wrote: > >> It should not be too difficult to modify x86_emulate.c to do everything >> through a function vector. However there is a simpler (for you) solution: >> run the driver-to-be-reverse-engineered in a kvm guest, and modify kvm >> userspace to log accesses to mmio regions. This requires the not-yet-merged >> pci passthrough support. You can reverse engineer Windows drivers with this >> as well. >> >> This won't work for kmemcheck smp though. >> > > For kmemcheck, I'd prefer the per-CPU page tables suggested by Ingo. > I'm having hard time understanding why that's a "ugly hack" compared > to using kvm for this... >
It's not an ugly hack, but will be very very difficult. With mmu notifiers it's probably doable though:
- the linux page tables are never loaded into cr3, but rather kept as a reference - page faults are by instantiating ptes into shadow page tables (which track the linux page tables) - mmu notifiers are used to drop shadow ptes when the linux ptes change
-- Any sufficiently difficult bug is indistinguishable from a feature.
|  |