public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
@ 2000-04-25  3:31 David Mosberger
  2000-04-25  9:29 ` Christoph Rohland
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: David Mosberger @ 2000-04-25  3:31 UTC (permalink / raw)
  To: linux-ia64

A new IA-64 kernel diff is now available at:

 ftp://ftp.kernel.org/linux/kernel/ports/ia64/

in files linux-2.3.99-pre5-ia64-000424.diff*.  This diff is relative
to 2.3.99-pre5 and should work reasonably well on SMP (much better
than the previous patch, for sure...).  The changes since the previous
patch are below. In summary:

 - Don't prevent concurrent execution of IPI and timer interrupts.
   This gets rid of the extremely frequent "ITM in past" messages we
   were seeing.  Thanks to Asit for pointing this out.  Apparently,
   this bug was fixed a while ago already and got re-introduced when
   we switched to the new irq code (based on the x86 code).  My bad.

 - Put the itm[cpu].next value in a separate cachline for each CPU.
   This ain't pretty and I think we'll want a separate global variable
   (perhaps cpu[NUM_CPUS]) instead so we can collect (small) variables
   that need to be per-CPU so that we don't waste most of a cache-line
   for each such variable.  But for now, this will do.

 - Disable the gettimeoffset() code for SMP.  That code doesn't work
   _unless_ the ITC on all CPUs are in perfect synchrony.  The effect
   of this is that gettimeofday() will return values with timer-tick
   (currently 10ms) resolution only.  If someone has a smart idea on
   how to do this properly on an SMP without assuming the presence of
   an external timer chip and without causing extra IPIs, I'm all
   ears. ;-)

 - Various minor updates to sync up with 2.3.99-pre5.  A noteworthy
   change that the glibc folks should pay attention to: there are two
   new system calls: madvise() and mincore().  We should add glibc
   stubs for these (perhaps they're in glibc-2.2 already?).

 - Some minor spinlock fixes.

Enjoy,

	--david

diff -urN linux-davidm/arch/ia64/kernel/irq.c linux-2.3.99-pre5-lia/arch/ia64/kernel/irq.c
--- linux-davidm/arch/ia64/kernel/irq.c	Fri Apr 21 18:50:34 2000
+++ linux-2.3.99-pre5-lia/arch/ia64/kernel/irq.c	Mon Apr 24 17:12:22 2000
@@ -582,7 +582,8 @@
 	if (!(status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
 		action = desc->action;
 		status &= ~IRQ_PENDING; /* we commit to handling */
-		status |= IRQ_INPROGRESS; /* we are handling it */
+		if (!(status & IRQ_PER_CPU))
+			status |= IRQ_INPROGRESS; /* we are handling it */
 	}
 	desc->status = status;
 
diff -urN linux-davidm/arch/ia64/kernel/irq_ia64.c linux-2.3.99-pre5-lia/arch/ia64/kernel/irq_ia64.c
--- linux-davidm/arch/ia64/kernel/irq_ia64.c	Fri Apr 21 18:50:34 2000
+++ linux-2.3.99-pre5-lia/arch/ia64/kernel/irq_ia64.c	Mon Apr 24 19:00:21 2000
@@ -210,12 +210,12 @@
 	ia64_set_lrr0(0, 1);	
 	ia64_set_lrr1(0, 1);	
 
-	irq_desc[TIMER_IRQ].handler	    = &irq_type_ia64_sapic;
 	irq_desc[IA64_SPURIOUS_INT].handler = &irq_type_ia64_sapic;
 #ifdef CONFIG_SMP
 	/* 
 	 * Configure the IPI vector and handler
 	 */
+	irq_desc[IPI_IRQ].status |= IRQ_PER_CPU;
 	irq_desc[IPI_IRQ].handler = &irq_type_ia64_sapic;
 	setup_irq(IPI_IRQ, &ipi_irqaction);
 #endif
diff -urN linux-davidm/arch/ia64/kernel/ivt.S linux-2.3.99-pre5-lia/arch/ia64/kernel/ivt.S
--- linux-davidm/arch/ia64/kernel/ivt.S	Fri Apr 21 18:50:34 2000
+++ linux-2.3.99-pre5-lia/arch/ia64/kernel/ivt.S	Fri Apr 21 20:18:50 2000
@@ -441,9 +441,6 @@
 	tbit.z p6,p0=r17,IA64_PSR_IS_BIT	// IA64 instruction set?
 	;;
 (p6)	mov r16=r18				// if so, use cr.iip instead of cr.ifa
-#if 0
-	;;
-#endif
 	mov pr=r31,-1
 #endif /* CONFIG_ITANIUM */
 	movl r30\x1f				// load continuation point in case of nested fault
@@ -581,7 +578,7 @@
 	SAVE_REST
 	;;
 	alloc r14=ar.pfs,0,0,2,0 // must be first in an insn group
-#ifdef	CONFIG_ITANIUM_ASTEP_SPECIFIC
+#ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
 	mov out0=r0		// defer reading of cr.ivr to handle_irq...
 #else
 	mov out0=cr.ivr		// pass cr.ivr as first arg
diff -urN linux-davidm/arch/ia64/kernel/process.c linux-2.3.99-pre5-lia/arch/ia64/kernel/process.c
--- linux-davidm/arch/ia64/kernel/process.c	Fri Mar 10 15:24:02 2000
+++ linux-2.3.99-pre5-lia/arch/ia64/kernel/process.c	Fri Apr 21 21:53:49 2000
@@ -98,11 +98,18 @@
 		if (pm_idle)
 			(*pm_idle)();
 #ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
-		if (ia64_get_itm() < ia64_get_itc()) {
-			extern void ia64_reset_itm (void);
+		{
+			u64 itc, itm;
 
-			printk("cpu_idle: ITM in past, resetting it...\n");
-			ia64_reset_itm();
+			itc = ia64_get_itc();
+			itm = ia64_get_itm();
+			if (time_after(itc, itm)) {
+				extern void ia64_reset_itm (void);
+
+				printk("cpu_idle: ITM in past, resetting it (itc=%lx,itm=%lx:%lums)...\n",
+				       itc, itm, (itc - itm)/500000);
+				ia64_reset_itm();
+			}
 		}
 #endif
 	}
diff -urN linux-davidm/arch/ia64/kernel/time.c linux-2.3.99-pre5-lia/arch/ia64/kernel/time.c
--- linux-davidm/arch/ia64/kernel/time.c	Fri Apr 21 18:50:34 2000
+++ linux-2.3.99-pre5-lia/arch/ia64/kernel/time.c	Mon Apr 24 18:58:49 2000
@@ -34,7 +34,10 @@
 
 static struct {
 	unsigned long delta;
-	unsigned long next[NR_CPUS];
+	union {
+		unsigned long count;
+		unsigned char pad[SMP_CACHE_BYTES];
+	} next[NR_CPUS];
 } itm;
 
 static void
@@ -69,16 +72,24 @@
 static inline unsigned long
 gettimeoffset (void)
 {
+#ifdef CONFIG_SMP
+	/*
+	 * The code below doesn't work for SMP because only CPU 0
+	 * keeps track of the time.
+	 */
+	return 0;
+#else
 	unsigned long now = ia64_get_itc();
 	unsigned long elapsed_cycles, lost;
 
-	elapsed_cycles = now - (itm.next[smp_processor_id()] - itm.delta);
+	elapsed_cycles = now - (itm.next[smp_processor_id()].count - itm.delta);
 
 	lost = lost_ticks;
 	if (lost)
 		elapsed_cycles += lost*itm.delta;
 
 	return (elapsed_cycles*my_cpu_data.usec_per_cyc) >> IA64_USEC_PER_CYC_SHIFT;
+#endif
 }
 
 void
@@ -164,7 +175,7 @@
 		do_timer(regs);
 #endif
 
-		itm.next[cpu] += itm.delta;
+		itm.next[cpu].count += itm.delta;
 		/*
 		 * There is a race condition here: to be on the "safe"
 		 * side, we process timer ticks until itm.next is
@@ -172,8 +183,8 @@
 		 * interval.  This should give us enough time to set
 		 * the new itm value without losing a timer tick.
 		 */
-		if (time_after(itm.next[cpu], ia64_get_itc() + itm.delta/2)) {
-			ia64_set_itm(itm.next[cpu]);
+		if (time_after(itm.next[cpu].count, ia64_get_itc() + itm.delta/2)) {
+			ia64_set_itm(itm.next[cpu].count);
 			break;
 		}
 
@@ -182,19 +193,21 @@
 		 * SoftSDV in SMP mode is _slow_, so we do "lose" ticks, 
 		 * but it's really OK...
 		 */
+		write_unlock(&xtime_lock);
 		if (count > 0 && jiffies - last_time > 5*HZ)
 			count = 0;
 		if (count++ = 0) {
 			last_time = jiffies;
 			if (!printed) {
 				printk("Lost clock tick on CPU %d (now=%lx, next=%lx)!!\n",
-				       cpu, ia64_get_itc(), itm.next[cpu]);
+				       cpu, ia64_get_itc(), itm.next[cpu].count);
 				printed = 1;
-			}
 # ifdef CONFIG_IA64_DEBUG_IRQ
-			printk("last_cli_ip=%lx\n", last_cli_ip);
+				printk("last_cli_ip=%lx\n", last_cli_ip);
 # endif
+			}
 		}
+		write_lock(&xtime_lock);
 #endif
 	}
 	write_unlock(&xtime_lock);
@@ -202,7 +215,7 @@
 
 #ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
 
-void 
+void
 ia64_reset_itm (void)
 {
 	unsigned long flags;
@@ -220,11 +233,14 @@
 void __init
 ia64_cpu_local_tick(void)
 {
+#ifdef CONFIG_IA64_SOFTSDV_HACKS
+	ia64_set_itc(0);
+#endif
+
 	/* arrange for the cycle counter to generate a timer interrupt: */
 	ia64_set_itv(TIMER_IRQ, 0);
-	ia64_set_itc(0);
-	itm.next[smp_processor_id()] = ia64_get_itc() + itm.delta;
-	ia64_set_itm(itm.next[smp_processor_id()]);
+	itm.next[smp_processor_id()].count = ia64_get_itc() + itm.delta;
+	ia64_set_itm(itm.next[smp_processor_id()].count);
 }
 
 void __init
@@ -313,6 +329,8 @@
 time_init (void)
 {
 	/* we can't do request_irq() here because the kmalloc() would fail... */
+	irq_desc[TIMER_IRQ].status |= IRQ_PER_CPU;
+	irq_desc[TIMER_IRQ].handler = &irq_type_ia64_sapic;
 	setup_irq(TIMER_IRQ, &timer_irqaction);
 
 	efi_gettimeofday(&xtime);
diff -urN linux-davidm/drivers/ide/piix.c linux-2.3.99-pre5-lia/drivers/ide/piix.c
--- linux-davidm/drivers/ide/piix.c	Wed Mar 22 17:18:44 2000
+++ linux-2.3.99-pre5-lia/drivers/ide/piix.c	Fri Apr 21 00:00:32 2000
@@ -396,8 +396,11 @@
 
 void __init ide_init_piix (ide_hwif_t *hwif)
 {
+#if 0
+	/* autoprobe instead... --davidm 00/04/20 */
 	if (!hwif->irq)
 		hwif->irq = hwif->channel ? 15 : 14;
+#endif
 
 	hwif->tuneproc = &piix_tune_drive;
 	hwif->drives[0].autotune = 1;
diff -urN linux-davidm/fs/binfmt_elf.c linux-2.3.99-pre5-lia/fs/binfmt_elf.c
--- linux-davidm/fs/binfmt_elf.c	Fri Apr 21 18:50:35 2000
+++ linux-2.3.99-pre5-lia/fs/binfmt_elf.c	Thu Apr 20 17:43:21 2000
@@ -282,8 +282,8 @@
 	    set_brk(ia32_mm_addr(vaddr + load_addr), vaddr + load_addr + eppnt->p_memsz);
 	    memset((char *) vaddr + load_addr + eppnt->p_filesz, 0,
 		   eppnt->p_memsz - eppnt->p_filesz);
-	    read_exec(interpreter->f_dentry, eppnt->p_offset,
-		      (char *)(vaddr + load_addr), eppnt->p_filesz, 0);
+	    kernel_read(interpreter, eppnt->p_offset, (char *)(vaddr + load_addr),
+			eppnt->p_filesz);
 	    map_addr = vaddr + load_addr;
 #else /* !CONFIG_BINFMT_ELF32 */
 	    map_addr = do_mmap(interpreter,
@@ -299,9 +299,8 @@
 			   (unsigned long) eppnt->p_memsz, (unsigned long) eppnt->p_filesz);
 		    map_addr = vaddr + load_addr;
 		    do_brk(map_addr & PAGE_MASK, eppnt->p_filesz);
-		    if (read_exec(file->f_dentry, eppnt->p_offset, (char *) map_addr,
-				  eppnt->p_filesz, 0)
-			< 0)
+		    if (kernel_read(interpreter, eppnt->p_offset, (char *) map_addr,
+				    eppnt->p_filesz) < 0)
 			    goto out_close;
 	    }
 
@@ -650,8 +649,8 @@
 		set_brk(ia32_mm_addr(vaddr + load_bias), vaddr + load_bias + elf_ppnt->p_memsz);
 		memset((char *) vaddr + load_bias + elf_ppnt->p_filesz, 0,
 		       elf_ppnt->p_memsz - elf_ppnt->p_filesz);
-		read_exec(bprm->dentry, elf_ppnt->p_offset,
-			  (char *)(vaddr + load_bias), elf_ppnt->p_filesz, 0);
+		kernel_read(bprm->file, elf_ppnt->p_offset, (char *) (vaddr + load_bias),
+			    elf_ppnt->p_filesz);
 		error = vaddr + load_bias;
 #else /* CONFIG_BINFMT_ELF32 */
 		error = do_mmap(bprm->file, ELF_PAGESTART(load_bias + vaddr),
@@ -667,8 +666,8 @@
 			       (unsigned long)elf_ppnt->p_filesz);
 			error = vaddr + load_bias;
 			do_brk(error & PAGE_MASK, elf_ppnt->p_filesz);
-			error = read_exec(bprm->dentry, elf_ppnt->p_offset, (char *) error,
-					  elf_ppnt->p_filesz, 0);
+			error = kernel_read(bprm->file, elf_ppnt->p_offset, (char *) error,
+					    elf_ppnt->p_filesz);
 		}
 
 		if (!load_addr_set) {
diff -urN linux-davidm/include/asm-ia64/spinlock.h linux-2.3.99-pre5-lia/include/asm-ia64/spinlock.h
--- linux-davidm/include/asm-ia64/spinlock.h	Fri Apr 21 18:50:35 2000
+++ linux-2.3.99-pre5-lia/include/asm-ia64/spinlock.h	Mon Apr 24 17:17:15 2000
@@ -9,6 +9,8 @@
  * This file is used for SMP configurations only.
  */
 
+#include <linux/kernel.h>
+
 #include <asm/system.h>
 #include <asm/bitops.h>
 #include <asm/atomic.h>
@@ -40,7 +42,7 @@
        "cmp4.eq p0,p7 = r0, r2\n" \
        "(p7) br.cond.spnt.few 1b\n" \
        ";;\n" \
-       :: "m" __atomic_fool_gcc((x)) : "r2", "r29")
+       :: "m" __atomic_fool_gcc((x)) : "r2", "r29", "memory")
  
 #else 
 #define spin_lock(x)					\
@@ -55,22 +57,12 @@
 
 #define spin_is_locked(x)	((x)->lock != 0)
 
-#define spin_unlock(x)		(((spinlock_t *) x)->lock = 0)
+#define spin_unlock(x)		({((spinlock_t *) x)->lock = 0; barrier();})
 
 /* Streamlined !test_and_set_bit(0, (x)) */
-#define spin_trylock(x)						\
-({								\
-	spinlock_t *__x = (x);					\
-	__u32 old;						\
-								\
-	do {							\
-		old = __x->lock;				\
-	} while (cmpxchg_acq(&__x->lock, old, 1) != old);	\
-	old = 0;						\
-})
+#define spin_trylock(x)		(cmpxchg_acq(&(x)->lock, 0, 1) = 0)
 
-#define spin_unlock_wait(x) \
-	({ do { barrier(); } while(((volatile spinlock_t *)x)->lock); })
+#define spin_unlock_wait(x)	({ do { barrier(); } while ((x)->lock); })
 
 typedef struct {
 	volatile int read_counter:31;
@@ -78,45 +70,49 @@
 } rwlock_t;
 #define RW_LOCK_UNLOCKED (rwlock_t) { 0, 0 }
 
-#define read_lock(rw)									\
-do {											\
-	int tmp = 0;									\
-	__asm__ __volatile__ ("1:\tfetchadd4.acq %0 = %1, 1\n"				\
-			      ";;\n"							\
-			      "tbit.nz p6,p0 = %0, 31\n"				\
-			      "(p6) br.cond.sptk.few 2f\n"				\
-			      ".section .text.lock,\"ax\"\n"				\
-			      "2:\tfetchadd4.rel %0 = %1, -1\n"				\
-			      ";;\n"							\
-			      "3:\tld4.acq %0 = %1\n"					\
-			      ";;\n"							\
-			      "tbit.nz p6,p0 = %0, 31\n"				\
-			      "(p6) br.cond.sptk.few 3b\n"				\
-			      "br.cond.sptk.few 1b\n"					\
-			      ";;\n"							\
-			      ".previous\n": "=r" (tmp), "=m" (__atomic_fool_gcc(rw)));	\
+#define read_lock(rw)							 \
+do {									 \
+	int tmp = 0;							 \
+	__asm__ __volatile__ ("1:\tfetchadd4.acq %0 = %1, 1\n"		 \
+			      ";;\n"					 \
+			      "tbit.nz p6,p0 = %0, 31\n"		 \
+			      "(p6) br.cond.sptk.few 2f\n"		 \
+			      ".section .text.lock,\"ax\"\n"		 \
+			      "2:\tfetchadd4.rel %0 = %1, -1\n"		 \
+			      ";;\n"					 \
+			      "3:\tld4.acq %0 = %1\n"			 \
+			      ";;\n"					 \
+			      "tbit.nz p6,p0 = %0, 31\n"		 \
+			      "(p6) br.cond.sptk.few 3b\n"		 \
+			      "br.cond.sptk.few 1b\n"			 \
+			      ";;\n"					 \
+			      ".previous\n"				 \
+			      : "=r" (tmp), "=m" (__atomic_fool_gcc(rw)) \
+			      :: "memory");				 \
 } while(0)
 
-#define read_unlock(rw)								\
-do {										\
-	int tmp = 0;								\
-	__asm__ __volatile__ ("fetchadd4.rel %0 = %1, -1\n"			\
-			      : "=r" (tmp) : "m" (__atomic_fool_gcc(rw)));	\
+#define read_unlock(rw)						\
+do {								\
+	int tmp = 0;						\
+	__asm__ __volatile__ ("fetchadd4.rel %0 = %1, -1\n"	\
+			      : "=r" (tmp)			\
+			      : "m" (__atomic_fool_gcc(rw))	\
+			      : "memory");			\
 } while(0)
 
 #define write_lock(rw)				\
-while(1) {					\
+do {						\
 	do {					\
-	} while (!test_and_set_bit(31, (rw)));	\
-	if ((rw)->read_counter) {		\
-		clear_bit(31, (rw));		\
-		while ((rw)->read_counter)	\
-			;			\
-	} else {				\
-		break;				\
-	}					\
-}
+		while ((rw)->write_lock);	\
+	} while (test_and_set_bit(31, (rw)));	\
+	while ((rw)->read_counter);		\
+	barrier();				\
+} while (0)
 
-#define write_unlock(x)				(clear_bit(31, (x)))
+/*
+ * clear_bit() has "acq" semantics; we're really need "rel" semantics,
+ * but for simplicity, we simply do a fence for now...
+ */
+#define write_unlock(x)				({clear_bit(31, (x)); mb();})
 
 #endif /*  _ASM_IA64_SPINLOCK_H */
diff -urN linux-davidm/include/linux/irq.h linux-2.3.99-pre5-lia/include/linux/irq.h
--- linux-davidm/include/linux/irq.h	Fri Apr 21 18:50:35 2000
+++ linux-2.3.99-pre5-lia/include/linux/irq.h	Mon Apr 24 17:17:24 2000
@@ -18,6 +18,7 @@
 #define IRQ_WAITING	32	/* IRQ not yet seen - for autodetection */
 #define IRQ_LEVEL	64	/* IRQ level triggered */
 #define IRQ_MASKED	128	/* IRQ masked - shouldn't be seen again */
+#define IRQ_PER_CPU	256	/* IRQ is per CPU */
 
 /*
  * Interrupt controller descriptor. This is all we need
diff -urN linux-davidm/kernel/module.c linux-2.3.99-pre5-lia/kernel/module.c
--- linux-davidm/kernel/module.c	Fri Apr 21 18:50:35 2000
+++ linux-2.3.99-pre5-lia/kernel/module.c	Thu Apr 20 10:28:24 2000
@@ -800,6 +800,7 @@
 {
 	struct module_ref *dep;
 	unsigned i;
+
 	/* Let the module clean up.  */
 
 	if (mod->flags & MOD_RUNNING) 
@@ -1000,12 +1001,6 @@
 #else		/* CONFIG_MODULES */
 
 /* Dummy syscalls for people who don't want modules */
-
-int
-try_inc_mod_count (struct module *mod)
-{
-	return 1;
-}
 
 asmlinkage unsigned long
 sys_create_module(const char *name_user, size_t size)
diff -urN linux-davidm/kernel/printk.c linux-2.3.99-pre5-lia/kernel/printk.c
--- linux-davidm/kernel/printk.c	Fri Apr 21 18:50:35 2000
+++ linux-2.3.99-pre5-lia/kernel/printk.c	Fri Apr 21 18:29:29 2000
@@ -14,6 +14,8 @@
  *     manfreds@colorfullife.com
  */
 
+#include <linux/config.h>
+
 #include <linux/mm.h>
 #include <linux/tty_driver.h>
 #include <linux/smp_lock.h>
@@ -504,7 +506,7 @@
 
 #define VGABASE		((char *)0x00000000000b8000)
 
-static int current_ypos = 0, current_xpos = 0;
+static int current_ypos = 50, current_xpos = 0;
 
 void
 early_printk (const char *str)
@@ -515,13 +517,13 @@
 	while ((c = *str++) != '\0') {
 		if (current_ypos >= 50) {
 			/* scroll 1 line up */
-			for(k = 1, j = 0; k < 50; k++, j++) {
-				for(i = 0; i < 80; i++) {
+			for (k = 1, j = 0; k < 50; k++, j++) {
+				for (i = 0; i < 80; i++) {
 					writew(readw(VGABASE + 2*(80*k + i)),
 					       VGABASE + 2*(80*j + i));
 				}
 			}
-			for(i = 0; i < 80; i++) {
+			for (i = 0; i < 80; i++) {
 				writew(0x720, VGABASE + 2*(80*j + i));
 			}
 			current_ypos = 49;




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
@ 2000-04-25  9:29 ` Christoph Rohland
  2000-04-25  9:50 ` Jes Sorensen
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Christoph Rohland @ 2000-04-25  9:29 UTC (permalink / raw)
  To: linux-ia64

Hi David,

I get:

Linux version 2.3.99-pre5 (root@ls3020) (gcc version 2.9-ia64-000216 snap-000324) #1 Tue Apr 25 10:01:39 CEST 2000
EFI v0.92 by INTEL AL460GX.86B.0027.D27.021800: SALsystab=0x3ff29d60 ACPI=0x3ffd8f48 MPS=0x3ffd0000
SAL v2.112: ia32bios«sent, oem=, product=SAL
sal[0] - entry: pal_proc=0x3ff48010, sal_proc=0x3fef2080
SAL: Platform features BusLock
args to kernel: memQ2M root=/dev/sda2 console=ttyS0,9600n8
ACPI: INTEL LIONEMU 0.0
      CPU 0 (0000:0000): Available.
IOSAPIC Version 2.1: address 0xfec00000 IRQs 0x0 - 0x3f
      1 CPUs available, 1 CPUs total
ia64_mca_init : begin
ia64_mca_init : registered mca rendezvous spinloop and wakeup mech.
ia64_mca_init : correctable mca vector setup done
ia64_mca_init : registered os mca handler with SAL
ia64_mca_init : os init handler at 53b380
ia64_mca_init : registered os init handler with SAL
ia64_mca_init : platform-specific mca handling setup done
Mca related initialization done
On node 0 totalpages: 65378
zone(0): 65378 pages.
zone(1): 0 pages.
zone(2): 0 pages.
fpswa interface at 3fca4110
SAL/PAL returned: base-freq™800600, itc-ratio\x10/2, proc-ratio\x10/2
timer: base freq\x100.000MHz, ITC ratio\x10/2, ITC freqP0.000MHz
Console: colour VGA+ 80x50
Unexpected irq vector 0x0 on CPU 0!
Lost clock tick on CPU 0 (nowžb60ab02, nextœ3d877c3)!!
Calibrating delay loop... 499.71 BogoMIPS
Memory: 1030512k/1046048k available (3148k code, 14592k reserved, 961k data, 256k init)
init.c:79: bad pgd 400000000003de00.
Kernel panic: Out of memory.
In idle task - not syncing

with 2.3.99-pre5 + your patch on my Lion. 2.3.52-0419 was fine.

Greetings
		Christoph



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
  2000-04-25  9:29 ` Christoph Rohland
