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 |