Re: [PATCH 0/5] KVM paravirt_ops implementation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jeremy,

Jeremy Fitzhardinge wrote:
Anthony Liguori wrote:
1) Not really sure what is needed for CONFIG_PREEMPT support.  I'm not
sure which paravirt_ops calls are actually re-entrant.

I'm not sure that has specifically come up.  The main issue is whether a
particular call can be preempted and whether that matters.  I guess the
calls which affect a particular CPU's state will generally be called in
a non-preemptable context, but I guess we can't assume that; the best
approach is to assume that each call be atomic with respect to preemption.

So each call would need to disable preemption? I'm not sure that makes a whole lot of sense for something like CR reads/writes. In fact, without passing in a cpu parameter, I'm pretty sure that those operations *have* to require preemption to be disabled.

For something like MMU operations, preemption really doesn't have to be disabled.

Things like batching must be completed with preemption disabled over the
whole batch.  I check that with BUG_ON in the Xen code.

Right now the KVM batching requires preemption to be disabled for batching. I don't think that's a hard requirement though since we could pass the current batch PA as part of the flush hypercalls.

Things are a lot easier though if we can just assume preemption is disabled :-)

Are you aware of any paravirt_ops calls that are probably being called in the kernel with preemption enabled?

2) The paravirt_ops implementation is registered with
core_initcall().  However, the paravirt_ops banner is also printed
with core_initcall() so that fact that this works now is just the luck
of build order.  Need a better way to initialize the KVM paravirt_ops
backend.

Hm.  We could make the banner printing later; obviously its purely
cosmetic.  I put it as a core_initcall on the assumption that pv-ops
would be set up very early as it is with Xen and lguest, and so the
banner should print relatively early.  But if your model is that you
boot fully virtualized for a while, and then become paravirtualized
later, then it would make sense to defer banner printing until then.

I don't see a compelling reason to paravirtualize earlier although I also don't see a compelling reason not too. I noticed that VMI hooks setup.c. It wasn't immediately obvious why it was hooking there but perhaps it worthwhile to have a common hook? I suspect VMI and KVM will have a similar model for startup.

Thanks for the feedback!

Regards,

Anthony Liguori

    J


_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/virtualization

[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux