The ARM64 MMU code maintains a list of used ranges, to avoid mapping the DMA buffer over the coreboot tables and things like that. Unfortunately, the overlap with ranges in that list is checked with (start1 >= start2 && start1 <= end2) || (end1 >= start2 && end1 <= end2) which is not a full overlap check and misses the case where the second region is completely contained within the first. This patch replaces that code with a properly vetted primitive from Stack Overflow. BRANCH=none BUG=chrome-os-partner:54416 TEST=Observe how Kevin recovery screen now gets drawn at 10x the speed. Change-Id: I7e2706426762794e160d743bbfc40da1e26eee12 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/16075 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org> |
||
|---|---|---|
| .. | ||
| lib | ||
| cache.c | ||
| coreboot.c | ||
| cpu.S | ||
| dummy_media.c | ||
| exception.c | ||
| exception_asm.S | ||
| gdb.c | ||
| head.S | ||
| Kconfig | ||
| libpayload.ldscript | ||
| main.c | ||
| Makefile.inc | ||
| memcpy.S | ||
| memmove.S | ||
| memset.S | ||
| mmu.c | ||
| selfboot.c | ||
| sysinfo.c | ||
| timer.c | ||
| util.S | ||
| virtual.c | ||