Bootloader marks frames used for bootloader page tables as reserved
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- rust
- Ambito
- operating-systems
Direzione di ricerca
Inizia con l’allocazione dei frame in uefi/src/main.rs intorno alle righe 317-319 e il mapping di boot-info in common/src/lib.rs intorno alla riga 431. Leggi LegacyFrameAllocator e l’implementazione di FrameAllocator per capire come i frame allocati entrano nella mappa della memoria. Il lavoro è completato quando i frame usati solo per le tabelle delle pagine del bootloader vengono segnalati come Usable, in modo che il kernel possa sovrascriverli.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When allocating frames to copy the bootloader page table, we allocate them using the default frame allocator meaning the kernel will see those regions as reserved. It also happens when mapping the boot info.
This is wrong, as the kernel should be free to overwrite the bootloader's page tables.
Solution
I think a newtype like so:
pub struct BootloaderLegacyFrameAllocator<'a>(pub &'a mut LegacyFrameAllocator);
with a custom FrameAllocator implementation would be the way to go. e.g. when mapping the boot info in the bootloader's page tables, we would do something like this:
page_tables.bootloader.map_to(
page,
frame,
flags,
&mut BootloaderLegacyFrameAllocator(&mut frame_allocator),
);
Even then, it's not a pretty solution, as we'd need to rework LegacyFrameAllocator to support allocating frames that will be marked as Usable in the memory map.
- Lingua principale
- Rust
- Stelle
- 1.7k
- Fork
- 240
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di rust-osdev/bootloader
-
help wanted
Difficoltà 3/5 1-2 giorni Idoneità per principianti 67/100
rust-osdev/bootloader#581 · 2 commenti ·
-
No boot on real hardwareAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
rust-osdev/bootloader#573 · 5 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
rust-osdev/bootloader#555 · 2 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
rust-osdev/bootloader#534 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
rust-osdev/bootloader#525 ·
Tutte le issue di rust-osdev/bootloader
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
Docs: "Work with Codex from anywhere" page still claims Windows mobile support is "coming soon"Apertaapp documentation remote windows-os
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
oxidecomputer/dendrite#380 ·
I maintainer di solito rispondono entro 5 giorni
-
area:cli bug good first issue priority:high
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
rtk-ai/rtk#4249 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno