microVM: refuse device buffers outside the e820 RAM ranges
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 18/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- linux
- Área
- infrastructure
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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/openvmmsubmodule, 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.
- Lenguaje dominante
- Python
- Estrellas
- 380
- Forks
- 24
- Merge medio
- 13 h 18 min
- PR fusionados (30 d)
- 292
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/nvx
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
Los mantenedores suelen responder en 1 día
-
Track sandbox live share bugs: the time ABI bind hides or breaks shares at /run targetsPosiblemente ocupada @jay23606 la tomó hace 1 día. Abiertobug-hunt confirmed
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 Medio día Aptitud para principiantes 45/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 22/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
Los mantenedores suelen responder en 1 día
Todos los issues de microsoft/nvx
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
lidofinance/diffyscan#239 ·
Los mantenedores suelen responder en 1 día
-
docs: the dev-setup table and AGENTS.md name the reviewed_by guard that CI's Changelog job runsAbiertoarea: tools documentation good first issue ready for a contributor
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
eyalgolan/statecraft-israel#873 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
GET rooms API returns 500 due to nonexistent Room.is_active attributePosiblemente ocupada @Mars-60 la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
Add cover art to song rowsAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 5 días
-
Harmony OPeNDAP SubSetter (HOSS) Geographic production rssmif16d 7 XYZ_PROV
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
nasa/harmony-autotester#341 ·