nanovms / nanos

A kernel designed to run one and only one application in a virtualized environment
https://nanos.org
Apache License 2.0
2.58k stars 133 forks source link

Aarch64 physical ID heap: fix setting of memory end address #2038

Closed francescolavra closed 2 months ago

francescolavra commented 2 months ago

In instances where the physical memory start address is fixed to a hard-coded value (such as when instantiating a Qemu "virt" machine type), the memory end address should be calculated from the hard-coded start value instead of from the start of usable memory.

This change fixes a "frame 0x00ff800042200800 already full" fatal error caused by a "data abort in el1 write" exception that is triggered when the kernel allocates memory at an address range past the end of physical memory (e.g. when the user process tries to use more memory than available).