Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 2438
b: refs/heads/master
c: 39c715b
h: refs/heads/master
v: v3
  • Loading branch information
Ingo Molnar authored and Linus Torvalds committed Jun 22, 2005
1 parent 39ac6b0 commit 571ea50
Show file tree
Hide file tree
Showing 38 changed files with 120 additions and 126 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 84929801e14d968caeb84795bfbb88f04283fbd9
refs/heads/master: 39c715b71740c4a78ba4769fb54826929bac03cb
2 changes: 1 addition & 1 deletion trunk/arch/i386/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,7 @@ void die(const char * str, struct pt_regs * regs, long err)
};
static int die_counter;

if (die.lock_owner != _smp_processor_id()) {
if (die.lock_owner != raw_smp_processor_id()) {
console_verbose();
spin_lock_irq(&die.lock);
die.lock_owner = smp_processor_id();
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/i386/lib/delay.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ inline void __const_udelay(unsigned long xloops)
xloops *= 4;
__asm__("mull %0"
:"=d" (xloops), "=&a" (d0)
:"1" (xloops),"0" (cpu_data[_smp_processor_id()].loops_per_jiffy * (HZ/4)));
:"1" (xloops),"0" (cpu_data[raw_smp_processor_id()].loops_per_jiffy * (HZ/4)));
__delay(++xloops);
}

Expand Down
4 changes: 2 additions & 2 deletions trunk/arch/ppc/lib/locks.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ void _raw_read_lock(rwlock_t *rw)
while (!read_can_lock(rw)) {
if (--stuck == 0) {
printk("_read_lock(%p) CPU#%d lock %d\n",
rw, _smp_processor_id(), rw->lock);
rw, raw_smp_processor_id(), rw->lock);
stuck = INIT_STUCK;
}
}
Expand Down Expand Up @@ -158,7 +158,7 @@ void _raw_write_lock(rwlock_t *rw)
while (!write_can_lock(rw)) {
if (--stuck == 0) {
printk("write_lock(%p) CPU#%d lock %d)\n",
rw, _smp_processor_id(), rw->lock);
rw, raw_smp_processor_id(), rw->lock);
stuck = INIT_STUCK;
}
}
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/ppc64/kernel/idle.c
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ static int native_idle(void)
if (need_resched())
schedule();

if (cpu_is_offline(_smp_processor_id()) &&
if (cpu_is_offline(raw_smp_processor_id()) &&
system_state == SYSTEM_RUNNING)
cpu_die();
}
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/sh/lib/delay.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ inline void __const_udelay(unsigned long xloops)
__asm__("dmulu.l %0, %2\n\t"
"sts mach, %0"
: "=r" (xloops)
: "0" (xloops), "r" (cpu_data[_smp_processor_id()].loops_per_jiffy)
: "0" (xloops), "r" (cpu_data[raw_smp_processor_id()].loops_per_jiffy)
: "macl", "mach");
__delay(xloops * HZ);
}
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/sparc64/lib/delay.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ void __const_udelay(unsigned long n)
{
n *= 4;

n *= (cpu_data(_smp_processor_id()).udelay_val * (HZ/4));
n *= (cpu_data(raw_smp_processor_id()).udelay_val * (HZ/4));
n >>= 32;

__delay(n + 1);
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/x86_64/lib/delay.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ void __delay(unsigned long loops)

inline void __const_udelay(unsigned long xloops)
{
__delay(((xloops * cpu_data[_smp_processor_id()].loops_per_jiffy) >> 32) * HZ);
__delay(((xloops * cpu_data[raw_smp_processor_id()].loops_per_jiffy) >> 32) * HZ);
}

void __udelay(unsigned long usecs)
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/acpi/processor_idle.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ static void acpi_processor_idle (void)
int sleep_ticks = 0;
u32 t1, t2 = 0;

pr = processors[_smp_processor_id()];
pr = processors[raw_smp_processor_id()];
if (!pr)
return;

Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/input/gameport/gameport.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ static int gameport_measure_speed(struct gameport *gameport)
}

