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
