lkml.org 
[lkml]   [2003]   [Dec]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patches in this message
    /
    Date
    From
    SubjectRe: [PATCH] another minor bit of cpumask cleanup
    On Sun, 21 Dec 2003 23:19:18 -0800
    Paul Jackson <pj@sgi.com> wrote:

    > > Please, hang onto it until we get things synced up a bit more.
    >
    > Ok - good idea. I'll resend later on. There is no hurry on this one.

    For the hotplug CPU stuff, I have a patch which changes these iterators anyway,
    as discussed with wli and Patrick Mochel. I'll push once we see a -pre: I
    didn't know there was such widespread interest.

    The idea is simple: encourage people to use the right iterators. So
    for_each_cpu() does each possible cpu (normally the right thing),
    for_each_online_cpu() does online cpus (implying you're holding the
    cpucontrol sem) and for_each_cpu_mask() does a generic iteration.

    FYI, patches below against 2.6.0: there are some other changes here which
    conflict in -mm.

    As to appreciation: I'd rather have 12 crossing patches than silence and
    apathy. At least this way we get informed criticism 8)

    Thanks,
    Rusty.
    --
    there are those who do and those who hang on and you don't see too
    many doers quoting their contemporaries. -- Larry McVoy

    Name: Make for_each_cpu() more friendly.
    Author: Rusty Russell
    Status: Booted on 2.6.0

    D: The for_each_cpu() and for_each_online_cpu() iterators take a mask,
    D: and noone uses them that way (except for arch/i386/mach-voyager, which
    D: uses for_each_cpu(cpu_online_mask). Make them more usable iterators,
    D: by dropping the "mask" arg.
    D:
    D: This requires that archs provide a cpu_possible_mask: most do,
    D: but PPC64 doesn't, so it is broken by this patch. The other archs
    D: use a #define to define it in asm/smp.h, so the iterators are moved
    D: from linux/cpumask.h to linux/smp.h, where that is asm/smp.h is included.
    D:
    D: Most places doing loops over cpus testing for cpu_online() should use
    D: for_each_cpu: it is synonymous at the moment, but with the CPU hotplug patch
    D: the difference becomes important.
    D:
    D: Followup patches will convert users.
    D:
    D: Thanks!
    D: Rusty.

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/arch/i386/mach-voyager/voyager_smp.c .22261-linux-2.6.0-test9-bk4.updated/arch/i386/mach-voyager/voyager_smp.c
    --- .22261-linux-2.6.0-test9-bk4/arch/i386/mach-voyager/voyager_smp.c 2003-09-22 10:27:54.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/arch/i386/mach-voyager/voyager_smp.c 2003-10-31 16:26:20.000000000 +1100
    @@ -130,7 +130,7 @@ send_QIC_CPI(__u32 cpuset, __u8 cpi)
    {
    int cpu;

    - for_each_cpu(cpu, cpu_online_map) {
    + for_each_online_cpu(cpu) {
    if(cpuset & (1<<cpu)) {
    #ifdef VOYAGER_DEBUG
    if(!cpu_isset(cpu, cpu_online_map))
    @@ -1465,7 +1465,7 @@ send_CPI(__u32 cpuset, __u8 cpi)
    cpuset &= 0xff; /* only first 8 CPUs vaild for VIC CPI */
    if(cpuset == 0)
    return;
    - for_each_cpu(cpu, cpu_online_map) {
    + for_each_online_cpu(cpu) {
    if(cpuset & (1<<cpu))
    set_bit(cpi, &vic_cpi_mailbox[cpu]);
    }
    @@ -1579,7 +1579,7 @@ enable_vic_irq(unsigned int irq)
    VDEBUG(("VOYAGER: enable_vic_irq(%d) CPU%d affinity 0x%lx\n",
    irq, cpu, cpu_irq_affinity[cpu]));
    spin_lock_irqsave(&vic_irq_lock, flags);
    - for_each_cpu(real_cpu, cpu_online_map) {
    + for_each_online_cpu(real_cpu) {
    if(!(voyager_extended_vic_processors & (1<<real_cpu)))
    continue;
    if(!(cpu_irq_affinity[real_cpu] & mask)) {
    @@ -1720,7 +1720,7 @@ after_handle_vic_irq(unsigned int irq)
    int i;
    __u8 cpu = smp_processor_id();
    __u8 real_cpu;
    - int mask;
    + int mask; /* Um... initialize me??? --RR */

    printk("VOYAGER SMP: CPU%d lost interrupt %d\n",
    cpu, irq);
    @@ -1809,7 +1809,7 @@ set_vic_irq_affinity(unsigned int irq, c
    * bus) */
    return;

    - for_each_cpu(cpu, cpu_online_map) {
    + for_each_online_cpu(cpu) {
    unsigned long cpu_mask = 1 << cpu;

    if(cpu_mask & real_mask) {
    @@ -1875,7 +1875,7 @@ voyager_smp_dump()
    int old_cpu = smp_processor_id(), cpu;

    /* dump the interrupt masks of each processor */
    - for_each_cpu(cpu, cpu_online_map) {
    + for_each_online_cpu(cpu) {
    __u16 imr, isr, irr;
    unsigned long flags;

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-alpha/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-alpha/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-alpha/smp.h 2003-09-29 10:25:56.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-alpha/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -48,8 +48,8 @@ extern struct cpuinfo_alpha cpu_data[NR_
    extern cpumask_t cpu_present_mask;
    extern cpumask_t cpu_online_map;
    extern int smp_num_cpus;
    +#define cpu_possible_map cpu_present_map

    -#define cpu_possible(cpu) cpu_isset(cpu, cpu_present_mask)
    #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)

    extern int smp_call_function_on_cpu(void (*func) (void *info), void *info,int retry, int wait, unsigned long cpu);
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-i386/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-i386/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-i386/smp.h 2003-09-22 10:28:12.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-i386/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -53,8 +53,7 @@ extern void zap_low_mappings (void);
    #define smp_processor_id() (current_thread_info()->cpu)

    extern cpumask_t cpu_callout_map;
    -
    -#define cpu_possible(cpu) cpu_isset(cpu, cpu_callout_map)
    +#define cpu_possible_map cpu_callout_map

    /* We don't mark CPUs online until __cpu_up(), so we need another measure */
    static inline int num_booting_cpus(void)
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-ia64/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-ia64/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-ia64/smp.h 2003-09-22 10:27:36.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-ia64/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -48,7 +48,7 @@ extern volatile int ia64_cpu_to_sapicid[

    extern unsigned long ap_wakeup_vector;

    -#define cpu_possible(cpu) cpu_isset(cpu, phys_cpu_present_map)
    +#define cpu_possible_map phys_cpu_present_map

    /*
    * Function to map hard smp processor id to logical id. Slow, so don't use this in
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-mips/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-mips/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-mips/smp.h 2003-09-22 10:27:36.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-mips/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -48,8 +48,8 @@ extern struct call_data_struct *call_dat

    extern cpumask_t phys_cpu_present_map;
    extern cpumask_t cpu_online_map;
    +#define cpu_possible_map phys_cpu_present_map

    -#define cpu_possible(cpu) cpu_isset(cpu, phys_cpu_present_map)
    #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)

    static inline unsigned int num_online_cpus(void)
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-parisc/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-parisc/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-parisc/smp.h 2003-09-22 10:27:36.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-parisc/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -54,7 +54,7 @@ extern unsigned long cpu_present_mask;
    #define smp_processor_id() (current_thread_info()->cpu)
    #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)

    -#define cpu_possible(cpu) cpu_isset(cpu, cpu_present_mask)
    +#define cpu_possible_map cpu_present_map

    #endif /* CONFIG_SMP */

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-ppc/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-ppc/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-ppc/smp.h 2003-09-22 10:27:36.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-ppc/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -48,7 +48,6 @@ extern void smp_local_timer_interrupt(st
    #define smp_processor_id() (current_thread_info()->cpu)

    #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)
    -#define cpu_possible(cpu) cpu_isset(cpu, cpu_possible_map)

    extern int __cpu_up(unsigned int cpu);

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-s390/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-s390/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-s390/smp.h 2003-09-29 10:26:01.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-s390/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -49,7 +49,6 @@ extern cpumask_t cpu_possible_map;
    #define smp_processor_id() (S390_lowcore.cpu_data.cpu_nr)

    #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)
    -#define cpu_possible(cpu) cpu_isset(cpu, cpu_possible_map)

    extern __inline__ __u16 hard_smp_processor_id(void)
    {
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-sh/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-sh/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-sh/smp.h 2003-09-22 10:23:00.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-sh/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -16,7 +16,6 @@
    extern unsigned long cpu_online_map;

    #define cpu_online(cpu) (cpu_online_map & (1 << (cpu)))
    -#define cpu_possible(cpu) (cpu_online(cpu))

    #define smp_processor_id() (current_thread_info()->cpu)

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-sparc64/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-sparc64/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-sparc64/smp.h 2003-09-22 10:27:37.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-sparc64/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -33,7 +33,7 @@
    extern unsigned char boot_cpu_id;

    extern cpumask_t phys_cpu_present_map;
    -#define cpu_possible(cpu) cpu_isset(cpu, phys_cpu_present_map)
    +#define cpu_possible_map phys_cpu_present_map

    #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-um/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-um/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-um/smp.h 2003-09-22 10:27:37.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-um/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -20,7 +20,7 @@ extern int hard_smp_processor_id(void);
    #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)

    extern int ncpus;
    -#define cpu_possible(cpu) (cpu < ncpus)
    +

    extern inline void smp_cpus_done(unsigned int maxcpus)
    {
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/asm-x86_64/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/asm-x86_64/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/asm-x86_64/smp.h 2003-10-31 10:27:44.000000000 +1100
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/asm-x86_64/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -57,8 +57,7 @@ void smp_stop_cpu(void);
    */

    extern cpumask_t cpu_callout_map;
    -
    -#define cpu_possible(cpu) cpu_isset(cpu, cpu_callout_map)
    +#define cpu_possible_map cpu_callout_map
    #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)

    static inline int num_booting_cpus(void)
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/linux/cpumask.h .22261-linux-2.6.0-test9-bk4.updated/include/linux/cpumask.h
    --- .22261-linux-2.6.0-test9-bk4/include/linux/cpumask.h 2003-09-22 10:27:37.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/linux/cpumask.h 2003-10-31 16:28:16.000000000 +1100
    @@ -41,31 +41,27 @@ typedef unsigned long cpumask_t;
    #ifdef CONFIG_SMP

    extern cpumask_t cpu_online_map;
    +extern cpumask_t cpu_possible_map;

    #define num_online_cpus() cpus_weight(cpu_online_map)
    #define cpu_online(cpu) cpu_isset(cpu, cpu_online_map)
    +#define cpu_possible(cpu) cpu_isset(cpu, cpu_possible_map)
    +
    +#define for_each_cpu_mask(cpu, mask) \
    + for (cpu = first_cpu_const(mask); \
    + cpu < NR_CPUS; \
    + cpu = next_cpu_const(cpu, mask))
    +
    +#define for_each_cpu(cpu) for_each_cpu_mask(cpu, cpu_possible_map)
    +#define for_each_online_cpu(cpu) for_each_cpu_mask(cpu, cpu_online_map)
    #else
    #define cpu_online_map cpumask_of_cpu(0)
    #define num_online_cpus() 1
    #define cpu_online(cpu) ({ BUG_ON((cpu) != 0); 1; })
    -#endif
    -
    -static inline int next_online_cpu(int cpu, cpumask_t map)
    -{
    - do
    - cpu = next_cpu_const(cpu, map);
    - while (cpu < NR_CPUS && !cpu_online(cpu));
    - return cpu;
    -}
    -
    -#define for_each_cpu(cpu, map) \
    - for (cpu = first_cpu_const(map); \
    - cpu < NR_CPUS; \
    - cpu = next_cpu_const(cpu,map))
    +#define cpu_possible(cpu) ({ BUG_ON((cpu) != 0); 1; })

    -#define for_each_online_cpu(cpu, map) \
    - for (cpu = first_cpu_const(map); \
    - cpu < NR_CPUS; \
    - cpu = next_online_cpu(cpu,map))
    +#define for_each_cpu(cpu) for (cpu = 0; cpu < 1; cpu++)
    +#define for_each_online_cpu(cpu) for (cpu = 0; cpu < 1; cpu++)
    +#endif

    #endif /* __LINUX_CPUMASK_H */
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .22261-linux-2.6.0-test9-bk4/include/linux/smp.h .22261-linux-2.6.0-test9-bk4.updated/include/linux/smp.h
    --- .22261-linux-2.6.0-test9-bk4/include/linux/smp.h 2003-09-22 10:27:37.000000000 +1000
    +++ .22261-linux-2.6.0-test9-bk4.updated/include/linux/smp.h 2003-10-31 16:26:20.000000000 +1100
    @@ -103,7 +103,6 @@ void smp_prepare_boot_cpu(void);
    #define on_each_cpu(func,info,retry,wait) ({ func(info); 0; })
    static inline void smp_send_reschedule(int cpu) { }
    #define num_booting_cpus() 1
    -#define cpu_possible(cpu) ({ BUG_ON((cpu) != 0); 1; })
    #define smp_prepare_boot_cpu() do {} while (0)

    #endif /* !SMP */

    Name: Use for_each_cpu() where cpu_online() is incorrectly used.
    Author: Rusty Russell
    Status: Booted on 2.6.0
    Depends: Hotcpu/cpu_iterator.patch.gz

    D: Some places use cpu_online() where they should be using cpu_possible,
    D: most commonly for tallying statistics. This makes no difference without
    D: hotplug CPU.
    D:
    D: Use the for_each_cpu() macro in those places, providing good
    D: examples (and making the external hotplug CPU patch smaller).

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .908-linux-2.6.0-test7-bk3/fs/buffer.c .908-linux-2.6.0-test7-bk3.updated/fs/buffer.c
    --- .908-linux-2.6.0-test7-bk3/fs/buffer.c 2003-10-09 18:02:57.000000000 +1000
    +++ .908-linux-2.6.0-test7-bk3.updated/fs/buffer.c 2003-10-13 08:45:09.000000000 +1000
    @@ -2944,10 +2944,8 @@ static void recalc_bh_state(void)
    if (__get_cpu_var(bh_accounting).ratelimit++ < 4096)
    return;
    __get_cpu_var(bh_accounting).ratelimit = 0;
    - for (i = 0; i < NR_CPUS; i++) {
    - if (cpu_online(i))
    - tot += per_cpu(bh_accounting, i).nr;
    - }
    + for_each_cpu(i)
    + tot += per_cpu(bh_accounting, i).nr;
    buffer_heads_over_limit = (tot > max_buffer_heads);
    }

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .908-linux-2.6.0-test7-bk3/fs/proc/proc_misc.c .908-linux-2.6.0-test7-bk3.updated/fs/proc/proc_misc.c
    --- .908-linux-2.6.0-test7-bk3/fs/proc/proc_misc.c 2003-09-29 10:25:53.000000000 +1000
    +++ .908-linux-2.6.0-test7-bk3.updated/fs/proc/proc_misc.c 2003-10-13 08:45:09.000000000 +1000
    @@ -378,10 +378,9 @@ int show_stat(struct seq_file *p, void *
    jif = ((u64)now.tv_sec * HZ) + (now.tv_usec/(1000000/HZ)) - jif;
    do_div(jif, HZ);

    - for (i = 0; i < NR_CPUS; i++) {
    + for_each_cpu(i) {
    int j;

    - if (!cpu_online(i)) continue;
    user += kstat_cpu(i).cpustat.user;
    nice += kstat_cpu(i).cpustat.nice;
    system += kstat_cpu(i).cpustat.system;
    @@ -401,8 +400,7 @@ int show_stat(struct seq_file *p, void *
    jiffies_to_clock_t(iowait),
    jiffies_to_clock_t(irq),
    jiffies_to_clock_t(softirq));
    - for (i = 0; i < NR_CPUS; i++){
    - if (!cpu_online(i)) continue;
    + for_each_online_cpu(i) {
    seq_printf(p, "cpu%d %u %u %u %u %u %u %u\n",
    i,
    jiffies_to_clock_t(kstat_cpu(i).cpustat.user),
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .908-linux-2.6.0-test7-bk3/kernel/fork.c .908-linux-2.6.0-test7-bk3.updated/kernel/fork.c
    --- .908-linux-2.6.0-test7-bk3/kernel/fork.c 2003-10-12 11:04:17.000000000 +1000
    +++ .908-linux-2.6.0-test7-bk3.updated/kernel/fork.c 2003-10-13 08:45:09.000000000 +1000
    @@ -60,10 +60,9 @@ int nr_processes(void)
    int cpu;
    int total = 0;

    - for (cpu = 0; cpu < NR_CPUS; cpu++) {
    - if (cpu_online(cpu))
    - total += per_cpu(process_counts, cpu);
    - }
    + for_each_cpu(cpu)
    + total += per_cpu(process_counts, cpu);
    +
    return total;
    }

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .908-linux-2.6.0-test7-bk3/kernel/sched.c .908-linux-2.6.0-test7-bk3.updated/kernel/sched.c
    --- .908-linux-2.6.0-test7-bk3/kernel/sched.c 2003-10-09 18:03:02.000000000 +1000
    +++ .908-linux-2.6.0-test7-bk3.updated/kernel/sched.c 2003-10-13 08:45:09.000000000 +1000
    @@ -829,11 +829,9 @@ unsigned long nr_uninterruptible(void)
    {
    unsigned long i, sum = 0;

    - for (i = 0; i < NR_CPUS; i++) {
    - if (!cpu_online(i))
    - continue;
    + for_each_cpu(i)
    sum += cpu_rq(i)->nr_uninterruptible;
    - }
    +
    return sum;
    }

    @@ -841,11 +839,9 @@ unsigned long nr_context_switches(void)
    {
    unsigned long i, sum = 0;

    - for (i = 0; i < NR_CPUS; i++) {
    - if (!cpu_online(i))
    - continue;
    + for_each_cpu(i)
    sum += cpu_rq(i)->nr_switches;
    - }
    +
    return sum;
    }

    @@ -853,11 +849,9 @@ unsigned long nr_iowait(void)
    {
    unsigned long i, sum = 0;

    - for (i = 0; i < NR_CPUS; ++i) {
    - if (!cpu_online(i))
    - continue;
    + for_each_cpu(i)
    sum += atomic_read(&cpu_rq(i)->nr_iowait);
    - }
    +
    return sum;
    }

    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .908-linux-2.6.0-test7-bk3/kernel/workqueue.c .908-linux-2.6.0-test7-bk3.updated/kernel/workqueue.c
    --- .908-linux-2.6.0-test7-bk3/kernel/workqueue.c 2003-09-22 10:27:38.000000000 +1000
    +++ .908-linux-2.6.0-test7-bk3.updated/kernel/workqueue.c 2003-10-13 08:45:09.000000000 +1000
    @@ -366,9 +366,7 @@ int current_is_keventd(void)

    BUG_ON(!keventd_wq);

    - for (cpu = 0; cpu < NR_CPUS; cpu++) {
    - if (!cpu_online(cpu))
    - continue;
    + for_each_cpu(cpu) {
    cwq = keventd_wq->cpu_wq + cpu;
    if (current == cwq->thread)
    return 1;
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .908-linux-2.6.0-test7-bk3/mm/page_alloc.c .908-linux-2.6.0-test7-bk3.updated/mm/page_alloc.c
    --- .908-linux-2.6.0-test7-bk3/mm/page_alloc.c 2003-10-09 18:03:02.000000000 +1000
    +++ .908-linux-2.6.0-test7-bk3.updated/mm/page_alloc.c 2003-10-13 08:49:27.000000000 +1000
    @@ -867,14 +867,14 @@ void __get_page_state(struct page_state
    while (cpu < NR_CPUS) {
    unsigned long *in, *out, off;

    - if (!cpu_online(cpu)) {
    + if (!cpu_possible(cpu)) {
    cpu++;
    continue;
    }

    in = (unsigned long *)&per_cpu(page_states, cpu);
    cpu++;
    - if (cpu < NR_CPUS && cpu_online(cpu))
    + if (cpu < NR_CPUS && cpu_possible(cpu))
    prefetch(&per_cpu(page_states, cpu));
    out = (unsigned long *)ret;
    for (off = 0; off < nr; off++)
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .908-linux-2.6.0-test7-bk3/net/ipv4/route.c .908-linux-2.6.0-test7-bk3.updated/net/ipv4/route.c
    --- .908-linux-2.6.0-test7-bk3/net/ipv4/route.c 2003-10-09 18:03:03.000000000 +1000
    +++ .908-linux-2.6.0-test7-bk3.updated/net/ipv4/route.c 2003-10-13 08:45:09.000000000 +1000
    @@ -2703,12 +2703,9 @@ static int ip_rt_acct_read(char *buffer,
    memcpy(dst, src, length);

    /* Add the other cpus in, one int at a time */
    - for (i = 1; i < NR_CPUS; i++) {
    + for_each_cpu(i) {
    unsigned int j;

    - if (!cpu_online(i))
    - continue;
    -
    src = ((u32 *) IP_RT_ACCT_CPU(i)) + offset;

    for (j = 0; j < length/4; j++)
    diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .3441-2.6.0-test9-hotcpu-i386.pre/kernel/timer.c .3441-2.6.0-test9-hotcpu-i386/kernel/timer.c
    --- .3441-2.6.0-test9-hotcpu-i386.pre/kernel/timer.c 2003-10-27 13:26:01.000000000 +1100
    +++ .3441-2.6.0-test9-hotcpu-i386/kernel/timer.c 2003-10-27 13:26:02.000000000 +1100
    @@ -332,10 +332,7 @@ int del_timer_sync(struct timer_list *ti
    del_again:
    ret += del_timer(timer);

    - for (i = 0; i < NR_CPUS; i++) {
    - if (!cpu_online(i))
    - continue;
    -
    + for_each_cpu(i) {
    base = &per_cpu(tvec_bases, i);
    if (base->running_timer == timer) {
    while (base->running_timer == timer) {
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:59    [W:0.045 / U:1.276 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site