Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Mar 2011 10:43:11 +0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-mips@freebsd.org
Subject:   What to do when redboot lies about RAM?
Message-ID:  <AANLkTik4yE1RDg7TTNxgph4m2EimRcpLY=EG=ZTc%2BVbc@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
One of the Ubiquiti boards (LS-SR71) has redboot firmware that seems to lie
about the amount of RAM it has.

Although the board has 32 megabytes of RAM, Redboot only reports 16mb. Linux
doesn't query redboot; it probes the amount of RAM by writing bits and
reading them back until it finds where that fails.

I've whacked together a quick hack to make this memory selection overridable
in the kernel configuration.
What would be the cleaner way? :)

Thanks,


Adrian

Index: conf/options
===================================================================
--- conf/options        (revision 219395)
+++ conf/options        (working copy)
@@ -30,6 +30,9 @@
 # If filename is missing, the default is
 # opt_<name-of-option-in-lower-case>.h

+# A temporary workaround for where redboot lies
+MIPS_REALMEM   opt_global.h
+
 AAC_DEBUG              opt_aac.h
 AHC_ALLOW_MEMIO                opt_aic7xxx.h
 AHC_TMODE_ENABLE       opt_aic7xxx.h
Index: mips/atheros/ar71xx_machdep.c
===================================================================
--- mips/atheros/ar71xx_machdep.c       (revision 219395)
+++ mips/atheros/ar71xx_machdep.c       (working copy)
@@ -180,6 +180,11 @@
        if (realmem == 0)
                realmem = btoc(32*1024*1024);

+       /* Allow build-time override in case Redboot lies */
+#if    defined(MIPS_REALMEM)
+               realmem = btoc(MIPS_REALMEM);
+#endif
+
        /* phys_avail regions are in bytes */
        phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end);
        phys_avail[1] = ctob(realmem);
[adrian@pcbsd-3114 /data/freebsd/mips/head/src/sys]$



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTik4yE1RDg7TTNxgph4m2EimRcpLY=EG=ZTc%2BVbc>