1. 11 Jan, 2006 7 commits
    • Anton Blanchard's avatar
      [PATCH] powerpc/64: per cpu data optimisations · 7a0268fa
      Anton Blanchard authored
      The current ppc64 per cpu data implementation is quite slow. eg:
      
              lhz 11,18(13)           /* smp_processor_id() */
              ld 9,.LC63-.LCTOC1(30)  /* per_cpu__variable_name */
              ld 8,.LC61-.LCTOC1(30)  /* __per_cpu_offset */
              sldi 11,11,3            /* form index into __per_cpu_offset */
              mr 10,9
              ldx 9,11,8              /* __per_cpu_offset[smp_processor_id()] */
              ldx 0,10,9              /* load per cpu data */
      
      5 loads for something that is supposed to be fast, pretty awful. One
      reason for the large number of loads is that we have to synthesize 2
      64bit constants (per_cpu__variable_name and __per_cpu_offset).
      
      By putting __per_cpu_offset into the paca we can avoid the 2 loads
      associated with it:
      
              ld 11,56(13)            /* paca->data_offset */
              ld 9,.LC59-.LCTOC1(30)  /* per_cpu__variable_name */
              ldx 0,9,11              /* load per cpu data
      
      Longer term we can should be able to do even better than 3 loads.
      If per_cpu__variable_name wasnt a 64bit constant and paca->data_offset
      was in a register we could cut it down to one load. A suggestion from
      Rusty is to use gcc's __thread extension here. In order to do this we
      would need to free up r13 (the __thread register and where the paca
      currently is). So far Ive had a few unsuccessful attempts at doing that :)
      
      The patch also allocates per cpu memory node local on NUMA machines.
      This patch from Rusty has been sitting in my queue _forever_ but stalled
      when I hit the compiler bug. Sorry about that.
      
      Finally I also only allocate per cpu data for possible cpus, which comes
      straight out of the x86-64 port. On a pseries kernel (with NR_CPUS == 128)
      and 4 possible cpus we see some nice gains:
      
                   total       used       free     shared    buffers cached
      Mem:       4012228     212860    3799368          0          0 162424
      
                   total       used       free     shared    buffers cached
      Mem:       4016200     212984    3803216          0          0 162424
      
      A saving of 3.75MB. Quite nice for smaller machines. Note: we now have
      to be careful of per cpu users that touch data for !possible cpus.
      
      At this stage it might be worth making the NUMA and possible cpu
      optimisations generic, but per cpu init is done so early we have to be
      careful that all architectures have their possible map setup correctly.
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      7a0268fa
    • Michael Neuling's avatar
      [PATCH] powerpc: parallel port init fix · 193cac99
      Michael Neuling authored
      This stops parport from accessing nonexistent parallel ports.
      Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      193cac99
    • Michael Ellerman's avatar
      [PATCH] powerpc: Make early debugging configurable via Kconfig · 296167ae
      Michael Ellerman authored
      This patch adds Kconfig entries to control the early debugging options,
      currently in setup_64.c.
      
      Doing this via Kconfig rather than #defines means you can have one source tree,
      which is buildable for multiple platforms - and you can enable the correct
      early debug option for each platform via .config.
      
      I made udbg_early_init() a static inline because otherwise GCC is to daft to
      optimise it away when debugging is off.
      
      Now that we have udbg_init_rtas() we can make call_rtas_display_status* static.
      Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      296167ae
    • Michael Ellerman's avatar
      [PATCH] powerpc: Early debugging support for iSeries · bf6a7112
      Michael Ellerman authored
      Connect iSeries up to the standard early debugging infrastructure.
      
      To actually use this you need to enable the iSeries early debugging
      in setup_64.c. Then after the messages are logged hit Ctrl-x Ctrl-x on
      your console to dump the Hypervisor console buffer.
      Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      bf6a7112
    • Olaf Hering's avatar
      [PATCH] powerpc: remove remaining crash_notes variable from machine_kexec.c · f481f1ed
      Olaf Hering authored
      remove remaining crash_notes definition to fix compile error
      
      /dev/shm/linux-2.6/arch/powerpc/kernel/machine_kexec.c:21: error: conflicting types for `crash_notes'
      /dev/shm/linux-2.6/include/linux/kexec.h:129: error: previous declaration of `crash_notes'
      Signed-off-by: default avatarOlaf Hering <olh@suse.de>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      f481f1ed
    • linas's avatar
      [PATCH] PCI Hotplug/powerpc: module build break · af9deabe
      linas authored
      The RPAPHP hoplug driver will not build as a module, because it calls
      on a pcibios routine which is not exported. This exports the symbol.
      Problem reported by Olaf Hering <olh@suse.de>
      Signed-off-by: default avatarLinas Vepstas <linas@austin.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      af9deabe
    • Olaf Hering's avatar
      [PATCH] enable the RTC driver in ppc64_defconfig · ad2b2426
      Olaf Hering authored
      Enable the RTC driver.
      Signed-off-by: default avatarOlaf Hering <olh@suse.de>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      ad2b2426
  2. 10 Jan, 2006 33 commits