gameport_close(gameport);
return (cpu_data[_smp_processor_id()].loops_per_jiffy * (unsigned long)HZ / (1000 / 50)) / (tx < 1 ? 1 : tx);
return (cpu_data[raw_smp_processor_id()].loops_per_jiffy * (unsigned long)HZ / (1000 / 50)) / (tx < 1 ? 1 : tx);

#else

Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/oprofile/buffer_sync.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ static int task_exit_notify(struct notifier_block * self, unsigned long val, voi
/* To avoid latency problems, we only process the current CPU,
* hoping that most samples for the task are on this CPU
*/
sync_buffer(_smp_processor_id());
sync_buffer(raw_smp_processor_id());
return 0;
}

Expand All @@ -86,7 +86,7 @@ static int munmap_notify(struct notifier_block * self, unsigned long val, void *
/* To avoid latency problems, we only process the current CPU,
* hoping that most samples for the task are on this CPU
*/
sync_buffer(_smp_processor_id());
sync_buffer(raw_smp_processor_id());
return 0;
}

Expand Down
6 changes: 3 additions & 3 deletions trunk/fs/xfs/linux-2.6/xfs_linux.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,10 @@ static inline void set_buffer_unwritten_io(struct buffer_head *bh)
#define xfs_inherit_nosymlinks xfs_params.inherit_nosym.val
#define xfs_rotorstep xfs_params.rotorstep.val

#ifndef __smp_processor_id
#define __smp_processor_id() smp_processor_id()
#ifndef raw_smp_processor_id
#define raw_smp_processor_id() smp_processor_id()
#endif
#define current_cpu() __smp_processor_id()
#define current_cpu() raw_smp_processor_id()
#define current_pid() (current->pid)
#define current_fsuid(cred) (current->fsuid)
#define current_fsgid(cred) (current->fsgid)
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-alpha/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ extern struct cpuinfo_alpha cpu_data[NR_CPUS];
#define PROC_CHANGE_PENALTY 20

#define hard_smp_processor_id() __hard_smp_processor_id()
#define smp_processor_id() (current_thread_info()->cpu)
#define raw_smp_processor_id() (current_thread_info()->cpu)

extern cpumask_t cpu_present_mask;
extern cpumask_t cpu_online_map;
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-arm/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
# error "<asm-arm/smp.h> included in non-SMP build"
#endif

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

extern cpumask_t cpu_present_mask;
#define cpu_possible_map cpu_present_mask
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-i386/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ extern u8 x86_cpu_to_apicid[];
* from the initial startup. We map APIC_BASE very early in page_setup(),
* so this is correct in the x86 case.
*/
#define __smp_processor_id() (current_thread_info()->cpu)
#define raw_smp_processor_id() (current_thread_info()->cpu)

extern cpumask_t cpu_callout_map;
extern cpumask_t cpu_callin_map;
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-ia64/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ ia64_get_lid (void)
#define SMP_IRQ_REDIRECTION (1 << 0)
#define SMP_IPI_REDIRECTION (1 << 1)

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

extern struct smp_boot_data {
int cpu_count;
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-m32r/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ extern volatile int cpu_2_physid[NR_CPUS];
#define physid_to_cpu(physid) physid_2_cpu[physid]
#define cpu_to_physid(cpu_id) cpu_2_physid[cpu_id]

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

extern cpumask_t cpu_callout_map;
#define cpu_possible_map cpu_callout_map
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-mips/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#include <linux/cpumask.h>
#include <asm/atomic.h>

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

/* Map from cpu id to sequential logical cpu number. This will only
not be idempotent when cpus failed to come on-line. */
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-parisc/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ extern void smp_send_reschedule(int cpu);

extern unsigned long cpu_present_mask;

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

#endif /* CONFIG_SMP */

Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-ppc/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ extern void smp_message_recv(int, struct pt_regs *);
#define NO_PROC_ID 0xFF /* No processor magic marker */
#define PROC_CHANGE_PENALTY 20

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

extern int __cpu_up(unsigned int cpu);

Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-ppc64/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ void generic_cpu_die(unsigned int cpu);
void generic_mach_cpu_die(void);
#endif

#define __smp_processor_id() (get_paca()->paca_index)
#define raw_smp_processor_id() (get_paca()->paca_index)
#define hard_smp_processor_id() (get_paca()->hw_cpu_id)

extern cpumask_t cpu_sibling_map[NR_CPUS];
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-s390/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ extern int smp_call_function_on(void (*func) (void *info), void *info,

#define PROC_CHANGE_PENALTY 20 /* Schedule penalty */

#define smp_processor_id() (S390_lowcore.cpu_data.cpu_nr)
#define raw_smp_processor_id() (S390_lowcore.cpu_data.cpu_nr)

extern int smp_get_cpu(cpumask_t cpu_map);
extern void smp_put_cpu(int cpu);
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-sh/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ extern cpumask_t cpu_possible_map;

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

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

/* I've no idea what the real meaning of this is */
#define PROC_CHANGE_PENALTY 20
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-sparc/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ extern __inline__ int hard_smp_processor_id(void)
}
#endif

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

#define prof_multiplier(__cpu) cpu_data(__cpu).multiplier
#define prof_counter(__cpu) cpu_data(__cpu).counter
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-sparc64/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ static __inline__ int hard_smp_processor_id(void)
}
}

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