@ 2000-04-25  9:50 ` Jes Sorensen
  2000-04-25 10:23 ` Christoph Rohland
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Jes Sorensen @ 2000-04-25  9:50 UTC (permalink / raw)
  To: linux-ia64

>>>>> "Christoph" = Christoph Rohland <hans-christoph.rohland@sap.com> writes:

Christoph> Hi David, I get:

[snip]

Christoph> with 2.3.99-pre5 + your patch on my Lion. 2.3.52-0419 was
Christoph> fine.

Did you by any chance use cp to copy it to a fat partition? There are
known issues with cp, whereas 'cat vmlinux > /<dos-partition>/vmlinux'
works fine.

I just booted it here and it worked fine.

Jes



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
  2000-04-25  9:29 ` Christoph Rohland
  2000-04-25  9:50 ` Jes Sorensen
@ 2000-04-25 10:23 ` Christoph Rohland
  2000-04-26  1:32 ` Jesse Barnes
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Christoph Rohland @ 2000-04-25 10:23 UTC (permalink / raw)
  To: linux-ia64

Jes Sorensen <Jes.Sorensen@cern.ch> writes:

> Christoph> with 2.3.99-pre5 + your patch on my Lion. 2.3.52-0419 was
> Christoph> fine.
> 
> Did you by any chance use cp to copy it to a fat partition? There are
> known issues with cp, whereas 'cat vmlinux > /<dos-partition>/vmlinux'
> works fine.

