]> xenbits.xensource.com Git - freebsd.git/commitdiff
ARM kernel can get RAM regions three ways:
authorray <ray@FreeBSD.org>
Sat, 31 Aug 2019 21:28:06 +0000 (21:28 +0000)
committerray <ray@FreeBSD.org>
Sat, 31 Aug 2019 21:28:06 +0000 (21:28 +0000)
o from FDT;
o from EFI;
o from Linux Boot API (ATAG).
U-Boot may pass RAM info all that 3 ways simultaneously.
We do select between FDT and EFI, but not for ATAG.
So this is not problem fix, but correctness check.

MFC after: 2 weeks

sys/arm/arm/physmem.c

index b8ba1a0b82a0cd873eba564081aac256d7838031..1000a3d17f9d477a030bfe9fd99008bc06acc1d8 100644 (file)
@@ -264,6 +264,8 @@ insert_region(struct region *regions, size_t rcnt, vm_paddr_t addr,
 
        ep = regions + rcnt;
        for (i = 0, rp = regions; i < rcnt; ++i, ++rp) {
+               if (rp->addr == addr && rp->size == size) /* Pure dup. */
+                       return (rcnt);
                if (flags == rp->flags) {
                        if (addr + size == rp->addr) {
                                rp->addr = addr;