Skip to content
  • Timur Tabi's avatar
    mpc86xx: set the DDR BATs after calculating true DDR size · 9ff32d8c
    Timur Tabi authored
    
    
    After determining how much DDR is actually in the system, set DBAT0 and
    IBAT0 accordingly.  This ensures that the CPU won't attempt to access
    (via speculation) addresses outside of actual memory.
    
    On 86xx systems, DBAT0 and IBAT0 (the BATs for DDR) are initialized to 2GB
    and kept that way.  If the system has less than 2GB of memory (typical for
    an MPC8610 HPCD), the CPU may attempt to access this memory during
    speculation.  The zlib code is notorious for generating such memory reads,
    and indeed on the MPC8610, uncompressing the Linux kernel causes a machine
    check (without this patch).
    
    Currently we are limited to power of two sized DDR since we only use a
    single bat.  If a non-power of two size is used that is less than
    CONFIG_MAX_MEM_MAPPED u-boot will crash.
    
    Signed-off-by: default avatarTimur Tabi <timur@freescale.com>
    Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
    9ff32d8c