Thanks, that did work...

Greetings
		Christoph



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
                   ` (2 preceding siblings ...)
  2000-04-25 10:23 ` Christoph Rohland
@ 2000-04-26  1:32 ` Jesse Barnes
  2000-04-26  2:18 ` Johannes Erdfelt
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Jesse Barnes @ 2000-04-26  1:32 UTC (permalink / raw)
  To: linux-ia64

I applied this patch to a stock 2.3.99pre5 kernel and compiled it with
the 3/23 toolchain snapshot + patches and SMP turned on.  The compile
went ok under a 2.3.51 up kernel, but when I try to boot I get the
message below and it hangs.  I thought I remembered someone else having
this problem, but I couldn't find it in my mail archives.  Is there a
simple solution?  I'm running a 2p Lion box with A3 processors & 2 GB of
RAM.

Thanks,
Jesse

fs0:\> eli vmlinux-2.3.99pre5smp root=/dev/sda2
Booting `vmlinux-2.3.99pre5smp' acpi_get_vectors
origin = 000000007FCDEE88
bus = 0
num_vector = B
bus = 1
num_vector = 9
bus = 2
num_vector = C
bus = 3
num_vector = C
bus = 4
num_vector = 8
bus = 5
num_vector = 8
bus = 6
num_vector = 8
unable to find _SB_.PCI7
Terminating boot services



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
                   ` (3 preceding siblings ...)
  2000-04-26  1:32 ` Jesse Barnes
@ 2000-04-26  2:18 ` Johannes Erdfelt
  2000-04-26  5:29 ` Seth, Rohit
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Johannes Erdfelt @ 2000-04-26  2:18 UTC (permalink / raw)
  To: linux-ia64

On Tue, Apr 25, 2000, Jesse Barnes <jbarnes@sgi.com> wrote:
> I applied this patch to a stock 2.3.99pre5 kernel and compiled it with
> the 3/23 toolchain snapshot + patches and SMP turned on.  The compile
> went ok under a 2.3.51 up kernel, but when I try to boot I get the
> message below and it hangs.  I thought I remembered someone else having
> this problem, but I couldn't find it in my mail archives.  Is there a
> simple solution?  I'm running a 2p Lion box with A3 processors & 2 GB of
> RAM.
> 
> fs0:\> eli vmlinux-2.3.99pre5smp root=/dev/sda2
> Booting `vmlinux-2.3.99pre5smp' acpi_get_vectors
> origin = 000000007FCDEE88
> bus = 0
> num_vector = B
> bus = 1
> num_vector = 9
> bus = 2
> num_vector = C
> bus = 3
> num_vector = C
> bus = 4
> num_vector = 8
> bus = 5
> num_vector = 8
> bus = 6
> num_vector = 8
> unable to find _SB_.PCI7
> Terminating boot services

