Skip to content

whp: add Hyper-V enlightenment support and invariant TSC#691

Open
lstocchi wants to merge 1 commit into
containers:mainfrom
lstocchi:hyperv_enhancements
Open

whp: add Hyper-V enlightenment support and invariant TSC#691
lstocchi wants to merge 1 commit into
containers:mainfrom
lstocchi:hyperv_enhancements

Conversation

@lstocchi
Copy link
Copy Markdown
Contributor

Configure the WHP partition to expose Hyper-V enlightenments to the guest, enabling it to use synthetic MSRs for timekeeping and hypercalls instead of expensive VM exits on native hardware interfaces.

  • Advertise Hyper-V CPUID leaves 0x40000000–0x40000006 (signature, interface ID, version, feature identification, recommendations, implementation limits, and hardware features).
  • Enable synthetic processor features: HypervisorPresent, Hv1, reference TSC, reference counter, frequency registers, hypercalls, and VP index/runtime access.
  • Set the MSR exit bitmap so unhandled MSR accesses trigger a VM exit rather than injecting #GP into the guest.
  • Retrieve and re-apply processor features banks with the invariant TSC bit set, and expose it via CPUID 0x80000007.
  • Register CPUID leaf 1 in the exit list so the hypervisor-present bit (ECX.31) can be injected, which is required for the guest to query the 0x40000000+ range.

Configure the WHP partition to expose Hyper-V enlightenments to the
guest, enabling it to use synthetic MSRs for timekeeping and
hypercalls instead of expensive VM exits on native hardware interfaces.

- Advertise Hyper-V CPUID leaves 0x40000000–0x40000006 (signature,
  interface ID, version, feature identification, recommendations,
  implementation limits, and hardware features).
- Enable synthetic processor features: HypervisorPresent, Hv1,
  reference TSC, reference counter, frequency registers, hypercalls,
  and VP index/runtime access.
- Set the MSR exit bitmap so unhandled MSR accesses trigger a VM exit
  rather than injecting #GP into the guest.
- Retrieve and re-apply processor features banks with the invariant
  TSC bit set, and expose it via CPUID 0x80000007.
- Register CPUID leaf 1 in the exit list so the hypervisor-present
  bit (ECX.31) can be injected, which is required for the guest to
  query the 0x40000000+ range.

Assisted-by: Cursor:claude-opus-4.6
Signed-off-by: lstocchi <lstocchi@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant