Commit 8d4379b
committed
construct memory in memory mapped by other page table
This has the advantage that we don't need to map the memory map into
the bootloader's page tables. Up until now, we've assumed that UEFI
only maps memory into regions covered by the first PML4 entry, but it
turns out that some implementations map the frame buffer into memory
mapped by other PML4 entries (this is totally legal, the frame buffer
need not be identity mapped). Previously we removed all but the first
PML4 entry, so that we can map our own memory there, but it's now clear
that this can lead to problems. The solution to this is to not modify
the page tables constructed by UEFI and keep all its PML4 entries, but
this is problematic because the code constructing the boot info and
memory map assumes that it can map them into the same addresses used
for the kernel's address space, but UEFI may have already mapped some
memory in there. Instead of mapping the boot info and memory map into
the bootloader's address space, we now only map them into the kernel's
address space. When we want to write to them, we first look up the
physical addresses in the kernel's page table and write to the identity
mapping. RemoteMemoryRegion implements this.
We have some unit tests for constructing the memory map and we want
those unit tests to be able to run outside the bootloader, so we can't
use RemoteMemoryRegion. To solve this, we introduce a trait
MemoryRegionSlice that only requires implementing a method for writing
a memory region and implement that slice for MemoryRegionSlice as well
as MemoryRegionSlice.1 parent ea3f61a commit 8d4379b
2 files changed
+166
-80
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
| 2 | + | |
7 | 3 | | |
8 | 4 | | |
9 | | - | |
10 | | - | |
| 5 | + | |
| 6 | + | |
11 | 7 | | |
12 | 8 | | |
13 | 9 | | |
| |||
159 | 155 | | |
160 | 156 | | |
161 | 157 | | |
162 | | - | |
| 158 | + | |
163 | 159 | | |
164 | | - | |
| 160 | + | |
165 | 161 | | |
166 | 162 | | |
167 | 163 | | |
168 | 164 | | |
169 | | - | |
| 165 | + | |
170 | 166 | | |
171 | 167 | | |
172 | 168 | | |
| |||
211 | 207 | | |
212 | 208 | | |
213 | 209 | | |
214 | | - | |
215 | | - | |
216 | | - | |
217 | | - | |
218 | | - | |
219 | | - | |
| 210 | + | |
220 | 211 | | |
221 | 212 | | |
222 | 213 | | |
223 | 214 | | |
224 | | - | |
| 215 | + | |
225 | 216 | | |
226 | 217 | | |
227 | 218 | | |
| |||
279 | 270 | | |
280 | 271 | | |
281 | 272 | | |
282 | | - | |
| 273 | + | |
283 | 274 | | |
284 | 275 | | |
285 | 276 | | |
286 | 277 | | |
287 | 278 | | |
288 | 279 | | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | | - | |
| 280 | + | |
296 | 281 | | |
297 | 282 | | |
298 | 283 | | |
299 | 284 | | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
300 | 364 | | |
301 | 365 | | |
302 | 366 | | |
| |||
384 | 448 | | |
385 | 449 | | |
386 | 450 | | |
387 | | - | |
388 | | - | |
| 451 | + | |
| 452 | + | |
389 | 453 | | |
390 | 454 | | |
391 | 455 | | |
392 | 456 | | |
393 | 457 | | |
394 | 458 | | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
395 | 466 | | |
396 | 467 | | |
397 | 468 | | |
| |||
411 | 482 | | |
412 | 483 | | |
413 | 484 | | |
414 | | - | |
415 | | - | |
| 485 | + | |
| 486 | + | |
416 | 487 | | |
417 | 488 | | |
418 | 489 | | |
419 | 490 | | |
420 | 491 | | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
421 | 500 | | |
422 | 501 | | |
423 | 502 | | |
| |||
514 | 593 | | |
515 | 594 | | |
516 | 595 | | |
517 | | - | |
518 | | - | |
| 596 | + | |
| 597 | + | |
519 | 598 | | |
520 | 599 | | |
521 | 600 | | |
522 | 601 | | |
523 | 602 | | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
524 | 611 | | |
525 | 612 | | |
526 | 613 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
481 | 482 | | |
482 | 483 | | |
483 | 484 | | |
484 | | - | |
485 | | - | |
486 | | - | |
487 | | - | |
488 | | - | |
489 | | - | |
490 | | - | |
491 | | - | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
497 | | - | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
498 | 497 | | |
499 | | - | |
500 | | - | |
| 498 | + | |
| 499 | + | |
501 | 500 | | |
502 | | - | |
503 | | - | |
504 | | - | |
505 | | - | |
506 | | - | |
507 | | - | |
508 | | - | |
509 | | - | |
510 | | - | |
511 | | - | |
512 | | - | |
513 | | - | |
514 | | - | |
515 | | - | |
516 | | - | |
517 | | - | |
518 | | - | |
519 | | - | |
520 | | - | |
521 | | - | |
522 | | - | |
523 | | - | |
524 | | - | |
525 | | - | |
526 | | - | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
527 | 515 | | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
528 | 526 | | |
529 | | - | |
530 | | - | |
531 | | - | |
532 | | - | |
533 | | - | |
534 | | - | |
| 527 | + | |
| 528 | + | |
535 | 529 | | |
536 | 530 | | |
537 | 531 | | |
538 | 532 | | |
539 | | - | |
540 | | - | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
541 | 537 | | |
542 | 538 | | |
543 | 539 | | |
544 | 540 | | |
545 | 541 | | |
546 | 542 | | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
547 | 546 | | |
548 | 547 | | |
549 | 548 | | |
| |||
0 commit comments