This usually means that the kernel failed booting somehow.

There was a problem with one firmware version which didn't setup the ACPI
tables correctly which caused a problem.

You may want to try turning on early printk support. Don't forget to set
the video mode to 80x50 before running eli.

Then you'll see where it failed.

JE




^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
                   ` (4 preceding siblings ...)
  2000-04-26  2:18 ` Johannes Erdfelt
@ 2000-04-26  5:29 ` Seth, Rohit
  2000-04-26 21:18 ` Jesse Barnes
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Seth, Rohit @ 2000-04-26  5:29 UTC (permalink / raw)
  To: linux-ia64

The kernel binary that you are trying to boot is seeming like corrupted.
esrly_printk will  not help as eli does not even seem to have passed the
control to kernel. 

> -----Original Message-----
> From: Johannes Erdfelt [mailto:jerdfelt@valinux.com]
> Sent: Tuesday, April 25, 2000 7:19 PM
> To: linux-ia64@linuxia64.org
> Subject: Re: [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
> 
> 
> On Tue, Apr 25, 2000, Jesse Barnes <jbarnes@sgi.com> wrote:
> > I applied this patch to a stock 2.3.99pre5 kernel and 
> compiled it with
> > the 3/23 toolchain snapshot + patches and SMP turned on.  
> The compile
> > went ok under a 2.3.51 up kernel, but when I try to boot I get the
> > message below and it hangs.  I thought I remembered someone 
> else having
> > this problem, but I couldn't find it in my mail archives.  
> Is there a
> > simple solution?  I'm running a 2p Lion box with A3 
> processors & 2 GB of
> > RAM.
> > 
> > fs0:\> eli vmlinux-2.3.99pre5smp root=/dev/sda2
> > Booting `vmlinux-2.3.99pre5smp' acpi_get_vectors
> > origin = 000000007FCDEE88
> > bus = 0
> > num_vector = B
> > bus = 1
> > num_vector = 9
> > bus = 2
> > num_vector = C
> > bus = 3
> > num_vector = C
> > bus = 4
> > num_vector = 8
> > bus = 5
> > num_vector = 8
> > bus = 6
> > num_vector = 8
> > unable to find _SB_.PCI7
> > Terminating boot services
> 
> This usually means that the kernel failed booting somehow.
> 
> There was a problem with one firmware version which didn't 
> setup the ACPI
> tables correctly which caused a problem.
> 
> You may want to try turning on early printk support. Don't 
> forget to set
> the video mode to 80x50 before running eli.
> 
> Then you'll see where it failed.
> 
> JE
> 
> 
> 
> _______________________________________________
> Linux-IA64 mailing list
> Linux-IA64@linuxia64.org
> http://lists.linuxia64.org/lists/listinfo/linux-ia64
> 




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
                   ` (5 preceding siblings ...)
  2000-04-26  5:29 ` Seth, Rohit
@ 2000-04-26 21:18 ` Jesse Barnes
  2000-05-02  4:22 ` David Mosberger
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Jesse Barnes @ 2000-04-26 21:18 UTC (permalink / raw)
  To: linux-ia64

Yup, seems to have been a corrupted kernel.  I compiled the same kernel
with the same .config on an IA32 box with the SGI compilers.  That
kernel seems to work.  I think the toolchain I was compiling with might
be funky.

Thanks,
Jesse

"Seth, Rohit" wrote:
> 
> The kernel binary that you are trying to boot is seeming like corrupted.
> esrly_printk will  not help as eli does not even seem to have passed the
> control to kernel.
>



^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [Linux-ia64] new kernel diff (relative to 2.3.99-pre5)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
                   ` (6 preceding siblings ...)
  2000-04-26 21:18 ` Jesse Barnes
@ 2000-05-02  4:22 ` David Mosberger
  2000-05-02  6:59 ` [Linux-ia64] new kernel diff (relative to v2.3.99-pre6) David Mosberger
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: David Mosberger @ 2000-05-02  4:22 UTC (permalink / raw)
  To: linux-ia64

Mike,

I don't release patches quite as frequently as Linus, so the
intermediate versions you're looking for simply do not exist.

	--david

>>>>> On Mon, 1 May 2000 19:37:36 -0700 , Mike Weiss <weiss@roguewave.com> said:

  Mike> Why are there only bits and peices of the kernel progression
  Mike> on the kernel.org site? Where can I find the other peices,
  Mike> from 2.3.47->2.3.50, 2.3.51-> 2.3.99-pre5?



^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Linux-ia64] new kernel diff (relative to v2.3.99-pre6)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
                   ` (7 preceding siblings ...)
  2000-05-02  4:22 ` David Mosberger
@ 2000-05-02  6:59 ` David Mosberger
  2000-05-02 19:17 ` Kevin Buettner
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: David Mosberger @ 2000-05-02  6:59 UTC (permalink / raw)
  To: linux-ia64

Here is the latest kernel diff.  Summary of changes:

	- Make kernel work on SoftSDV again (Don).

	- Don's IA-32 debug-code removal fixes.

	- Make kernel work with HP simulator again (simserial updates).

	- Make IVR workarounds A1-stepping specific.  However,
	  CONFIG_ITANIUM_A1_SPECIFIC MUST be defined for now, even if
	  you're running on A2 or later.  I couldn't yet get the
	  kernel to work without the A1 workarounds, so you can't turn
	  these workarounds off just yet.

	- Small fix to make strace work better.  Problem was due to
	  the fact that the kernel didn't notify the parent upon
	  returning from sigreturn.

	- Fix a suble error that caused time-warps on UP when the
	  system was under heavy load.  With these fixes in place, UP
	  systems pass the test program I'm using to verify that
	  gettimeofday() returns non-decreasing values even under
	  heavy load.

	- Fix a small bug in SET_UNALIGN_CTL() which had the effect of
	  making it possible to only turn unalign control bits on (no
	  way to turn them off ;-).

	- Reinstantiate ipc_parse_version() fixes to ensure that on
	  IA-64 we always use the IPC_64 version of the IPC syscalls.

As usual, the diff attached below is for informational purposes only.
The full diff is at ftp.kernel.org:/pub/linux/kernel/ports/ia64/ in:

	linux-2.3.99-pre6-ia64-000501.diff.bz2

This kernel has been tested with UP hardware and the HP simulator.  I
expect it to work on SMP as well.  Caveat: I don't think the NFS
server works in this kernel, at least not if V3 support is enabled.
It could be a nfs-utils problem, but I haven't tried to track it down
(the NFS client works fine though).

Enjoy,

	--david

diff -urN linux-davidm/arch/ia64/config.in linux-2.3.99-pre6-lia/arch/ia64/config.in
--- linux-davidm/arch/ia64/config.in	Thu Apr 27 15:47:32 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/config.in	Fri Apr 28 21:18:19 2000
@@ -23,6 +23,7 @@
 
 if [ "$CONFIG_IA64_DIG" = "y" ]; then
 	bool '  Enable Itanium A-step specific code' CONFIG_ITANIUM_ASTEP_SPECIFIC
+	bool '  Enable Itanium A1-step specific code' CONFIG_ITANIUM_A1_SPECIFIC
 	bool '  Enable SoftSDV hacks' CONFIG_IA64_SOFTSDV_HACKS
 	bool '  Enable BigSur hacks' CONFIG_IA64_BIGSUR_HACKS
 	bool '  Enable Lion hacks' CONFIG_IA64_LION_HACKS
diff -urN linux-davidm/arch/ia64/dig/iosapic.c linux-2.3.99-pre6-lia/arch/ia64/dig/iosapic.c
--- linux-davidm/arch/ia64/dig/iosapic.c	Thu Apr 27 15:47:32 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/dig/iosapic.c	Wed Apr 26 15:39:43 2000
@@ -240,6 +240,7 @@
 #endif
 	}
 
+#ifndef CONFIG_IA64_SOFTSDV_HACKS
 	/* 
 	 * Map the PCI Interrupt data into the ACPI IOSAPIC data using
 	 * the info that the bootstrap loader passed to us.
@@ -270,6 +271,7 @@
 		       irq, iosapic_pin(irq));
 #endif
 	}
+#endif /* CONFIG_IA64_SOFTSDV_HACKS */
 
 	for (i = 0; i < NR_IRQS; ++i) {
 		if (iosapic_pin(i) != -1) {
diff -urN linux-davidm/arch/ia64/dig/setup.c linux-2.3.99-pre6-lia/arch/ia64/dig/setup.c
--- linux-davidm/arch/ia64/dig/setup.c	Thu Apr 27 15:47:32 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/dig/setup.c	Wed Apr 26 15:43:29 2000
@@ -53,6 +53,10 @@
 	 */
 	ROOT_DEV = to_kdev_t(0x0802);		/* default to second partition on first drive */
 
+#ifdef	CONFIG_IA64_SOFTSDV_HACKS
+	ROOT_DEV = to_kdev_t(0x0302);		/* 2nd partion on 1st IDE */
+#endif /* CONFIG_IA64_SOFTSDV_HACKS */
+
 #ifdef CONFIG_SMP
 	init_smp_config();
 #endif
diff -urN linux-davidm/arch/ia64/ia32/sys_ia32.c linux-2.3.99-pre6-lia/arch/ia64/ia32/sys_ia32.c
--- linux-davidm/arch/ia64/ia32/sys_ia32.c	Thu Apr 27 15:47:32 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/ia32/sys_ia32.c	Wed Apr 26 15:44:18 2000
@@ -214,29 +214,21 @@
 		return -EINVAL;
 	if (prot & PROT_WRITE)
 		prot |= PROT_EXEC;
-#ifdef	DDD
-#else	// DDD
 	prot |= PROT_WRITE;
-#endif	// DDD
 	front = NULL;
 	back = NULL;
 	if ((baddr = (addr & PAGE_MASK)) != addr && get_user(c, (char *)baddr) = 0) {
 		front = kmalloc(addr - baddr, GFP_KERNEL);
 		memcpy(front, (void *)baddr, addr - baddr);
 	}
-#ifndef	DDD
-	if (addr)
-#endif
-	if (((addr + len) & ~PAGE_MASK) && get_user(c, (char *)(addr + len)) = 0) {
+	if (addr && ((addr + len) & ~PAGE_MASK) && get_user(c, (char *)(addr + len)) = 0) {
 		back = kmalloc(PAGE_SIZE - ((addr + len) & ~PAGE_MASK), GFP_KERNEL);
 		memcpy(back, addr + len, PAGE_SIZE - ((addr + len) & ~PAGE_MASK));
 	}
 	if ((r = do_mmap(0, baddr, len + (addr - baddr), prot, flags | MAP_ANONYMOUS, 0)) < 0)
 		return(r);
-#ifndef	DDD
 	if (addr = 0)
 		addr = r;
-#endif	// DDD
 	if (back) {
 		memcpy(addr + len, back, PAGE_SIZE - ((addr + len) & ~PAGE_MASK));
 		kfree(back);
@@ -300,11 +292,7 @@
 	}
 	a.flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
 
-#ifdef	DDD
 	if ((a.flags & MAP_FIXED) && ((a.addr & ~PAGE_MASK) || (a.offset & ~PAGE_MASK))) {
-#else	// DDD
-	if (1) {
-#endif	// DDD
 		unlock_kernel();
 		up(&current->mm->mmap_sem);
 		error = do_mmap_fake(file, a.addr, a.len, a.prot, a.flags, a.offset);
diff -urN linux-davidm/arch/ia64/kernel/entry.S linux-2.3.99-pre6-lia/arch/ia64/kernel/entry.S
--- linux-davidm/arch/ia64/kernel/entry.S	Thu Apr 27 15:47:32 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/kernel/entry.S	Wed Apr 26 15:42:43 2000
@@ -772,7 +772,9 @@
 	mov rp=loc1
 	br.ret.sptk.many rp
 	.endp invoke_schedule_tail
+#endif /* CONFIG_SMP */
 
+#if defined(CONFIG_SMP) || defined(CONFIG_IA64_SOFTSDV_HACKS)
 	.proc invoke_ia64_reset_itm
 invoke_ia64_reset_itm:
 	alloc loc0=ar.pfs,8,2,0,0
@@ -784,8 +786,7 @@
 	mov rp=loc1
 	br.ret.sptk.many rp
 	.endp invoke_ia64_reset_itm
-
-#endif /* CONFIG_SMP */
+#endif /* defined(CONFIG_SMP) || defined(CONFIG_IA64_SOFTSDV_HACKS) */
 
 	/*
 	 * Invoke do_softirq() while preserving in0-in7, which may be needed
diff -urN linux-davidm/arch/ia64/kernel/irq_ia64.c linux-2.3.99-pre6-lia/arch/ia64/kernel/irq_ia64.c
--- linux-davidm/arch/ia64/kernel/irq_ia64.c	Mon May  1 22:21:07 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/kernel/irq_ia64.c	Fri Apr 28 23:40:07 2000
@@ -33,7 +33,7 @@
 #include <asm/pgtable.h>
 #include <asm/system.h>
 
-#ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
 spinlock_t ivr_read_lock;
 #endif
 
@@ -49,7 +49,7 @@
 	0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x40, 0x41
 };
 
-#ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
 
 int usbfix;
 
@@ -63,7 +63,7 @@
 
 __setup("usbfix", usbfix_option);
 
-#endif /* CONFIG_ITANIUM_ASTEP_SPECIFIC */
+#endif /* CONFIG_ITANIUM_A1_SPECIFIC */
 
 /*
  * That's where the IVT branches when we get an external
@@ -74,12 +74,12 @@
 ia64_handle_irq (unsigned long vector, struct pt_regs *regs)
 {
 	unsigned long bsp, sp, saved_tpr;
-
-#ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
 # ifndef CONFIG_SMP
 	static unsigned int max_prio = 0;
 	unsigned int prev_prio;
 # endif
+
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
 	unsigned long eoi_ptr;
  
 # ifdef CONFIG_USB
@@ -95,18 +95,14 @@
 	spin_lock(&ivr_read_lock);
 	{
 		unsigned int tmp;
-
 		/*
 		 * Disable PCI writes
 		 */
 		outl(0x80ff81c0, 0xcf8);
 		tmp = inl(0xcfc);
 		outl(tmp | 0x400, 0xcfc);
-
 		eoi_ptr = inl(0xcfc);
-
 		vector = ia64_get_ivr();
-
 		/*
 		 * Enable PCI writes
 		 */
@@ -118,72 +114,65 @@
 	if (usbfix)
 		reenable_usb();
 # endif
+#endif /* CONFIG_ITANIUM_A1_SPECIFIC */
 
 # ifndef CONFIG_SMP
 	prev_prio = max_prio;
 	if (vector < max_prio) {
-		printk ("ia64_handle_irq: got vector %lu while %u was in progress!\n",
-			vector, max_prio);
-		
+		printk ("ia64_handle_irq: got vector %lu while %u "
+			"was in progress!\n", vector, max_prio);
 	} else
 		max_prio = vector;
 # endif /* !CONFIG_SMP */
-#endif /* CONFIG_ITANIUM_ASTEP_SPECIFIC */
-
-	/*
-	 * Always set TPR to limit maximum interrupt nesting depth to
-	 * 16 (without this, it would be ~240, which could easily lead
-	 * to kernel stack overflows.
-	 */
-	saved_tpr = ia64_get_tpr();
-	ia64_srlz_d();
-	ia64_set_tpr(vector);
-	ia64_srlz_d();
 
 	asm ("mov %0=ar.bsp" : "=r"(bsp));
 	asm ("mov %0=sp" : "=r"(sp));
 
 	if ((sp - bsp) < 1024) {
-		static long last_time;
 		static unsigned char count;
+		static long last_time;
 
 		if (count > 5 && jiffies - last_time > 5*HZ)
 			count = 0;
 		if (++count < 5) {
 			last_time = jiffies;
-			printk("ia64_handle_irq: DANGER: less than 1KB of free stack space!!\n"
+			printk("ia64_handle_irq: DANGER: less than "
+			       "1KB of free stack space!!\n"
 			       "(bsp=0x%lx, sp=%lx)\n", bsp, sp);
 		}
 	}
 
 	/*
-	 * The interrupt is now said to be in service
+	 * Always set TPR to limit maximum interrupt nesting
+	 * depth to 16 (without this, it would be ~240, which
+	 * could easily lead to kernel stack overflows.
 	 */
-	if (vector >= NR_IRQS) {
-		printk("handle_irq: invalid vector %lu\n", vector);
-		goto out;
-	}
-
-	do_IRQ(vector, regs);
-  out:
-#ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
-	{
-		long pEOI;
+	saved_tpr = ia64_get_tpr();
+	ia64_srlz_d();
+	do {
+		ia64_set_tpr(vector);
+		ia64_srlz_d();
 
-		asm ("mov %0=0;; (p1) mov %0=1" : "=r"(pEOI));
-		if (!pEOI) {
-			printk("Yikes: ia64_handle_irq() without pEOI!!\n");
-			asm volatile ("cmp.eq p1,p0=r0,r0" : "=r"(pEOI));
+		/*
+		 * The interrupt is now said to be in service
+		 */
+		if (vector >= NR_IRQS) {
+			printk("handle_irq: invalid vector %lu\n", vector);
+			goto out;
 		}
-	}
+		do_IRQ(vector, regs);
 
-	local_irq_disable();
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
+		break;
+#endif
+		vector = ia64_get_ivr();
+	} while (vector != IA64_SPURIOUS_INT);
+  out:
 # ifndef CONFIG_SMP
-	if (max_prio = vector)
-		max_prio = prev_prio;
+	max_prio = prev_prio;
 # endif /* !CONFIG_SMP */
-#endif /* CONFIG_ITANIUM_ASTEP_SPECIFIC */
 
+	local_irq_disable();
 	ia64_srlz_d();
 	ia64_set_tpr(saved_tpr);
 	ia64_srlz_d();
@@ -234,7 +223,7 @@
 {
 	unsigned long ipi_addr;
 	unsigned long ipi_data;
-#ifdef	CONFIG_ITANIUM_ASTEP_SPECIFIC
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
 	unsigned long flags;
 #endif
 #	define EID	0
@@ -242,13 +231,13 @@
 	ipi_data = (delivery_mode << 8) | (vector & 0xff);
 	ipi_addr = ipi_base_addr | ((cpu << 8 | EID) << 4) | ((redirect & 1)  << 3);
 
-#ifdef	CONFIG_ITANIUM_ASTEP_SPECIFIC
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
 	spin_lock_irqsave(&ivr_read_lock, flags);
-#endif	/* CONFIG_ITANIUM_ASTEP_SPECIFIC */
+#endif
 
 	writeq(ipi_data, ipi_addr);
 
-#ifdef	CONFIG_ITANIUM_ASTEP_SPECIFIC
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
 	spin_unlock_irqrestore(&ivr_read_lock, flags);
 #endif
 }
diff -urN linux-davidm/arch/ia64/kernel/ivt.S linux-2.3.99-pre6-lia/arch/ia64/kernel/ivt.S
--- linux-davidm/arch/ia64/kernel/ivt.S	Mon May  1 22:21:07 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/kernel/ivt.S	Fri Apr 28 21:24:15 2000
@@ -578,7 +578,7 @@
 	SAVE_REST
 	;;
 	alloc r14=ar.pfs,0,0,2,0 // must be first in an insn group
-#ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
 	mov out0=r0		// defer reading of cr.ivr to handle_irq...
 #else
 	mov out0=cr.ivr		// pass cr.ivr as first arg
@@ -936,7 +936,6 @@
 	mov r31=pr		// prepare to save predicates
 	;;									
 	srlz.d			// ensure everyone knows psr.dt is off
-	mov r190		// error vector for fault_handler (when kernel)
 	br.cond.sptk.many dispatch_unaligned_handler
 
 	.align 256
diff -urN linux-davidm/arch/ia64/kernel/mca.c linux-2.3.99-pre6-lia/arch/ia64/kernel/mca.c
--- linux-davidm/arch/ia64/kernel/mca.c	Thu Apr 27 15:47:32 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/kernel/mca.c	Wed Apr 19 22:52:25 2000
@@ -17,7 +17,6 @@
 #include <linux/sched.h>
 #include <linux/irq.h>
 #include <linux/smp_lock.h>
-#include <linux/config.h>
 
 #include <asm/page.h>
 #include <asm/ptrace.h>
diff -urN linux-davidm/arch/ia64/kernel/signal.c linux-2.3.99-pre6-lia/arch/ia64/kernel/signal.c
--- linux-davidm/arch/ia64/kernel/signal.c	Thu Apr 27 15:47:32 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/kernel/signal.c	Tue Apr 25 16:32:12 2000
@@ -163,9 +163,15 @@
 	 * must not touch r8 or r10 as otherwise user-level stat could
 	 * be corrupted.
 	 */
-	retval = (long) &ia64_leave_kernel | 1;
-	if ((current->flags & PF_TRACESYS)
-	    && (sc->sc_flags & IA64_SC_FLAG_IN_SYSCALL))
+	retval = (long) &ia64_leave_kernel;
+	if (current->flags & PF_TRACESYS)
+		/*
+		 * strace expects to be notified after sigreturn
+		 * returns even though the context to which we return
+		 * may not be in the middle of a syscall.  Thus, the
+		 * return-value that strace displays for sigreturn is
+		 * meaningless.
+		 */
 		retval = (long) &ia64_strace_leave_kernel;
 
 	if (!access_ok(VERIFY_READ, sc, sizeof(*sc)))
diff -urN linux-davidm/arch/ia64/kernel/smp.c linux-2.3.99-pre6-lia/arch/ia64/kernel/smp.c
--- linux-davidm/arch/ia64/kernel/smp.c	Thu Apr 27 15:47:32 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/kernel/smp.c	Fri Apr 28 21:25:13 2000
@@ -68,7 +68,7 @@
 };
 static struct smp_call_struct *smp_call_function_data;
 
-#ifdef	CONFIG_ITANIUM_ASTEP_SPECIFIC
+#ifdef	CONFIG_ITANIUM_A1_SPECIFIC
 extern spinlock_t ivr_read_lock;
 #endif
 
diff -urN linux-davidm/arch/ia64/kernel/time.c linux-2.3.99-pre6-lia/arch/ia64/kernel/time.c
--- linux-davidm/arch/ia64/kernel/time.c	Mon May  1 22:21:07 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/kernel/time.c	Thu Apr 27 23:13:33 2000
@@ -79,15 +79,18 @@
 	 */
 	return 0;
 #else
-	unsigned long now = ia64_get_itc();
-	unsigned long elapsed_cycles, lost;
-
-	elapsed_cycles = now - (itm.next[smp_processor_id()].count - itm.delta);
-
-	lost = lost_ticks;
-	if (lost)
-		elapsed_cycles += lost*itm.delta;
+	unsigned long now = ia64_get_itc(), last_tick;
+	unsigned long elapsed_cycles, lost = lost_ticks;
 
+	last_tick = (itm.next[smp_processor_id()].count - (lost+1)*itm.delta);
+# if 1
+	if ((long) (now - last_tick) < 0) {
+		printk("Yikes: now < last_tick (now=0x%lx,last_tick=%lx)!  No can do.\n",
+		       now, last_tick);
+		return 0;
+	}
+# endif
+	elapsed_cycles = now - last_tick;
 	return (elapsed_cycles*my_cpu_data.usec_per_cyc) >> IA64_USEC_PER_CYC_SHIFT;
 #endif
 }
@@ -148,6 +151,7 @@
 	static unsigned long last_time;
 	static unsigned char count;
 	int cpu = smp_processor_id();
+	unsigned long new_itm;
 	int printed = 0;
 
 	/*
@@ -157,6 +161,7 @@
 	 * xtime_lock.
 	 */
 	write_lock(&xtime_lock);
+	new_itm = itm.next[cpu].count;
 	while (1) {
 		/*
 		 * Do kernel PC profiling here.  We multiply the
@@ -175,25 +180,16 @@
 		do_timer(regs);
 #endif
 
-		itm.next[cpu].count += itm.delta;
-		/*
-		 * There is a race condition here: to be on the "safe"
-		 * side, we process timer ticks until itm.next is
-		 * ahead of the itc by at least half the timer
-		 * interval.  This should give us enough time to set
-		 * the new itm value without losing a timer tick.
-		 */
-		if (time_after(itm.next[cpu].count, ia64_get_itc() + itm.delta/2)) {
-			ia64_set_itm(itm.next[cpu].count);
+		new_itm += itm.delta;
+		itm.next[cpu].count = new_itm;
+		if (time_after(new_itm, ia64_get_itc()))
 			break;
-		}
 
 #if !(defined(CONFIG_IA64_SOFTSDV_HACKS) && defined(CONFIG_SMP))
 		/*
 		 * SoftSDV in SMP mode is _slow_, so we do "lose" ticks, 
 		 * but it's really OK...
 		 */
-		write_unlock(&xtime_lock);
 		if (count > 0 && jiffies - last_time > 5*HZ)
 			count = 0;
 		if (count++ = 0) {
@@ -207,10 +203,21 @@
 # endif
 			}
 		}
-		write_lock(&xtime_lock);
 #endif
 	}
 	write_unlock(&xtime_lock);
+
+	/*
+	 * If we're too close to the next clock tick for comfort, we
+	 * increase the saftey margin by intentionally dropping the
+	 * next tick(s).  We do NOT update itm.next accordingly
+	 * because that would force us to call do_timer() which in
+	 * turn would let our clock run too fast (with the potentially
+	 * devastating effect of losing monotony of time).
+	 */
+	while (!time_after(new_itm, ia64_get_itc() + itm.delta/2))
+		new_itm += itm.delta;
+	ia64_set_itm(new_itm);
 }
 
 #ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC
diff -urN linux-davidm/arch/ia64/kernel/traps.c linux-2.3.99-pre6-lia/arch/ia64/kernel/traps.c
--- linux-davidm/arch/ia64/kernel/traps.c	Thu Apr 27 15:47:32 2000
+++ linux-2.3.99-pre6-lia/arch/ia64/kernel/traps.c	Tue Apr 25 15:10:10 2000
@@ -450,11 +450,6 @@
 		force_sig_info(SIGTRAP, &siginfo, current);
 		return;
 
-	      case 30: /* Unaligned fault */
-		sprintf(buf, "Kernel unaligned trap accessing %016lx (ip=%016lx)!",
-			ifa, regs->cr_iip + ia64_psr(regs)->ri);
-		break;
-
 	      case 32: /* fp fault */
 	      case 33: /* fp trap */
 		result = handle_fpu_swa((vector = 32) ? 1 : 0, regs, isr);
diff -urN linux-davidm/drivers/char/Config.in linux-2.3.99-pre6-lia/drivers/char/Config.in
--- linux-davidm/drivers/char/Config.in	Thu Apr 27 15:47:33 2000
+++ linux-2.3.99-pre6-lia/drivers/char/Config.in	Thu Apr 27 15:49:42 2000
@@ -16,6 +16,11 @@
       tristate '   Dual serial port support' CONFIG_DUALSP_SERIAL
    fi
 fi
+
+if [ "$CONFIG_SERIAL" = "n" ]; then
+	bool 'Simulated serial driver support' CONFIG_SIM_SERIAL
+fi
+
 bool 'Extended dumb serial driver options' CONFIG_SERIAL_EXTENDED
 if [ "$CONFIG_SERIAL_EXTENDED" = "y" ]; then
    bool '  Support more than 4 serial ports' CONFIG_SERIAL_MANY_PORTS
diff -urN linux-davidm/drivers/char/Makefile linux-2.3.99-pre6-lia/drivers/char/Makefile
--- linux-davidm/drivers/char/Makefile	Sun Apr  2 15:38:53 2000
+++ linux-2.3.99-pre6-lia/drivers/char/Makefile	Thu Apr 20 00:16:43 2000
@@ -111,6 +111,7 @@
   endif
 endif
 
+obj-$(CONFIG_SIM_SERIAL) += simserial.o
 obj-$(CONFIG_ROCKETPORT) += rocket.o
 obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
 obj-$(CONFIG_MOXA_INTELLIO) += moxa.o
diff -urN linux-davidm/drivers/ide/ide-cd.c linux-2.3.99-pre6-lia/drivers/ide/ide-cd.c
--- linux-davidm/drivers/ide/ide-cd.c	Thu Apr 27 15:47:33 2000
+++ linux-2.3.99-pre6-lia/drivers/ide/ide-cd.c	Thu Apr 27 15:49:46 2000
@@ -2075,6 +2075,7 @@
 
 	init_cdrom_command(&cgc, &buf, sizeof(buf), CGC_DATA_UNKNOWN);
 
+#ifndef CONFIG_IA64_SOFTSDV_HACKS      /* MODE_SENSE unsupported by simulator */
 #ifndef __ACER50__
 	/* Now with that done, update the speed fields */
         do {    /* we seem to get stat=0x01,err=0x00 the first time (??) */
@@ -2099,6 +2100,7 @@
 	if (ide_cdrom_get_capabilities(cdi,&buf))
 		return 0;
 #endif /* __ACER50__ */
+#endif /* CONFIG_IA64_SOFTSDV_HACKS */
 
         cdi->speed = CDROM_STATE_FLAGS (drive)->current_speed;
         return 0;
diff -urN linux-davidm/drivers/net/eepro100.c linux-2.3.99-pre6-lia/drivers/net/eepro100.c
--- linux-davidm/drivers/net/eepro100.c	Thu Apr 27 15:47:34 2000
+++ linux-2.3.99-pre6-lia/drivers/net/eepro100.c	Thu Apr 27 15:49:47 2000
@@ -50,9 +50,18 @@
 static int txdmacount = 128;
 static int rxdmacount = 0;
 
+#ifdef __ia64__
+/*
+ * Bug: this driver may generate unaligned accesses when not copying
+ * an incoming packet.  Setting rx_copybreak to a large value force a
+ * copy and prevents unaligned accesses.
+ */
+static int rx_copybreak = 0x10000;
+#else
 /* Set the copy breakpoint for the copy-only-tiny-buffer Rx method.
    Lower values use more memory, but are faster. */
 static int rx_copybreak = 200;
+#endif
 
 /* Maximum events (Rx packets, etc.) to handle at each interrupt. */
 static int max_interrupt_work = 20;
@@ -429,14 +438,14 @@
 
 /* The Speedo3 Rx and Tx frame/buffer descriptors. */
 struct descriptor {			    /* A generic descriptor. */
-	s32 cmd_status;				/* All command and status fields. */
+	volatile s32 cmd_status;	/* All command and status fields. */
 	u32 link;				    /* struct descriptor *  */
 	unsigned char params[0];
 };
 
 /* The Speedo3 Rx and Tx buffer descriptors. */
 struct RxFD {					/* Receive frame descriptor. */
-	s32 status;
+	volatile s32 status;
 	u32 link;					/* struct RxFD * */
 	u32 rx_buf_addr;			/* void * */
 	u32 count;
diff -urN linux-davidm/drivers/usb/devices.c linux-2.3.99-pre6-lia/drivers/usb/devices.c
--- linux-davidm/drivers/usb/devices.c	Thu Apr 27 15:47:36 2000
+++ linux-2.3.99-pre6-lia/drivers/usb/devices.c	Thu Apr 27 16:24:46 2000
@@ -53,6 +53,7 @@
 #include <linux/mm.h>
 #include <linux/slab.h>
 #include <linux/poll.h>
+#include <linux/smp_lock.h>
 #include <linux/usb.h>
 #include <linux/usbdevice_fs.h>
 #include <asm/uaccess.h>
diff -urN linux-davidm/drivers/usb/uhci.c linux-2.3.99-pre6-lia/drivers/usb/uhci.c
--- linux-davidm/drivers/usb/uhci.c	Tue Apr 11 09:57:43 2000
+++ linux-2.3.99-pre6-lia/drivers/usb/uhci.c	Fri Apr 28 21:30:48 2000
@@ -33,7 +33,7 @@
 #include <linux/unistd.h>
 #include <linux/interrupt.h>
 #include <linux/spinlock.h>
-#define DEBUG
+#undef DEBUG
 #include <linux/usb.h>
 
 #include <asm/uaccess.h>
@@ -67,6 +67,46 @@
 /* If a transfer is still active after this much time, turn off FSBR */
 #define IDLE_TIMEOUT	(HZ / 20)	/* 50 ms */
 
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
+
+static struct uhci *guhci;
+
+void
+disable_usb (void)
+{
+	unsigned short cmd;
+	unsigned int io_addr;
+
+	if (guhci = NULL)
+		return;
+
+	io_addr = guhci->io_addr;
+
+	cmd = inw (io_addr + USBCMD); 
+
+	outw(cmd & ~ USBCMD_RS, io_addr+USBCMD);
+
+	while ((inw (io_addr + USBSTS) & USBSTS_HCH) = 0);
+}
+
+void
+reenable_usb (void)
+{
+	unsigned int io_addr;
+	unsigned short cmd;
+
+	if (guhci = NULL)
+		return;
+
+	io_addr = guhci->io_addr;
+
+	cmd = inw (io_addr + USBCMD); 
+
+	outw(cmd | USBCMD_RS, io_addr+USBCMD);
+}
+
+#endif /* CONFIG_ITANIUM_A1_SPECIFIC */
+
 /*
  * Only the USB core should call uhci_alloc_dev and uhci_free_dev
  */
@@ -2192,6 +2232,11 @@
 		if (!uhci_start_root_hub(uhci)) {
 			struct pm_dev *pmdev;
 
+#ifdef CONFIG_ITANIUM_A1_SPECIFIC
+			guhci = uhci;
+			printk("%s: enabling Lion USB workaround io_addr=%x\n",
+			       __FILE__, guhci->io_addr);
+#endif
 			pmdev = pm_register(PM_PCI_DEV,
 					    PM_PCI_ID(dev),
 					    handle_pm_event);
diff -urN linux-davidm/include/asm-ia64/processor.h linux-2.3.99-pre6-lia/include/asm-ia64/processor.h
--- linux-davidm/include/asm-ia64/processor.h	Thu Apr 27 15:47:37 2000
+++ linux-2.3.99-pre6-lia/include/asm-ia64/processor.h	Fri Apr 28 14:03:34 2000
@@ -264,7 +264,8 @@
 
 #define SET_UNALIGN_CTL(task,value)								\
 ({												\
-	(task)->thread.flags |= ((value) << IA64_THREAD_UAC_SHIFT) & IA64_THREAD_UAC_MASK;	\
+	(task)->thread.flags = (((task)->thread.flags & ~IA64_THREAD_UAC_MASK)			\
+				| (((value) << IA64_THREAD_UAC_SHIFT) & IA64_THREAD_UAC_MASK));	\
 	0;											\
 })
 #define GET_UNALIGN_CTL(task,addr)								\
diff -urN linux-davidm/include/asm-ia64/spinlock.h linux-2.3.99-pre6-lia/include/asm-ia64/spinlock.h
--- linux-davidm/include/asm-ia64/spinlock.h	Mon May  1 22:21:07 2000
+++ linux-2.3.99-pre6-lia/include/asm-ia64/spinlock.h	Fri Apr 28 14:03:34 2000
@@ -11,8 +11,6 @@
 
 #include <linux/kernel.h>
 
-#include <linux/kernel.h>
-
 #include <asm/system.h>
 #include <asm/bitops.h>
 #include <asm/atomic.h>
diff -urN linux-davidm/ipc/util.c linux-2.3.99-pre6-lia/ipc/util.c
--- linux-davidm/ipc/util.c	Wed Mar  8 09:16:24 2000
+++ linux-2.3.99-pre6-lia/ipc/util.c	Mon May  1 18:12:06 2000
@@ -229,6 +229,8 @@
 	out->seq	= in->seq;
 }
 
+#ifndef __ia64__
+
 int ipc_parse_version (int *cmd)
 {
 	if (*cmd & IPC_64) {
@@ -238,6 +240,8 @@
 		return IPC_OLD;
 	}
 }
+
+#endif /* __ia64__ */
 
 #else
 /*
diff -urN linux-davidm/ipc/util.h linux-2.3.99-pre6-lia/ipc/util.h
--- linux-davidm/ipc/util.h	Tue Feb  8 18:23:13 2000
+++ linux-2.3.99-pre6-lia/ipc/util.h	Mon May  1 18:12:54 2000
@@ -99,4 +99,9 @@
 void kernel_to_ipc64_perm(struct kern_ipc_perm *in, struct ipc64_perm *out);
 void ipc64_perm_to_ipc_perm(struct ipc64_perm *in, struct ipc_perm *out);
 
+#ifdef __ia64__
+  /* On IA-64, we always use the "64-bit version" of the IPC structures.  */ 
+# define ipc_parse_version(cmd)	IPC_64
+#else
 int ipc_parse_version (int *cmd);
+#endif



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Linux-ia64] new kernel diff (relative to v2.3.99-pre6)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
                   ` (8 preceding siblings ...)
  2000-05-02  6:59 ` [Linux-ia64] new kernel diff (relative to v2.3.99-pre6) David Mosberger
@ 2000-05-02 19:17 ` Kevin Buettner
  2000-05-02 20:48 ` David Mosberger
  2000-05-02 21:52 ` David Mosberger
  11 siblings, 0 replies; 13+ messages in thread
From: Kevin Buettner @ 2000-05-02 19:17 UTC (permalink / raw)
  To: linux-ia64

On May 1, 11:59pm, David Mosberger wrote:

> The full diff is at ftp.kernel.org:/pub/linux/kernel/ports/ia64/ in:
> 
> 	linux-2.3.99-pre6-ia64-000501.diff.bz2

I'm getting some rejects when I attempt to apply this patch against
linux-2.3.99-pre6.tar.bz2.  Specifically,

$ bzip2 -dc ../../linux-2.3.99-pre6-ia64-000501.diff.bz2 | patch -p1
[...]
patching file `drivers/ide/ide-cd.c'
Hunk #1 FAILED at 2075.
Hunk #2 FAILED at 2100.
2 out of 2 hunks FAILED -- saving rejects to drivers/ide/ide-cd.c.rej
patching file `drivers/usb/devices.c'
Hunk #1 succeeded at 53 with fuzz 2.
patching file `drivers/usb/uhci.c'
Hunk #3 succeeded at 2340 (offset 108 lines).
patching file `init/main.c'
Hunk #1 succeeded at 109 (offset 4 lines).
Hunk #2 FAILED at 527.
1 out of 2 hunks FAILED -- saving rejects to init/main.c.rej

(Most of the patch succeeded; I'm only showing the parts that had
problems.)

Kevin

-- 
Kevin Buettner
kev@primenet.com, kevinb@redhat.com



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Linux-ia64] new kernel diff (relative to v2.3.99-pre6)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
                   ` (9 preceding siblings ...)
  2000-05-02 19:17 ` Kevin Buettner
