1. 25 Oct, 2014 1 commit
  2. 09 Aug, 2014 1 commit
    • Stephen Warren's avatar
      lib: lmb: fix overflow in __lmb_alloc_base w/ large RAM · ad3fda52
      Stephen Warren authored
      If a 32-bit system has 2GB of RAM, and the base address of that RAM is
      2GB, then start+size will overflow a 32-bit value (to a value of 0).
      
      __lmb_alloc_base is affected by this; it calculates the minimum of
      (start+size of RAM) and max_addr. However, when start+size is 0, it
      is always less than max_addr, which causes the value of max_addr not
      to be taken into account when restricting the allocation's location.
      
      Fix this by calculating start+size separately, and if that calculation
      underflows, using -1 (interpreted as the max unsigned value) as the
      value instead, and then taking the min of that and max_addr. Now that
      start+size doesn't overflow, it's typically large, and max_addr
      dominates the min() call, and is taken into account.
      
      The user-visible symptom of this bug is that CONFIG_BOOTMAP_SZ is ignored
      on Tegra124 systems with 2GB of RAM, which in turn causes the DT to be
      relocated at the very end of RAM, which the ARM Linux kernel doesn't map
      during early boot, and which causes boot failures. With this fix,
      CONFIG_BOOTMAP_SZ correctly restricts the relocated DT to a much lower
      address, and everything works.
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      ad3fda52
  3. 18 Jul, 2014 1 commit
  4. 24 Jul, 2013 1 commit
  5. 13 Apr, 2010 1 commit
  6. 21 Jan, 2010 1 commit
  7. 10 Jul, 2008 1 commit
  8. 09 Jul, 2008 1 commit
  9. 28 Jun, 2008 2 commits
  10. 11 Jun, 2008 1 commit
  11. 29 Feb, 2008 1 commit