We're trying to model a graphics device hooked up to VNC that has its own
framebuffer memory mapped through a PCI BAR, unlike the ARM graphics device
which uses DMA. We're also trying to use the KVM CPU model to fast forward
to a point of interest. Unfortunately, if we have the VM exit every time
the kernel tries to write a byte to the framebuffer, performance is pretty
much destroyed.

To get things working with acceptable performance, one of our engineers
(Slava) has a hack which injects a new address range with memory semantics
into the VM which is mapped by the BAR in the simulation and maps to the
framebuffer in the device. Then we schedule a ~50Hz event which marks the
VNC buffer as dirty so that changes will make it to the VNC client within a
reasonable amount of time.

To make the hack not a hack, I'd like to add a parameter to the graphics
device which points to the KvmVM object. Then on that object, I'd like to
add an class which represents memory region slots. The first few slots
would go towards the PhysMem like they do now, and subsequent slots can be
allocated by the VM and given to callers. They could then use that slot
index to get and set the memory parameters for whatever purpose.

Any objections?

Gabe
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to