#endif /* !(__ASSEMBLY__) */

Expand Down
3 changes: 2 additions & 1 deletion trunk/include/asm-um/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
#include "asm/current.h"
#include "linux/cpumask.h"

#define smp_processor_id() (current_thread->cpu)
#define raw_smp_processor_id() (current_thread->cpu)

#define cpu_logical_map(n) (n)
#define cpu_number_map(n) (n)
#define PROC_CHANGE_PENALTY 15 /* Pick a number, any number */
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-x86_64/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ static inline int num_booting_cpus(void)
return cpus_weight(cpu_callout_map);
}

#define __smp_processor_id() read_pda(cpunumber)
#define raw_smp_processor_id() read_pda(cpunumber)

extern __inline int hard_smp_processor_id(void)
{
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/linux/mmzone.h
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,7 @@ int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, struct file *,

#include <linux/topology.h>
/* Returns the number of the current Node. */
#define numa_node_id() (cpu_to_node(_smp_processor_id()))
#define numa_node_id() (cpu_to_node(raw_smp_processor_id()))

#ifndef CONFIG_DISCONTIGMEM

Expand Down
40 changes: 16 additions & 24 deletions trunk/include/linux/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,7 @@ void smp_prepare_boot_cpu(void);
/*
* These macros fold the SMP functionality into a single CPU system
*/

#if !defined(__smp_processor_id) || !defined(CONFIG_PREEMPT)
# define smp_processor_id() 0
#endif
#define raw_smp_processor_id() 0
#define hard_smp_processor_id() 0
#define smp_call_function(func,info,retry,wait) ({ 0; })
#define on_each_cpu(func,info,retry,wait) ({ func(info); 0; })
Expand All @@ -106,30 +103,25 @@ static inline void smp_send_reschedule(int cpu) { }
#endif /* !SMP */

/*
* DEBUG_PREEMPT support: check whether smp_processor_id() is being
* used in a preemption-safe way.
* smp_processor_id(): get the current CPU ID.
*
* An architecture has to enable this debugging code explicitly.
* It can do so by renaming the smp_processor_id() macro to
* __smp_processor_id(). This should only be done after some minimal
* testing, because usually there are a number of false positives
* that an architecture will trigger.
* if DEBUG_PREEMPT is enabled the we check whether it is
* used in a preemption-safe way. (smp_processor_id() is safe
* if it's used in a preemption-off critical section, or in
* a thread that is bound to the current CPU.)
*
* To fix a false positive (i.e. smp_processor_id() use that the
* debugging code reports but which use for some reason is legal),
* change the smp_processor_id() reference to _smp_processor_id(),
* which is the nondebug variant. NOTE: don't use this to hack around
* real bugs.
* NOTE: raw_smp_processor_id() is for internal use only
* (smp_processor_id() is the preferred variant), but in rare
* instances it might also be used to turn off false positives
* (i.e. smp_processor_id() use that the debugging code reports but
* which use for some reason is legal). Don't use this to hack around
* the warning message, as your code might not work under PREEMPT.
*/
#ifdef __smp_processor_id
# if defined(CONFIG_PREEMPT) && defined(CONFIG_DEBUG_PREEMPT)
extern unsigned int smp_processor_id(void);
# else
# define smp_processor_id() __smp_processor_id()
# endif
# define _smp_processor_id() __smp_processor_id()
#ifdef CONFIG_DEBUG_PREEMPT
extern unsigned int debug_smp_processor_id(void);
# define smp_processor_id() debug_smp_processor_id()
#else
# define _smp_processor_id() smp_processor_id()
# define smp_processor_id() raw_smp_processor_id()
#endif

#define get_cpu() ({ preempt_disable(); smp_processor_id(); })
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/net/route.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ struct rt_cache_stat

extern struct rt_cache_stat *rt_cache_stat;
#define RT_CACHE_STAT_INC(field) \
(per_cpu_ptr(rt_cache_stat, _smp_processor_id())->field++)
(per_cpu_ptr(rt_cache_stat, raw_smp_processor_id())->field++)

extern struct ip_rt_acct *ip_rt_acct;

Expand Down
14 changes: 7 additions & 7 deletions trunk/include/net/snmp.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,18 +128,18 @@ struct linux_mib {
#define SNMP_STAT_USRPTR(name) (name[1])

#define SNMP_INC_STATS_BH(mib, field) \
(per_cpu_ptr(mib[0], _smp_processor_id())->mibs[field]++)
(per_cpu_ptr(mib[0], raw_smp_processor_id())->mibs[field]++)
#define SNMP_INC_STATS_OFFSET_BH(mib, field, offset) \
(per_cpu_ptr(mib[0], _smp_processor_id())->mibs[field + (offset)]++)
(per_cpu_ptr(mib[0], raw_smp_processor_id())->mibs[field + (offset)]++)
#define SNMP_INC_STATS_USER(mib, field) \
(per_cpu_ptr(mib[1], _smp_processor_id())->mibs[field]++)
(per_cpu_ptr(mib[1], raw_smp_processor_id())->mibs[field]++)
#define SNMP_INC_STATS(mib, field) \
(per_cpu_ptr(mib[!in_softirq()], _smp_processor_id())->mibs[field]++)
(per_cpu_ptr(mib[!in_softirq()], raw_smp_processor_id())->mibs[field]++)
#define SNMP_DEC_STATS(mib, field) \
(per_cpu_ptr(mib[!in_softirq()], _smp_processor_id())->mibs[field]--)
(per_cpu_ptr(mib[!in_softirq()], raw_smp_processor_id())->mibs[field]--)
#define SNMP_ADD_STATS_BH(mib, field, addend) \
(per_cpu_ptr(mib[0], _smp_processor_id())->mibs[field] += addend)
(per_cpu_ptr(mib[0], raw_smp_processor_id())->mibs[field] += addend)
#define SNMP_ADD_STATS_USER(mib, field, addend) \
(per_cpu_ptr(mib[1], _smp_processor_id())->mibs[field] += addend)
(per_cpu_ptr(mib[1], raw_smp_processor_id())->mibs[field] += addend)

#endif
2 changes: 1 addition & 1 deletion trunk/kernel/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ static void module_unload_init(struct module *mod)
for (i = 0; i < NR_CPUS; i++)
local_set(&mod->ref[i].count, 0);
/* Hold reference count during initialization. */
local_set(&mod->ref[_smp_processor_id()].count, 1);
local_set(&mod->ref[raw_smp_processor_id()].count, 1);
/* Backwards compatibility macros put refcount during init. */
mod->waiter = current;
}
Expand Down
4 changes: 2 additions & 2 deletions trunk/kernel/power/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ void disable_nonboot_cpus(void)
{
oldmask = current->cpus_allowed;
set_cpus_allowed(current, cpumask_of_cpu(0));
printk("Freezing CPUs (at %d)", _smp_processor_id());
printk("Freezing CPUs (at %d)", raw_smp_processor_id());
current->state = TASK_INTERRUPTIBLE;
schedule_timeout(HZ);
printk("...");
BUG_ON(_smp_processor_id() != 0);
BUG_ON(raw_smp_processor_id() != 0);

/* FIXME: for this to work, all the CPUs must be running
* "idle" thread (or we deadlock). Is that guaranteed? */
Expand Down
Loading

0 comments on commit 571ea50

Please sign in to comment.