Skip to content
  • Jason Cooper's avatar
    ARM: mvebu: DT: fix OpenBlocks AX3-4 RAM size · e47043ae
    Jason Cooper authored
    
    
    The OpenBlocks AX3-4 has a non-DT bootloader.  It also comes with 1GB of
    soldered on RAM, and a DIMM slot for expansion.
    
    Unfortunately, atags_to_fdt() doesn't work in big-endian mode, so we see
    the following failure when attempting to boot a big-endian kernel:
    
      686 slab pages
      17 pages shared
      0 pages swap cached
      [ pid ]   uid  tgid total_vm      rss nr_ptes swapents oom_score_adj name
      Kernel panic - not syncing: Out of memory and no killable processes...
    
      CPU: 1 PID: 351 Comm: kworker/u4:0 Not tainted 3.15.0-rc8-next-20140603 #1
      [<c0215a54>] (unwind_backtrace) from [<c021160c>] (show_stack+0x10/0x14)
      [<c021160c>] (show_stack) from [<c0802500>] (dump_stack+0x78/0x94)
      [<c0802500>] (dump_stack) from [<c0800068>] (panic+0x90/0x21c)
      [<c0800068>] (panic) from [<c02b5704>] (out_of_memory+0x320/0x340)
      [<c02b5704>] (out_of_memory) from [<c02b93a0>] (__alloc_pages_nodemask+0x874/0x930)
      [<c02b93a0>] (__alloc_pages_nodemask) from [<c02d446c>] (handle_mm_fault+0x744/0x96c)
      [<c02d446c>] (handle_mm_fault) from [<c02cf250>] (__get_user_pages+0xd0/0x4c0)
      [<c02cf250>] (__get_user_pages) from [<c02f3598>] (get_arg_page+0x54/0xbc)
      [<c02f3598>] (get_arg_page) from [<c02f3878>] (copy_strings+0x278/0x29c)
      [<c02f3878>] (copy_strings) from [<c02f38bc>] (copy_strings_kernel+0x20/0x28)
      [<c02f38bc>] (copy_strings_kernel) from [<c02f4f1c>] (do_execve+0x3a8/0x4c8)
      [<c02f4f1c>] (do_execve) from [<c025ac10>] (____call_usermodehelper+0x15c/0x194)
      [<c025ac10>] (____call_usermodehelper) from [<c020e9b8>] (ret_from_fork+0x14/0x3c)
      CPU0: stopping
      CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.15.0-rc8-next-20140603 #1
      [<c0215a54>] (unwind_backtrace) from [<c021160c>] (show_stack+0x10/0x14)
      [<c021160c>] (show_stack) from [<c0802500>] (dump_stack+0x78/0x94)
      [<c0802500>] (dump_stack) from [<c021429c>] (handle_IPI+0x138/0x174)
      [<c021429c>] (handle_IPI) from [<c02087f0>] (armada_370_xp_handle_irq+0xb0/0xcc)
      [<c02087f0>] (armada_370_xp_handle_irq) from [<c0212100>] (__irq_svc+0x40/0x50)
      Exception stack(0xc0b6bf68 to 0xc0b6bfb0)
      bf60:                   e9fad598 00000000 00f509a3 00000000 c0b6a000 c0b724c4
      bf80: c0b72458 c0b6a000 00000000 00000000 c0b66da0 c0b6a000 00000000 c0b6bfb0
      bfa0: c027bb94 c027bb24 60000313 ffffffff
      [<c0212100>] (__irq_svc) from [<c027bb24>] (cpu_startup_entry+0x54/0x214)
      [<c027bb24>] (cpu_startup_entry) from [<c0ac5b30>] (start_kernel+0x318/0x37c)
      [<c0ac5b30>] (start_kernel) from [<00208078>] (0x208078)
      ---[ end Kernel panic - not syncing: Out of memory and no killable processes...
    
    A similar failure will also occur if ARM_ATAG_DTB_COMPAT isn't selected.
    
    Fix this by setting a sane default (1 GB) in the dts file.
    
    Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
    Tested-by: default avatarKevin Hilman <khilman@linaro.org>
    Cc: <stable@vger.kernel.org> #v3.13+
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    e47043ae