@ 2000-05-02 20:48 ` David Mosberger
  2000-05-02 21:52 ` David Mosberger
  11 siblings, 0 replies; 13+ messages in thread
From: David Mosberger @ 2000-05-02 20:48 UTC (permalink / raw)
  To: linux-ia64

Gee, my 2.3.99-pre6 tree sure doesn't look anything like Linus's tar
ball!  I must have missed a patch at one point or another.  I'm
working on updating the patch...

	--david

>>>>> On Tue, 2 May 2000 12:17:02 -0700, Kevin Buettner <kev@primenet.com> said:

  Kevin> On May 1, 11:59pm, David Mosberger wrote:

  >> The full diff is at ftp.kernel.org:/pub/linux/kernel/ports/ia64/
  >> in:
  >> 
  >> linux-2.3.99-pre6-ia64-000501.diff.bz2

  Kevin> I'm getting some rejects when I attempt to apply this patch
  Kevin> against linux-2.3.99-pre6.tar.bz2.  Specifically,

  Kevin> $ bzip2 -dc ../../linux-2.3.99-pre6-ia64-000501.diff.bz2 |
  Kevin> patch -p1 [...]  patching file `drivers/ide/ide-cd.c' Hunk #1
  Kevin> FAILED at 2075.  Hunk #2 FAILED at 2100.  2 out of 2 hunks
  Kevin> FAILED -- saving rejects to drivers/ide/ide-cd.c.rej patching
  Kevin> file `drivers/usb/devices.c' Hunk #1 succeeded at 53 with
  Kevin> fuzz 2.  patching file `drivers/usb/uhci.c' Hunk #3 succeeded
  Kevin> at 2340 (offset 108 lines).  patching file `init/main.c' Hunk
  Kevin> #1 succeeded at 109 (offset 4 lines).  Hunk #2 FAILED at 527.
  Kevin> 1 out of 2 hunks FAILED -- saving rejects to init/main.c.rej

  Kevin> (Most of the patch succeeded; I'm only showing the parts that
  Kevin> had problems.)

  Kevin> Kevin

  Kevin> -- Kevin Buettner kev@primenet.com, kevinb@redhat.com



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Linux-ia64] new kernel diff (relative to v2.3.99-pre6)
  2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
                   ` (10 preceding siblings ...)
  2000-05-02 20:48 ` David Mosberger
