hyperlight-dev / hyperlight-dev/hyperlight

Unify surrogate/no-surrogate mapping behind a single abstraction

Đang mở
#1,581 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
kind/enhancement kind/refactor lifecycle/confirmed
Ngôn ngữ chính
Rust
Star
4.7k
Fork
208
Merge trung bình
1 ngày 7 giờ
Pull request đã merge (30 ngày)
47

Mô tả

## Context

PR #1578 adds a no-surrogate mode (`HYPERLIGHT_MAX_SURROGATES=0`) that uses `WHvMapGpaRange` instead of `WHvMapGpaRange2`. Currently `whp.rs` branches on `Option` 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:

1. **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.

2. **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.

## Origin

Suggestion from @syntactically in [PR #1578 review](https://github.com/hyperlight-dev/hyperlight/pull/1578).

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Start by reading the current surrogate handling in whp.rs and the surrogate module, then inspect PR #1578 and its review discussion. Define a single mapping abstraction covering both SurrogateProcess and no-surrogate mode, validate whether WHvMapGpaRange2 supports GetCurrentProcess(), and ensure whp.rs calls one map(...) method without mode-specific branching.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
rust
Lĩnh vực
operating-systems
Loại issue
Tái cấu trúc
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.