|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] PVH cleanups after 4.5
Hi all,
At the Hackathon in Rackspace we discussed a plan to tidy up the
hypervisor side of PVH code so that 'PVH' stops being a separate guest
type, becoming instead a HVM guest with various features disabled (and
one or two other tweaks).
Although I had hoped to work on that in the meantime, various other
things have got in the way. But I'd like to at least document the
plan in the hope of getting back on track in the 4.6 development
cycle.
The plan goes something like this:
1. Merge the PVH and HVM hypercall tables. Patches were already
posted for this but will need rebasing, and probably more scrutiny.
2. Make PVH-ness a flag on a HVM guest, retaining all the current
has_hvm_container/is_pvh_domain tests as-is but dropping the
three-way guest type.
3. Add feature flags to HVM guests that disable various features.
These flags should be set once, at domain creation/build, and
for sanity of testing we should only allow two combinations
of settings, corresponding to the current HVM and PVH types.
Make sure that all PVH guests have the PVH feature set.
4. Replace tests for pvh-ness with feature-flag tests wherever
possible.
5. Fix any outstanding is_pvh tests -- expect this mostly to be
feature compatibility with other HVM features (e.g. paging).
Hopefully we can remove those constraints, or make them constraints
on a feature set (e.g. can't have PCI passthrough w/out an
emulated PCI controller). This also needs an audit of is_hvm tests,
which are implicitly !is_pvh at the moment.
6. Remove 'PVH' from the hypercall interface, and remove the PVH flag
from the HVM domain struct. At this point Xen no longer treats PVH
and HVM as different (though the tools and the guests themselves
can maintain the distinction).
Potential feature flags, based on whiteboard notes at the session.
Things that are 'Yes' in both columns might not need actual flags :)
'HVM' 'PVH'
64bit hypercalls Yes Yes
32bit hypercalls Yes No
Paging assistance Yes Yes
ioreq-servers Yes No
HVM-style CPUID Yes Yes
Interrupt controllers Yes No ([x2]apic, ioapic, pic &c)
Timers Yes No (rtc, hpet, pit, pmtimer)
Machine Check regs Yes Yes
Emulated PCI Yes No (PVH to use pcifront?)
This plan doesn't explicitly add things that we might like to happen
for PVH in 4.6 (e.g. PCI passthrough, compat hypercalls) but it ought
to make some of them easier, and we might get some (e.g. shadow
pagetables) for free as the differences between PVH and HVM go away.
I would like to work on this stuff, but I can't really guarantee to
get anything done for 4.6 in the time I have available. Any
volunteers to help out would be welcomed! Likewise, any feedback on
the overall plan is welcome before any more work gets done. :)
Cheers,
Tim.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |