You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Unify surrogate/no-surrogate mapping behind a single abstraction #1581
PR #1578 adds a no-surrogate mode (HYPERLIGHT_MAX_SURROGATES=0) that uses WHvMapGpaRange instead of WHvMapGpaRange2. Currently whp.rs branches on Option<SurrogateProcess> to choose the mapping path.
Proposal
Unify the surrogate and no-surrogate paths so whp.rs doesn't need to know or care which mode is active. Two possible approaches:
Enum / trait abstraction: Make SurrogateProcess an enum (or dyn Trait) with two variants — one backed by a real surrogate process (WHvMapGpaRange2) and one that maps from the host process directly (WHvMapGpaRange). The NoSurrogateGuard could be folded into the no-surrogate variant.
Always use WHvMapGpaRange2: Use the current process handle as the source when surrogates are disabled, eliminating the branch entirely. This needs validation — it's unclear whether WHvMapGpaRange2 with GetCurrentProcess() is a supported pattern.
Either way, the mapping call would move into the surrogate module so whp.rs just calls a single map(...) method.
Activity