1. 16 12月, 2010 2 次提交
    • A
      x86, olpc: Speed up device tree creation during boot · b5318d30
      Andres Salomon 提交于
      Calling alloc_bootmem() for tiny chunks of memory over and over is really
      slow; on an XO-1, it caused the time between when the kernel started
      booting and when the display came alive (post-lxfb probe) to increase
      to 44s.  This patch optimizes the prom_early_alloc function by
      calling alloc_bootmem for 4k-sized blocks of memory, and handing out
      chunks of that to callers.  With this patch, the time between kernel load
      and display initialization decreased to 23s.  If there's a better way to
      do this early in the boot process, please let me know.
      
      (Note: increasing the chunk size to 16k didn't noticably affect boot time,
      and wasted 9k.)
      
      v4: clarify comment, requested by hpa
      v3: fix wasted memory buglet found by Milton Miller, and style fix.
      v2: reorder prom_early_alloc as suggested by Grant.
      Signed-off-by: NAndres Salomon <dilinger@queued.net>
      LKML-Reference: <20101129153951.74202a84@queued.net>
      Signed-off-by: NH. Peter Anvin <hpa@linux.intel.com>
      b5318d30
    • A
      x86, olpc: Add OLPC device-tree support · c10d1e26
      Andres Salomon 提交于
      Make use of PROC_DEVICETREE to export the tree, and sparc's PROMTREE code to
      call into OLPC's Open Firmware to build the tree.
      
      v5: fix buglet with root node check (introduced in v4)
      
      v4: address some minor style issues pointed out by Grant, and explicitly cast
          negative phandle checks to s32.
      
      v3: rename olpc_prom to olpc_dt
        - rework Kconfig entries
        - drop devtree build hook from proc, instead adding a call to x86's
          paging_init (similarly to how sparc64 does it)
        - switch allocation from using slab to alloc_bootmem.  this allows
          the DT to be built earlier during boot (during setup_arch); the
          downside is that there are some 1200 bootmem reservations that are
          done during boot.  Not ideal..
        - add a helper olpc_ofw_is_installed function to test for the
          existence and successful detection of OLPC's OFW.
      Signed-off-by: NAndres Salomon <dilinger@queued.net>
      LKML-Reference: <20101116220952.26526a80@queued.net>
      Signed-off-by: NH. Peter Anvin <hpa@linux.intel.com>
      c10d1e26