Ingo's E6 vs 2.5.60-mm1
Subsystems (3)
PATCH 1/1 Ingo's E6 vs 2.5.60-mm1
Does anyone see anything messy about this patch? I decided to post this JFSAG, and if anyone wanted to avoide the trouble of resolving a couple minor rejects.
Signature · 1 line
Core <[email protected]>
arch/i386/kernel/cpu/proc.c +8 -0
@@ -1,4 +1,5 @@#include <linux/smp.h> +#include <linux/sched.h> #include <linux/timex.h> #include <linux/string.h> #include <asm/semaphore.h>
@@ -101,6 +102,13 @@ fpu_exception ?"yes" :"no" , c->cpuid_level, c->wp_works_ok ? "yes" : "no"); +#if CONFIG_SHARE_RUNQUEUE +{ +extern long __rq_idx[NR_CPUS ]; + +seq_printf (m,"\nrunqueue\t: %d\n" , __rq_idx[n]); +} +#endif for ( i =0 ; i <32 *NCAPINTS ; i++ ) if ( test_bit(i, c->x86_capability) &&
arch/i386/kernel/smpboot.c +62 -12
107 lines not on this page · raw message
arch/i386/Kconfig +18 -0
@@ -408,6 +408,24 @@ If you don't know what to do here, say N. +choice + + prompt "Hyperthreading Support" + depends on SMP + default NR_SIBLINGS_0 + +config NR_SIBLINGS_0 + bool "off" + +config NR_SIBLINGS_2 + bool "2 siblings" + +config NR_SIBLINGS_4 + bool "4 siblings" + +endchoice + + config PREEMPT bool "Preemptible Kernel" help
include/linux/sched.h +19 -10
@@ -147,6 +147,24 @@extern void sched_init (void );extern void init_idle (task_t *idle,int cpu); +/* +* Is there a way to do this via Kconfig? +*/ +#define CONFIG_NR_SIBLINGS 0 + +#if CONFIG_NR_SIBLINGS_2 +# define CONFIG_NR_SIBLINGS 2 +#elif CONFIG_NR_SIBLINGS_4 +# define CONFIG_NR_SIBLINGS 4 +#endif + +#if CONFIG_NR_SIBLINGS +# define CONFIG_SHARE_RUNQUEUE 1 +#else +# define CONFIG_SHARE_RUNQUEUE 0 +#endif +extern void sched_map_runqueue (int cpu1,int cpu2); +extern void show_state (void );extern void show_trace (unsigned long *stack);extern void show_stack (unsigned long *stack);
@@ -311,7 +329,7 @@prio_array_t *array;unsigned long sleep_avg; -unsigned long sleep_timestamp; +unsigned long last_run;unsigned long policy;unsigned long cpus_allowed;
@@ -807,11 +825,6 @@ return p->thread_info->cpu; } -static inline void set_task_cpu (struct task_struct *p,unsigned int cpu) -{ - p->thread_info->cpu = cpu; -} -#else static inline unsigned int task_cpu (struct task_struct *p)
@@ -819,10 +832,6 @@return 0 ; } -static inline void set_task_cpu (struct task_struct *p,unsigned int cpu) -{ -} -#endif /* CONFIG_SMP */ #endif /* __KERNEL__ */
include/asm-i386/apic.h +2 -0
@@ -98,4 +98,6 @@#endif /* CONFIG_X86_LOCAL_APIC */ +extern int phys_proc_id[NR_CPUS ]; +#endif /* __ASM_APIC_H */
kernel/fork.c +1 -1
@@ -896,7 +896,7 @@*/ p->first_time_slice =1 ; current->time_slice >>=1 ; - p->sleep_timestamp = jiffies; + p->last_run = jiffies;if (!current->time_slice) {/* * This case is rare, it happens when the parent has only
kernel/sched.c +380 -104
854 lines not on this page · raw message
init/main.c +7 -7
@@ -358,7 +358,14 @@static void rest_init (void ) { +/* +* We count on the initial thread going ok +* Like idlers init is an unlocked kernel thread, which will +* make syscalls (and thus be locked). +*/ +init_idle (current,smp_processor_id ());kernel_thread (init,NULL ,CLONE_KERNEL ); +unlock_kernel ();cpu_idle (); }
@@ -442,13 +449,6 @@check_bugs ();printk ("POSIX conformance testing by UNIFIX\n" ); -/* -* We count on the initial thread going ok -* Like idlers init is an unlocked kernel thread, which will -* make syscalls (and thus be locked). -*/ -init_idle (current,smp_processor_id ()); -#ifdef CONFIG_X86_REMOTE_DEBUG if (gdb_enter) {gdb_hook ();/* right at boot time */