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.
|  |