@ 2000-05-02 21:52 ` David Mosberger
  11 siblings, 0 replies; 13+ messages in thread
From: David Mosberger @ 2000-05-02 21:52 UTC (permalink / raw)
  To: linux-ia64

>>>>> On Tue, 2 May 2000 12:17:02 -0700, Kevin Buettner <kev@primenet.com> said:

  Kevin> On May 1, 11:59pm, David Mosberger wrote:
  >> The full diff is at ftp.kernel.org:/pub/linux/kernel/ports/ia64/
  >> in:
  >> 
  >> linux-2.3.99-pre6-ia64-000501.diff.bz2

  Kevin> I'm getting some rejects when I attempt to apply this patch
  Kevin> against linux-2.3.99-pre6.tar.bz2.  Specifically,

OK, I updated the patch at
ftp.kernel.org:/pub/linux/kernel/ports/ia64.  Same filename
(linux-2.3.99-pre6-ia64-000501.diff.gz).

	--david



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2000-05-02 21:52 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-04-25  3:31 [Linux-ia64] new kernel diff (relative to 2.3.99-pre5) David Mosberger
2000-04-25  9:29 ` Christoph Rohland
2000-04-25  9:50 ` Jes Sorensen
2000-04-25 10:23 ` Christoph Rohland
2000-04-26  1:32 ` Jesse Barnes
2000-04-26  2:18 ` Johannes Erdfelt
2000-04-26  5:29 ` Seth, Rohit
2000-04-26 21:18 ` Jesse Barnes
2000-05-02  4:22 ` David Mosberger
2000-05-02  6:59 ` [Linux-ia64] new kernel diff (relative to v2.3.99-pre6) David Mosberger
2000-05-02 19:17 ` Kevin Buettner
2000-05-02 20:48 ` David Mosberger
2000-05-02 21:52 ` David Mosberger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox