1. 29 7月, 2008 6 次提交
    • I
      Merge branch 'linus' into cpus4096 · 9e3ee1c3
      Ingo Molnar 提交于
      Conflicts:
      
      	kernel/stop_machine.c
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9e3ee1c3
    • L
      cpu masks: optimize and clean up cpumask_of_cpu() · e56b3bc7
      Linus Torvalds 提交于
      Clean up and optimize cpumask_of_cpu(), by sharing all the zero words.
      
      Instead of stupidly generating all possible i=0...NR_CPUS 2^i patterns
      creating a huge array of constant bitmasks, realize that the zero words
      can be shared.
      
      In other words, on a 64-bit architecture, we only ever need 64 of these
      arrays - with a different bit set in one single world (with enough zero
      words around it so that we can create any bitmask by just offsetting in
      that big array). And then we just put enough zeroes around it that we
      can point every single cpumask to be one of those things.
      
      So when we have 4k CPU's, instead of having 4k arrays (of 4k bits each,
      with one bit set in each array - 2MB memory total), we have exactly 64
      arrays instead, each 8k bits in size (64kB total).
      
      And then we just point cpumask(n) to the right position (which we can
      calculate dynamically). Once we have the right arrays, getting
      "cpumask(n)" ends up being:
      
        static inline const cpumask_t *get_cpu_mask(unsigned int cpu)
        {
                const unsigned long *p = cpu_bit_bitmap[1 + cpu % BITS_PER_LONG];
                p -= cpu / BITS_PER_LONG;
                return (const cpumask_t *)p;
        }
      
      This brings other advantages and simplifications as well:
      
       - we are not wasting memory that is just filled with a single bit in
         various different places
      
       - we don't need all those games to re-create the arrays in some dense
         format, because they're already going to be dense enough.
      
      if we compile a kernel for up to 4k CPU's, "wasting" that 64kB of memory
      is a non-issue (especially since by doing this "overlapping" trick we
      probably get better cache behaviour anyway).
      
      [ mingo@elte.hu:
      
        Converted Linus's mails into a commit. See:
      
           http://lkml.org/lkml/2008/7/27/156
           http://lkml.org/lkml/2008/7/28/320
      
        Also applied a family filter - which also has the side-effect of leaving
        out the bits where Linus calls me an idio... Oh, never mind ;-)
      ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Cc: Mike Travis <travis@sgi.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e56b3bc7
    • I
      Merge branch 'linus' into cpus4096 · 414f746d
      Ingo Molnar 提交于
      414f746d
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · f934fb19
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: add driver for Atmel integrated touchscreen controller
        Input: ads7846 - optimize order of calculating Rt in ads7846_rx()
        Input: ads7846 - fix sparse endian warnings
        Input: uinput - remove duplicate include
        Input: serio - offload resume to kseriod
        Input: serio - mark serio_register_driver() __must_check
      f934fb19
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm · 3988ba07
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm:
        dlm: fix uninitialized variable for search_rsb_list callers
        dlm: release socket on error
        dlm: fix basts for granted CW waiting PR/CW
        dlm: check for null in device_write
      3988ba07
    • L
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · d9089c29
      Linus Torvalds 提交于
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (25 commits)
        powerpc: Disable 64K hugetlb support when doing 64K SPU mappings
        powerpc/powermac: Fixup default serial port device for pmac_zilog
        powerpc/powermac: Use sane default baudrate for SCC debugging
        powerpc/mm: Implement _PAGE_SPECIAL & pte_special() for 64-bit
        powerpc: Show processor cache information in sysfs
        powerpc: Make core id information available to userspace
        powerpc: Make core sibling information available to userspace
        powerpc/vio: More fallout from dma_mapping_error API change
        ibmveth: Fix multiple errors with dma_mapping_error conversion
        powerpc/pseries: Fix CMO sysdev attribute API change fallout
        powerpc: Enable tracehook for the architecture
        powerpc: Add TIF_NOTIFY_RESUME support for tracehook
        powerpc: Add asm/syscall.h with the tracehook entry points
        powerpc: Make syscall tracing use tracehook.h helpers
        powerpc: Call tracehook_signal_handler() when setting up signal frames
        powerpc: Update cpu_sibling_maps dynamically
        powerpc: register_cpu_online should be __cpuinit
        powerpc: kill useless SMT code in prom_hold_cpus
        powerpc: Fix 8xx build failure
        powerpc: Fix vio build warnings
        ...
      d9089c29
  2. 28 7月, 2008 34 次提交