Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

microVM: refuse device buffers outside the e820 RAM ranges

Đang mở
#554 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
18/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
linux
Lĩnh vực
infrastructure

Hướng nghiên cứu

Start with the "Memory layout" section of doc/design/cold-boot.md and section 2.3 of the architecture guide in #529 to learn the e820 RAM, MMIO aperture and reserved-range rules. The device work is in OpenVMM under the nanvix/openvmm submodule, in the virtio queue descriptor path or the guest-memory view given to microVM devices. Done means descriptors whose buffers cross the aperture or a reserved range, such as the page at 0x30000 or the ISA hole, are refused with a defined error completion or device reset, and OpenVMM tests cover those three cases.

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

Mô tả

Summary

The microVM memory layout requires that loader writes and DMA ranges fit wholly inside a RAM range and never cross the MMIO aperture or a reserved boot structure (section 2.3 of the architecture guide in doc/design/). The Linux direct loader meets this for its own writes. Device DMA does not: OpenVMM gives each microVM virtio device the whole guest memory, so a descriptor fails only when its buffer leaves guest RAM, for example in the MMIO aperture. A guest can point a device buffer at a range that the e820 map reserves inside RAM, such as the shared virtio interrupt-status page at 0x30000, which the devices themselves update, or the ISA hole.

The guest can already write those pages directly, so this does not weaken isolation between the guest and the host. The devices only enforce less than the layout states.

Intended behavior

Every buffer of a microVM virtio device lies wholly inside a RAM range of the e820 map. The device refuses a descriptor whose buffer crosses the MMIO aperture or a reserved range, such as the shared interrupt-status page, instead of reading or writing it.

Tasks

  • Give the microVM virtio devices a guest-memory view, or a descriptor check in the virtio queue, that admits only the e820 RAM ranges, in OpenVMM in the nanvix/openvmm submodule, and promote the pin.
  • Define how a device reports a refused buffer: an error completion where its protocol has one, or marking the device as needing reset.
  • Add OpenVMM coverage for buffers in the interrupt-status page, in the ISA hole, and across the aperture.
  • Note the enforcement in section 2.3 of the architecture guide.
Ngôn ngữ chính
Rust
Star
758
Fork
48
Merge trung bình
18 giờ 37 phút
Pull request đã merge (30 ngày)
398

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của microsoft/nvx

Tất cả issue của microsoft/nvx

Issue tương tự

Thêm issue về Rust

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.