Pavel Fedin <p.fe...@samsung.com> wrote: > Hello! > >> Applied, thanks. > > Thank you. > >> I wonder who it has never been needed before. BTW, what is ITS? > > ITS is Interrupt Translation Service. It is used by ARM64 > architecture. In a short, it is a special hardware which performs > table-based lookup of MSI IDs and their destination CPUs, and routes > them. There can be lots of CPUs and lots of interrupts, so > these tables are large and are held in a system RAM. > qemu implementation of this thing needs to be able to flush its > internal cached state into memory for live migration. This has to > be done during final stage, right after CPUs have been stopped, > because right after this point migration code will recheck RAM > status and send out modified data for the last time. > The implementation itself has to wait, because the necessary KVM API > is also not ready yet, but i prefer to upstream as much of the > infrastructure as possible, because: a) we want to reduce amount of > out-of-tree patches for our project; b) these things affect qemu > core code, and upstreaming them makes sure that we do it right, and > our out-of-tree code will not diverge from the upstream too > much.
Power people have a similar problem with its hashed page tables, they integrated their own save_live implementation because they are too big for the last stage. You can look there for inspiration. How big are we talking here? Thanks, Juan. > > Kind regards, > Pavel Fedin > Expert Engineer > Samsung Electronics Research center Russia