On Sat, Dec 05, 2015 at 12:32:00AM +0800, Lan, Tianyu wrote:
Hi Michael & Alexander:
Thanks a lot for your comments and suggestions.
It's nice that it's appreciated, but you then go on and ignore
all that I have written here:
https://www.mail-archive.com/kvm@xxxxxxxxxxxxxxx/msg123826.html
We still need to support Windows guest for migration and this is why our
patches keep all changes in the driver since it's impossible to change
Windows kernel.
This is not a reasonable argument. It makes no sense to duplicate code
on Linux because you must duplicate code on Windows. Let's assume you
must do it in the driver on windows because windows has closed source
drivers. What does it matter? Linux can still do it as part of DMA API
and have it apply to all drivers.
Following is my idea to do DMA tracking.
Inject event to VF driver after memory iterate stage
and before stop VCPU and then VF driver marks dirty all
using DMA memory. The new allocated pages also need to
be marked dirty before stopping VCPU. All dirty memory
in this time slot will be migrated until stop-and-copy
stage. We also need to make sure to disable VF via clearing the
bus master enable bit for VF before migrating these memory.
The dma page allocated by VF driver also needs to reserve space
to do dummy write.
I suggested ways to do it all in the hypervisor without driver hacks, or
hide it within DMA API without need to reserve extra space. Both
approaches seem much cleaner.