You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(6) |
Sep
(2) |
Oct
(43) |
Nov
(4) |
Dec
(12) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(78) |
Feb
(97) |
Mar
(29) |
Apr
(2) |
May
(22) |
Jun
(38) |
Jul
(11) |
Aug
(27) |
Sep
(40) |
Oct
(2) |
Nov
(17) |
Dec
(8) |
| 2002 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
(480) |
May
(456) |
Jun
(12) |
Jul
|
Aug
(1) |
Sep
|
Oct
(18) |
Nov
(3) |
Dec
(6) |
| 2003 |
Jan
|
Feb
(18) |
Mar
(1) |
Apr
|
May
(6) |
Jun
(147) |
Jul
(7) |
Aug
(3) |
Sep
(235) |
Oct
(10) |
Nov
(2) |
Dec
(1) |
| 2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/s390/kernel
Modified Files:
debug.c entry.S init_task.c process.c ptrace.c s390_ksyms.c
setup.c smp.c time.c traps.c
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: debug.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/debug.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- debug.c 9 Apr 2002 17:03:16 -0000 1.2
+++ debug.c 10 Jun 2003 01:46:08 -0000 1.3
@@ -228,8 +228,10 @@
strncpy(rc->name, name, MIN(strlen(name), (DEBUG_MAX_PROCF_LEN - 1)));
rc->name[MIN(strlen(name), (DEBUG_MAX_PROCF_LEN - 1))] = 0;
memset(rc->views, 0, DEBUG_MAX_VIEWS * sizeof(struct debug_view *));
+#ifdef CONFIG_PROC_FS
memset(rc->proc_entries, 0 ,DEBUG_MAX_VIEWS *
sizeof(struct proc_dir_entry*));
+#endif /* CONFIG_PROC_FS */
atomic_set(&(rc->ref_count), 0);
return rc;
@@ -346,8 +348,10 @@
if (!db_info)
return;
if (atomic_dec_and_test(&db_info->ref_count)) {
+#ifdef DEBUG
printk(KERN_INFO "debug: freeing debug area %p (%s)\n",
db_info, db_info->name);
+#endif
for (i = 0; i < DEBUG_MAX_VIEWS; i++) {
if (db_info->views[i] != NULL)
debug_delete_proc_dir_entry
@@ -541,14 +545,18 @@
debug_info_snapshot = debug_info_copy(debug_info);
if(!debug_info_snapshot){
+#ifdef DEBUG
printk(KERN_ERR "debug_open: debug_info_copy failed (out of mem)\n");
+#endif
rc = -ENOMEM;
goto out;
}
if ((file->private_data =
kmalloc(sizeof(file_private_info_t), GFP_ATOMIC)) == 0) {
+#ifdef DEBUG
printk(KERN_ERR "debug_open: kmalloc failed\n");
+#endif
debug_info_free(debug_info_snapshot);
rc = -ENOMEM;
goto out;
@@ -602,6 +610,7 @@
{
struct proc_dir_entry *rc = NULL;
+#ifdef CONFIG_PROC_FS
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,98))
const char *fn = name;
int len;
@@ -634,6 +643,7 @@
#endif
out:
+#endif /* CONFIG_PROC_FS */
return rc;
}
@@ -646,12 +656,14 @@
(struct proc_dir_entry *root, struct proc_dir_entry *proc_entry)
{
+#ifdef CONFIG_PROC_FS
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,98))
proc_unregister(root, proc_entry->low_ino);
kfree(proc_entry);
#else
remove_proc_entry(proc_entry->name, root);
#endif
+#endif /* CONFIG_PROC_FS */
}
/*
@@ -677,9 +689,11 @@
goto out;
debug_register_view(rc, &debug_level_view);
debug_register_view(rc, &debug_flush_view);
+#ifdef DEBUG
printk(KERN_INFO
"debug: reserved %d areas of %d pages for debugging %s\n",
nr_areas, 1 << page_order, rc->name);
+#endif
out:
if (rc == NULL){
printk(KERN_ERR "debug: debug_register failed for %s\n",name);
@@ -699,7 +713,9 @@
if (!id)
goto out;
down(&debug_lock);
+#ifdef DEBUG
printk(KERN_INFO "debug: unregistering %s\n", id->name);
+#endif
debug_info_put(id);
up(&debug_lock);
@@ -906,11 +922,13 @@
down(&debug_lock);
if (!initialized) {
+#ifdef CONFIG_PROC_FS
debug_proc_root_entry =
debug_create_proc_dir_entry(&proc_root, DEBUG_DIR_ROOT,
S_IFDIR | S_IRUGO | S_IXUGO
| S_IWUSR | S_IWGRP, NULL,
NULL);
+#endif /* CONFIG_PROC_FS */
printk(KERN_INFO "debug: Initialization complete\n");
initialized = 1;
}
@@ -1271,7 +1289,9 @@
#ifdef DEBUG
printk("debug_cleanup_module: \n");
#endif
+#ifdef CONFIG_PROC_FS
debug_delete_proc_dir_entry(&proc_root, debug_proc_root_entry);
+#endif /* CONFIG_PROC_FS */
return;
}
Index: entry.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/entry.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- entry.S 9 Apr 2002 17:03:16 -0000 1.2
+++ entry.S 10 Jun 2003 01:46:08 -0000 1.3
@@ -79,7 +79,7 @@
sigpending = 8
need_resched = 24
tsk_ptrace = 28
-processor = 56
+processor = 52
/*
* Base Address of this Module --- saved in __LC_ENTRY_BASE
Index: init_task.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/init_task.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- init_task.c 14 Jan 2001 19:55:08 -0000 1.1.1.1
+++ init_task.c 10 Jun 2003 01:46:09 -0000 1.2
@@ -12,7 +12,6 @@
#include <asm/uaccess.h>
#include <asm/pgtable.h>
-static struct vm_area_struct init_mmap = INIT_MMAP;
static struct fs_struct init_fs = INIT_FS;
static struct files_struct init_files = INIT_FILES;
static struct signal_struct init_signals = INIT_SIGNALS;
Index: process.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/process.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- process.c 9 Apr 2002 17:03:17 -0000 1.2
+++ process.c 10 Jun 2003 01:46:09 -0000 1.3
@@ -75,173 +75,24 @@
}
}
-/*
- As all the register will only be made displayable to the root
- user ( via printk ) or checking if the uid of the user is 0 from
- the /proc filesystem please god this will be secure enough DJB.
- The lines are given one at a time so as not to chew stack space in
- printk on a crash & also for the proc filesystem when you get
- 0 returned you know you've got all the lines
- */
-
-static int sprintf_regs(int line, char *buff, struct task_struct *task, struct pt_regs *regs)
-{
- int linelen=0;
- int regno,chaincnt;
- u32 backchain,prev_backchain,endchain;
- u32 ksp = 0;
- char *mode = "???";
-
- enum
- {
- sp_linefeed,
- sp_psw,
- sp_ksp,
- sp_gprs,
- sp_gprs1,
- sp_gprs2,
- sp_gprs3,
- sp_gprs4,
- sp_acrs,
- sp_acrs1,
- sp_acrs2,
- sp_acrs3,
- sp_acrs4,
- sp_kern_backchain,
- sp_kern_backchain1
- };
-
- if (task)
- ksp = task->thread.ksp;
- if (regs && !(regs->psw.mask & PSW_PROBLEM_STATE))
- ksp = regs->gprs[15];
-
- if (regs)
- mode = (regs->psw.mask & PSW_PROBLEM_STATE)?
- "User" : "Kernel";
-
- switch(line)
- {
- case sp_linefeed:
- linelen=sprintf(buff,"\n");
- break;
- case sp_psw:
- if(regs)
- linelen=sprintf(buff, "%s PSW: %08lx %08lx %s\n", mode,
- (unsigned long) regs->psw.mask,
- (unsigned long) regs->psw.addr,
- print_tainted());
- else
- linelen=sprintf(buff,"pt_regs=NULL some info unavailable\n");
- break;
- case sp_ksp:
- linelen=sprintf(&buff[linelen],
- "task: %08x ksp: %08x pt_regs: %08x\n",
- (addr_t)task, (addr_t)ksp, (addr_t)regs);
- break;
- case sp_gprs:
- if(regs)
- linelen=sprintf(buff, "%s GPRS:\n", mode);
- break;
- case sp_gprs1 ... sp_gprs4:
- if(regs)
- {
- regno=(line-sp_gprs1)*4;
- linelen=sprintf(buff,"%08x %08x %08x %08x\n",
- regs->gprs[regno],
- regs->gprs[regno+1],
- regs->gprs[regno+2],
- regs->gprs[regno+3]);
- }
- break;
- case sp_acrs:
- if(regs)
- linelen=sprintf(buff, "%s ACRS:\n", mode);
- break;
- case sp_acrs1 ... sp_acrs4:
- if(regs)
- {
- regno=(line-sp_acrs1)*4;
- linelen=sprintf(buff,"%08x %08x %08x %08x\n",
- regs->acrs[regno],
- regs->acrs[regno+1],
- regs->acrs[regno+2],
- regs->acrs[regno+3]);
- }
- break;
- case sp_kern_backchain:
- if (regs && (regs->psw.mask & PSW_PROBLEM_STATE))
- break;
- if (ksp)
- linelen=sprintf(buff, "Kernel BackChain CallChain\n");
- break;
- default:
- if (ksp)
- {
-
- backchain=ksp&PSW_ADDR_MASK;
- endchain=((backchain&(-8192))+8192);
- prev_backchain=backchain-1;
- line-=sp_kern_backchain1;
- for(chaincnt=0;;chaincnt++)
- {
- if((backchain==0)||(backchain>=endchain)
- ||(chaincnt>=8)||(prev_backchain>=backchain))
- break;
- if(chaincnt==line)
- {
- linelen+=sprintf(&buff[linelen]," %08x [<%08lx>]\n",
- backchain,
- *(u32 *)(backchain+56)&PSW_ADDR_MASK);
- break;
- }
- prev_backchain=backchain;
- backchain=(*((u32 *)backchain))&PSW_ADDR_MASK;
- }
- }
- }
- return(linelen);
-}
-
+extern void show_registers(struct pt_regs *regs);
+extern void show_trace(unsigned long *sp);
void show_regs(struct pt_regs *regs)
{
- char buff[80];
- int i, line;
+ struct task_struct *tsk = current;
- printk("CPU: %d\n",smp_processor_id());
- printk("Process %s (pid: %d, stackpage=%08X)\n",
- current->comm, current->pid, 4096+(addr_t)current);
-
- for (line = 0; sprintf_regs(line, buff, current, regs); line++)
- printk(buff);
-
- if (regs->psw.mask & PSW_PROBLEM_STATE)
- {
- printk("User Code:\n");
- memset(buff, 0, 20);
- copy_from_user(buff,
- (char *) (regs->psw.addr & PSW_ADDR_MASK), 20);
- for (i = 0; i < 20; i++)
- printk("%02x ", buff[i]);
- printk("\n");
- }
+ printk("CPU: %d %s\n", tsk->processor, print_tainted());
+ printk("Process %s (pid: %d, task: %08lx, ksp: %08x)\n",
+ current->comm, current->pid, (unsigned long) tsk,
+ tsk->thread.ksp);
+
+ show_registers(regs);
+ /* Show stack backtrace if pt_regs is from kernel mode */
+ if (!(regs->psw.mask & PSW_PROBLEM_STATE))
+ show_trace((unsigned long *) regs->gprs[15]);
}
-char *task_show_regs(struct task_struct *task, char *buffer)
-{
- int line, len;
-
- for (line = 0; ; line++)
- {
- len = sprintf_regs(line, buffer, task, task->thread.regs);
- if (!len) break;
- buffer += len;
- }
- return buffer;
-}
-
-
int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
int clone_arg = flags | CLONE_VM;
@@ -301,16 +152,10 @@
unsigned long gprs[10]; /* gprs 6 -15 */
unsigned long fprs[4]; /* fpr 4 and 6 */
unsigned long empty[4];
-#if CONFIG_REMOTE_DEBUG
- struct gdb_pt_regs childregs;
-#else
struct pt_regs childregs;
-#endif
} *frame;
frame = (struct stack_frame *) (2*PAGE_SIZE + (unsigned long) p) -1;
- frame = (struct stack_frame *) (((unsigned long) frame)&-8L);
- p->thread.regs = (struct pt_regs *)&frame->childregs;
p->thread.ksp = (unsigned long) frame;
memcpy(&frame->childregs,regs,sizeof(struct pt_regs));
frame->childregs.gprs[15] = new_stackp;
Index: ptrace.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/ptrace.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ptrace.c 9 Apr 2002 17:03:17 -0000 1.2
+++ ptrace.c 10 Jun 2003 01:46:09 -0000 1.3
@@ -41,7 +41,7 @@
void FixPerRegisters(struct task_struct *task)
{
- struct pt_regs *regs = task->thread.regs;
+ struct pt_regs *regs = __KSTK_PTREGS(task);
per_struct *per_info=
(per_struct *)&task->thread.per_info;
@@ -155,7 +155,7 @@
mask=0xffffffff;
if(useraddr<PT_FPC)
{
- realuseraddr=(addr_t)&(((u8 *)task->thread.regs)[useraddr]);
+ realuseraddr=((addr_t) __KSTK_PTREGS(task)) + useraddr;
if(useraddr<PT_PSWMASK)
{
copymax=PT_PSWMASK;
@@ -217,7 +217,6 @@
{
struct task_struct *child;
int ret = -EPERM;
- unsigned long flags;
unsigned long tmp;
int copied;
ptrace_area parea;
Index: s390_ksyms.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/s390_ksyms.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- s390_ksyms.c 9 Apr 2002 17:03:17 -0000 1.2
+++ s390_ksyms.c 10 Jun 2003 01:46:09 -0000 1.3
@@ -18,8 +18,9 @@
EXPORT_SYMBOL_NOVERS(_oi_bitmap);
EXPORT_SYMBOL_NOVERS(_ni_bitmap);
EXPORT_SYMBOL_NOVERS(_zb_findmap);
-EXPORT_SYMBOL_NOVERS(__copy_from_user_fixup);
-EXPORT_SYMBOL_NOVERS(__copy_to_user_fixup);
+EXPORT_SYMBOL_NOVERS(__copy_from_user_asm);
+EXPORT_SYMBOL_NOVERS(__copy_to_user_asm);
+EXPORT_SYMBOL_NOVERS(__clear_user_asm);
/*
* semaphore ops
@@ -35,6 +36,7 @@
EXPORT_SYMBOL_NOVERS(memcmp);
EXPORT_SYMBOL_NOVERS(memset);
EXPORT_SYMBOL_NOVERS(memmove);
+EXPORT_SYMBOL_NOVERS(memscan);
EXPORT_SYMBOL_NOVERS(strlen);
EXPORT_SYMBOL_NOVERS(strchr);
EXPORT_SYMBOL_NOVERS(strcmp);
@@ -57,5 +59,3 @@
EXPORT_SYMBOL(console_mode);
EXPORT_SYMBOL(console_device);
EXPORT_SYMBOL_NOVERS(do_call_softirq);
-
-
Index: setup.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/setup.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- setup.c 9 Apr 2002 17:03:17 -0000 1.2
+++ setup.c 10 Jun 2003 01:46:09 -0000 1.3
@@ -439,6 +439,7 @@
lowcore->kernel_stack = ((__u32) &init_task_union) + 8192;
lowcore->async_stack = (__u32)
__alloc_bootmem(2*PAGE_SIZE, 2*PAGE_SIZE, 0) + 8192;
+ lowcore->jiffy_timer = -1LL;
set_prefix((__u32) lowcore);
cpu_init();
boot_cpu_addr = S390_lowcore.cpu_data.cpu_addr;
@@ -485,15 +486,16 @@
static int show_cpuinfo(struct seq_file *m, void *v)
{
struct cpuinfo_S390 *cpuinfo;
- unsigned n = v;
+ unsigned long n = (unsigned long) v - 1;
- if (!n--) {
+ if (!n) {
seq_printf(m, "vendor_id : IBM/S390\n"
"# processors : %i\n"
"bogomips per cpu: %lu.%02lu\n",
smp_num_cpus, loops_per_jiffy/(500000/HZ),
(loops_per_jiffy/(5000/HZ))%100);
- } else if (cpu_online_map & (1 << n)) {
+ }
+ if (cpu_online_map & (1 << n)) {
cpuinfo = &safe_get_cpu_lowcore(n).cpu_data;
seq_printf(m, "processor %i: "
"version = %02X, "
@@ -508,7 +510,7 @@
static void *c_start(struct seq_file *m, loff_t *pos)
{
- return *pos <= NR_CPUS ? (void)(*pos+1) : NULL;
+ return *pos <= NR_CPUS ? (void *)((unsigned long) *pos + 1) : NULL;
}
static void *c_next(struct seq_file *m, void *v, loff_t *pos)
{
Index: smp.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/smp.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- smp.c 10 Jun 2003 01:13:15 -0000 1.3
+++ smp.c 10 Jun 2003 01:46:09 -0000 1.4
@@ -49,9 +49,6 @@
static int max_cpus = NR_CPUS; /* Setup configured maximum number of CPUs to activate */
int smp_num_cpus;
struct _lowcore *lowcore_ptr[NR_CPUS];
-unsigned int prof_multiplier[NR_CPUS];
-unsigned int prof_old_multiplier[NR_CPUS];
-unsigned int prof_counter[NR_CPUS];
cycles_t cacheflush_time=0;
int smp_threads_ready=0; /* Set when the idlers are all forked. */
static atomic_t smp_commenced = ATOMIC_INIT(0);
@@ -473,7 +470,7 @@
/*
* Activate a secondary processor.
*/
-extern void init_100hz_timer(void);
+extern void init_cpu_timer(void);
extern int pfault_init(void);
extern int pfault_token(void);
@@ -486,8 +483,8 @@
/* Wait for completion of smp startup */
while (!atomic_read(&smp_commenced))
/* nothing */ ;
- /* init per CPU 100 hz timer */
- init_100hz_timer();
+ /* init per CPU timer */
+ init_cpu_timer();
#ifdef CONFIG_PFAULT
/* Enable pfault pseudo page faults on this cpu. */
pfault_init();
@@ -540,7 +537,7 @@
cpu_lowcore=&get_cpu_lowcore(cpu);
cpu_lowcore->save_area[15] = idle->thread.ksp;
- cpu_lowcore->kernel_stack = (idle->thread.ksp | 8191) + 1;
+ cpu_lowcore->kernel_stack = (__u32) idle + 8192;
__asm__ __volatile__("la 1,%0\n\t"
"stctl 0,15,0(1)\n\t"
"la 1,%1\n\t"
@@ -591,15 +588,7 @@
/*
* Initialize the logical to physical CPU number mapping
- * and the per-CPU profiling counter/multiplier
*/
-
- for (i = 0; i < NR_CPUS; i++) {
- prof_counter[i] = 1;
- prof_old_multiplier[i] = 1;
- prof_multiplier[i] = 1;
- }
-
print_cpu_info(&safe_get_cpu_lowcore(0).cpu_data);
for(i = 0; i < smp_num_cpus; i++)
@@ -646,58 +635,6 @@
int setup_profiling_timer(unsigned int multiplier)
{
return 0;
-}
-
-/*
- * Local timer interrupt handler. It does both profiling and
- * process statistics/rescheduling.
- *
- * We do profiling in every local tick, statistics/rescheduling
- * happen only every 'profiling multiplier' ticks. The default
- * multiplier is 1 and it can be changed by writing the new multiplier
- * value into /proc/profile.
- */
-
-void smp_local_timer_interrupt(struct pt_regs * regs)
-{
- int user = (user_mode(regs) != 0);
- int cpu = smp_processor_id();
-
- /*
- * The profiling function is SMP safe. (nothing can mess
- * around with "current", and the profiling counters are
- * updated with atomic operations). This is especially
- * useful with a profiling multiplier != 1
- */
- if (!user_mode(regs))
- s390_do_profile(regs->psw.addr);
-
- if (!--prof_counter[cpu]) {
-
- /*
- * The multiplier may have changed since the last time we got
- * to this point as a result of the user writing to
- * /proc/profile. In this case we need to adjust the APIC
- * timer accordingly.
- *
- * Interrupts are already masked off at this point.
- */
- prof_counter[cpu] = prof_multiplier[cpu];
- if (prof_counter[cpu] != prof_old_multiplier[cpu]) {
- /* FIXME setup_APIC_timer(calibration_result/prof_counter[cpu]
- ); */
- prof_old_multiplier[cpu] = prof_counter[cpu];
- }
-
- /*
- * After doing the above, we need to make like
- * a normal interrupt - otherwise timer interrupts
- * ignore the global interrupt lock, which is the
- * WrongThing (tm) to do.
- */
-
- update_process_times(user);
- }
}
EXPORT_SYMBOL(lowcore_ptr);
Index: time.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/time.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- time.c 9 Apr 2002 17:03:17 -0000 1.2
+++ time.c 10 Jun 2003 01:46:09 -0000 1.3
@@ -33,19 +33,18 @@
#include <asm/irq.h>
-
/* change this if you have some constant time drift */
-#define USECS_PER_JIFFY ((signed long)1000000/HZ)
-#define CLK_TICKS_PER_JIFFY ((signed long)USECS_PER_JIFFY<<12)
+#define USECS_PER_JIFFY ((unsigned long) 1000000/HZ)
+#define CLK_TICKS_PER_JIFFY ((unsigned long) USECS_PER_JIFFY << 12)
#define TICK_SIZE tick
-static uint64_t init_timer_cc, last_timer_cc;
+static uint64_t init_timer_cc;
extern rwlock_t xtime_lock;
extern unsigned long wall_jiffies;
-void tod_to_timeval(uint64_t todval, struct timeval *xtime)
+void tod_to_timeval(__u64 todval, struct timeval *xtime)
{
const int high_bit = 0x80000000L;
const int c_f4240 = 0xf4240L;
@@ -79,13 +78,15 @@
: "cc", "memory", "2", "3", "4" );
}
-unsigned long do_gettimeoffset(void)
+static inline unsigned long do_gettimeoffset(void)
{
- __u64 timer_cc;
+ __u64 now;
- asm volatile ("STCK %0" : "=m" (timer_cc));
- /* We require the offset from the previous interrupt */
- return ((unsigned long)((timer_cc - last_timer_cc)>>12));
+ asm ("STCK %0" : "=m" (now));
+ now = (now - init_timer_cc) >> 12;
+ /* We require the offset from the latest update of xtime */
+ now -= (__u64) wall_jiffies*USECS_PER_JIFFY;
+ return (unsigned long) now;
}
/*
@@ -95,15 +96,10 @@
{
unsigned long flags;
unsigned long usec, sec;
- unsigned long lost_ticks;
read_lock_irqsave(&xtime_lock, flags);
- lost_ticks = jiffies - wall_jiffies;
- usec = do_gettimeoffset();
- if (lost_ticks)
- usec +=(USECS_PER_JIFFY*lost_ticks);
sec = xtime.tv_sec;
- usec += xtime.tv_usec;
+ usec = xtime.tv_usec + do_gettimeoffset();
read_unlock_irqrestore(&xtime_lock, flags);
while (usec >= 1000000) {
@@ -149,51 +145,31 @@
extern __u16 boot_cpu_addr;
#endif
-void do_timer_interrupt(struct pt_regs *regs, __u16 error_code)
+static void do_comparator_interrupt(struct pt_regs *regs, __u16 error_code)
{
int cpu = smp_processor_id();
irq_enter(cpu, 0);
- /*
- * reset timer to 10ms minus time already elapsed
- * since timer-interrupt pending
- */
+ /*
+ * set clock comparator for next tick
+ */
+ S390_lowcore.jiffy_timer += CLK_TICKS_PER_JIFFY;
+ asm volatile ("SCKC %0" : : "m" (S390_lowcore.jiffy_timer));
+
#ifdef CONFIG_SMP
- if(S390_lowcore.cpu_data.cpu_addr==boot_cpu_addr) {
+ if (S390_lowcore.cpu_data.cpu_addr == boot_cpu_addr)
write_lock(&xtime_lock);
- last_timer_cc = S390_lowcore.jiffy_timer_cc;
- }
-#else
- last_timer_cc = S390_lowcore.jiffy_timer_cc;
-#endif
- /* set clock comparator */
- S390_lowcore.jiffy_timer_cc += CLK_TICKS_PER_JIFFY;
- asm volatile ("SCKC %0" : : "m" (S390_lowcore.jiffy_timer_cc));
-/*
- * In the SMP case we use the local timer interrupt to do the
- * profiling, except when we simulate SMP mode on a uniprocessor
- * system, in that case we have to call the local interrupt handler.
- */
-#ifdef CONFIG_SMP
- /* when SMP, do smp_local_timer_interrupt for *all* CPUs,
- but only do the rest for the boot CPU */
- smp_local_timer_interrupt(regs);
-#else
- if (!user_mode(regs))
- s390_do_profile(regs->psw.addr);
-#endif
+ update_process_times(user_mode(regs));
-#ifdef CONFIG_SMP
- if(S390_lowcore.cpu_data.cpu_addr==boot_cpu_addr)
-#endif
- {
+ if (S390_lowcore.cpu_data.cpu_addr == boot_cpu_addr) {
do_timer(regs);
-#ifdef CONFIG_SMP
write_unlock(&xtime_lock);
-#endif
}
+#else
+ do_timer(regs);
+#endif
irq_exit(cpu, 0);
}
@@ -201,19 +177,17 @@
/*
* Start the clock comparator on the current CPU
*/
-static long cr0 __attribute__ ((aligned (8)));
-
-void init_100hz_timer(void)
+void init_cpu_timer(void)
{
+ unsigned long cr0;
+
/* allow clock comparator timer interrupt */
asm volatile ("STCTL 0,0,%0" : "=m" (cr0) : : "memory");
cr0 |= 0x800;
asm volatile ("LCTL 0,0,%0" : : "m" (cr0) : "memory");
- /* set clock comparator */
- /* read the TOD clock */
- asm volatile ("STCK %0" : "=m" (S390_lowcore.jiffy_timer_cc));
- S390_lowcore.jiffy_timer_cc += CLK_TICKS_PER_JIFFY;
- asm volatile ("SCKC %0" : : "m" (S390_lowcore.jiffy_timer_cc));
+ S390_lowcore.jiffy_timer = (__u64) jiffies * CLK_TICKS_PER_JIFFY;
+ S390_lowcore.jiffy_timer += init_timer_cc + CLK_TICKS_PER_JIFFY;
+ asm volatile ("SCKC %0" : : "m" (S390_lowcore.jiffy_timer));
}
/*
@@ -222,6 +196,7 @@
*/
void __init time_init(void)
{
+ __u64 set_time_cc;
int cc;
/* kick the TOD clock */
@@ -241,15 +216,16 @@
printk("time_init: TOD clock stopped/non-operational\n");
break;
}
+
+ /* set xtime */
+ set_time_cc = init_timer_cc - 0x8126d60e46000000LL +
+ (0x3c26700LL*1000000*4096);
+ tod_to_timeval(set_time_cc, &xtime);
+
/* request the 0x1004 external interrupt */
- if (register_external_interrupt(0x1004, do_timer_interrupt) != 0)
- panic("Couldn't request external interrupts 0x1004");
- init_100hz_timer();
- init_timer_cc = S390_lowcore.jiffy_timer_cc;
- init_timer_cc -= 0x8126d60e46000000LL -
- (0x3c26700LL*1000000*4096);
- tod_to_timeval(init_timer_cc, &xtime);
+ if (register_external_interrupt(0x1004, do_comparator_interrupt) != 0)
+ panic("Couldn't request external interrupt 0x1004");
- /* Set do_get_fast_time function pointer. */
- do_get_fast_time = do_gettimeofday;
+ /* init CPU timer */
+ init_cpu_timer();
}
Index: traps.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/kernel/traps.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- traps.c 9 Apr 2002 17:03:17 -0000 1.2
+++ traps.c 10 Jun 2003 01:46:09 -0000 1.3
@@ -26,15 +26,13 @@
#include <linux/smp_lock.h>
#include <linux/init.h>
#include <linux/delay.h>
+#include <linux/module.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <asm/atomic.h>
#include <asm/mathemu.h>
-#if CONFIG_REMOTE_DEBUG
-#include <asm/gdb-stub.h>
-#endif
#include <asm/cpcmd.h>
#include <asm/s390_ext.h>
@@ -60,6 +58,203 @@
extern void pfault_interrupt(struct pt_regs *regs, __u16 error_code);
#endif
+int kstack_depth_to_print = 12;
+
+/*
+ * If the address is either in the .text section of the
+ * kernel, or in the vmalloc'ed module regions, it *may*
+ * be the address of a calling routine
+ */
+extern char _stext, _etext;
+
+#ifdef CONFIG_MODULES
+
+extern struct module *module_list;
+extern struct module kernel_module;
+
+static inline int kernel_text_address(unsigned long addr)
+{
+ int retval = 0;
+ struct module *mod;
+
+ if (addr >= (unsigned long) &_stext &&
+ addr <= (unsigned long) &_etext)
+ return 1;
+
+ for (mod = module_list; mod != &kernel_module; mod = mod->next) {
+ /* mod_bound tests for addr being inside the vmalloc'ed
+ * module area. Of course it'd be better to test only
+ * for the .text subset... */
+ if (mod_bound(addr, 0, mod)) {
+ retval = 1;
+ break;
+ }
+ }
+
+ return retval;
+}
+
+#else
+
+static inline int kernel_text_address(unsigned long addr)
+{
+ return (addr >= (unsigned long) &_stext &&
+ addr <= (unsigned long) &_etext);
+}
+
+#endif
+
+void show_trace(unsigned long * stack)
+{
+ unsigned long backchain, low_addr, high_addr, ret_addr;
+ int i;
+
+ if (!stack)
+ stack = (unsigned long*)&stack;
+
+ printk("Call Trace: ");
+ low_addr = ((unsigned long) stack) & PSW_ADDR_MASK;
+ high_addr = (low_addr & (-THREAD_SIZE)) + THREAD_SIZE;
+ /* Skip the first frame (biased stack) */
+ backchain = *((unsigned long *) low_addr) & PSW_ADDR_MASK;
+ /* Print up to 8 lines */
+ for (i = 0; i < 8; i++) {
+ if (backchain < low_addr || backchain >= high_addr)
+ break;
+ ret_addr = *((unsigned long *) (backchain+56)) & PSW_ADDR_MASK;
+ if (!kernel_text_address(ret_addr))
+ break;
+ if (i && ((i % 6) == 0))
+ printk("\n ");
+ printk("[<%08lx>] ", ret_addr);
+ low_addr = backchain;
+ backchain = *((unsigned long *) backchain) & PSW_ADDR_MASK;
+ }
+ printk("\n");
+}
+
+void show_trace_task(struct task_struct *tsk)
+{
+ /*
+ * We can't print the backtrace of a running process. It is
+ * unreliable at best and can cause kernel oopses.
+ */
+ if (task_has_cpu(tsk))
+ return;
+ show_trace((unsigned long *) tsk->thread.ksp);
+}
+
+void show_stack(unsigned long *sp)
+{
+ unsigned long *stack;
+ int i;
+
+ // debugging aid: "show_stack(NULL);" prints the
+ // back trace for this cpu.
+
+ if(sp == NULL)
+ sp = (unsigned long*) &sp;
+
+ stack = sp;
+ for (i = 0; i < kstack_depth_to_print; i++) {
+ if (((addr_t) stack & (THREAD_SIZE-1)) == 0)
+ break;
+ if (i && ((i % 8) == 0))
+ printk("\n ");
+ printk("%08lx ", *stack++);
+ }
+ printk("\n");
+ show_trace(sp);
+}
+
+void show_registers(struct pt_regs *regs)
+{
+ mm_segment_t old_fs;
+ char *mode;
+ int i;
+
+ mode = (regs->psw.mask & PSW_PROBLEM_STATE) ? "User" : "Krnl";
+ printk("%s PSW : %08lx %08lx\n",
+ mode, (unsigned long) regs->psw.mask,
+ (unsigned long) regs->psw.addr);
+ printk("%s GPRS: %08x %08x %08x %08x\n", mode,
+ regs->gprs[0], regs->gprs[1], regs->gprs[2], regs->gprs[3]);
+ printk(" %08x %08x %08x %08x\n",
+ regs->gprs[4], regs->gprs[5], regs->gprs[6], regs->gprs[7]);
+ printk(" %08x %08x %08x %08x\n",
+ regs->gprs[8], regs->gprs[9], regs->gprs[10], regs->gprs[11]);
+ printk(" %08x %08x %08x %08x\n",
+ regs->gprs[12], regs->gprs[13], regs->gprs[14], regs->gprs[15]);
+ printk("%s ACRS: %08x %08x %08x %08x\n", mode,
+ regs->acrs[0], regs->acrs[1], regs->acrs[2], regs->acrs[3]);
+ printk(" %08x %08x %08x %08x\n",
+ regs->acrs[4], regs->acrs[5], regs->acrs[6], regs->acrs[7]);
+ printk(" %08x %08x %08x %08x\n",
+ regs->acrs[8], regs->acrs[9], regs->acrs[10], regs->acrs[11]);
+ printk(" %08x %08x %08x %08x\n",
+ regs->acrs[12], regs->acrs[13], regs->acrs[14], regs->acrs[15]);
+
+ /*
+ * Print the first 20 byte of the instruction stream at the
+ * time of the fault.
+ */
+ old_fs = get_fs();
+ if (regs->psw.mask & PSW_PROBLEM_STATE)
+ set_fs(USER_DS);
+ else
+ set_fs(KERNEL_DS);
+ printk("%s Code: ", mode);
+ for (i = 0; i < 20; i++) {
+ unsigned char c;
+ if (__get_user(c, (char *)(regs->psw.addr + i))) {
+ printk(" Bad PSW.");
+ break;
+ }
+ printk("%02x ", c);
+ }
+ set_fs(old_fs);
+
+ printk("\n");
+}
+
+/* This is called from fs/proc/array.c */
+char *task_show_regs(struct task_struct *task, char *buffer)
+{
+ struct pt_regs *regs;
+
+ regs = __KSTK_PTREGS(task);
+ buffer += sprintf(buffer, "task: %08lx, ksp: %08x\n",
+ (unsigned long) task, task->thread.ksp);
+ buffer += sprintf(buffer, "User PSW : %08lx %08lx\n",
+ (unsigned long) regs->psw.mask,
+ (unsigned long) regs->psw.addr);
+ buffer += sprintf(buffer, "User GPRS: %08x %08x %08x %08x\n",
+ regs->gprs[0], regs->gprs[1],
+ regs->gprs[2], regs->gprs[3]);
+ buffer += sprintf(buffer, " %08x %08x %08x %08x\n",
+ regs->gprs[4], regs->gprs[5],
+ regs->gprs[6], regs->gprs[7]);
+ buffer += sprintf(buffer, " %08x %08x %08x %08x\n",
+ regs->gprs[8], regs->gprs[9],
+ regs->gprs[10], regs->gprs[11]);
+ buffer += sprintf(buffer, " %08x %08x %08x %08x\n",
+ regs->gprs[12], regs->gprs[13],
+ regs->gprs[14], regs->gprs[15]);
+ buffer += sprintf(buffer, "User ACRS: %08x %08x %08x %08x\n",
+ regs->acrs[0], regs->acrs[1],
+ regs->acrs[2], regs->acrs[3]);
+ buffer += sprintf(buffer, " %08x %08x %08x %08x\n",
+ regs->acrs[4], regs->acrs[5],
+ regs->acrs[6], regs->acrs[7]);
+ buffer += sprintf(buffer, " %08x %08x %08x %08x\n",
+ regs->acrs[8], regs->acrs[9],
+ regs->acrs[10], regs->acrs[11]);
+ buffer += sprintf(buffer, " %08x %08x %08x %08x\n",
+ regs->acrs[12], regs->acrs[13],
+ regs->acrs[14], regs->acrs[15]);
+ return buffer;
+}
+
spinlock_t die_lock = SPIN_LOCK_UNLOCKED;
void die(const char * str, struct pt_regs * regs, long err)
@@ -145,7 +340,7 @@
#if CONFIG_REMOTE_DEBUG
if(gdb_stub_initialised)
{
- gdb_stub_handle_exception((struct gdb_pt_regs *)regs,signal);
+ gdb_stub_handle_exception(regs, signal);
return 0;
}
#endif
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:54:24
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/s390
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/s390
Modified Files:
Makefile config.in defconfig vmlinux-shared.lds vmlinux.lds
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: Makefile
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Makefile 9 Apr 2002 17:03:16 -0000 1.2
+++ Makefile 10 Jun 2003 01:46:07 -0000 1.3
@@ -65,3 +65,6 @@
archdep:
@$(MAKEBOOT) dep
+
+install: vmlinux
+ @$(MAKEBOOT) BOOTIMAGE=image install
Index: config.in
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/config.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- config.in 9 Apr 2002 17:03:16 -0000 1.2
+++ config.in 10 Jun 2003 01:46:07 -0000 1.3
@@ -67,9 +67,9 @@
comment 'Kernel hacking'
#bool 'Debug kmalloc/kfree' CONFIG_DEBUG_MALLOC
-if [ "$CONFIG_CTC" = "y" ]; then
- bool 'Remote GDB kernel debugging' CONFIG_REMOTE_DEBUG
-fi
+#if [ "$CONFIG_CTC" = "y" ]; then
+# bool 'Remote GDB kernel debugging' CONFIG_REMOTE_DEBUG
+#fi
bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ
endmenu
Index: defconfig
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/defconfig,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- defconfig 9 Apr 2002 17:03:16 -0000 1.2
+++ defconfig 10 Jun 2003 01:46:07 -0000 1.3
@@ -7,7 +7,7 @@
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-CONFIG_GENERIC_BUST_SPINLOCK=n
+# CONFIG_GENERIC_BUST_SPINLOCK is not set
CONFIG_ARCH_S390=y
#
@@ -103,8 +103,8 @@
#
# S/390 tape hardware support
#
-CONFIG_S390_TAPE_3490=y
-CONFIG_S390_TAPE_3480=y
+CONFIG_S390_TAPE_3490=m
+CONFIG_S390_TAPE_3480=m
#
# Network device drivers
@@ -150,6 +150,7 @@
# CONFIG_IPV6_NETLINK is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -180,12 +181,12 @@
# CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
-# CONFIG_CMS_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
# CONFIG_JBD_DEBUG is not set
@@ -203,7 +204,7 @@
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
# CONFIG_MINIX_FS is not set
-# CONFIG_FREEVXFS_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
Index: vmlinux-shared.lds
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/vmlinux-shared.lds,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- vmlinux-shared.lds 9 Apr 2002 17:03:16 -0000 1.1
+++ vmlinux-shared.lds 10 Jun 2003 01:46:07 -0000 1.2
@@ -13,7 +13,6 @@
*(.fixup)
*(.gnu.warning)
} = 0x0700
- .text.lock : { *(.text.lock) } /* out-of-line lock text */
.rodata : { *(.rodata) }
.kstrtab : { *(.kstrtab) }
Index: vmlinux.lds
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390/vmlinux.lds,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- vmlinux.lds 9 Apr 2002 17:03:16 -0000 1.2
+++ vmlinux.lds 10 Jun 2003 01:46:07 -0000 1.3
@@ -13,7 +13,6 @@
*(.fixup)
*(.gnu.warning)
} = 0x0700
- .text.lock : { *(.text.lock) } /* out-of-line lock text */
.rodata : { *(.rodata) *(.rodata.*) }
.kstrtab : { *(.kstrtab) }
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:53:12
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/ppc
Modified Files:
config.in defconfig
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: config.in
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/config.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- config.in 10 Apr 2002 15:03:55 -0000 1.2
+++ config.in 10 Jun 2003 01:45:59 -0000 1.3
@@ -1,4 +1,4 @@
-# BK Id: SCCS/s.config.in 1.45 11/08/01 07:57:40 paulus
+# BK Id: SCCS/s.config.in 1.47 12/01/01 20:09:06 benh
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/config-language.txt.
@@ -328,6 +328,10 @@
bool 'Support for PMU based PowerMacs' CONFIG_ADB_PMU
if [ "$CONFIG_ADB_PMU" = "y" ]; then
bool ' Power management support for PowerBooks' CONFIG_PMAC_PBOOK
+ if [ "$CONFIG_PMAC_PBOOK" = "y" ]; then
+ define_bool CONFIG_PM y
+ tristate ' APM emulation' CONFIG_PMAC_APM_EMU
+ fi
# made a separate option since backlight may end up beeing used
# on non-powerbook machines (but only on PMU based ones AFAIK)
bool ' Backlight control for LCD screens' CONFIG_PMAC_BACKLIGHT
@@ -352,6 +356,9 @@
# layer is used.
if [ "$CONFIG_INPUT" != "n" ]; then
define_bool CONFIG_MAC_HID y
+ fi
+ if [ "$CONFIG_ADB_CUDA" != "n" ]; then
+ bool 'Support for ANS LCD display' CONFIG_ANSLCD
fi
fi
endmenu
Index: defconfig
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/defconfig,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- defconfig 10 Apr 2002 15:03:55 -0000 1.2
+++ defconfig 10 Jun 2003 01:45:59 -0000 1.3
@@ -4,6 +4,7 @@
# CONFIG_UID16 is not set
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_HAVE_DEC_LOCK=y
#
# Code maturity level options
@@ -119,8 +120,6 @@
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
-CONFIG_NETLINK=y
-# CONFIG_RTNETLINK is not set
# CONFIG_NETLINK_DEV is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
@@ -133,6 +132,7 @@
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
CONFIG_SYN_COOKIES=y
@@ -343,15 +343,11 @@
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NCR53C7xx is not set
-CONFIG_SCSI_NCR53C8XX=y
-CONFIG_SCSI_SYM53C8XX=y
-CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
-CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
-CONFIG_SCSI_NCR53C8XX_SYNC=20
-# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
-# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
-# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
-# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
+CONFIG_SCSI_SYM53C8XX_2=y
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PCI2000 is not set
# CONFIG_SCSI_PCI2220I is not set
@@ -388,7 +384,9 @@
#
# Appletalk devices
#
-# CONFIG_APPLETALK is not set
+# CONFIG_LTPC is not set
+# CONFIG_COPS is not set
+# CONFIG_IPDDP is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
@@ -443,6 +441,7 @@
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_MMIO is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_NET_POCKET is not set
@@ -544,6 +543,7 @@
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
# CONFIG_FB_MATROX_G100 is not set
+# CONFIG_FB_MATROX_I2C is not set
# CONFIG_FB_MATROX_G450 is not set
# CONFIG_FB_MATROX_MULTIHEAD is not set
CONFIG_FB_ATY=y
@@ -597,6 +597,7 @@
CONFIG_MAC_ADBKEYCODES=y
CONFIG_MAC_EMUMOUSEBTN=y
CONFIG_MAC_HID=y
+# CONFIG_ANSLCD is not set
#
# Character devices
@@ -612,7 +613,12 @@
#
# I2C support
#
-# CONFIG_I2C is not set
+CONFIG_I2C=m
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+CONFIG_I2C_KEYWEST=m
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_PROC=m
#
# Mice
@@ -693,11 +699,15 @@
# CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
CONFIG_HFS_FS=m
# CONFIG_BFS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
# CONFIG_UMSDOS_FS is not set
@@ -710,6 +720,7 @@
# CONFIG_RAMFS is not set
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
@@ -734,6 +745,7 @@
# Network File Systems
#
# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_ROOT_NFS is not set
@@ -751,6 +763,8 @@
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+# CONFIG_ZLIB_FS_INFLATE is not set
#
# Partition Types
@@ -818,8 +832,10 @@
# Sound
#
CONFIG_SOUND=m
-CONFIG_DMASOUND_AWACS=m
+CONFIG_DMASOUND_PMAC=m
CONFIG_DMASOUND=m
+CONFIG_I2C=m
+CONFIG_I2C_KEYWEST=m
# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_EMU10K1 is not set
@@ -854,7 +870,6 @@
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_LARGE_CONFIG is not set
#
# USB Controllers
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:53:12
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips/kernel In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/mips/kernel Modified Files: mips_ksyms.c Log Message: DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed) Index: mips_ksyms.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips/kernel/mips_ksyms.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- mips_ksyms.c 10 Apr 2002 14:38:06 -0000 1.2 +++ mips_ksyms.c 10 Jun 2003 01:45:58 -0000 1.3 @@ -51,7 +51,6 @@ EXPORT_SYMBOL_NOVERS(memset); EXPORT_SYMBOL_NOVERS(memcpy); EXPORT_SYMBOL_NOVERS(memmove); -EXPORT_SYMBOL(simple_strtol); EXPORT_SYMBOL_NOVERS(strcat); EXPORT_SYMBOL_NOVERS(strchr); EXPORT_SYMBOL_NOVERS(strlen); |
|
From: Dave A. <ai...@us...> - 2003-06-10 01:53:12
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/i386/boot/compressed In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/i386/boot/compressed Modified Files: Makefile Log Message: DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed) Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/boot/compressed/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Makefile 10 Apr 2002 14:23:20 -0000 1.2 +++ Makefile 10 Jun 2003 01:45:54 -0000 1.3 @@ -32,8 +32,10 @@ head.o: head.S $(CC) $(AFLAGS) -traditional -c head.S +comma := , + misc.o: misc.c - $(CC) $(CFLAGS) -c misc.c + $(CC) $(CFLAGS) -DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) -c misc.c piggy.o: $(SYSTEM) tmppiggy=_tmp_$$$$piggy; \ |
|
From: Dave A. <ai...@us...> - 2003-06-10 01:53:11
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/mips64/kernel In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/mips64/kernel Modified Files: linux32.c mips64_ksyms.c Log Message: DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed) Index: linux32.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips64/kernel/linux32.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- linux32.c 10 Apr 2002 14:43:19 -0000 1.2 +++ linux32.c 10 Jun 2003 01:45:58 -0000 1.3 @@ -1066,7 +1066,7 @@ goto out; ret = read(file, buf, count, &pos); if (ret > 0) - inode_dir_notify(file->f_dentry->d_parent->d_inode, DN_ACCESS); + dnotify_parent(file->f_dentry, DN_ACCESS); out: fput(file); bad_file: @@ -1098,7 +1098,7 @@ ret = write(file, buf, count, &pos); if (ret > 0) - inode_dir_notify(file->f_dentry->d_parent->d_inode, DN_MODIFY); + dnotify_parent(file->f_dentry, DN_MODIFY); out: fput(file); bad_file: Index: mips64_ksyms.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/mips64/kernel/mips64_ksyms.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- mips64_ksyms.c 10 Apr 2002 14:43:19 -0000 1.2 +++ mips64_ksyms.c 10 Jun 2003 01:45:58 -0000 1.3 @@ -48,7 +48,6 @@ EXPORT_SYMBOL_NOVERS(memset); EXPORT_SYMBOL_NOVERS(memcpy); EXPORT_SYMBOL_NOVERS(memmove); -EXPORT_SYMBOL(simple_strtol); EXPORT_SYMBOL_NOVERS(strcat); EXPORT_SYMBOL_NOVERS(strchr); EXPORT_SYMBOL_NOVERS(strlen); |
|
From: Dave A. <ai...@us...> - 2003-06-10 01:53:11
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/i386/mm In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/i386/mm Modified Files: fault.c Log Message: DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed) Index: fault.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/mm/fault.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- fault.c 10 Apr 2002 14:23:22 -0000 1.2 +++ fault.c 10 Jun 2003 01:45:56 -0000 1.3 @@ -27,8 +27,6 @@ extern void die(const char *,struct pt_regs *,long); -extern int console_loglevel; - /* * Ugly, ugly, but the goto's result in better assembly.. */ |
|
From: Dave A. <ai...@us...> - 2003-06-10 01:53:10
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/i386/boot In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/i386/boot Modified Files: setup.S Log Message: DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed) Index: setup.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/boot/setup.S,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- setup.S 10 Apr 2002 14:23:20 -0000 1.2 +++ setup.S 10 Jun 2003 01:45:54 -0000 1.3 @@ -42,6 +42,9 @@ * if CX/DX have been changed in the e801 call and if so use AX/BX . * Michael Miller, April 2001 <mic...@mj...> * + * New A20 code ported from SYSLINUX by H. Peter Anvin. AMD Elan bugfixes + * by Robert Schwebel, December 2001 <ro...@sc...> + * */ #include <linux/config.h> @@ -50,7 +53,8 @@ #include <linux/compile.h> #include <asm/boot.h> #include <asm/e820.h> - +#include <asm/page.h> + /* Signature words to ensure LILO loaded us right */ #define SIG1 0xAA55 #define SIG2 0x5A5A @@ -79,7 +83,7 @@ # This is the setup header, and it must start at %cs:2 (old 0x9020:2) .ascii "HdrS" # header signature - .word 0x0202 # header version number (>= 0x0105) + .word 0x0203 # header version number (>= 0x0105) # or else old loadlin-1.5 will fail) realmode_swtch: .word 0, 0 # default_switch, SETUPSEG start_sys_seg: .word SYSSEG @@ -153,6 +157,10 @@ # can be located anywhere in # low memory 0x10000 or higher. +ramdisk_max: .long __MAXMEM-1 # (Header version 0x0203 or later) + # The highest safe address for + # the contents of an initrd + trampoline: call start_of_setup .space 1024 # End of setup header ##################################################### @@ -646,7 +654,18 @@ # # Enable A20. This is at the very best an annoying procedure. # A20 code ported from SYSLINUX 1.52-1.63 by H. Peter Anvin. +# AMD Elan bug fix by Robert Schwebel. # + +#if defined(CONFIG_MELAN) + movb $0x02, %al # alternate A20 gate + outb %al, $0x92 # this works on SC410/SC520 +a20_elan_wait: + call a20_test + jz a20_elan_wait + jmp a20_done +#endif + A20_TEST_LOOPS = 32 # Iterations per wait A20_ENABLE_LOOPS = 255 # Total loops to try |
|
From: Dave A. <ai...@us...> - 2003-06-10 01:53:09
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ia64/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/ia64/kernel
Modified Files:
time.c
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: time.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ia64/kernel/time.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- time.c 10 Apr 2002 14:27:21 -0000 1.2
+++ time.c 10 Jun 2003 01:45:57 -0000 1.3
@@ -145,9 +145,6 @@
tv->tv_usec = usec;
}
-/* XXX there should be a cleaner way for declaring an alias... */
-asm (".global get_fast_time; get_fast_time = do_gettimeofday");
-
static void
timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:53:09
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/parisc/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/parisc/kernel
Modified Files:
traps.c
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: traps.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/parisc/kernel/traps.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- traps.c 9 Apr 2002 17:07:19 -0000 1.2
+++ traps.c 10 Jun 2003 01:45:58 -0000 1.3
@@ -43,7 +43,6 @@
static inline void console_verbose(void)
{
- extern int console_loglevel;
console_loglevel = 15;
}
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:49:32
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/images In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/ppc/boot/images Modified Files: Makefile Log Message: DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed) Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/images/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Makefile 10 Apr 2002 15:03:59 -0000 1.1 +++ Makefile 10 Jun 2003 01:46:01 -0000 1.2 @@ -9,4 +9,4 @@ gzip -vf9 vmlinux clean: - rm -f sImage vmapus vmlinux.* miboot.image* zImage* zvmlinux.* + rm -f sImage vmapus vmlinux* miboot* zImage* zvmlinux* |
|
From: Dave A. <ai...@us...> - 2003-06-10 01:49:31
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/common
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/ppc/boot/common
Modified Files:
misc-simple.c ns16550.c
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: misc-simple.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/common/misc-simple.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- misc-simple.c 10 Apr 2002 15:03:59 -0000 1.1
+++ misc-simple.c 10 Jun 2003 01:46:00 -0000 1.2
@@ -45,6 +45,15 @@
char *cmd_line = cmd_buf;
unsigned long initrd_start = 0, initrd_end = 0;
+
+/* These values must be variables. If not, the compiler optimizer
+ * will remove some code, causing the size of the code to vary
+ * when these values are zero. This is bad because we first
+ * compile with these zero to determine the size and offsets
+ * in an image, than compile again with these set to the proper
+ * discovered value.
+ */
+unsigned int initrd_offset, initrd_size;
char *zimage_start;
int zimage_size;
@@ -69,7 +78,8 @@
* were relocated to.
*/
puts("loaded at: "); puthex(load_addr);
- puts(" "); puthex((unsigned long)(load_addr + (4*num_words))); puts("\n");
+ puts(" "); puthex((unsigned long)(load_addr + (4*num_words)));
+ puts("\n");
if ( (unsigned long)load_addr != (unsigned long)&start )
{
puts("relocated to: "); puthex((unsigned long)&start);
@@ -82,45 +92,38 @@
the size of the elf header which we strip -- Cort */
zimage_start = (char *)(load_addr - 0x10000 + ZIMAGE_OFFSET);
zimage_size = ZIMAGE_SIZE;
+ initrd_offset = INITRD_OFFSET;
+ initrd_size = INITRD_SIZE;
- if ( INITRD_OFFSET )
- initrd_start = load_addr - 0x10000 + INITRD_OFFSET;
+ if ( initrd_offset )
+ initrd_start = load_addr - 0x10000 + initrd_offset;
else
initrd_start = 0;
- initrd_end = INITRD_SIZE + initrd_start;
+ initrd_end = initrd_size + initrd_start;
- /*
- * Find a place to stick the zimage and initrd and
- * relocate them if we have to. -- Cort
- */
+ /* Relocate the zImage */
avail_ram = (char *)PAGE_ALIGN((unsigned long)_end);
puts("zimage at: "); puthex((unsigned long)zimage_start);
- puts(" "); puthex((unsigned long)(zimage_size+zimage_start)); puts("\n");
- if ( (unsigned long)zimage_start <= 0x00800000 )
- {
- memcpy( (void *)avail_ram, (void *)zimage_start, zimage_size );
- zimage_start = (char *)avail_ram;
- puts("relocated to: "); puthex((unsigned long)zimage_start);
- puts(" ");
- puthex((unsigned long)zimage_size+(unsigned long)zimage_start);
- puts("\n");
+ puts(" "); puthex((unsigned long)(zimage_size+zimage_start));
+ puts("\n");
+ memcpy( (void *)avail_ram, (void *)zimage_start, zimage_size );
+ zimage_start = (char *)avail_ram;
+ puts("relocated to: "); puthex((unsigned long)zimage_start);
+ puts(" ");
+ puthex((unsigned long)zimage_size+(unsigned long)zimage_start);
+ puts("\n");
- /* relocate initrd */
- if ( initrd_start )
- {
- puts("initrd at: "); puthex(initrd_start);
- puts(" "); puthex(initrd_end); puts("\n");
- avail_ram = (char *)PAGE_ALIGN(
- (unsigned long)zimage_size+(unsigned long)zimage_start);
- memcpy ((void *)avail_ram, (void *)initrd_start, INITRD_SIZE );
- initrd_start = (unsigned long)avail_ram;
- initrd_end = initrd_start + INITRD_SIZE;
- puts("relocated to: "); puthex(initrd_start);
- puts(" "); puthex(initrd_end); puts("\n");
- }
- } else if ( initrd_start ) {
+ if ( initrd_start ) {
puts("initrd at: "); puthex(initrd_start);
puts(" "); puthex(initrd_end); puts("\n");
+ /* relocate initrd */
+ avail_ram = (char *)PAGE_ALIGN((unsigned long)zimage_size +
+ (unsigned long)zimage_start);
+ memcpy( (void *)avail_ram, (void *)initrd_start, initrd_size );
+ initrd_start = (unsigned long)avail_ram;
+ initrd_end = initrd_start + initrd_size;
+ puts("relocated to: "); puthex(initrd_start);
+ puts(" "); puthex(initrd_end); puts("\n");
}
avail_ram = (char *)0x00400000;
@@ -161,11 +164,9 @@
puts("\n");
/* mappings on early boot can only handle 16M */
- if ( (int)(cmd_line[0]) > (16<<20))
+ if ( (u32)(cmd_line) > (16<<20))
puts("cmd_line located > 16M\n");
- if ( initrd_start > (16<<20))
- puts("initrd_start located > 16M\n");
-
+
puts("Uncompressing Linux...");
gunzip(0, 0x400000, zimage_start, &zimage_size);
Index: ns16550.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/common/ns16550.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ns16550.c 10 Apr 2002 15:03:59 -0000 1.1
+++ ns16550.c 10 Jun 2003 01:46:00 -0000 1.2
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.ns16550.c 1.9 07/30/01 17:19:40 trini
+ * BK Id: SCCS/s.ns16550.c 1.12 10/08/01 17:16:50 paulus
*/
/*
* COM1 NS16550 support
@@ -10,6 +10,9 @@
#include <linux/serial_reg.h>
#include <asm/serial.h>
+/* Default serial baud rate */
+#define SERIAL_BAUD 9600
+
extern void outb(int port, unsigned char val);
extern unsigned char inb(int port);
extern unsigned long ISA_io;
@@ -46,13 +49,20 @@
outb(com_port + (UART_IER << shift), 0x00);
/* Access baud rate */
outb(com_port + (UART_LCR << shift), 0x80);
-#ifdef CONFIG_SERIAL_CONSOLE_NONSTD
- /* Input clock. */
- outb(com_port + (UART_DLL << shift),
- (BASE_BAUD / CONFIG_SERIAL_CONSOLE_BAUD));
- outb(com_port + (UART_DLM << shift),
- (BASE_BAUD / CONFIG_SERIAL_CONSOLE_BAUD) >> 8);
-#endif
+ /*
+ * Test if serial port is unconfigured.
+ * We assume that no-one uses less than 110 baud or
+ * less than 7 bits per character these days.
+ * -- paulus.
+ */
+ if (inb(com_port + (UART_DLM << shift)) > 4
+ || (inb(com_port + (UART_LCR << shift)) & 2) == 0) {
+ /* Input clock. */
+ outb(com_port + (UART_DLL << shift),
+ (BASE_BAUD / SERIAL_BAUD));
+ outb(com_port + (UART_DLM << shift),
+ (BASE_BAUD / SERIAL_BAUD) >> 8);
+ }
/* 8 data, 1 stop, no parity */
outb(com_port + (UART_LCR << shift), 0x03);
/* RTS/DTR */
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:49:31
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/mbx
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/ppc/boot/mbx
Modified Files:
Makefile misc.c
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: Makefile
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/mbx/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Makefile 10 Apr 2002 15:04:00 -0000 1.1
+++ Makefile 10 Jun 2003 01:46:01 -0000 1.2
@@ -1,4 +1,4 @@
-# BK Id: SCCS/s.Makefile 1.7 06/05/01 20:20:05 paulus
+# BK Id: SCCS/s.Makefile 1.9 10/15/01 10:53:29 trini
#
#
# arch/ppc/mbxboot/Makefile
@@ -73,6 +73,12 @@
-DZIMAGE_SIZE=0 -c -o $@ $*.c
zvmlinux.initrd: $(OBJECTS) $(LIBS) ../images/vmlinux.gz
+#
+# Recompile misc.o again with more 'correct' bogus offsets
+#
+ $(CC) $(CFLAGS) -DINITRD_OFFSET=0x0008c8e3 -DINITRD_SIZE=0x0000111a \
+ -DZIMAGE_OFFSET=0x00018000 -DZIMAGE_SIZE=0x000748e2 \
+ -c -o misc.o misc.c
$(LD) $(ZLINKFLAGS) -o $@.tmp $(OBJECTS) $(LIBS)
$(OBJCOPY) $(OBJCOPY_ARGS) -R .comment \
--add-section=initrd=../images/ramdisk.image.gz \
@@ -88,6 +94,8 @@
--add-section=initrd=../images/ramdisk.image.gz \
--add-section=image=../images/vmlinux.gz \
$@.tmp ../images/$@.embedded
+# Remove zvmlinux and zvmlinux.temp, we have ../images/zvmlinux.embedded
+ rm -f $@.tmp $@
zImage: zvmlinux
ifeq ($(CONFIG_RPXCLASSIC),y)
@@ -104,6 +112,12 @@
endif
zvmlinux: $(OBJECTS) $(LIBS) ../images/vmlinux.gz
+#
+# Recompile misc.o again with more 'correct' bogus offsets
+#
+ $(CC) $(CFLAGS) -DINITRD_OFFSET=0 -DINITRD_SIZE=0 \
+ -DZIMAGE_OFFSET=0x00018000 -DZIMAGE_SIZE=0x000748e2 \
+ -c -o misc.o misc.c
#
# build the boot loader image and then compute the offset into it
# for the kernel image
Index: misc.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/mbx/misc.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- misc.c 10 Apr 2002 15:04:00 -0000 1.1
+++ misc.c 10 Jun 2003 01:46:01 -0000 1.2
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.misc.c 1.13 07/27/01 11:44:37 trini
+ * BK Id: SCCS/s.misc.c 1.15 10/15/01 10:53:29 trini
*/
/*
* Adapted for PowerPC by Gary Thomas
@@ -44,10 +44,6 @@
char *avail_ram;
char *end_avail;
-/* See comment below.....
-*/
-unsigned int initrd_offset, initrd_size;
-
/* Because of the limited amount of memory on embedded, it presents
* loading problems. The biggest is that we load this boot program
* into a relatively low memory address, and the Linux kernel Bss often
@@ -75,14 +71,13 @@
bd_t *hold_residual = &hold_resid_buf;
unsigned long initrd_start = 0, initrd_end = 0;
char *zimage_start;
-int zimage_size;
extern void gunzip(void *, int, unsigned char *, int *);
unsigned long
decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum, bd_t *bp)
{
- int timer;
+ int timer, zimage_size = ZIMAGE_SIZE;
extern unsigned long start;
char *cp, ch;
@@ -93,17 +88,6 @@
serial_init(bp);
#endif
- /* These values must be variables. If not, the compiler optimizer
- * will remove some code, causing the size of the code to vary
- * when these values are zero. This is bad because we first
- * compile with these zero to determine the size and offsets
- * in an image, than compile again with these set to the proper
- * discovered value.....Ya know, we used to read these from the
- * header a long time ago.....
- */
- initrd_offset = INITRD_OFFSET;
- initrd_size = INITRD_SIZE;
-
/* Grab some space for the command line and board info. Since
* we no longer use the ELF header, but it was loaded, grab
* that space.
@@ -154,13 +138,12 @@
/* we have to subtract 0x10000 here to correct for objdump including the
size of the elf header which we strip -- Cort */
zimage_start = (char *)(load_addr - 0x10000 + ZIMAGE_OFFSET);
- zimage_size = ZIMAGE_SIZE;
- if ( initrd_offset )
- initrd_start = load_addr - 0x10000 + initrd_offset;
+ if ( INITRD_OFFSET )
+ initrd_start = load_addr - 0x10000 + INITRD_OFFSET;
else
initrd_start = 0;
- initrd_end = initrd_size + initrd_start;
+ initrd_end = INITRD_SIZE + initrd_start;
/*
* setup avail_ram - this is the first part of ram usable
@@ -201,9 +184,9 @@
if ((unsigned long)initrd_start > 0x01000000) {
memcpy ((void *)PAGE_ALIGN(-PAGE_SIZE+(unsigned long)end_avail-INITRD_SIZE),
(void *)initrd_start,
- initrd_size );
+ INITRD_SIZE );
initrd_start = PAGE_ALIGN(-PAGE_SIZE+(unsigned long)end_avail-INITRD_SIZE);
- initrd_end = initrd_start + initrd_size;
+ initrd_end = initrd_start + INITRD_SIZE;
end_avail = (char *)initrd_start;
puts("relocated to: "); puthex(initrd_start);
puts(" "); puthex(initrd_end); puts("\n");
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:48:31
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/s390x/kernel
Modified Files:
debug.c entry.S init_task.c ioctl32.c linux32.c process.c
ptrace.c s390_ksyms.c setup.c smp.c time.c traps.c wrapper32.S
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: debug.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/debug.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- debug.c 9 Apr 2002 17:03:17 -0000 1.2
+++ debug.c 10 Jun 2003 01:46:13 -0000 1.3
@@ -228,8 +228,10 @@
strncpy(rc->name, name, MIN(strlen(name), (DEBUG_MAX_PROCF_LEN - 1)));
rc->name[MIN(strlen(name), (DEBUG_MAX_PROCF_LEN - 1))] = 0;
memset(rc->views, 0, DEBUG_MAX_VIEWS * sizeof(struct debug_view *));
+#ifdef CONFIG_PROC_FS
memset(rc->proc_entries, 0 ,DEBUG_MAX_VIEWS *
sizeof(struct proc_dir_entry*));
+#endif /* CONFIG_PROC_FS */
atomic_set(&(rc->ref_count), 0);
return rc;
@@ -346,8 +348,10 @@
if (!db_info)
return;
if (atomic_dec_and_test(&db_info->ref_count)) {
+#ifdef DEBUG
printk(KERN_INFO "debug: freeing debug area %p (%s)\n",
db_info, db_info->name);
+#endif
for (i = 0; i < DEBUG_MAX_VIEWS; i++) {
if (db_info->views[i] != NULL)
debug_delete_proc_dir_entry
@@ -541,14 +545,18 @@
debug_info_snapshot = debug_info_copy(debug_info);
if(!debug_info_snapshot){
+#ifdef DEBUG
printk(KERN_ERR "debug_open: debug_info_copy failed (out of mem)\n");
+#endif
rc = -ENOMEM;
goto out;
}
if ((file->private_data =
kmalloc(sizeof(file_private_info_t), GFP_ATOMIC)) == 0) {
+#ifdef DEBUG
printk(KERN_ERR "debug_open: kmalloc failed\n");
+#endif
debug_info_free(debug_info_snapshot);
rc = -ENOMEM;
goto out;
@@ -602,6 +610,7 @@
{
struct proc_dir_entry *rc = NULL;
+#ifdef CONFIG_PROC_FS
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,98))
const char *fn = name;
int len;
@@ -634,6 +643,7 @@
#endif
out:
+#endif /* CONFIG_PROC_FS */
return rc;
}
@@ -646,12 +656,14 @@
(struct proc_dir_entry *root, struct proc_dir_entry *proc_entry)
{
+#ifdef CONFIG_PROC_FS
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,98))
proc_unregister(root, proc_entry->low_ino);
kfree(proc_entry);
#else
remove_proc_entry(proc_entry->name, root);
#endif
+#endif /* CONFIG_PROC_FS */
}
/*
@@ -677,9 +689,11 @@
goto out;
debug_register_view(rc, &debug_level_view);
debug_register_view(rc, &debug_flush_view);
+#ifdef DEBUG
printk(KERN_INFO
"debug: reserved %d areas of %d pages for debugging %s\n",
nr_areas, 1 << page_order, rc->name);
+#endif
out:
if (rc == NULL){
printk(KERN_ERR "debug: debug_register failed for %s\n",name);
@@ -699,7 +713,9 @@
if (!id)
goto out;
down(&debug_lock);
+#ifdef DEBUG
printk(KERN_INFO "debug: unregistering %s\n", id->name);
+#endif
debug_info_put(id);
up(&debug_lock);
@@ -906,11 +922,13 @@
down(&debug_lock);
if (!initialized) {
+#ifdef CONFIG_PROC_FS
debug_proc_root_entry =
debug_create_proc_dir_entry(&proc_root, DEBUG_DIR_ROOT,
S_IFDIR | S_IRUGO | S_IXUGO
| S_IWUSR | S_IWGRP, NULL,
NULL);
+#endif /* CONFIG_PROC_FS */
printk(KERN_INFO "debug: Initialization complete\n");
initialized = 1;
}
@@ -1271,7 +1289,9 @@
#ifdef DEBUG
printk("debug_cleanup_module: \n");
#endif
+#ifdef CONFIG_PROC_FS
debug_delete_proc_dir_entry(&proc_root, debug_proc_root_entry);
+#endif /* CONFIG_PROC_FS */
return;
}
Index: entry.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/entry.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- entry.S 9 Apr 2002 17:03:17 -0000 1.2
+++ entry.S 10 Jun 2003 01:46:13 -0000 1.3
@@ -79,7 +79,7 @@
sigpending = 16
need_resched = 32
tsk_ptrace = 40
-processor = 92
+processor = 88
/*
* Register usage in interrupt handlers:
Index: init_task.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/init_task.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- init_task.c 25 Feb 2001 23:15:23 -0000 1.1.1.1
+++ init_task.c 10 Jun 2003 01:46:13 -0000 1.2
@@ -12,7 +12,6 @@
#include <asm/uaccess.h>
#include <asm/pgtable.h>
-static struct vm_area_struct init_mmap = INIT_MMAP;
static struct fs_struct init_fs = INIT_FS;
static struct files_struct init_files = INIT_FILES;
static struct signal_struct init_signals = INIT_SIGNALS;
Index: ioctl32.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/ioctl32.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ioctl32.c 9 Apr 2002 17:03:17 -0000 1.2
+++ ioctl32.c 10 Jun 2003 01:46:13 -0000 1.3
@@ -24,6 +24,7 @@
#include <linux/route.h>
#include <linux/ext2_fs.h>
#include <linux/hdreg.h>
+#include <linux/if_bonding.h>
#include <asm/types.h>
#include <asm/uaccess.h>
#include <asm/dasd.h>
@@ -195,6 +196,58 @@
out:
if(ifc.ifc_buf != NULL)
kfree (ifc.ifc_buf);
+ return err;
+}
+
+static int bond_ioctl(unsigned long fd, unsigned int cmd, unsigned long arg)
+{
+ struct ifreq ifr;
+ mm_segment_t old_fs;
+ int err, len;
+ u32 data;
+
+ if (copy_from_user(&ifr, (struct ifreq32 *)arg, sizeof(struct ifreq32)))
+ return -EFAULT;
+ ifr.ifr_data = (__kernel_caddr_t)get_free_page(GFP_KERNEL);
+ if (!ifr.ifr_data)
+ return -EAGAIN;
+
+ switch (cmd) {
+ case SIOCBONDENSLAVE:
+ case SIOCBONDRELEASE:
+ case SIOCBONDSETHWADDR:
+ case SIOCBONDCHANGEACTIVE:
+ len = IFNAMSIZ * sizeof(char);
+ break;
+ case SIOCBONDSLAVEINFOQUERY:
+ len = sizeof(struct ifslave);
+ break;
+ case SIOCBONDINFOQUERY:
+ len = sizeof(struct ifbond);
+ break;
+ default:
+ err = -EINVAL;
+ goto out;
+ };
+
+ __get_user(data, &(((struct ifreq32 *)arg)->ifr_ifru.ifru_data));
+ if (copy_from_user(ifr.ifr_data, (char *)A(data), len)) {
+ err = -EFAULT;
+ goto out;
+ }
+
+ old_fs = get_fs();
+ set_fs (KERNEL_DS);
+ err = sys_ioctl (fd, cmd, (unsigned long)&ifr);
+ set_fs (old_fs);
+ if (!err) {
+ len = copy_to_user((char *)A(data), ifr.ifr_data, len);
+ if (len)
+ err = -EFAULT;
+ }
+
+out:
+ free_page((unsigned long)ifr.ifr_data);
return err;
}
Index: linux32.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/linux32.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux32.c 9 Apr 2002 17:03:17 -0000 1.2
+++ linux32.c 10 Jun 2003 01:46:13 -0000 1.3
@@ -897,24 +897,24 @@
return sys32_fcntl(fd, cmd, arg);
}
-struct mem_dqblk32 {
+struct dqblk32 {
+ __u32 dqb_bhardlimit;
+ __u32 dqb_bsoftlimit;
+ __u32 dqb_curblocks;
__u32 dqb_ihardlimit;
__u32 dqb_isoftlimit;
__u32 dqb_curinodes;
- __u32 dqb_bhardlimit;
- __u32 dqb_bsoftlimit;
- __u64 dqb_curspace;
__kernel_time_t32 dqb_btime;
__kernel_time_t32 dqb_itime;
};
-extern asmlinkage long sys_quotactl(int cmd, const char *special, int id, __kernel_caddr_t addr);
+extern asmlinkage int sys_quotactl(int cmd, const char *special, int id, caddr_t addr);
asmlinkage int sys32_quotactl(int cmd, const char *special, int id, unsigned long addr)
{
int cmds = cmd >> SUBCMDSHIFT;
int err;
- struct mem_dqblk d;
+ struct dqblk d;
mm_segment_t old_fs;
char *spec;
@@ -924,32 +924,32 @@
case Q_SETQUOTA:
case Q_SETUSE:
case Q_SETQLIM:
- if (copy_from_user (&d, (struct mem_dqblk32 *)addr,
- sizeof (struct mem_dqblk32)))
+ if (copy_from_user (&d, (struct dqblk32 *)addr,
+ sizeof (struct dqblk32)))
return -EFAULT;
- d.dqb_itime = ((struct mem_dqblk32 *)&d)->dqb_itime;
- d.dqb_btime = ((struct mem_dqblk32 *)&d)->dqb_btime;
+ d.dqb_itime = ((struct dqblk32 *)&d)->dqb_itime;
+ d.dqb_btime = ((struct dqblk32 *)&d)->dqb_btime;
break;
default:
return sys_quotactl(cmd, special,
- id, (__kernel_caddr_t)addr);
+ id, (caddr_t)addr);
}
spec = getname (special);
err = PTR_ERR(spec);
if (IS_ERR(spec)) return err;
old_fs = get_fs ();
set_fs (KERNEL_DS);
- err = sys_quotactl(cmd, (const char *)spec, id, (__kernel_caddr_t)&d);
+ err = sys_quotactl(cmd, (const char *)spec, id, (caddr_t)&d);
set_fs (old_fs);
putname (spec);
if (err)
return err;
if (cmds == Q_GETQUOTA) {
__kernel_time_t b = d.dqb_btime, i = d.dqb_itime;
- ((struct mem_dqblk32 *)&d)->dqb_itime = i;
- ((struct mem_dqblk32 *)&d)->dqb_btime = b;
- if (copy_to_user ((struct mem_dqblk32 *)addr, &d,
- sizeof (struct mem_dqblk32)))
+ ((struct dqblk32 *)&d)->dqb_itime = i;
+ ((struct dqblk32 *)&d)->dqb_btime = b;
+ if (copy_to_user ((struct dqblk32 *)addr, &d,
+ sizeof (struct dqblk32)))
return -EFAULT;
}
return 0;
Index: process.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/process.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- process.c 9 Apr 2002 17:03:18 -0000 1.2
+++ process.c 10 Jun 2003 01:46:14 -0000 1.3
@@ -75,171 +75,22 @@
}
}
-/*
- As all the register will only be made displayable to the root
- user ( via printk ) or checking if the uid of the user is 0 from
- the /proc filesystem please god this will be secure enough DJB.
- The lines are given one at a time so as not to chew stack space in
- printk on a crash & also for the proc filesystem when you get
- 0 returned you know you've got all the lines
- */
-
-static int sprintf_regs(int line, char *buff, struct task_struct *task, struct pt_regs *regs)
-{
- int linelen=0;
- int regno,chaincnt;
- u64 backchain,prev_backchain,endchain;
- u64 ksp = 0;
- char *mode = "???";
-
- enum
- {
- sp_linefeed,
- sp_psw,
- sp_ksp,
- sp_gprs,
- sp_gprs1,
- sp_gprs2,
- sp_gprs3,
- sp_gprs4,
- sp_gprs5,
- sp_gprs6,
- sp_gprs7,
- sp_gprs8,
- sp_acrs,
- sp_acrs1,
- sp_acrs2,
- sp_acrs3,
- sp_acrs4,
- sp_kern_backchain,
- sp_kern_backchain1
- };
-
- if (task)
- ksp = task->thread.ksp;
- if (regs && !(regs->psw.mask & PSW_PROBLEM_STATE))
- ksp = regs->gprs[15];
-
- if (regs)
- mode = (regs->psw.mask & PSW_PROBLEM_STATE)?
- "User" : "Kernel";
-
- switch(line)
- {
- case sp_linefeed:
- linelen=sprintf(buff,"\n");
- break;
- case sp_psw:
- if(regs)
- linelen=sprintf(buff, "%s PSW: %016lx %016lx %s\n", mode,
- (unsigned long) regs->psw.mask,
- (unsigned long) regs->psw.addr,
- print_tainted());
- else
- linelen=sprintf(buff,"pt_regs=NULL some info unavailable\n");
- break;
- case sp_ksp:
- linelen=sprintf(&buff[linelen],
- "task: %016lx ksp: %016lx pt_regs: %016lx\n",
- (addr_t)task, (addr_t)ksp, (addr_t)regs);
- break;
- case sp_gprs:
- if(regs)
- linelen=sprintf(buff, "%s GPRS:\n", mode);
- break;
- case sp_gprs1 ... sp_gprs8:
- if(regs)
- {
- regno=(line-sp_gprs1)*2;
- linelen = sprintf(buff,"%016lx %016lx\n",
- regs->gprs[regno],
- regs->gprs[regno+1]);
- }
- break;
- case sp_acrs:
- if(regs)
- linelen=sprintf(buff, "%s ACRS:\n", mode);
- break;
- case sp_acrs1 ... sp_acrs4:
- if(regs)
- {
- regno=(line-sp_acrs1)*4;
- linelen=sprintf(buff,"%08x %08x %08x %08x\n",
- regs->acrs[regno],
- regs->acrs[regno+1],
- regs->acrs[regno+2],
- regs->acrs[regno+3]);
- }
- break;
- case sp_kern_backchain:
- if (regs && (regs->psw.mask & PSW_PROBLEM_STATE))
- break;
- if (ksp)
- linelen=sprintf(buff, "Kernel BackChain CallChain\n");
- break;
- default:
- if (ksp)
- {
-
- backchain=ksp&PSW_ADDR_MASK;
- endchain=((backchain&(-THREAD_SIZE))+THREAD_SIZE);
- prev_backchain=backchain-1;
- line-=sp_kern_backchain1;
- for(chaincnt=0;;chaincnt++)
- {
- if((backchain==0)||(backchain>=endchain)
- ||(chaincnt>=8)||(prev_backchain>=backchain))
- break;
- if(chaincnt==line)
- {
- linelen+=sprintf(&buff[linelen]," %016lx [<%016lx>]\n",
- backchain,
- *(u64 *)(backchain+112)&PSW_ADDR_MASK);
- break;
- }
- prev_backchain=backchain;
- backchain=(*((u64 *)backchain))&PSW_ADDR_MASK;
- }
- }
- }
- return(linelen);
-}
+extern void show_registers(struct pt_regs *regs);
+extern void show_trace(unsigned long *sp);
void show_regs(struct pt_regs *regs)
{
- char buff[80];
- int i, line;
-
- printk("CPU: %d\n",smp_processor_id());
- printk("Process %s (pid: %d, stackpage=%016lX)\n",
- current->comm, current->pid, 4096+(addr_t)current);
-
- for (line = 0; sprintf_regs(line, buff, current, regs); line++)
- printk(buff);
-
- if (regs->psw.mask & PSW_PROBLEM_STATE)
- {
- printk("User Code:\n");
- memset(buff, 0, 20);
- copy_from_user(buff,
- (char *) (regs->psw.addr & PSW_ADDR_MASK), 20);
- for (i = 0; i < 20; i++)
- printk("%02x ", buff[i]);
- printk("\n");
- }
-}
-
-char *task_show_regs(struct task_struct *task, char *buffer)
-{
- int line, len;
+ struct task_struct *tsk = current;
- for (line = 0; ; line++)
- {
- len = sprintf_regs(line, buffer, task, NULL);
- if (!len) break;
- buffer += len;
- }
- return buffer;
+ printk("CPU: %d %s\n", tsk->processor, print_tainted());
+ printk("Process %s (pid: %d, task: %016lx, ksp: %016lx)\n",
+ current->comm, current->pid, (unsigned long) tsk,
+ tsk->thread.ksp);
+
+ show_registers(regs);
+ /* Show stack backtrace if pt_regs is from kernel mode */
+ if (!(regs->psw.mask & PSW_PROBLEM_STATE))
+ show_trace((unsigned long *) regs->gprs[15]);
}
int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
@@ -301,16 +152,10 @@
unsigned long gprs[10]; /* gprs 6 -15 */
unsigned long fprs[2]; /* fpr 4 and 6 */
unsigned long empty[2];
-#if CONFIG_REMOTE_DEBUG
- struct gdb_pt_regs childregs;
-#else
struct pt_regs childregs;
-#endif
} *frame;
frame = (struct stack_frame *) (4*PAGE_SIZE + (unsigned long) p) -1;
- frame = (struct stack_frame *) (((unsigned long) frame)&-8L);
- p->thread.regs = &frame->childregs;
p->thread.ksp = (unsigned long) frame;
frame->childregs = *regs;
frame->childregs.gprs[15] = new_stackp;
Index: ptrace.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/ptrace.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ptrace.c 9 Apr 2002 17:03:18 -0000 1.2
+++ ptrace.c 10 Jun 2003 01:46:14 -0000 1.3
@@ -41,7 +41,7 @@
void FixPerRegisters(struct task_struct *task)
{
- struct pt_regs *regs = task->thread.regs;
+ struct pt_regs *regs = __KSTK_PTREGS(task);
per_struct *per_info=
(per_struct *)&task->thread.per_info;
@@ -169,7 +169,7 @@
mask=PSW_ADDR_MASK;
if(useraddr<PT_FPC)
{
- realuseraddr=(addr_t)&(((u8 *)task->thread.regs)[useraddr]);
+ realuseraddr=((addr_t) __KSTK_PTREGS(task)) + useraddr;
if(useraddr<PT_PSWMASK)
{
copymax=PT_PSWMASK;
Index: s390_ksyms.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/s390_ksyms.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- s390_ksyms.c 9 Apr 2002 17:03:18 -0000 1.2
+++ s390_ksyms.c 10 Jun 2003 01:46:14 -0000 1.3
@@ -21,8 +21,9 @@
EXPORT_SYMBOL_NOVERS(_oi_bitmap);
EXPORT_SYMBOL_NOVERS(_ni_bitmap);
EXPORT_SYMBOL_NOVERS(_zb_findmap);
-EXPORT_SYMBOL_NOVERS(__copy_from_user_fixup);
-EXPORT_SYMBOL_NOVERS(__copy_to_user_fixup);
+EXPORT_SYMBOL_NOVERS(__copy_from_user_asm);
+EXPORT_SYMBOL_NOVERS(__copy_to_user_asm);
+EXPORT_SYMBOL_NOVERS(__clear_user_asm);
/*
* semaphore ops
@@ -38,6 +39,7 @@
EXPORT_SYMBOL_NOVERS(memcmp);
EXPORT_SYMBOL_NOVERS(memset);
EXPORT_SYMBOL_NOVERS(memmove);
+EXPORT_SYMBOL_NOVERS(memscan);
EXPORT_SYMBOL_NOVERS(strlen);
EXPORT_SYMBOL_NOVERS(strchr);
EXPORT_SYMBOL_NOVERS(strcmp);
@@ -67,4 +69,3 @@
EXPORT_SYMBOL(console_mode);
EXPORT_SYMBOL(console_device);
EXPORT_SYMBOL_NOVERS(do_call_softirq);
-
Index: setup.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/setup.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- setup.c 9 Apr 2002 17:03:18 -0000 1.2
+++ setup.c 10 Jun 2003 01:46:14 -0000 1.3
@@ -425,9 +425,10 @@
lowcore->io_new_psw.mask = _IO_PSW_MASK;
lowcore->io_new_psw.addr = (addr_t) &io_int_handler;
lowcore->ipl_device = S390_lowcore.ipl_device;
- lowcore->kernel_stack = ((__u32) &init_task_union) + 16384;
+ lowcore->kernel_stack = ((__u64) &init_task_union) + 16384;
lowcore->async_stack = (__u64)
__alloc_bootmem(4*PAGE_SIZE, 4*PAGE_SIZE, 0) + 16384;
+ lowcore->jiffy_timer = -1LL;
set_prefix((__u32)(__u64) lowcore);
cpu_init();
boot_cpu_addr = S390_lowcore.cpu_data.cpu_addr;
@@ -474,15 +475,16 @@
static int show_cpuinfo(struct seq_file *m, void *v)
{
struct cpuinfo_S390 *cpuinfo;
- unsigned n = v;
+ unsigned long n = (unsigned long) v - 1;
- if (!n--) {
+ if (!n) {
seq_printf(m, "vendor_id : IBM/S390\n"
"# processors : %i\n"
"bogomips per cpu: %lu.%02lu\n",
smp_num_cpus, loops_per_jiffy/(500000/HZ),
(loops_per_jiffy/(5000/HZ))%100);
- } else if (cpu_online_map & (1 << n)) {
+ }
+ if (cpu_online_map & (1 << n)) {
cpuinfo = &safe_get_cpu_lowcore(n).cpu_data;
seq_printf(m, "processor %i: "
"version = %02X, "
@@ -497,7 +499,7 @@
static void *c_start(struct seq_file *m, loff_t *pos)
{
- return *pos <= NR_CPUS ? (void)(*pos+1) : NULL;
+ return *pos <= NR_CPUS ? (void *)((unsigned long) *pos + 1) : NULL;
}
static void *c_next(struct seq_file *m, void *v, loff_t *pos)
{
Index: smp.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/smp.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- smp.c 10 Jun 2003 01:13:16 -0000 1.3
+++ smp.c 10 Jun 2003 01:46:14 -0000 1.4
@@ -49,9 +49,6 @@
static int max_cpus = NR_CPUS; /* Setup configured maximum number of CPUs to activate */
int smp_num_cpus;
struct _lowcore *lowcore_ptr[NR_CPUS];
-unsigned int prof_multiplier[NR_CPUS];
-unsigned int prof_old_multiplier[NR_CPUS];
-unsigned int prof_counter[NR_CPUS];
cycles_t cacheflush_time=0;
int smp_threads_ready=0; /* Set when the idlers are all forked. */
static atomic_t smp_commenced = ATOMIC_INIT(0);
@@ -453,7 +450,7 @@
/*
* Activate a secondary processor.
*/
-extern void init_100hz_timer(void);
+extern void init_cpu_timer(void);
extern int pfault_init(void);
int __init start_secondary(void *cpuvoid)
@@ -465,8 +462,8 @@
/* Wait for completion of smp startup */
while (!atomic_read(&smp_commenced))
/* nothing */ ;
- /* init per CPU 100 hz timer */
- init_100hz_timer();
+ /* init per CPU timer */
+ init_cpu_timer();
#ifdef CONFIG_PFAULT
/* Enable pfault pseudo page faults on this cpu. */
pfault_init();
@@ -519,7 +516,7 @@
cpu_lowcore=&get_cpu_lowcore(cpu);
cpu_lowcore->save_area[15] = idle->thread.ksp;
- cpu_lowcore->kernel_stack = (idle->thread.ksp | 16383) + 1;
+ cpu_lowcore->kernel_stack = (__u64) idle + 16384;
__asm__ __volatile__("la 1,%0\n\t"
"stctg 0,15,0(1)\n\t"
"la 1,%1\n\t"
@@ -571,15 +568,7 @@
/*
* Initialize the logical to physical CPU number mapping
- * and the per-CPU profiling counter/multiplier
*/
-
- for (i = 0; i < NR_CPUS; i++) {
- prof_counter[i] = 1;
- prof_old_multiplier[i] = 1;
- prof_multiplier[i] = 1;
- }
-
print_cpu_info(&safe_get_cpu_lowcore(0).cpu_data);
for(i = 0; i < smp_num_cpus; i++)
@@ -631,56 +620,6 @@
int setup_profiling_timer(unsigned int multiplier)
{
return 0;
-}
-
-/*
- * Local timer interrupt handler. It does both profiling and
- * process statistics/rescheduling.
- *
- * We do profiling in every local tick, statistics/rescheduling
- * happen only every 'profiling multiplier' ticks. The default
- * multiplier is 1 and it can be changed by writing the new multiplier
- * value into /proc/profile.
- */
-
-void smp_local_timer_interrupt(struct pt_regs * regs)
-{
- int user = (user_mode(regs) != 0);
- int cpu = smp_processor_id();
-
- /*
- * The profiling function is SMP safe. (nothing can mess
- * around with "current", and the profiling counters are
- * updated with atomic operations). This is especially
- * useful with a profiling multiplier != 1
- */
- if (!user_mode(regs))
- s390_do_profile(regs->psw.addr);
-
- if (!--prof_counter[cpu]) {
-
- /*
- * The multiplier may have changed since the last time we got
- * to this point as a result of the user writing to
- * /proc/profile. In this case we need to adjust the APIC
- * timer accordingly.
- *
- * Interrupts are already masked off at this point.
- */
- prof_counter[cpu] = prof_multiplier[cpu];
- if (prof_counter[cpu] != prof_old_multiplier[cpu]) {
- prof_old_multiplier[cpu] = prof_counter[cpu];
- }
-
- /*
- * After doing the above, we need to make like
- * a normal interrupt - otherwise timer interrupts
- * ignore the global interrupt lock, which is the
- * WrongThing (tm) to do.
- */
-
- update_process_times(user);
- }
}
EXPORT_SYMBOL(lowcore_ptr);
Index: time.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/time.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- time.c 9 Apr 2002 17:03:18 -0000 1.2
+++ time.c 10 Jun 2003 01:46:14 -0000 1.3
@@ -33,65 +33,33 @@
#include <asm/irq.h>
#include <asm/s390_ext.h>
-
/* change this if you have some constant time drift */
-#define USECS_PER_JIFFY ((signed long)1000000/HZ)
-#define CLK_TICKS_PER_JIFFY ((signed long)USECS_PER_JIFFY<<12)
+#define USECS_PER_JIFFY ((unsigned long) 1000000/HZ)
+#define CLK_TICKS_PER_JIFFY ((unsigned long) USECS_PER_JIFFY << 12)
#define TICK_SIZE tick
-static uint64_t init_timer_cc, last_timer_cc;
+static uint64_t init_timer_cc;
extern rwlock_t xtime_lock;
extern unsigned long wall_jiffies;
-void tod_to_timeval(uint64_t todval, struct timeval *xtime)
+void tod_to_timeval(__u64 todval, struct timeval *xtime)
{
-#if 0
- const int high_bit = 0x80000000L;
- const int c_f4240 = 0xf4240L;
- const int c_7a120 = 0x7a120;
- /* We have to divide the 64 bit value todval by 4096
- * (because the 2^12 bit is the one that changes every
- * microsecond) and then split it into seconds and
- * microseconds. A value of max (2^52-1) divided by
- * the value 0xF4240 can yield a max result of approx
- * (2^32.068). Thats to big to fit into a signed int
- * ... hacking time!
- */
- asm volatile ("L 2,%1\n\t"
- "LR 3,2\n\t"
- "SRL 2,12\n\t"
- "SLL 3,20\n\t"
- "L 4,%O1+4(%R1)\n\t"
- "SRL 4,12\n\t"
- "OR 3,4\n\t" /* now R2/R3 contain (todval >> 12) */
- "SR 4,4\n\t"
- "CL 2,%2\n\t"
- "JL .+12\n\t"
- "S 2,%2\n\t"
- "L 4,%3\n\t"
- "D 2,%4\n\t"
- "OR 3,4\n\t"
- "ST 2,%O0+4(%R0)\n\t"
- "ST 3,%0"
- : "=m" (*xtime) : "m" (todval),
- "m" (c_7a120), "m" (high_bit), "m" (c_f4240)
- : "cc", "memory", "2", "3", "4" );
-#else
- todval >>= 12;
- xtime->tv_sec = todval / 1000000;
- xtime->tv_usec = todval % 1000000;
-#endif
+ todval >>= 12;
+ xtime->tv_sec = todval / 1000000;
+ xtime->tv_usec = todval % 1000000;
}
-unsigned long do_gettimeoffset(void)
+static inline unsigned long do_gettimeoffset(void)
{
- __u64 timer_cc;
+ __u64 now;
- asm volatile ("STCK %0" : "=m" (timer_cc));
- /* We require the offset from the previous interrupt */
- return ((unsigned long)((timer_cc - last_timer_cc)>>12));
+ asm ("STCK %0" : "=m" (now));
+ now = (now - init_timer_cc) >> 12;
+ /* We require the offset from the latest update of xtime */
+ now -= (__u64) wall_jiffies*USECS_PER_JIFFY;
+ return (unsigned long) now;
}
/*
@@ -101,15 +69,10 @@
{
unsigned long flags;
unsigned long usec, sec;
- unsigned long lost_ticks;
read_lock_irqsave(&xtime_lock, flags);
- lost_ticks = jiffies - wall_jiffies;
- usec = do_gettimeoffset();
- if (lost_ticks)
- usec +=(USECS_PER_JIFFY*lost_ticks);
sec = xtime.tv_sec;
- usec += xtime.tv_usec;
+ usec = xtime.tv_usec + do_gettimeoffset();
read_unlock_irqrestore(&xtime_lock, flags);
while (usec >= 1000000) {
@@ -155,51 +118,31 @@
extern __u16 boot_cpu_addr;
#endif
-void do_timer_interrupt(struct pt_regs *regs, __u16 error_code)
+static void do_comparator_interrupt(struct pt_regs *regs, __u16 error_code)
{
int cpu = smp_processor_id();
irq_enter(cpu, 0);
- /*
- * reset timer to 10ms minus time already elapsed
- * since timer-interrupt pending
- */
+ /*
+ * set clock comparator for next tick
+ */
+ S390_lowcore.jiffy_timer += CLK_TICKS_PER_JIFFY;
+ asm volatile ("SCKC %0" : : "m" (S390_lowcore.jiffy_timer));
+
#ifdef CONFIG_SMP
- if(S390_lowcore.cpu_data.cpu_addr==boot_cpu_addr) {
+ if (S390_lowcore.cpu_data.cpu_addr == boot_cpu_addr)
write_lock(&xtime_lock);
- last_timer_cc = S390_lowcore.jiffy_timer_cc;
- }
-#else
- last_timer_cc = S390_lowcore.jiffy_timer_cc;
-#endif
- /* set clock comparator */
- S390_lowcore.jiffy_timer_cc += CLK_TICKS_PER_JIFFY;
- asm volatile ("SCKC %0" : : "m" (S390_lowcore.jiffy_timer_cc));
-/*
- * In the SMP case we use the local timer interrupt to do the
- * profiling, except when we simulate SMP mode on a uniprocessor
- * system, in that case we have to call the local interrupt handler.
- */
-#ifdef CONFIG_SMP
- /* when SMP, do smp_local_timer_interrupt for *all* CPUs,
- but only do the rest for the boot CPU */
- smp_local_timer_interrupt(regs);
-#else
- if (!user_mode(regs))
- s390_do_profile(regs->psw.addr);
-#endif
+ update_process_times(user_mode(regs));
-#ifdef CONFIG_SMP
- if(S390_lowcore.cpu_data.cpu_addr==boot_cpu_addr)
-#endif
- {
+ if (S390_lowcore.cpu_data.cpu_addr == boot_cpu_addr) {
do_timer(regs);
-#ifdef CONFIG_SMP
write_unlock(&xtime_lock);
-#endif
}
+#else
+ do_timer(regs);
+#endif
irq_exit(cpu, 0);
}
@@ -207,19 +150,17 @@
/*
* Start the clock comparator on the current CPU
*/
-static unsigned long cr0 __attribute__ ((aligned (8)));
-
-void init_100hz_timer(void)
+void init_cpu_timer(void)
{
+ unsigned long cr0;
+
/* allow clock comparator timer interrupt */
asm volatile ("STCTG 0,0,%0" : "=m" (cr0) : : "memory");
cr0 |= 0x800;
asm volatile ("LCTLG 0,0,%0" : : "m" (cr0) : "memory");
- /* set clock comparator */
- /* read the TOD clock */
- asm volatile ("STCK %0" : "=m" (S390_lowcore.jiffy_timer_cc));
- S390_lowcore.jiffy_timer_cc += CLK_TICKS_PER_JIFFY;
- asm volatile ("SCKC %0" : : "m" (S390_lowcore.jiffy_timer_cc));
+ S390_lowcore.jiffy_timer = (__u64) jiffies * CLK_TICKS_PER_JIFFY;
+ S390_lowcore.jiffy_timer += init_timer_cc + CLK_TICKS_PER_JIFFY;
+ asm volatile ("SCKC %0" : : "m" (S390_lowcore.jiffy_timer));
}
/*
@@ -228,6 +169,7 @@
*/
void __init time_init(void)
{
+ __u64 set_time_cc;
int cc;
/* kick the TOD clock */
@@ -247,15 +189,16 @@
printk("time_init: TOD clock stopped/non-operational\n");
break;
}
+
+ /* set xtime */
+ set_time_cc = init_timer_cc - 0x8126d60e46000000LL +
+ (0x3c26700LL*1000000*4096);
+ tod_to_timeval(set_time_cc, &xtime);
+
/* request the 0x1004 external interrupt */
- if (register_external_interrupt(0x1004, do_timer_interrupt) != 0)
- panic("Couldn't request external interrupts 0x1004");
- init_100hz_timer();
- init_timer_cc = S390_lowcore.jiffy_timer_cc;
- init_timer_cc -= 0x8126d60e46000000LL -
- (0x3c26700LL*1000000*4096);
- tod_to_timeval(init_timer_cc, &xtime);
+ if (register_external_interrupt(0x1004, do_comparator_interrupt) != 0)
+ panic("Couldn't request external interrupt 0x1004");
- /* Set do_get_fast_time function pointer. */
- do_get_fast_time = do_gettimeofday;
+ /* init CPU timer */
+ init_cpu_timer();
}
Index: traps.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/traps.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- traps.c 9 Apr 2002 17:03:18 -0000 1.2
+++ traps.c 10 Jun 2003 01:46:14 -0000 1.3
@@ -26,6 +26,7 @@
#include <linux/smp_lock.h>
#include <linux/init.h>
#include <linux/delay.h>
+#include <linux/module.h>
#include <asm/system.h>
#include <asm/uaccess.h>
@@ -58,6 +59,203 @@
extern void pfault_interrupt(struct pt_regs *regs, __u16 error_code);
#endif
+int kstack_depth_to_print = 20;
+
+/*
+ * If the address is either in the .text section of the
+ * kernel, or in the vmalloc'ed module regions, it *may*
+ * be the address of a calling routine
+ */
+extern char _stext, _etext;
+
+#ifdef CONFIG_MODULES
+
+extern struct module *module_list;
+extern struct module kernel_module;
+
+static inline int kernel_text_address(unsigned long addr)
+{
+ int retval = 0;
+ struct module *mod;
+
+ if (addr >= (unsigned long) &_stext &&
+ addr <= (unsigned long) &_etext)
+ return 1;
+
+ for (mod = module_list; mod != &kernel_module; mod = mod->next) {
+ /* mod_bound tests for addr being inside the vmalloc'ed
+ * module area. Of course it'd be better to test only
+ * for the .text subset... */
+ if (mod_bound(addr, 0, mod)) {
+ retval = 1;
+ break;
+ }
+ }
+
+ return retval;
+}
+
+#else
+
+static inline int kernel_text_address(unsigned long addr)
+{
+ return (addr >= (unsigned long) &_stext &&
+ addr <= (unsigned long) &_etext);
+}
+
+#endif
+
+void show_trace(unsigned long * stack)
+{
+ unsigned long backchain, low_addr, high_addr, ret_addr;
+ int i;
+
+ if (!stack)
+ stack = (unsigned long*)&stack;
+
+ printk("Call Trace: ");
+ low_addr = ((unsigned long) stack) & PSW_ADDR_MASK;
+ high_addr = (low_addr & (-THREAD_SIZE)) + THREAD_SIZE;
+ /* Skip the first frame (biased stack) */
+ backchain = *((unsigned long *) low_addr) & PSW_ADDR_MASK;
+ /* Print up to 8 lines */
+ for (i = 0; i < 8; i++) {
+ if (backchain < low_addr || backchain >= high_addr)
+ break;
+ ret_addr = *((unsigned long *) (backchain+112)) & PSW_ADDR_MASK;
+ if (!kernel_text_address(ret_addr))
+ break;
+ if (i && ((i % 3) == 0))
+ printk("\n ");
+ printk("[<%016lx>] ", ret_addr);
+ low_addr = backchain;
+ backchain = *((unsigned long *) backchain) & PSW_ADDR_MASK;
+ }
+ printk("\n");
+}
+
+void show_trace_task(struct task_struct *tsk)
+{
+ /*
+ * We can't print the backtrace of a running process. It is
+ * unreliable at best and can cause kernel oopses.
+ */
+ if (task_has_cpu(tsk))
+ return;
+ show_trace((unsigned long *) tsk->thread.ksp);
+}
+
+void show_stack(unsigned long *sp)
+{
+ unsigned long *stack;
+ int i;
+
+ // debugging aid: "show_stack(NULL);" prints the
+ // back trace for this cpu.
+
+ if (sp == NULL)
+ sp = (unsigned long*) &sp;
+
+ stack = sp;
+ for (i = 0; i < kstack_depth_to_print; i++) {
+ if (((addr_t) stack & (THREAD_SIZE-1)) == 0)
+ break;
+ if (i && ((i % 4) == 0))
+ printk("\n ");
+ printk("%016lx ", *stack++);
+ }
+ printk("\n");
+ show_trace(sp);
+}
+
+void show_registers(struct pt_regs *regs)
+{
+ mm_segment_t old_fs;
+ char *mode;
+ int i;
+
+ mode = (regs->psw.mask & PSW_PROBLEM_STATE) ? "User" : "Krnl";
+ printk("%s PSW : %016lx %016lx\n",
+ mode, (unsigned long) regs->psw.mask,
+ (unsigned long) regs->psw.addr);
+ printk("%s GPRS: %016lx %016lx %016lx %016lx\n", mode,
+ regs->gprs[0], regs->gprs[1], regs->gprs[2], regs->gprs[3]);
+ printk(" %016lx %016lx %016lx %016lx\n",
+ regs->gprs[4], regs->gprs[5], regs->gprs[6], regs->gprs[7]);
+ printk(" %016lx %016lx %016lx %016lx\n",
+ regs->gprs[8], regs->gprs[9], regs->gprs[10], regs->gprs[11]);
+ printk(" %016lx %016lx %016lx %016lx\n",
+ regs->gprs[12], regs->gprs[13], regs->gprs[14], regs->gprs[15]);
+ printk("%s ACRS: %08x %08x %08x %08x\n", mode,
+ regs->acrs[0], regs->acrs[1], regs->acrs[2], regs->acrs[3]);
+ printk(" %08x %08x %08x %08x\n",
+ regs->acrs[4], regs->acrs[5], regs->acrs[6], regs->acrs[7]);
+ printk(" %08x %08x %08x %08x\n",
+ regs->acrs[8], regs->acrs[9], regs->acrs[10], regs->acrs[11]);
+ printk(" %08x %08x %08x %08x\n",
+ regs->acrs[12], regs->acrs[13], regs->acrs[14], regs->acrs[15]);
+
+ /*
+ * Print the first 20 byte of the instruction stream at the
+ * time of the fault.
+ */
+ old_fs = get_fs();
+ if (regs->psw.mask & PSW_PROBLEM_STATE)
+ set_fs(USER_DS);
+ else
+ set_fs(KERNEL_DS);
+ printk("%s Code: ", mode);
+ for (i = 0; i < 20; i++) {
+ unsigned char c;
+ if (__get_user(c, (char *)(regs->psw.addr + i))) {
+ printk(" Bad PSW.");
+ break;
+ }
+ printk("%02x ", c);
+ }
+ set_fs(old_fs);
+
+ printk("\n");
+}
+
+/* This is called from fs/proc/array.c */
+char *task_show_regs(struct task_struct *task, char *buf)
+{
+ struct pt_regs *regs;
+
+ regs = __KSTK_PTREGS(task);
+ buf += sprintf(buf, "task: %016lx, ksp: %016lx\n",
+ (unsigned long) task, task->thread.ksp);
+ buf += sprintf(buf, "User PSW : %016lx %016lx\n",
+ (unsigned long) regs->psw.mask,
+ (unsigned long) regs->psw.addr);
+ buf += sprintf(buf, "User GPRS: %016lx %016lx %016lx %016lx\n",
+ regs->gprs[0], regs->gprs[1],
+ regs->gprs[2], regs->gprs[3]);
+ buf += sprintf(buf, " %016lx %016lx %016lx %016lx\n",
+ regs->gprs[4], regs->gprs[5],
+ regs->gprs[6], regs->gprs[7]);
+ buf += sprintf(buf, " %016lx %016lx %016lx %016lx\n",
+ regs->gprs[8], regs->gprs[9],
+ regs->gprs[10], regs->gprs[11]);
+ buf += sprintf(buf, " %016lx %016lx %016lx %016lx\n",
+ regs->gprs[12], regs->gprs[13],
+ regs->gprs[14], regs->gprs[15]);
+ buf += sprintf(buf, "User ACRS: %08x %08x %08x %08x\n",
+ regs->acrs[0], regs->acrs[1],
+ regs->acrs[2], regs->acrs[3]);
+ buf += sprintf(buf, " %08x %08x %08x %08x\n",
+ regs->acrs[4], regs->acrs[5],
+ regs->acrs[6], regs->acrs[7]);
+ buf += sprintf(buf, " %08x %08x %08x %08x\n",
+ regs->acrs[8], regs->acrs[9],
+ regs->acrs[10], regs->acrs[11]);
+ buf += sprintf(buf, " %08x %08x %08x %08x\n",
+ regs->acrs[12], regs->acrs[13],
+ regs->acrs[14], regs->acrs[15]);
+ return buf;
+}
+
spinlock_t die_lock = SPIN_LOCK_UNLOCKED;
void die(const char * str, struct pt_regs * regs, long err)
@@ -142,7 +340,7 @@
#if CONFIG_REMOTE_DEBUG
if(gdb_stub_initialised)
{
- gdb_stub_handle_exception((gdb_pt_regs *)regs,signal);
+ gdb_stub_handle_exception(regs, signal);
return 0;
}
#endif
Index: wrapper32.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/kernel/wrapper32.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- wrapper32.S 9 Apr 2002 17:03:18 -0000 1.2
+++ wrapper32.S 10 Jun 2003 01:46:14 -0000 1.3
@@ -120,8 +120,8 @@
lgfr %r2,%r2 # long
lgfr %r3,%r3 # long
llgtr %r4,%r4 # long
- lgfr %r5,%r5 # long
- jg sys32_ptrace # branch to system call
+ llgfr %r5,%r5 # long
+ jg sys_ptrace # branch to system call
.globl sys32_alarm_wrapper
sys32_alarm_wrapper:
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:48:31
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/sh
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/sh
Modified Files:
config.in vmlinux.lds.S
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: config.in
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sh/config.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- config.in 9 Apr 2002 17:07:20 -0000 1.2
+++ config.in 10 Jun 2003 01:46:15 -0000 1.3
@@ -189,7 +189,7 @@
if [ "$CONFIG_PCI_GODIRECT" = "y" -o "$CONFIG_PCI_GOANY" = "y" ]; then
define_bool CONFIG_PCI_DIRECT y
fi
- define_bool CONFIG_SH_PCIDMA_NONCOHERENT n
+ bool 'Cache and PCI noncoherent' CONFIG_SH_PCIDMA_NONCOHERENT n
fi
source drivers/pci/Config.in
@@ -280,9 +280,9 @@
#
source drivers/input/Config.in
-if [ "$CONFIG_SH_DREAMCAST" = "y" ]; then
- source drivers/maple/Config.in
-fi
+# if [ "$CONFIG_SH_DREAMCAST" = "y" ]; then
+# source drivers/maple/Config.in
+# fi
mainmenu_option next_comment
comment 'Character devices'
Index: vmlinux.lds.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/sh/vmlinux.lds.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- vmlinux.lds.S 9 Apr 2002 17:07:20 -0000 1.2
+++ vmlinux.lds.S 10 Jun 2003 01:46:15 -0000 1.3
@@ -23,7 +23,6 @@
*(.fixup)
*(.gnu.warning)
} = 0x0009
- .text.lock : { *(.text.lock) } /* out-of-line lock text */
.rodata : { *(.rodata) *(.rodata.*) }
.kstrtab : { *(.kstrtab) }
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:48:30
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/DocBook
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/Documentation/DocBook
Modified Files:
kernel-hacking.tmpl
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: kernel-hacking.tmpl
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/DocBook/kernel-hacking.tmpl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- kernel-hacking.tmpl 9 Apr 2002 16:55:39 -0000 1.2
+++ kernel-hacking.tmpl 10 Jun 2003 01:45:44 -0000 1.3
@@ -18,8 +18,8 @@
</authorgroup>
<copyright>
- <year>2000</year>
- <holder>Paul Russell</holder>
+ <year>2001</year>
+ <holder>Rusty Russell</holder>
</copyright>
<legalnotice>
@@ -651,6 +651,29 @@
</para>
</sect1>
+ <sect1 id="routines-endian">
+ <title><function>cpu_to_be32()</function>/<function>be32_to_cpu()</function>/<function>cpu_to_le32()</function>/<function>le32_to_cpu()</function>
+ <filename class=headerfile>include/asm/byteorder.h</filename>
+ </title>
+
+ <para>
+ The <function>cpu_to_be32()</function> family (where the "32" can
+ be replaced by 64 or 16, and the "be" can be replaced by "le") are
+ the general way to do endian conversions in the kernel: they
+ return the converted value. All variations supply the reverse as
+ well: <function>be32_to_cpu()</function>, etc.
+ </para>
+
+ <para>
+ There are two major variations of these functions: the pointer
+ variation, such as <function>cpu_to_be32p()</function>, which take
+ a pointer to the given type, and return the converted value. The
+ other variation is the "in-situ" family, such as
+ <function>cpu_to_be32s()</function>, which convert value referred
+ to by the pointer, and return void.
+ </para>
+ </sect1>
+
<sect1 id="routines-local-irqs">
<title><function>local_irq_save()</function>/<function>local_irq_restore()</function>
<filename class=headerfile>include/asm/system.h</filename>
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:48:30
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/s390x/lib
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/s390x/lib
Modified Files:
uaccess.S
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: uaccess.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/s390x/lib/uaccess.S,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- uaccess.S 25 Feb 2001 23:15:23 -0000 1.1.1.1
+++ uaccess.S 10 Jun 2003 01:46:14 -0000 1.2
@@ -6,40 +6,82 @@
* Copyright (C) 2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
* Authors(s): Martin Schwidefsky (sch...@de...)
*
- * These functions have a non-standard call interface
+ * These functions have standard call interface
*/
#include <asm/lowcore.h>
.text
.align 4
- .globl __copy_from_user_fixup
-__copy_from_user_fixup:
- lg 1,__LC_PGM_OLD_PSW+8
-0: lghi 3,-4096
- ng 3,__LC_TRANS_EXC_ADDR
- sgr 3,4
- bm 4(1)
-1: mvcle 2,4,0
- b 4(1)
+ .globl __copy_from_user_asm
+__copy_from_user_asm:
+ lgr %r5,%r3
+ sacf 512
+0: mvcle %r2,%r4,0
+ jo 0b
+ sacf 0
+ lgr %r2,%r5
+ br %r14
+1: lg %r1,__LC_PGM_OLD_PSW+8
+2: lghi %r3,-4096
+ ng %r3,__LC_TRANS_EXC_ADDR
+ sgr %r3,%r4
+ bm 4(%r1)
+3: mvcle %r2,%r4,0
+ b 4(%r1)
.section __ex_table,"a"
- .align 8
- .quad 1b,0b
+ .align 8
+ .quad 0b,1b
+ .quad 3b,2b
.previous
.align 4
.text
- .globl __copy_to_user_fixup
-__copy_to_user_fixup:
- lg 1,__LC_PGM_OLD_PSW+8
-0: lghi 5,-4096
- ng 5,__LC_TRANS_EXC_ADDR
- sgr 5,4
- bm 4(1)
-1: mvcle 4,2,0
- b 4(1)
+ .globl __copy_to_user_asm
+__copy_to_user_asm:
+ lgr %r5,%r3
+ sacf 512
+0: mvcle %r4,%r2,0
+ jo 0b
+ sacf 0
+ lgr %r2,%r3
+ br %r14
+1: lg %r1,__LC_PGM_OLD_PSW+8
+2: lghi %r5,-4096
+ ng %r5,__LC_TRANS_EXC_ADDR
+ sgr %r5,%r4
+ bm 4(%r1)
+3: mvcle %r4,%r2,0
+ b 4(%r1)
.section __ex_table,"a"
- .align 8
- .quad 1b,0b
+ .align 8
+ .quad 0b,1b
+ .quad 3b,2b
.previous
+ .align 4
+ .text
+ .globl __clear_user_asm
+__clear_user_asm:
+ lgr %r4,%r2
+ lgr %r5,%r3
+ sgr %r2,%r2
+ sgr %r3,%r3
+ sacf 512
+0: mvcle %r4,%r2,0
+ jo 0b
+ sacf 0
+ lgr %r2,%r5
+ br %r14
+1: lg %r1,__LC_PGM_OLD_PSW+8
+2: lghi %r5,-4096
+ ng %r5,__LC_TRANS_EXC_ADDR
+ sgr %r5,%r4
+ bm 4(%r1)
+3: mvcle %r4,%r2,0
+ b 4(%r1)
+ .section __ex_table,"a"
+ .align 8
+ .quad 0b,1b
+ .quad 3b,2b
+ .previous
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:48:29
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/filesystems/devfs In directory sc8-pr-cvs1:/tmp/cvs-serv23180/Documentation/filesystems/devfs Modified Files: ChangeLog README Log Message: DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed) Index: ChangeLog =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/filesystems/devfs/ChangeLog,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ChangeLog 10 Jun 2003 01:13:12 -0000 1.3 +++ ChangeLog 10 Jun 2003 01:45:45 -0000 1.4 @@ -1845,3 +1845,38 @@ - Improved debugging messages - Fixed unregister bugs in drivers/md/lvm-fs.c +=============================================================================== +Changes for patch v199.6 + +- Corrected (made useful) debugging message in <unregister> + +- Moved <kmem_cache_create> in <mount_devfs_fs> to <init_devfs_fs> + +- Fixed drivers/md/lvm-fs.c to create "lvm" entry + +- Added magic number to guard against scribbling drivers + +- Only return old entry in <devfs_mk_dir> if a directory + +- Defined macros for error and debug messages + +- Updated README from master HTML file +=============================================================================== +Changes for patch v199.7 + +- Unregister /dev/root symlink prior to creating second one (for + initrd) + +- Added support for multiple Compaq cpqarray controllers + +- Fixed (rare, old) race in <devfs_lookup> +=============================================================================== +Changes for patch v199.8 + +- Fixed deadlock bug in <devfs_d_revalidate_wait> + +- Tag VFS deletable in <devfs_mk_symlink> if handle ignored + +- Updated README from master HTML file + +- Fixed kdev_none macro in include/linux/kdev_t.h Index: README =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/filesystems/devfs/README,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- README 10 Jun 2003 01:13:12 -0000 1.3 +++ README 10 Jun 2003 01:45:45 -0000 1.4 @@ -3,7 +3,16 @@ Linux Devfs (Device File System) FAQ Richard Gooch -13-DEC-2001 +20-JAN-2002 + + +Document languages: + + + + + + ----------------------------------------------------------------------------- @@ -68,6 +77,8 @@ Alternatives to devfs What I don't like about devfs How to report bugs +Strange kernel messages +Compilation problems with devfsd Other resources @@ -836,8 +847,8 @@ will now work as before. Hopefully for most people devfs will have enough support so that they -can mount devfs directly over /dev without loosing most functionality -(i.e. loosing access to various devices). As of 22-JAN-1998 (devfs +can mount devfs directly over /dev without losing most functionality +(i.e. losing access to various devices). As of 22-JAN-1998 (devfs patch version 10) I am now running this way. All the devices I have are available in devfs, so I don't lose anything. @@ -1475,6 +1486,8 @@ Alternatives to devfs What I don't like about devfs How to report bugs +Strange kernel messages +Compilation problems with devfsd @@ -1675,7 +1688,7 @@ minor limitation -simplying increasing the device number size is insufficient. Apart +simply increasing the device number size is insufficient. Apart from causing a lot of pain, it doesn't solve the management issues of a /dev with thousands or more device nodes @@ -1790,6 +1803,65 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html. + +Strange kernel messages + +You may see devfs-related messages in your kernel logs. Below are some +messages and what they mean (and what you should do about them, if +anything). + + + +devfs_register(fred): could not append to parent, err: -17 + +You need to check what the error code means, but usually 17 means +EEXIST. This means that a driver attempted to create an entry +fred in a directory, but there already was an entry with that +name. This is often caused by flawed boot scripts which untar a bunch +of inodes into /dev, as a way to restore permissions. This +message is harmless, as the device nodes will still +provide access to the driver (unless you use the devfs=only +boot option, which is only for dedicated souls:-). If you want to get +rid of these annoying messages, upgrade to devfsd-v1.3.20 and use the +recommended RESTORE directive to restore permissions. + + +devfs_mk_dir(bill): using old entry in dir: c1808724 "" + +This is similar to the message above, except that a driver attempted +to create a directory named bill, and the parent directory +has an entry with the same name. In this case, to ensure that drivers +continue to work properly, the old entry is re-used and given to the +driver. In 2.5 kernels, the driver is given a NULL entry, and thus, +under rare circumstances, may not create the require device nodes. +The solution is the same as above. + + + + + +Compilation problems with devfsd + +Usually, you can compile devfsd just by typing in +make in the source directory, followed by a make +install (as root). Sometimes, you may have problems, particularly +on broken configurations. + + + +error messages relating to DEVFSD_NOTIFY_DELETE + +This happened because you have an ancient set of kernel headers +installed in /usr/include/linux or /usr/src/linux. +Install kernel 2.4.10 or later. You may need to pass the +KERNEL_DIR variable to make (if you did not install +the new kernel sources as /usr/src/linux), or you may copy +the devfs_fs.h file in the kernel source tree into +/usr/include/linux. + + + + ----------------------------------------------------------------------------- @@ -1844,9 +1916,25 @@ +The document master (in English) by rg...@at... is +available at + +http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html + + + A Korean translation by via...@no... is available at -http://home.nownuri.net/~viatoris/devfs/devfs.html +http://home.nownuri.net/~viatoris/devfs/devfs.html + +A newer version is under construcation at + +http://viatoris.new21.org/devfs/devfs.html + +----------------------------------------------------------------------------- +Most flags courtesy of ITA's +Flags of All Countries +used with permission. |
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax
In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn/hisax
Modified Files:
Makefile amd7930.c arcofi.c arcofi.h asuscom.c avm_a1.c
avm_a1p.c avm_pci.c bkm_a4t.c bkm_a8.c bkm_ax.h callc.c cert.c
config.c diva.c elsa.c elsa_cs.c elsa_ser.c fsm.c fsm.h
gazel.c hfc_2bds0.c hfc_2bds0.h hfc_2bs0.c hfc_2bs0.h
hfc_pci.c hfc_pci.h hfc_sx.c hfc_sx.h hfcscard.c hisax.h
hscx.c hscx.h hscx_irq.c icc.c icc.h ipac.h isac.c isac.h
isar.c isar.h isdnl1.c isdnl1.h isdnl2.c isdnl2.h isdnl3.c
isdnl3.h isurf.c ix1_micro.c jade.c jade.h jade_irq.c
l3_1tr6.c l3_1tr6.h l3dss1.c l3dss1.h l3ni1.c l3ni1.h lmgr.c
mic.c netjet.c netjet.h niccy.c nj_s.c nj_u.c q931.c rawhdlc.c
rawhdlc.h s0box.c saphir.c sedlbauer.c sportster.c st5481_b.c
st5481_d.c st5481_init.c st5481_usb.c tei.c teleint.c teles0.c
teles3.c telespci.c w6692.c w6692.h
Log Message:
DA: sync with Marcelo 2.4.17
Index: Makefile
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Makefile 10 Apr 2002 15:32:24 -0000 1.2
+++ Makefile 10 Jun 2003 01:13:36 -0000 1.3
@@ -4,9 +4,13 @@
O_TARGET := vmlinux-obj.o
+# Define maximum number of cards
+
+EXTRA_CFLAGS += -DHISAX_MAX_CARDS=$(CONFIG_HISAX_MAX_CARDS)
+
# Objects that export symbols.
-export-objs := config.o fsm.o
+export-objs := config.o fsm.o hisax_isac.o
# Multipart objects.
@@ -58,6 +62,7 @@
obj-$(CONFIG_HISAX_SEDLBAUER_CS) += sedlbauer_cs.o
obj-$(CONFIG_HISAX_ELSA_CS) += elsa_cs.o
obj-$(CONFIG_HISAX_ST5481) += hisax_st5481.o
+obj-$(CONFIG_HISAX_FRITZ_PCIPNP) += hisax_isac.o hisax_fcpcipnp.o
CERT := $(shell md5sum -c md5sums.asc >> /dev/null;echo $$?)
CFLAGS_cert.o := -DCERTIFICATION=$(CERT)
Index: amd7930.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/amd7930.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: arcofi.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/arcofi.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: arcofi.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/arcofi.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: asuscom.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/asuscom.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: avm_a1.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/avm_a1.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: avm_a1p.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/avm_a1p.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: avm_pci.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/avm_pci.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: bkm_a4t.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/bkm_a4t.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: bkm_a8.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/bkm_a8.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: bkm_ax.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/bkm_ax.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: callc.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/callc.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: cert.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/cert.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: config.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/config.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- config.c 10 Apr 2002 15:32:24 -0000 1.2
+++ config.c 10 Jun 2003 01:13:37 -0000 1.3
@@ -336,27 +336,19 @@
NULL, \
}
-#define EMPTY_CARD {0, DEFAULT_PROTO, {0, 0, 0, 0}, NULL}
-
-struct IsdnCard cards[] = {
+struct IsdnCard cards[HISAX_MAX_CARDS] = {
FIRST_CARD,
- EMPTY_CARD,
- EMPTY_CARD,
- EMPTY_CARD,
- EMPTY_CARD,
- EMPTY_CARD,
- EMPTY_CARD,
- EMPTY_CARD,
};
-static char HiSaxID[64] __devinitdata = { 0, };
+#define HISAX_IDSIZE (HISAX_MAX_CARDS*8)
+static char HiSaxID[HISAX_IDSIZE] __devinitdata = { 0, };
char *HiSax_id __devinitdata = HiSaxID;
#ifdef MODULE
/* Variables for insmod */
-static int type[8] __devinitdata = { 0, };
-static int protocol[8] __devinitdata = { 0, };
-static int io[8] __devinitdata = { 0, };
+static int type[HISAX_MAX_CARDS] __devinitdata = { 0, };
+static int protocol[HISAX_MAX_CARDS] __devinitdata = { 0, };
+static int io[HISAX_MAX_CARDS] __devinitdata = { 0, };
#undef IO0_IO1
#ifdef CONFIG_HISAX_16_3
#define IO0_IO1
@@ -366,25 +358,27 @@
#define IO0_IO1
#endif
#ifdef IO0_IO1
-static int io0[8] __devinitdata = { 0, };
-static int io1[8] __devinitdata = { 0, };
+static int io0[HISAX_MAX_CARDS] __devinitdata = { 0, };
+static int io1[HISAX_MAX_CARDS] __devinitdata = { 0, };
#endif
-static int irq[8] __devinitdata = { 0, };
-static int mem[8] __devinitdata = { 0, };
+static int irq[HISAX_MAX_CARDS] __devinitdata = { 0, };
+static int mem[HISAX_MAX_CARDS] __devinitdata = { 0, };
static char *id __devinitdata = HiSaxID;
+#define PARM_PARA "1-" __MODULE_STRING(HISAX_MAX_CARDS) "i"
+
MODULE_DESCRIPTION("ISDN4Linux: Driver for passive ISDN cards");
MODULE_AUTHOR("Karsten Keil");
MODULE_LICENSE("GPL");
-MODULE_PARM(type, "1-8i");
-MODULE_PARM(protocol, "1-8i");
-MODULE_PARM(io, "1-8i");
-MODULE_PARM(irq, "1-8i");
-MODULE_PARM(mem, "1-8i");
+MODULE_PARM(type, PARM_PARA);
+MODULE_PARM(protocol, PARM_PARA);
+MODULE_PARM(io, PARM_PARA);
+MODULE_PARM(irq, PARM_PARA);
+MODULE_PARM(mem, PARM_PARA);
MODULE_PARM(id, "s");
#ifdef IO0_IO1
-MODULE_PARM(io0, "1-8i");
-MODULE_PARM(io1, "1-8i");
+MODULE_PARM(io0, PARM_PARA);
+MODULE_PARM(io1, PARM_PARA);
#endif
#endif /* MODULE */
@@ -448,6 +442,7 @@
i = 0;
j = 1;
while (argc && (i < HISAX_MAX_CARDS)) {
+ cards[i].protocol = DEFAULT_PROTO;
if (argc) {
cards[i].typ = ints[j];
j++;
@@ -475,13 +470,15 @@
}
i++;
}
- if (str && *str) {
- strcpy(HiSaxID, str);
- HiSax_id = HiSaxID;
- } else {
+ if (str && *str) {
+ if (strlen(str) < HISAX_IDSIZE)
+ strcpy(HiSaxID, str);
+ else
+ printk(KERN_WARNING "HiSax: ID too long!");
+ } else
strcpy(HiSaxID, "HiSax");
- HiSax_id = HiSaxID;
- }
+
+ HiSax_id = HiSaxID;
return 1;
}
@@ -1396,6 +1393,8 @@
if (protocol[i]) {
cards[j].protocol = protocol[i];
nzproto++;
+ } else {
+ cards[j].protocol = DEFAULT_PROTO;
}
switch (type[i]) {
case ISDN_CTYPE_16_0:
@@ -1473,15 +1472,22 @@
} else {
/* QUADRO is a 4 BRI card */
cards[j++].para[0] = 1;
- cards[j].typ = ISDN_CTYPE_SCT_QUADRO;
- cards[j].protocol = protocol[i];
- cards[j++].para[0] = 2;
- cards[j].typ = ISDN_CTYPE_SCT_QUADRO;
- cards[j].protocol = protocol[i];
- cards[j++].para[0] = 3;
- cards[j].typ = ISDN_CTYPE_SCT_QUADRO;
- cards[j].protocol = protocol[i];
- cards[j].para[0] = 4;
+ /* we need to check if further cards can be added */
+ if (j < HISAX_MAX_CARDS) {
+ cards[j].typ = ISDN_CTYPE_SCT_QUADRO;
+ cards[j].protocol = protocol[i];
+ cards[j++].para[0] = 2;
+ }
+ if (j < HISAX_MAX_CARDS) {
+ cards[j].typ = ISDN_CTYPE_SCT_QUADRO;
+ cards[j].protocol = protocol[i];
+ cards[j++].para[0] = 3;
+ }
+ if (j < HISAX_MAX_CARDS) {
+ cards[j].typ = ISDN_CTYPE_SCT_QUADRO;
+ cards[j].protocol = protocol[i];
+ cards[j].para[0] = 4;
+ }
}
break;
}
@@ -1505,15 +1511,9 @@
nrcards, (nrcards > 1) ? "s" : "");
/* Install only, if at least one card found */
- if (!HiSax_inithardware(NULL)) {
- retval = -EIO;
- goto out_isdnl1;
- }
-
+ HiSax_inithardware(NULL);
return 0;
- out_isdnl1:
- Isdnl1Free();
out_tei:
TeiFree();
out_isdnl2:
@@ -1560,6 +1560,8 @@
cards[i].typ = type[i];
if (protocol[i]) {
cards[i].protocol = protocol[i];
+ } else {
+ cards[i].protocol = DEFAULT_PROTO;
}
}
cards[0].para[0] = pcm_irq;
@@ -1600,6 +1602,8 @@
cards[i].typ = type[i];
if (protocol[i]) {
cards[i].protocol = protocol[i];
+ } else {
+ cards[i].protocol = DEFAULT_PROTO;
}
}
cards[0].para[0] = pcm_irq;
@@ -1640,6 +1644,8 @@
cards[i].typ = type[i];
if (protocol[i]) {
cards[i].protocol = protocol[i];
+ } else {
+ cards[i].protocol = DEFAULT_PROTO;
}
}
cards[0].para[0] = pcm_irq;
@@ -1680,6 +1686,8 @@
cards[i].typ = type[i];
if (protocol[i]) {
cards[i].protocol = protocol[i];
+ } else {
+ cards[i].protocol = DEFAULT_PROTO;
}
}
cards[0].para[0] = pcm_irq;
Index: diva.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/diva.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: elsa.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/elsa.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: elsa_cs.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/elsa_cs.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
Index: elsa_ser.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/elsa_ser.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: fsm.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/fsm.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: fsm.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/fsm.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
Index: gazel.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/gazel.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hfc_2bds0.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hfc_2bds0.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hfc_2bds0.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hfc_2bds0.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hfc_2bs0.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hfc_2bs0.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hfc_2bs0.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hfc_2bs0.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hfc_pci.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hfc_pci.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hfc_pci.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hfc_pci.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hfc_sx.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hfc_sx.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hfc_sx.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hfc_sx.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hfcscard.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hfcscard.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hisax.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hisax.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- hisax.h 10 Apr 2002 15:32:24 -0000 1.2
+++ hisax.h 10 Jun 2003 01:13:38 -0000 1.3
@@ -950,8 +950,6 @@
#define MON0_TX 4
#define MON1_TX 8
-#define HISAX_MAX_CARDS 8
-
#define ISDN_CTYPE_16_0 1
#define ISDN_CTYPE_8_0 2
#define ISDN_CTYPE_16_3 3
Index: hscx.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hscx.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hscx.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hscx.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: hscx_irq.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/hscx_irq.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: icc.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/icc.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: icc.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/icc.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: ipac.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/ipac.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isac.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isac.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isac.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isac.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isar.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isar.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isar.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isar.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isdnl1.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isdnl1.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isdnl1.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isdnl1.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isdnl2.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isdnl2.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isdnl2.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isdnl2.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isdnl3.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isdnl3.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isdnl3.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isdnl3.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: isurf.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/isurf.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: ix1_micro.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/ix1_micro.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: jade.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/jade.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: jade.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/jade.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: jade_irq.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/jade_irq.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: l3_1tr6.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/l3_1tr6.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: l3_1tr6.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/l3_1tr6.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: l3dss1.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/l3dss1.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: l3dss1.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/l3dss1.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: l3ni1.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/l3ni1.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: l3ni1.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/l3ni1.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: lmgr.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/lmgr.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: mic.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/mic.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: netjet.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/netjet.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: netjet.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/netjet.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: niccy.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/niccy.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: nj_s.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/nj_s.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: nj_u.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/nj_u.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: q931.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/q931.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: rawhdlc.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/rawhdlc.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: rawhdlc.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/rawhdlc.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: s0box.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/s0box.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: saphir.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/saphir.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: sedlbauer.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/sedlbauer.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: sportster.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/sportster.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: st5481_b.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/st5481_b.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- st5481_b.c 10 Apr 2002 15:32:25 -0000 1.1
+++ st5481_b.c 10 Jun 2003 01:13:39 -0000 1.2
@@ -275,7 +275,7 @@
usb_b_out_complete, bcs);
}
-static void __devexit st5481_release_b_out(struct st5481_bcs *bcs)
+static void st5481_release_b_out(struct st5481_bcs *bcs)
{
struct st5481_b_out *b_out = &bcs->b_out;
@@ -316,7 +316,7 @@
/*
* Release buffers and URBs for the B channels
*/
-void __devexit st5481_release_b(struct st5481_bcs *bcs)
+void st5481_release_b(struct st5481_bcs *bcs)
{
DBG(4,"");
Index: st5481_d.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/st5481_d.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- st5481_d.c 10 Apr 2002 15:32:25 -0000 1.1
+++ st5481_d.c 10 Jun 2003 01:13:39 -0000 1.2
@@ -673,7 +673,7 @@
usb_d_out_complete, adapter);
}
-static void __devexit st5481_release_d_out(struct st5481_adapter *adapter)
+static void st5481_release_d_out(struct st5481_adapter *adapter)
{
struct st5481_d_out *d_out = &adapter->d_out;
@@ -723,7 +723,7 @@
return retval;
}
-void __devexit st5481_release_d(struct st5481_adapter *adapter)
+void st5481_release_d(struct st5481_adapter *adapter)
{
DBG(2,"");
Index: st5481_init.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/st5481_init.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- st5481_init.c 10 Apr 2002 15:32:25 -0000 1.1
+++ st5481_init.c 10 Jun 2003 01:13:39 -0000 1.2
@@ -178,7 +178,7 @@
static struct usb_driver st5481_usb_driver = {
name: "st5481_usb",
probe: probe_st5481,
- disconnect: disconnect_st5481,
+ disconnect: __devexit_p(disconnect_st5481),
id_table: st5481_ids,
};
Index: st5481_usb.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/st5481_usb.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- st5481_usb.c 10 Apr 2002 15:32:25 -0000 1.1
+++ st5481_usb.c 10 Jun 2003 01:13:39 -0000 1.2
@@ -307,7 +307,7 @@
* Release buffers and URBs for the interrupt and control
* endpoint.
*/
-void __devexit st5481_release_usb(struct st5481_adapter *adapter)
+void st5481_release_usb(struct st5481_adapter *adapter)
{
struct st5481_intr *intr = &adapter->intr;
struct st5481_ctrl *ctrl = &adapter->ctrl;
@@ -443,7 +443,7 @@
return retval;
}
-void __devexit st5481_release_isocpipes(struct urb* urb[2])
+void st5481_release_isocpipes(struct urb* urb[2])
{
int j;
@@ -547,7 +547,7 @@
return retval;
}
-void __devexit st5481_release_in(struct st5481_in *in)
+void st5481_release_in(struct st5481_in *in)
{
DBG(2,"");
Index: tei.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/tei.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: teleint.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/teleint.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: teles0.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/teles0.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: teles3.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/teles3.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: telespci.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/telespci.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: w6692.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/w6692.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
Index: w6692.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/hisax/w6692.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn/sc Modified Files: card.h command.c debug.c debug.h event.c interrupt.c message.c message.h packet.c shmem.c timer.c Log Message: DA: sync with Marcelo 2.4.17 Index: card.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/card.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: command.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/command.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: debug.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/debug.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: debug.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/debug.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: event.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/event.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: interrupt.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/interrupt.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: message.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/message.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: message.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/message.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: packet.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/packet.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: shmem.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/shmem.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 Index: timer.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/sc/timer.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 |
|
From: Dave A. <ai...@us...> - 2003-06-10 01:15:25
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/media/radio
In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/media/radio
Modified Files:
radio-gemtek-pci.c radio-maxiradio.c
Log Message:
DA: sync with Marcelo 2.4.17
Index: radio-gemtek-pci.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/media/radio/radio-gemtek-pci.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- radio-gemtek-pci.c 10 Apr 2002 14:57:35 -0000 1.1
+++ radio-gemtek-pci.c 10 Jun 2003 01:13:44 -0000 1.2
@@ -424,7 +424,7 @@
name: "gemtek_pci",
id_table: gemtek_pci_id,
probe: gemtek_pci_probe,
- remove: gemtek_pci_remove
+ remove: __devexit_p(gemtek_pci_remove),
};
static int __init gemtek_pci_init_module( void )
Index: radio-maxiradio.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/media/radio/radio-maxiradio.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- radio-maxiradio.c 10 Apr 2002 14:57:35 -0000 1.1
+++ radio-maxiradio.c 10 Jun 2003 01:13:44 -0000 1.2
@@ -376,7 +376,7 @@
name: "radio-maxiradio",
id_table: maxiradio_pci_tbl,
probe: maxiradio_init_one,
- remove: maxiradio_remove_one,
+ remove: __devexit_p(maxiradio_remove_one),
};
int __init maxiradio_radio_init(void)
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:15:24
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/md
In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/md
Modified Files:
lvm-fs.c lvm-snap.c md.c
Log Message:
DA: sync with Marcelo 2.4.17
Index: lvm-fs.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/md/lvm-fs.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- lvm-fs.c 10 Apr 2002 14:57:35 -0000 1.1
+++ lvm-fs.c 10 Jun 2003 01:13:44 -0000 1.2
@@ -30,6 +30,7 @@
* 04/10/2001 - corrected devfs_register() call in lvm_init_fs()
* 11/04/2001 - don't devfs_register("lvm") as user-space always does it
* 10/05/2001 - show more of PV name in /proc/lvm/global
+ * 16/12/2001 - fix devfs unregister order and prevent duplicate unreg (REG)
*
*/
@@ -138,7 +139,7 @@
int i;
devfs_unregister(ch_devfs_handle[vg_ptr->vg_number]);
- devfs_unregister(vg_devfs_handle[vg_ptr->vg_number]);
+ ch_devfs_handle[vg_ptr->vg_number] = NULL;
/* remove lv's */
for(i = 0; i < vg_ptr->lv_max; i++)
@@ -148,6 +149,10 @@
for(i = 0; i < vg_ptr->pv_max; i++)
if(vg_ptr->pv[i]) lvm_fs_remove_pv(vg_ptr, vg_ptr->pv[i]);
+ /* must not remove directory before leaf nodes */
+ devfs_unregister(vg_devfs_handle[vg_ptr->vg_number]);
+ vg_devfs_handle[vg_ptr->vg_number] = NULL;
+
if(vg_ptr->vg_dir_pde) {
remove_proc_entry(LVM_LV_SUBDIR, vg_ptr->vg_dir_pde);
vg_ptr->lv_subdir_pde = NULL;
@@ -189,6 +194,7 @@
void lvm_fs_remove_lv(vg_t *vg_ptr, lv_t *lv) {
devfs_unregister(lv_devfs_handle[MINOR(lv->lv_dev)]);
+ lv_devfs_handle[MINOR(lv->lv_dev)] = NULL;
if(vg_ptr->lv_subdir_pde) {
const char *name = _basename(lv->lv_name);
Index: lvm-snap.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/md/lvm-snap.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- lvm-snap.c 10 Apr 2002 14:57:35 -0000 1.2
+++ lvm-snap.c 10 Jun 2003 01:13:44 -0000 1.3
@@ -542,8 +542,6 @@
void lvm_snapshot_release(lv_t * lv)
{
- int nbhs = KIO_MAX_SECTORS;
-
if (lv->lv_block_exception)
{
vfree(lv->lv_block_exception);
Index: md.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/md/md.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- md.c 10 Apr 2002 14:57:35 -0000 1.2
+++ md.c 10 Jun 2003 01:13:44 -0000 1.3
@@ -4039,4 +4039,4 @@
MD_EXPORT_SYMBOL(mddev_map);
MD_EXPORT_SYMBOL(md_check_ordering);
MD_EXPORT_SYMBOL(get_spare);
-
+MODULE_LICENSE("GPL");
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:15:24
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv7538/arch/ppc/kernel
Modified Files:
i8259.c pmac_pic.c prom.c smp.c
Log Message:
DA: sync with Marcelo 2.4.17
Index: i8259.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/kernel/i8259.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- i8259.c 10 Apr 2002 15:04:06 -0000 1.2
+++ i8259.c 10 Jun 2003 01:13:15 -0000 1.3
@@ -13,7 +13,7 @@
#define cached_A1 (cached_8259[0])
#define cached_21 (cached_8259[1])
-spinlock_t i8259_lock = SPIN_LOCK_UNLOCKED;
+static spinlock_t i8259_lock = SPIN_LOCK_UNLOCKED;
int i8259_pic_irq_offset;
Index: pmac_pic.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/kernel/pmac_pic.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- pmac_pic.c 10 Apr 2002 15:04:09 -0000 1.2
+++ pmac_pic.c 10 Jun 2003 01:13:15 -0000 1.3
@@ -36,7 +36,7 @@
static int max_irqs;
static int max_real_irqs;
-spinlock_t pmac_pic_lock = SPIN_LOCK_UNLOCKED;
+static spinlock_t pmac_pic_lock = SPIN_LOCK_UNLOCKED;
#define GATWICK_IRQ_POOL_SIZE 10
Index: prom.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/kernel/prom.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- prom.c 10 Apr 2002 15:04:10 -0000 1.2
+++ prom.c 10 Jun 2003 01:13:15 -0000 1.3
@@ -1928,7 +1928,7 @@
}
#endif
-spinlock_t rtas_lock = SPIN_LOCK_UNLOCKED;
+static spinlock_t rtas_lock = SPIN_LOCK_UNLOCKED;
/* this can be called after setup -- Cort */
int __openfirmware
Index: smp.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/kernel/smp.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- smp.c 13 Apr 2002 16:09:15 -0000 1.3
+++ smp.c 10 Jun 2003 01:13:15 -0000 1.4
@@ -23,6 +23,7 @@
#include <linux/unistd.h>
#include <linux/init.h>
#include <linux/spinlock.h>
+#include <linux/cache.h>
#include <asm/ptrace.h>
#include <asm/atomic.h>
@@ -45,7 +46,7 @@
struct klock_info_struct klock_info = { KLOCK_CLEAR, 0 };
atomic_t ipi_recv;
atomic_t ipi_sent;
-spinlock_t kernel_flag __cacheline_aligned = SPIN_LOCK_UNLOCKED;
+spinlock_t kernel_flag __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED;
unsigned int prof_multiplier[NR_CPUS];
unsigned int prof_counter[NR_CPUS];
cycles_t cacheflush_time;
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/isdn/tpam
In directory sc8-pr-cvs1:/tmp/cvs-serv7538/drivers/isdn/tpam
Modified Files:
tpam.h tpam_commands.c tpam_crcpc.c tpam_hdlc.c tpam_main.c
tpam_memory.c tpam_nco.c tpam_queues.c
Log Message:
DA: sync with Marcelo 2.4.17
Index: tpam.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/tpam/tpam.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
Index: tpam_commands.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/tpam/tpam_commands.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
Index: tpam_crcpc.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/tpam/tpam_crcpc.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
Index: tpam_hdlc.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/tpam/tpam_hdlc.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
Index: tpam_main.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/tpam/tpam_main.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- tpam_main.c 10 Apr 2002 15:32:31 -0000 1.1
+++ tpam_main.c 10 Jun 2003 01:13:44 -0000 1.2
@@ -254,7 +254,7 @@
name: "tpam",
id_table: tpam_pci_tbl,
probe: tpam_probe,
- remove: tpam_remove,
+ remove: __devexit_p(tpam_remove),
};
static int __init tpam_init(void) {
Index: tpam_memory.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/tpam/tpam_memory.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
Index: tpam_nco.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/tpam/tpam_nco.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
Index: tpam_queues.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/isdn/tpam/tpam_queues.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
|
|
From: Dave A. <ai...@us...> - 2003-06-10 01:15:24
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/i386/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv7538/arch/i386/kernel
Modified Files:
dmi_scan.c pci-pc.c setup.c smp.c smpboot.c
Log Message:
DA: sync with Marcelo 2.4.17
Index: dmi_scan.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/kernel/dmi_scan.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- dmi_scan.c 10 Apr 2002 14:23:20 -0000 1.2
+++ dmi_scan.c 10 Jun 2003 01:13:14 -0000 1.3
@@ -523,6 +523,12 @@
MATCH(DMI_BIOS_DATE, "05/11/00"), NO_MATCH
} },
+ { swab_apm_power_in_minutes, "Sony VAIO", { /* Handle problems with APM on Sony Vaio PCG-Z600NE */
+ MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
+ MATCH(DMI_BIOS_VERSION, "WME01Z1"),
+ MATCH(DMI_BIOS_DATE, "08/11/00"), NO_MATCH
+ } },
+
{ swab_apm_power_in_minutes, "Sony VAIO", { /* Handle problems with APM on Sony Vaio PCG-Z505LS */
MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
MATCH(DMI_BIOS_VERSION, "R0203D0"),
@@ -562,6 +568,11 @@
{ broken_pirq, "l44GX Bios", { /* Bad $PIR */
MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0094.P10"),
+ NO_MATCH, NO_MATCH
+ } },
+ { broken_pirq, "l44GX Bios", { /* Bad $PIR */
+ MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
+ MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0120.P12"),
NO_MATCH, NO_MATCH
} },
{ broken_pirq, "l44GX Bios", { /* Bad $PIR */
Index: pci-pc.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/kernel/pci-pc.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- pci-pc.c 10 Apr 2002 14:23:21 -0000 1.2
+++ pci-pc.c 10 Jun 2003 01:13:14 -0000 1.3
@@ -30,7 +30,7 @@
* This interrupt-safe spinlock protects all accesses to PCI
* configuration space.
*/
-spinlock_t pci_config_lock = SPIN_LOCK_UNLOCKED;
+static spinlock_t pci_config_lock = SPIN_LOCK_UNLOCKED;
/*
Index: setup.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/kernel/setup.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- setup.c 10 Apr 2002 14:23:21 -0000 1.2
+++ setup.c 10 Jun 2003 01:13:14 -0000 1.3
@@ -1280,9 +1280,27 @@
}
break;
- case 6: /* An Athlon/Duron. We can trust the BIOS probably */
- mcheck_init(c);
- break;
+ case 6: /* An Athlon/Duron */
+
+ /* Bit 15 of Athlon specific MSR 15, needs to be 0
+ * to enable SSE on Palomino/Morgan CPU's.
+ * If the BIOS didn't enable it already, enable it
+ * here.
+ */
+ if (c->x86_model == 6 || c->x86_model == 7) {
+ if (!test_bit(X86_FEATURE_XMM,
+ &c->x86_capability)) {
+ printk(KERN_INFO
+ "Enabling Disabled K7/SSE Support...\n");
+ rdmsr(MSR_K7_HWCR, l, h);
+ l &= ~0x00008000;
+ wrmsr(MSR_K7_HWCR, l, h);
+ set_bit(X86_FEATURE_XMM,
+ &c->x86_capability);
+ }
+ }
+ break;
+
}
display_cacheinfo(c);
@@ -1909,7 +1927,6 @@
c->x86_cache_size = (cc>>24)+(dd>>24);
}
sprintf( c->x86_model_id, "WinChip %s", name );
- mcheck_init(c);
break;
case 6:
@@ -2193,9 +2210,56 @@
if ( p )
strcpy(c->x86_model_id, p);
+
+#ifdef CONFIG_SMP
+ if (test_bit(X86_FEATURE_HT, &c->x86_capability)) {
+ extern int phys_proc_id[NR_CPUS];
+
+ u32 eax, ebx, ecx, edx;
+ int index_lsb, index_msb, tmp;
+ int initial_apic_id;
+ int cpu = smp_processor_id();
+
+ cpuid(1, &eax, &ebx, &ecx, &edx);
+ smp_num_siblings = (ebx & 0xff0000) >> 16;
+
+ if (smp_num_siblings == 1) {
+ printk(KERN_INFO "CPU: Hyper-Threading is disabled\n");
+ } else if (smp_num_siblings > 1 ) {
+ index_lsb = 0;
+ index_msb = 31;
+ /*
+ * At this point we only support two siblings per
+ * processor package.
+ */
+#define NR_SIBLINGS 2
+ if (smp_num_siblings != NR_SIBLINGS) {
+ printk(KERN_WARNING "CPU: Unsuppored number of the siblings %d", smp_num_siblings);
+ smp_num_siblings = 1;
+ goto too_many_siblings;
+ }
+ tmp = smp_num_siblings;
+ while ((tmp & 1) == 0) {
+ tmp >>=1 ;
+ index_lsb++;
+ }
+ tmp = smp_num_siblings;
+ while ((tmp & 0x80000000 ) == 0) {
+ tmp <<=1 ;
+ index_msb--;
+ }
+ if (index_lsb != index_msb )
+ index_msb++;
+ initial_apic_id = ebx >> 24 & 0xff;
+ phys_proc_id[cpu] = initial_apic_id >> index_msb;
- /* Enable MCA if available */
- mcheck_init(c);
+ printk(KERN_INFO "CPU: Physical Processor ID: %d\n",
+ phys_proc_id[cpu]);
+ }
+
+ }
+too_many_siblings:
+#endif
}
void __init get_cpu_vendor(struct cpuinfo_x86 *c)
@@ -2575,7 +2639,7 @@
init_rise(c);
break;
}
-
+
printk(KERN_DEBUG "CPU: After vendor init, caps: %08x %08x %08x %08x\n",
c->x86_capability[0],
c->x86_capability[1],
@@ -2602,6 +2666,9 @@
/* Disable the PN if appropriate */
squash_the_stupid_serial_number(c);
+ /* Init Machine Check Exception if available. */
+ mcheck_init(c);
+
/* If the model name is still unset, do table lookup. */
if ( !c->x86_model_id[0] ) {
char *p;
@@ -2699,7 +2766,7 @@
"fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
"cx8", "apic", NULL, "sep", "mtrr", "pge", "mca", "cmov",
"pat", "pse36", "pn", "clflush", NULL, "dts", "acpi", "mmx",
- "fxsr", "sse", "sse2", "ss", NULL, "tm", "ia64", NULL,
+ "fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", NULL,
/* AMD-defined */
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
Index: smp.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/kernel/smp.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- smp.c 10 Apr 2002 14:23:21 -0000 1.2
+++ smp.c 10 Jun 2003 01:13:14 -0000 1.3
@@ -17,6 +17,7 @@
#include <linux/smp_lock.h>
#include <linux/kernel_stat.h>
#include <linux/mc146818rtc.h>
+#include <linux/cache.h>
#include <asm/mtrr.h>
#include <asm/pgalloc.h>
@@ -102,7 +103,7 @@
*/
/* The 'big kernel lock' */
-spinlock_t kernel_flag = SPIN_LOCK_UNLOCKED;
+spinlock_t kernel_flag __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED;
struct tlb_state cpu_tlbstate[NR_CPUS] = {[0 ... NR_CPUS-1] = { &init_mm, 0 }};
Index: smpboot.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/i386/kernel/smpboot.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- smpboot.c 10 Apr 2002 14:23:21 -0000 1.2
+++ smpboot.c 10 Jun 2003 01:13:14 -0000 1.3
@@ -56,6 +56,10 @@
/* Total count of live CPUs */
int smp_num_cpus = 1;
+/* Number of siblings per CPU package */
+int smp_num_siblings = 1;
+int __initdata phys_proc_id[NR_CPUS]; /* Package ID of each logical CPU */
+
/* Bitmask of currently online CPUs */
unsigned long cpu_online_map;
@@ -971,6 +975,8 @@
/* Where the IO area was mapped on multiquad, always 0 otherwise */
void *xquad_portio = NULL;
+int cpu_sibling_map[NR_CPUS] __cacheline_aligned;
+
void __init smp_boot_cpus(void)
{
int apicid, cpu, bit;
@@ -1162,6 +1168,34 @@
printk(KERN_WARNING "WARNING: SMP operation may be unreliable with B stepping processors.\n");
Dprintk("Boot done.\n");
+ /*
+ * If Hyper-Threading is avaialble, construct cpu_sibling_map[], so
+ * that we can tell the sibling CPU efficiently.
+ */
+ if (test_bit(X86_FEATURE_HT, boot_cpu_data.x86_capability)
+ && smp_num_siblings > 1) {
+ for (cpu = 0; cpu < NR_CPUS; cpu++)
+ cpu_sibling_map[cpu] = NO_PROC_ID;
+
+ for (cpu = 0; cpu < smp_num_cpus; cpu++) {
+ int i;
+
+ for (i = 0; i < smp_num_cpus; i++) {
+ if (i == cpu)
+ continue;
+ if (phys_proc_id[cpu] == phys_proc_id[i]) {
+ cpu_sibling_map[cpu] = i;
+ printk("cpu_sibling_map[%d] = %d\n", cpu, cpu_sibling_map[cpu]);
+ break;
+ }
+ }
+ if (cpu_sibling_map[cpu] == NO_PROC_ID) {
+ smp_num_siblings = 1;
+ printk(KERN_WARNING "WARNING: No sibling found for CPU %d.\n", cpu);
+ }
+ }
+ }
+
#ifndef CONFIG_VISWS
/*
* Here we can be sure that there is an IO-APIC in the system. Let's
|