Zachary Amsden wrote: > Doing nothing is a BUG, even before this change. If you can't patch > in a properly virtualizable substitute for a non-virtualizable > sequence, the kernel will not work. The only way for the patching to > fail is for lack of space or failure to meet clobber constraints, both > of which would be fatal even without the patching. Could you give a specific example? Because the intent is that if you do nothing (ie, don't apply patching at all), then you'll just end up with indirect calls which will be a bit expensive but completely functional. The idea is that every time there's a paravirt call, it must be surrounded with push/pops to make the C call compatible with the callsite's register usage. Or are you talking about something else? > 2) You must support dynamic re-linking - the kernel has to boot and > use builtin native style operations before switching over to the > virtualized operations. So you have to have some kind of jettisonable > early binding support. I don't think there's any particular reason we can't do this very early, at the same time we currently populate paravirt_ops. I think the idea is that if you do nothing, the calls will all point to the native versions, so if you do the late-paravirtualization (do you still do that?) then you'll get native ops initially. J _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization