Skip to content

standalone: support guest hv interface options - #1194

Open
iximeow wants to merge 3 commits into
masterfrom
ixi/hv-config
Open

standalone: support guest hv interface options#1194
iximeow wants to merge 3 commits into
masterfrom
ixi/hv-config

Conversation

@iximeow

@iximeow iximeow commented Aug 11, 2026

Copy link
Copy Markdown
Member

approximately twenty billion years ago (February last year) #849 saw us grow support for presenting Hyper-V as the guest hypervisor interface. this came with plumbing it into propolis-cli with the new --hyperv flag. we since overlooked adding that plumbing into propolis-standalone, where i found myself wanting it this week!

i'd fully forgotten that as-merged in 725eb8e,

Once the stack has some actual features, this may be better expressed as a table in the propolis-config-toml crate,

well ... this does that. i'm also just deleting the --hyperv flag here since i'm assuming no one other than me was using that anyway.

both propolis-standalone and propolis-cli now understand stanzas like

[main.hv_interface]
type = "hyperv"
reference_tsc = true

or

[main.hv_interface]
type = "bhyve"

the latter being somewhat less interesting today since it's just a way to write out the defaults in more words.

@iximeow iximeow added the development Relating to engineering experience and development of propolis, not guest or product interfaces label Aug 11, 2026
}

const TYPE_NAME: &str = "guest-hyperv-interface";
const TYPE_NAME: &str = "hyperv-guest-interface";

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is incidental but the bhyve impl spells its type name as bhyve-guest-interface and the swapped order was bugging me.

Comment on lines +55 to +70
/// The hypervisor interface to present to guest OSes.
///
/// The variants here correspond to implementations of `Enlightenment`, which
/// may influence many aspects of a VM. Most immediately, different interfaces
/// have different CPUID leaves, but can also support para-virtualized features
/// such as additional hypercalls and MSRs.
#[derive(Clone, Default, Serialize, Deserialize, Debug, PartialEq)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum HypervisorInterface {
#[default]
Bhyve,

HyperV {
reference_tsc: bool,
},
}

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you are not seeing double! propolis-standalone/src/config.rs has a copy of this structure and comment.

I've only just realized that propolis-standalone does not use propolis-config-toml, and really they kind of just accept the same toml documents (for the most part) by intentional effort rather than shared code. I'm thinking about taking a shot at unifying those, but I want to do that a bit more intentionally (I dunno what all is in the propolis-config-toml dep tree and if it would make me sad rebuilding propolis-standalone). so, a copy for now.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've only just realized that propolis-standalone does not use propolis-config-toml, and really they kind of just accept the same toml documents (for the most part) by intentional effort rather than shared code

😬

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

development Relating to engineering experience and development of propolis, not guest or product interfaces

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants