Skip to contentSkip to conversation

adeos-ipipe-2.6.23-powerpc-DENX-2.0-01.patch

PATCH In review Wolfgang Grandegger 2 participants 2 messages Oct 11, 2007 – Oct 12, 2007

Subsystems (16)
Memory management PowerPC Kbuild PCI +12 more subsystems
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 adeos-ipipe-2.6.23-powerpc-DENX-2.0-01.patch

Hello,

attached is a patch for "arch/powerpc" for the DENX GIT tree linux-2.6-denx version 2.6.23. It should replace the patch adeos-ipipe-2.6.23-rc5-powerpc-DENX-2.0-01.patch. It just needed adaption for the renaming of head_4xx.S to head_40x.S in arch/powerpc/kernel/.

Wolfgang.

+ diff -u linux-2.6-denx/arch/powerpc/boot/Makefile.ORIG linux-2.6-denx/arch/powerpc/boot/Makefile

arch/powerpc/boot/Makefile renamed from arch/powerpc/boot/Makefile.ORIG +8 -0
@@ -25,6 +25,14 @@
 		 -isystem $(shell $(CROSS32CC) -print-file-name=include)
 BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
 
+ifdef CONFIG_IPIPE_TRACE
+# do not trace the boot loader
+nullstring :=
+space      := $(nullstring) # end of the line
+pg_flag     = $(nullstring) -pg # end of the line
+BOOTCFLAGS     := $(subst ${pg_flag},${space},${BOOTCFLAGS})
+endif
+
 ifeq ($(call cc-option-yn, -fstack-protector),y)
 BOOTCFLAGS	+= -fno-stack-protector
 endif

+ diff -u linux-2.6-denx/arch/powerpc/Kconfig.ORIG linux-2.6-denx/arch/powerpc/Kconfig

arch/powerpc/Kconfig renamed from arch/powerpc/Kconfig.ORIG +22 -0
@@ -76,6 +76,10 @@
 	depends on COMPAT && SYSVIPC
 	default y
 
+config SOFTDISABLE
+	bool
+	default (PPC64 && !IPIPE)
+
 # All PPC32s use generic nvram driver through ppc_md
 config GENERIC_NVRAM
 	bool
@@ -152,6 +156,24 @@
 
 menu "Kernel options"
 
+source "kernel/ipipe/Kconfig"
+
+if IPIPE
+config RUNLATCH
+	bool "Enable RUNLATCH support"
+	depends on PPC64
+	default n if IPIPE
+	---help---
+	This option is costly latency-wise, so default is to keep
+	it off when the interrupt pipeline is enabled.
+endif
+if !IPIPE
+config RUNLATCH
+	bool
+	depends on PPC64
+	default y
+endif
+
 config HIGHMEM
 	bool "High memory support"
 	depends on PPC32

+ diff -u linux-2.6-denx/arch/powerpc/kernel/asm-offsets.c.ORIG linux-2.6-denx/arch/powerpc/kernel/asm-offsets.c

arch/powerpc/kernel/asm-offsets.c renamed from arch/powerpc/kernel/asm-offsets.c.ORIG +6 -0
@@ -117,8 +117,12 @@
 	DEFINE(PACASTABRR, offsetof(struct paca_struct, stab_rr));
 	DEFINE(PACAR1, offsetof(struct paca_struct, saved_r1));
 	DEFINE(PACATOC, offsetof(struct paca_struct, kernel_toc));
+#ifdef CONFIG_SOFTDISABLE
 	DEFINE(PACASOFTIRQEN, offsetof(struct paca_struct, soft_enabled));
 	DEFINE(PACAHARDIRQEN, offsetof(struct paca_struct, hard_enabled));
+#elif CONFIG_IPIPE
+	DEFINE(PACAROOTPCPU, offsetof(struct paca_struct, root_percpu));
+#endif
 	DEFINE(PACASLBCACHE, offsetof(struct paca_struct, slb_cache));
 	DEFINE(PACASLBCACHEPTR, offsetof(struct paca_struct, slb_cache_ptr));
 	DEFINE(PACACONTEXTID, offsetof(struct paca_struct, context.id));
@@ -241,7 +245,9 @@
 	DEFINE(_DEAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar));
 	DEFINE(_ESR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr));
 #else /* CONFIG_PPC64 */
+#if defined(CONFIG_SOFTDISABLE) || defined(CONFIG_IPIPE)
 	DEFINE(SOFTE, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, softe));
+#endif
 
 	/* These _only_ to be used with {PROM,RTAS}_FRAME_SIZE!!! */
 	DEFINE(_SRR0, STACK_FRAME_OVERHEAD+sizeof(struct pt_regs));

+ diff -u linux-2.6-denx/arch/powerpc/kernel/cputable.c.ORIG linux-2.6-denx/arch/powerpc/kernel/cputable.c

arch/powerpc/kernel/cputable.c renamed from arch/powerpc/kernel/cputable.c.ORIG +2 -2
@@ -1387,7 +1387,7 @@
 #endif /* CONFIG_PPC32 */
 };
 
-struct cpu_spec *identify_cpu(unsigned long offset, unsigned int pvr)
+notrace struct cpu_spec *identify_cpu(unsigned long offset, unsigned int pvr)
 {
 	struct cpu_spec *s = cpu_specs;
 	struct cpu_spec **cur = &cur_cpu_spec;
@@ -1416,7 +1416,7 @@
 	return NULL;
 }
 
-void do_feature_fixups(unsigned long value, void *fixup_start, void *fixup_end)
+notrace void do_feature_fixups(unsigned long value, void *fixup_start, void *fixup_end)
 {
 	struct fixup_entry {
 		unsigned long	mask;

+ diff -u linux-2.6-denx/arch/powerpc/kernel/entry_32.S.ORIG linux-2.6-denx/arch/powerpc/kernel/entry_32.S

arch/powerpc/kernel/entry_32.S renamed from arch/powerpc/kernel/entry_32.S.ORIG +91 -0

139 lines not on this page · raw message

+ diff -u linux-2.6-denx/arch/powerpc/kernel/entry_64.S.ORIG linux-2.6-denx/arch/powerpc/kernel/entry_64.S

arch/powerpc/kernel/entry_64.S renamed from arch/powerpc/kernel/entry_64.S.ORIG +133 -7

253 lines not on this page · raw message

+ diff -u linux-2.6-denx/arch/powerpc/kernel/head_32.S.ORIG linux-2.6-denx/arch/powerpc/kernel/head_32.S

arch/powerpc/kernel/head_32.S renamed from arch/powerpc/kernel/head_32.S.ORIG +14 -0
@@ -309,6 +309,12 @@
 	EXC_XFER_TEMPLATE(n, hdlr, n, NOCOPY, transfer_to_handler_full,	\
 			  ret_from_except_full)
 
+#ifdef CONFIG_IPIPE
+#define EXC_XFER_IPIPE(n, hdlr)		\
+	EXC_XFER_TEMPLATE(n, hdlr, n+1, NOCOPY, transfer_to_handler, \
+			  __ipipe_ret_from_except)
+#endif /* CONFIG_IPIPE */
+
 #define EXC_XFER_LITE(n, hdlr)		\
 	EXC_XFER_TEMPLATE(n, hdlr, n+1, NOCOPY, transfer_to_handler, \
 			  ret_from_except)
@@ -393,7 +399,11 @@
 	EXC_XFER_EE_LITE(0x400, handle_page_fault)
 
 /* External interrupt */
+#ifdef CONFIG_IPIPE
+	EXCEPTION(0x500, HardwareInterrupt, __ipipe_grab_irq, EXC_XFER_IPIPE)
+#else /* !CONFIG_IPIPE */
 	EXCEPTION(0x500, HardwareInterrupt, do_IRQ, EXC_XFER_LITE)
+#endif /* CONFIG_IPIPE */
 
 /* Alignment exception */
 	. = 0x600
@@ -425,7 +435,11 @@
 	EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
 
 /* Decrementer */
+#ifdef CONFIG_IPIPE
+	EXCEPTION(0x900, Decrementer, __ipipe_grab_timer, EXC_XFER_IPIPE)
+#else /* !CONFIG_IPIPE */
 	EXCEPTION(0x900, Decrementer, timer_interrupt, EXC_XFER_LITE)
+#endif /* CONFIG_IPIPE */
 
 	EXCEPTION(0xa00, Trap_0a, unknown_exception, EXC_XFER_EE)
 	EXCEPTION(0xb00, Trap_0b, unknown_exception, EXC_XFER_EE)

+ diff -u linux-2.6-denx/arch/powerpc/kernel/head_40x.S.ORIG linux-2.6-denx/arch/powerpc/kernel/head_40x.S

arch/powerpc/kernel/head_40x.S renamed from arch/powerpc/kernel/head_40x.S.ORIG +14 -0
@@ -227,6 +227,12 @@
 	EXC_XFER_TEMPLATE(hdlr, n, MSR_KERNEL, NOCOPY, transfer_to_handler_full, \
 			  ret_from_except_full)
 
+#ifdef CONFIG_IPIPE
+#define EXC_XFER_IPIPE(n, hdlr)		\
+	EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, NOCOPY, transfer_to_handler, \
+			  __ipipe_ret_from_except)
+#endif /* CONFIG_IPIPE */
+
 #define EXC_XFER_LITE(n, hdlr)		\
 	EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, NOCOPY, transfer_to_handler, \
 			  ret_from_except)
@@ -395,7 +401,11 @@
 	EXC_XFER_EE_LITE(0x400, handle_page_fault)
 
 /* 0x0500 - External Interrupt Exception */
+#ifdef CONFIG_IPIPE
+	EXCEPTION(0x0500, HardwareInterrupt, __ipipe_grab_irq, EXC_XFER_IPIPE)
+#else /* !CONFIG_IPIPE */
 	EXCEPTION(0x0500, HardwareInterrupt, do_IRQ, EXC_XFER_LITE)
+#endif /* CONFIG_IPIPE */
 
 /* 0x0600 - Alignment Exception */
 	START_EXCEPTION(0x0600, Alignment)
@@ -433,7 +443,11 @@
 	lis	r0,TSR_PIS@h
 	mtspr	SPRN_TSR,r0		/* Clear the PIT exception */
 	addi	r3,r1,STACK_FRAME_OVERHEAD
+#ifdef CONFIG_IPIPE
+	EXC_XFER_IPIPE(0x1000, __ipipe_grab_timer)
+#else /* !CONFIG_IPIPE */
 	EXC_XFER_LITE(0x1000, timer_interrupt)
+#endif /* CONFIG_IPIPE */
 
 #if 0
 /* NOTE:

+ diff -u linux-2.6-denx/arch/powerpc/kernel/head_44x.S.ORIG linux-2.6-denx/arch/powerpc/kernel/head_44x.S

arch/powerpc/kernel/head_44x.S renamed from arch/powerpc/kernel/head_44x.S.ORIG +5 -2
@@ -416,8 +416,11 @@
 	/* Instruction Storage Interrupt */
 	INSTRUCTION_STORAGE_EXCEPTION
 
-	/* External Input Interrupt */
-	EXCEPTION(0x0500, ExternalInput, do_IRQ, EXC_XFER_LITE)
+#ifdef CONFIG_IPIPE
+	EXCEPTION(0x0500, ExternalInput, __ipipe_grab_irq, EXC_XFER_IPIPE)
+#else /* !CONFIG_IPIPE */
+ 	EXCEPTION(0x0500, ExternalInput, do_IRQ, EXC_XFER_LITE)
+#endif /* CONFIG_IPIPE */
 
 	/* Alignment Interrupt */
 	ALIGNMENT_EXCEPTION

+ diff -u linux-2.6-denx/arch/powerpc/kernel/head_64.S.ORIG linux-2.6-denx/arch/powerpc/kernel/head_64.S

arch/powerpc/kernel/head_64.S renamed from arch/powerpc/kernel/head_64.S.ORIG +132 -16

328 lines not on this page · raw message

+ diff -u linux-2.6-denx/arch/powerpc/kernel/head_8xx.S.ORIG linux-2.6-denx/arch/powerpc/kernel/head_8xx.S

arch/powerpc/kernel/head_8xx.S renamed from arch/powerpc/kernel/head_8xx.S.ORIG +14 -0
@@ -187,6 +187,12 @@
 	EXC_XFER_TEMPLATE(n, hdlr, n, NOCOPY, transfer_to_handler_full,	\
 			  ret_from_except_full)
 
+#ifdef CONFIG_IPIPE
+#define EXC_XFER_IPIPE(n, hdlr)		\
+	EXC_XFER_TEMPLATE(n, hdlr, n+1, NOCOPY, transfer_to_handler, \
+			  __ipipe_ret_from_except)
+#endif /* CONFIG_IPIPE */
+ 
 #define EXC_XFER_LITE(n, hdlr)		\
 	EXC_XFER_TEMPLATE(n, hdlr, n+1, NOCOPY, transfer_to_handler, \
 			  ret_from_except)
@@ -238,7 +244,11 @@
 	EXC_XFER_EE_LITE(0x400, handle_page_fault)
 
 /* External interrupt */
+#ifdef CONFIG_IPIPE
+	EXCEPTION(0x500, HardwareInterrupt, __ipipe_grab_irq, EXC_XFER_IPIPE)
+#else /* !CONFIG_IPIPE */
 	EXCEPTION(0x500, HardwareInterrupt, do_IRQ, EXC_XFER_LITE)
+#endif /* CONFIG_IPIPE */
 
 /* Alignment exception */
 	. = 0x600
@@ -259,7 +269,11 @@
 	EXCEPTION(0x800, FPUnavailable, unknown_exception, EXC_XFER_STD)
 
 /* Decrementer */
+#ifdef CONFIG_IPIPE
+	EXCEPTION(0x900, Decrementer, __ipipe_grab_timer, EXC_XFER_IPIPE)
+#else /* !CONFIG_IPIPE */
 	EXCEPTION(0x900, Decrementer, timer_interrupt, EXC_XFER_LITE)
+#endif /* CONFIG_IPIPE */
 
 	EXCEPTION(0xa00, Trap_0a, unknown_exception, EXC_XFER_EE)
 	EXCEPTION(0xb00, Trap_0b, unknown_exception, EXC_XFER_EE)

+ diff -u linux-2.6-denx/arch/powerpc/kernel/head_booke.h.ORIG linux-2.6-denx/arch/powerpc/kernel/head_booke.h

arch/powerpc/kernel/head_booke.h renamed from arch/powerpc/kernel/head_booke.h.ORIG +16 -0
@@ -187,6 +187,12 @@
 	EXC_XFER_TEMPLATE(hdlr, n, MSR_KERNEL, NOCOPY, transfer_to_handler_full, \
 			  ret_from_except_full)
 
+#ifdef CONFIG_IPIPE
+#define EXC_XFER_IPIPE(n, hdlr)		\
+	EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, NOCOPY, transfer_to_handler, \
+			  __ipipe_ret_from_except)
+#endif /* CONFIG_IPIPE */
+
 #define EXC_XFER_LITE(n, hdlr)		\
 	EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, NOCOPY, transfer_to_handler, \
 			  ret_from_except)
@@ -345,6 +351,15 @@
 	addi	r3,r1,STACK_FRAME_OVERHEAD;				      \
 	EXC_XFER_STD(0x0700, program_check_exception)
 
+#ifdef CONFIG_IPIPE
+#define DECREMENTER_EXCEPTION						      \
+	START_EXCEPTION(Decrementer)					      \
+	NORMAL_EXCEPTION_PROLOG;					      \
+	lis     r0,TSR_DIS@h;           /* Setup the DEC interrupt mask */    \
+	mtspr   SPRN_TSR,r0;		/* Clear the DEC interrupt */	      \
+	addi    r3,r1,STACK_FRAME_OVERHEAD;				      \
+	EXC_XFER_IPIPE(0x0900, __ipipe_grab_timer)
+#else /* !CONFIG_IPIPE */
 #define DECREMENTER_EXCEPTION						      \
 	START_EXCEPTION(Decrementer)					      \
 	NORMAL_EXCEPTION_PROLOG;					      \
@@ -352,6 +367,7 @@
 	mtspr   SPRN_TSR,r0;		/* Clear the DEC interrupt */	      \
 	addi    r3,r1,STACK_FRAME_OVERHEAD;				      \
 	EXC_XFER_LITE(0x0900, timer_interrupt)
+#endif /* CONFIG_IPIPE */
 
 #define FP_UNAVAILABLE_EXCEPTION					      \
 	START_EXCEPTION(FloatingPointUnavailable)			      \

+ diff -u linux-2.6-denx/arch/powerpc/kernel/head_fsl_booke.S.ORIG linux-2.6-denx/arch/powerpc/kernel/head_fsl_booke.S

arch/powerpc/kernel/head_fsl_booke.S renamed from arch/powerpc/kernel/head_fsl_booke.S.ORIG +4 -0
@@ -529,7 +529,11 @@
 	INSTRUCTION_STORAGE_EXCEPTION
 
 	/* External Input Interrupt */
+#ifdef CONFIG_IPIPE
+	EXCEPTION(0x0500, ExternalInput, __ipipe_grab_irq, EXC_XFER_IPIPE)
+#else /* !CONFIG_IPIPE */
 	EXCEPTION(0x0500, ExternalInput, do_IRQ, EXC_XFER_LITE)
+#endif /* CONFIG_IPIPE */
 
 	/* Alignment Interrupt */
 	ALIGNMENT_EXCEPTION

+ diff -u linux-2.6-denx/arch/powerpc/kernel/idle.c.ORIG linux-2.6-denx/arch/powerpc/kernel/idle.c

arch/powerpc/kernel/idle.c renamed from arch/powerpc/kernel/idle.c.ORIG +3 -2
@@ -61,6 +61,7 @@
 	while (1) {
 		while (!need_resched() && !cpu_should_die()) {
 			ppc64_runlatch_off();
+			ipipe_suspend_domain();
 
 			if (ppc_md.power_save) {
 				clear_thread_flag(TIF_POLLING_NRFLAG);
@@ -69,13 +70,13 @@
 				 * is ordered w.r.t. need_resched() test.
 				 */
 				smp_mb();
-				local_irq_disable();
+				local_irq_disable_hw();
 
 				/* check again after disabling irqs */
 				if (!need_resched() && !cpu_should_die())
 					ppc_md.power_save();
 
-				local_irq_enable();
+				local_irq_enable_hw();
 				set_thread_flag(TIF_POLLING_NRFLAG);
 
 			} else {

+ diff -u linux-2.6-denx/arch/powerpc/kernel/idle_power4.S.ORIG linux-2.6-denx/arch/powerpc/kernel/idle_power4.S

arch/powerpc/kernel/idle_power4.S renamed from arch/powerpc/kernel/idle_power4.S.ORIG +4 -0
@@ -34,9 +34,11 @@
 	rldicl	r0,r7,48,1
 	rotldi	r0,r0,16
 	mtmsrd	r0,1			/* hard-disable interrupts */
+#ifdef CONFIG_SOFTDISABLE	
 	li	r0,1
 	stb	r0,PACASOFTIRQEN(r13)	/* we'll hard-enable shortly */
 	stb	r0,PACAHARDIRQEN(r13)
+#endif CONFIG_SOFTDISABLE	
 BEGIN_FTR_SECTION
 	DSSALL
 	sync
@@ -59,10 +61,12 @@
 	rldicl	r0,r7,48,1
 	rotldi	r0,r0,16
 	mtmsrd	r0,1			/* hard-disable interrupts */
+#ifdef CONFIG_SOFTDISABLE	
 	li	r0,1
 	li	r6,0
 	stb	r0,PACAHARDIRQEN(r13)	/* we'll hard-enable shortly */
 	stb	r6,PACASOFTIRQEN(r13)	/* soft-disable irqs */
+#endif
 BEGIN_FTR_SECTION
 	DSSALL
 	sync

+ diff -u linux-2.6-denx/arch/powerpc/kernel/io.c.ORIG linux-2.6-denx/arch/powerpc/kernel/io.c

arch/powerpc/kernel/io.c renamed from arch/powerpc/kernel/io.c.ORIG +1 -1
@@ -120,7 +120,7 @@
 
 #define IO_CHECK_ALIGN(v,a) ((((unsigned long)(v)) & ((a) - 1)) == 0)
 
-void _memset_io(volatile void __iomem *addr, int c, unsigned long n)
+notrace void _memset_io(volatile void __iomem *addr, int c, unsigned long n)
 {
 	void *p = (void __force *)addr;
 	u32 lc = c;

+ diff -u linux-2.6-denx/arch/powerpc/kernel/ipipe.c.ORIG linux-2.6-denx/arch/powerpc/kernel/ipipe.c

arch/powerpc/kernel/ipipe.c renamed from arch/powerpc/kernel/ipipe.c.ORIG +788 -0

788 lines not on this page · raw message

+ diff -u linux-2.6-denx/arch/powerpc/kernel/irq.c.ORIG linux-2.6-denx/arch/powerpc/kernel/irq.c

arch/powerpc/kernel/irq.c renamed from arch/powerpc/kernel/irq.c.ORIG +6 -1
@@ -70,7 +70,7 @@
 #endif
 
 int __irq_offset_value;
-static int ppc_spurious_interrupts;
+int ppc_spurious_interrupts;
 
 #ifdef CONFIG_PPC32
 EXPORT_SYMBOL(__irq_offset_value);
@@ -97,6 +97,8 @@
 
 int distribute_irqs = 1;
 
+#ifdef CONFIG_SOFTDISABLE
+
 static inline unsigned long get_hard_enabled(void)
 {
 	unsigned long enabled;
@@ -174,6 +176,9 @@
 
 	__hard_irq_enable();
 }
+
+#endif /* !CONFIG_SOFTDISABLE */
+
 #endif /* CONFIG_PPC64 */
 
 int show_interrupts(struct seq_file *p, void *v)

+ diff -u linux-2.6-denx/arch/powerpc/kernel/Makefile.ORIG linux-2.6-denx/arch/powerpc/kernel/Makefile

arch/powerpc/kernel/Makefile renamed from arch/powerpc/kernel/Makefile.ORIG +6 -0
@@ -22,6 +22,12 @@
 				   firmware.o sysfs.o nvram_64.o
 obj-$(CONFIG_PPC64)		+= vdso64/
 obj-$(CONFIG_ALTIVEC)		+= vecemu.o vector.o
+obj-$(CONFIG_IPIPE)		+= ipipe.o
+ifeq ($(CONFIG_PPC64),y)
+obj-$(CONFIG_IPIPE_TRACE_MCOUNT)	+= mcount_64.o
+else
+obj-$(CONFIG_IPIPE_TRACE_MCOUNT)	+= mcount_32.o
+endif
 obj-$(CONFIG_PPC_970_NAP)	+= idle_power4.o
 obj-$(CONFIG_PPC_OF)		+= of_device.o of_platform.o prom_parse.o
 procfs-$(CONFIG_PPC64)		:= proc_ppc64.o

+ diff -u linux-2.6-denx/arch/powerpc/kernel/mcount_32.S.ORIG linux-2.6-denx/arch/powerpc/kernel/mcount_32.S

arch/powerpc/kernel/mcount_32.S renamed from arch/powerpc/kernel/mcount_32.S.ORIG +75 -0

75 lines not on this page · raw message

+ diff -u linux-2.6-denx/arch/powerpc/kernel/mcount_64.S.ORIG linux-2.6-denx/arch/powerpc/kernel/mcount_64.S

arch/powerpc/kernel/mcount_64.S renamed from arch/powerpc/kernel/mcount_64.S.ORIG +62 -0

62 lines not on this page · raw message

+ diff -u linux-2.6-denx/arch/powerpc/kernel/ppc_ksyms.c.ORIG linux-2.6-denx/arch/powerpc/kernel/ppc_ksyms.c

arch/powerpc/kernel/ppc_ksyms.c renamed from arch/powerpc/kernel/ppc_ksyms.c.ORIG +1 -1
@@ -49,7 +49,7 @@
 #include <asm/commproc.h>
 #endif
 
-#ifdef CONFIG_PPC64
+#if defined(CONFIG_PPC64) && defined(CONFIG_SOFTDISABLE)
 EXPORT_SYMBOL(local_irq_restore);
 #endif
 

+ diff -u linux-2.6-denx/arch/powerpc/kernel/process.c.ORIG linux-2.6-denx/arch/powerpc/kernel/process.c

arch/powerpc/kernel/process.c renamed from arch/powerpc/kernel/process.c.ORIG +4 -4
@@ -325,7 +325,7 @@
 	}
 #endif
 
-	local_irq_save(flags);
+	local_irq_save_hw(flags);
 
 	account_system_vtime(current);
 	account_process_vtime(current);
@@ -335,7 +335,7 @@
 
 #ifdef CONFIG_PPC_PASEMI_A2_WORKAROUNDS
 	/* current is still really us, just a different us :-) */
-	if (current->mm) {
+	if (ipipe_root_domain_p && current->mm) {
 #ifdef CONFIG_PPC_64K_PAGES
 		__hash_page_64K(0, _PAGE_USER|_PAGE_RW, get_vsid(current->mm->context.id, 0), &current->zero_pte.pte, 0x300, 1);
 #else
@@ -344,7 +344,7 @@
 	}
 #endif
 
-	local_irq_restore(flags);
+	local_irq_restore_hw(flags);
 
 	return last;
 }
@@ -984,7 +984,7 @@
 }
 EXPORT_SYMBOL(dump_stack);
 
-#ifdef CONFIG_PPC64
+#ifdef CONFIG_RUNLATCH
 void ppc64_runlatch_on(void)
 {
 	unsigned long ctrl;

+ diff -u linux-2.6-denx/arch/powerpc/kernel/setup_32.c.ORIG linux-2.6-denx/arch/powerpc/kernel/setup_32.c

arch/powerpc/kernel/setup_32.c renamed from arch/powerpc/kernel/setup_32.c.ORIG +1 -1
@@ -85,7 +85,7 @@
  * from the address that it was linked at, so we must use RELOC/PTRRELOC
  * to access static data (including strings).  -- paulus
  */
-unsigned long __init early_init(unsigned long dt_ptr)
+unsigned long notrace __init early_init(unsigned long dt_ptr)
 {
 	unsigned long offset = reloc_offset();
 	struct cpu_spec *spec;

+ diff -u linux-2.6-denx/arch/powerpc/kernel/setup_64.c.ORIG linux-2.6-denx/arch/powerpc/kernel/setup_64.c

arch/powerpc/kernel/setup_64.c renamed from arch/powerpc/kernel/setup_64.c.ORIG +13 -0
@@ -225,8 +225,10 @@
 {
 	struct paca_struct *lpaca = get_paca();
 
+#ifdef CONFIG_SOFTDISABLE
 	/* Mark interrupts enabled in PACA */
 	lpaca->soft_enabled = 0;
+#endif
 
 	/* Initialize hash table for that CPU */
 	htab_initialize_secondary();
@@ -348,6 +350,12 @@
  */
 void __init setup_system(void)
 {
+#ifdef CONFIG_IPIPE
+	/* Early temporary init, before per-cpu areas are moved to
+	 * their final location. */
+	get_paca()->root_percpu = (u64)&ipipe_percpudom(&ipipe_root, status, 0);
+#endif	
+
 	DBG(" -> setup_system()\n");
 
 	/* Apply the CPUs-specific and firmware specific fixups to kernel
@@ -596,6 +604,11 @@
 		paca[i].data_offset = ptr - __per_cpu_start;
 		memcpy(ptr, __per_cpu_start, __per_cpu_end - __per_cpu_start);
 	}
+#ifdef CONFIG_IPIPE
+	/* Reset pointer to the relocated per-cpu root domain data. */
+	get_paca()->root_percpu = (u64)&ipipe_percpudom(&ipipe_root, status, 0);
+#endif	
+
 }
 #endif
 

+ diff -u linux-2.6-denx/arch/powerpc/kernel/smp.c.ORIG linux-2.6-denx/arch/powerpc/kernel/smp.c

arch/powerpc/kernel/smp.c renamed from arch/powerpc/kernel/smp.c.ORIG +3 -0
@@ -545,6 +545,9 @@
 {
 	unsigned int cpu = smp_processor_id();
 
+#ifdef CONFIG_IPIPE
+	get_paca()->root_percpu = (u64)&ipipe_percpudom(&ipipe_root, status, cpu);
+#endif
 	atomic_inc(&init_mm.mm_count);
 	current->active_mm = &init_mm;
 

+ diff -u linux-2.6-denx/arch/powerpc/kernel/time.c.ORIG linux-2.6-denx/arch/powerpc/kernel/time.c

arch/powerpc/kernel/time.c renamed from arch/powerpc/kernel/time.c.ORIG +13 -2
@@ -74,6 +74,8 @@
 #endif
 #include <asm/smp.h>
 
+unsigned long disarm_decr[NR_CPUS];
+
 /* keep track of when we need to update the rtc */
 time_t last_rtc_update;
 #ifdef CONFIG_PPC_ISERIES
@@ -642,7 +644,7 @@
 	u64 tb_next_jiffy;
 
 #ifdef CONFIG_PPC_PASEMI_A2_WORKAROUNDS
-	extern spinlock_t native_tlbie_lock;
+	extern ipipe_spinlock_t native_tlbie_lock;
 
 	spin_lock(&native_tlbie_lock);
 	asm("ptesync");
@@ -655,7 +657,9 @@
 #endif
 
 	old_regs = set_irq_regs(regs);
+#ifndef CONFIG_IPIPE
 	irq_enter();
+#endif
 
 	profile_tick(CPU_PROFILING);
 	calculate_steal_time();
@@ -681,7 +685,11 @@
 		 * is the case.
 		 */
 		if (!cpu_is_offline(cpu))
+#ifdef CONFIG_IPIPE
+			account_process_time(&per_cpu(__ipipe_tick_regs, cpu));
+#else
 			account_process_time(regs);
+#endif
 
 		/*
 		 * No need to check whether cpu is offline here; boot_cpuid
@@ -704,7 +712,8 @@
 	}
 	
 	next_dec = tb_ticks_per_jiffy - ticks;
-	set_dec(next_dec);
+	if ( !disarm_decr[cpu] )
+	    set_dec(next_dec);
 
 #ifdef CONFIG_PPC_ISERIES
 	if (firmware_has_feature(FW_FEATURE_ISERIES) && hvlpevent_is_pending())
@@ -719,7 +728,9 @@
 	}
 #endif
 
+#ifndef CONFIG_IPIPE
 	irq_exit();
+#endif
 	set_irq_regs(old_regs);
 }
 

+ diff -u linux-2.6-denx/arch/powerpc/kernel/traps.c.ORIG linux-2.6-denx/arch/powerpc/kernel/traps.c

arch/powerpc/kernel/traps.c renamed from arch/powerpc/kernel/traps.c.ORIG +47 -1

149 lines not on this page · raw message

+ diff -u linux-2.6-denx/arch/powerpc/mm/fault.c.ORIG linux-2.6-denx/arch/powerpc/mm/fault.c

arch/powerpc/mm/fault.c renamed from arch/powerpc/mm/fault.c.ORIG +3 -0
@@ -149,6 +149,9 @@
 	int trap = TRAP(regs);
  	int is_exec = trap == 0x400;
 
+	if (ipipe_trap_notify(IPIPE_TRAP_ACCESS,regs))
+	    	return 0;
+
 #if !(defined(CONFIG_4xx) || defined(CONFIG_BOOKE))
 	/*
 	 * Fortunately the bit assignments in SRR1 for an instruction

+ diff -u linux-2.6-denx/arch/powerpc/mm/hash_native_64.c.ORIG linux-2.6-denx/arch/powerpc/mm/hash_native_64.c

arch/powerpc/mm/hash_native_64.c renamed from arch/powerpc/mm/hash_native_64.c.ORIG +25 -9
@@ -37,9 +37,9 @@
 #define HPTE_LOCK_BIT 3
 
 #ifdef CONFIG_PPC_PASEMI_A2_WORKAROUNDS
-DEFINE_SPINLOCK(native_tlbie_lock);
+IPIPE_DEFINE_SPINLOCK(native_tlbie_lock);
 #else
-static DEFINE_SPINLOCK(native_tlbie_lock);
+static IPIPE_DEFINE_SPINLOCK(native_tlbie_lock);
 #endif
 
 static inline void __tlbie(unsigned long va, unsigned int psize)
@@ -133,7 +133,7 @@
 			unsigned long vflags, int psize)
 {
 	struct hash_pte *hptep = htab_address + hpte_group;
-	unsigned long hpte_v, hpte_r;
+	unsigned long hpte_v, hpte_r, flags;
 	int i;
 
 	if (!(vflags & HPTE_V_BOLTED)) {
@@ -142,6 +142,8 @@
 			hpte_group, va, pa, rflags, vflags, psize);
 	}
 
+	local_irq_save_hw(flags);
+
 	for (i = 0; i < HPTES_PER_GROUP; i++) {
 		if (! (hptep->v & HPTE_V_VALID)) {
 			/* retry with lock held */
@@ -154,8 +156,10 @@
 		hptep++;
 	}
 
-	if (i == HPTES_PER_GROUP)
+	if (i == HPTES_PER_GROUP) {
+		local_irq_restore_hw(flags);
 		return -1;
+	}
 
 #ifdef CONFIG_PPC_PASEMI_A2_WORKAROUNDS
 	/* Workaround for bug 4910: No non-guarded access over IOB */
@@ -180,6 +184,8 @@
 	 */
 	hptep->v = hpte_v;
 
+	local_irq_restore_hw(flags);
+
 	__asm__ __volatile__ ("ptesync" : : : "memory");
 
 	return i | (!!(vflags & HPTE_V_SECONDARY) << 3);
@@ -190,13 +196,15 @@
 	struct hash_pte *hptep;
 	int i;
 	int slot_offset;
-	unsigned long hpte_v;
+	unsigned long hpte_v, flags;
 
 	DBG_LOW("    remove(group=%lx)\n", hpte_group);
 
 	/* pick a random entry to start at */
 	slot_offset = mftb() & 0x7;
 
+	local_irq_save_hw(flags);
+
 	for (i = 0; i < HPTES_PER_GROUP; i++) {
 		hptep = htab_address + hpte_group + slot_offset;
 		hpte_v = hptep->v;
@@ -215,12 +223,16 @@
 		slot_offset &= 0x7;
 	}
 
-	if (i == HPTES_PER_GROUP)
+	if (i == HPTES_PER_GROUP) {
+		local_irq_restore_hw(flags);
 		return -1;
+	}
 
 	/* Invalidate the hpte. NOTE: this also unlocks it */
 	hptep->v = 0;
 
+	local_irq_restore_hw(flags);
+
 	return i;
 }
 
@@ -228,7 +240,7 @@
 				 unsigned long va, int psize, int local)
 {
 	struct hash_pte *hptep = htab_address + slot;
-	unsigned long hpte_v, want_v;
+	unsigned long hpte_v, want_v, flags;
 	int ret = 0;
 
 	want_v = hpte_encode_v(va, psize);
@@ -236,6 +248,8 @@
 	DBG_LOW("    update(va=%016lx, avpnv=%016lx, hash=%016lx, newpp=%x)",
 		va, want_v & HPTE_V_AVPN, slot, newpp);
 
+	local_irq_save_hw(flags);
+
 	native_lock_hpte(hptep);
 
 	hpte_v = hptep->v;
@@ -252,6 +266,8 @@
 	}
 	native_unlock_hpte(hptep);
 
+	local_irq_restore_hw(flags);
+
 	/* Ensure it is out of the tlb too. */
 	tlbie(va, psize, local);
 
@@ -329,10 +345,10 @@
 	unsigned long want_v;
 	unsigned long flags;
 
-	local_irq_save(flags);
-
 	DBG_LOW("    invalidate(va=%016lx, hash: %x)\n", va, slot);
 
+	local_irq_save(flags);
+
 	want_v = hpte_encode_v(va, psize);
 	native_lock_hpte(hptep);
 	hpte_v = hptep->v;

+ diff -u linux-2.6-denx/arch/powerpc/mm/hash_utils_64.c.ORIG linux-2.6-denx/arch/powerpc/mm/hash_utils_64.c

arch/powerpc/mm/hash_utils_64.c renamed from arch/powerpc/mm/hash_utils_64.c.ORIG +5 -1
@@ -104,7 +104,7 @@
 #ifdef CONFIG_DEBUG_PAGEALLOC
 static u8 *linear_map_hash_slots;
 static unsigned long linear_map_hash_count;
-static DEFINE_SPINLOCK(linear_map_hash_lock);
+static IPIPE_DEFINE_SPINLOCK(linear_map_hash_lock);
 #endif /* CONFIG_DEBUG_PAGEALLOC */
 
 /* There are definitions of page sizes arrays to be used when none
@@ -881,6 +881,10 @@
  */
 void low_hash_fault(struct pt_regs *regs, unsigned long address)
 {
+	if (ipipe_trap_notify(IPIPE_TRAP_ACCESS, regs))
+		/* Not all access faults go through do_page_fault(). */
+	    	return;
+
 	if (user_mode(regs)) {
 		siginfo_t info;
 

+ diff -u linux-2.6-denx/arch/powerpc/mm/slb.c.ORIG linux-2.6-denx/arch/powerpc/mm/slb.c

arch/powerpc/mm/slb.c renamed from arch/powerpc/mm/slb.c.ORIG +10 -1
@@ -97,7 +97,7 @@
 	unsigned long linear_llp, vmalloc_llp, lflags, vflags;
 	unsigned long ksp_esid_data;
 
-	WARN_ON(!irqs_disabled());
+	WARN_ON(!irqs_disabled_hw());
 
 	linear_llp = mmu_psize_defs[mmu_linear_psize].sllp;
 	vmalloc_llp = mmu_psize_defs[mmu_vmalloc_psize].sllp;
@@ -177,6 +177,15 @@
 	get_paca()->slb_cache_ptr = 0;
 	get_paca()->context = mm->context;
 
+#ifdef CONFIG_IPIPE
+	if (!__ipipe_pipeline_head_p(ipipe_root_domain) && ipipe_root_domain_p)
+		/* Do not preload userspace segments if Linux does not
+		 * head the pipeline but is current: this might delay
+		 * higher priority domains (hw irqs are off right
+		 * now, and slb allocation is expensive time-wise). */
+		return;
+#endif
+
 	/*
 	 * preload some userspace segments into the SLB.
 	 */

+ diff -u linux-2.6-denx/arch/powerpc/platforms/cell/spu_base.c.ORIG linux-2.6-denx/arch/powerpc/platforms/cell/spu_base.c

arch/powerpc/platforms/cell/spu_base.c renamed from arch/powerpc/platforms/cell/spu_base.c.ORIG +1 -1
@@ -49,7 +49,7 @@
 /*
  * Protects cbe_spu_info and spu->number.
  */
-static DEFINE_SPINLOCK(spu_lock);
+static IPIPE_DEFINE_SPINLOCK(spu_lock);
 
 /*
  * List of all spus in the system.

+ diff -u linux-2.6-denx/arch/powerpc/platforms/iseries/irq.c.ORIG linux-2.6-denx/arch/powerpc/platforms/iseries/irq.c

arch/powerpc/platforms/iseries/irq.c renamed from arch/powerpc/platforms/iseries/irq.c.ORIG +1 -1
@@ -80,7 +80,7 @@
 	} data;
 };
 
-static DEFINE_SPINLOCK(pending_irqs_lock);
+static IPIPE_DEFINE_SPINLOCK(pending_irqs_lock);
 static int num_pending_irqs;
 static int pending_irqs[NR_IRQS];
 

+ diff -u linux-2.6-denx/arch/powerpc/platforms/powermac/pic.c.ORIG linux-2.6-denx/arch/powerpc/platforms/powermac/pic.c

arch/powerpc/platforms/powermac/pic.c renamed from arch/powerpc/platforms/powermac/pic.c.ORIG +1 -1
@@ -63,7 +63,7 @@
 static int max_real_irqs;
 static u32 level_mask[4];
 
-static DEFINE_SPINLOCK(pmac_pic_lock);
+static IPIPE_DEFINE_SPINLOCK(pmac_pic_lock);
 
 #define NR_MASK_WORDS	((NR_IRQS + 31) / 32)
 static unsigned long ppc_lost_interrupts[NR_MASK_WORDS];

+ diff -u linux-2.6-denx/arch/powerpc/platforms/ps3/htab.c.ORIG linux-2.6-denx/arch/powerpc/platforms/ps3/htab.c

arch/powerpc/platforms/ps3/htab.c renamed from arch/powerpc/platforms/ps3/htab.c.ORIG +1 -1
@@ -39,7 +39,7 @@
 static unsigned char *bolttab;
 static unsigned char *inusetab;
 
-static DEFINE_SPINLOCK(ps3_bolttab_lock);
+static IPIPE_DEFINE_SPINLOCK(ps3_bolttab_lock);
 
 #define debug_dump_hpte(_a, _b, _c, _d, _e, _f, _g) \
 	_debug_dump_hpte(_a, _b, _c, _d, _e, _f, _g, __func__, __LINE__)

+ diff -u linux-2.6-denx/arch/powerpc/platforms/ps3/interrupt.c.ORIG linux-2.6-denx/arch/powerpc/platforms/ps3/interrupt.c

arch/powerpc/platforms/ps3/interrupt.c renamed from arch/powerpc/platforms/ps3/interrupt.c.ORIG +1 -1
@@ -72,7 +72,7 @@
 		u64 unused_2[3];
 	};
 	u64 ipi_debug_brk_mask;
-	spinlock_t lock;
+	ipipe_spinlock_t lock;
 };
 
 /**

+ diff -u linux-2.6-denx/arch/powerpc/platforms/pseries/lpar.c.ORIG linux-2.6-denx/arch/powerpc/platforms/pseries/lpar.c

arch/powerpc/platforms/pseries/lpar.c renamed from arch/powerpc/platforms/pseries/lpar.c.ORIG +1 -1
@@ -341,7 +341,7 @@
 	return (slot & 7) | (!!(vflags & HPTE_V_SECONDARY) << 3);
 }
 
-static DEFINE_SPINLOCK(pSeries_lpar_tlbie_lock);
+static IPIPE_DEFINE_SPINLOCK(pSeries_lpar_tlbie_lock);
 
 static long pSeries_lpar_hpte_remove(unsigned long hpte_group)
 {

+ diff -u linux-2.6-denx/arch/powerpc/sysdev/i8259.c.ORIG linux-2.6-denx/arch/powerpc/sysdev/i8259.c

arch/powerpc/sysdev/i8259.c renamed from arch/powerpc/sysdev/i8259.c.ORIG +1 -1
@@ -23,7 +23,7 @@
 #define cached_A1 (cached_8259[0])
 #define cached_21 (cached_8259[1])
 
-static DEFINE_SPINLOCK(i8259_lock);
+static IPIPE_DEFINE_SPINLOCK(i8259_lock);
 
 static struct device_node *i8259_node;
 static struct irq_host *i8259_host;

+ diff -u linux-2.6-denx/arch/powerpc/sysdev/ipic.c.ORIG linux-2.6-denx/arch/powerpc/sysdev/ipic.c

arch/powerpc/sysdev/ipic.c renamed from arch/powerpc/sysdev/ipic.c.ORIG +1 -1
@@ -30,7 +30,7 @@
 #include "ipic.h"
 
 static struct ipic * primary_ipic;
-static DEFINE_SPINLOCK(ipic_lock);
+static IPIPE_DEFINE_SPINLOCK(ipic_lock);
 
 static struct ipic_info ipic_info[] = {
 	[9] = {

+ diff -u linux-2.6-denx/arch/powerpc/sysdev/mpic.c.ORIG linux-2.6-denx/arch/powerpc/sysdev/mpic.c

arch/powerpc/sysdev/mpic.c renamed from arch/powerpc/sysdev/mpic.c.ORIG +44 -6

124 lines not on this page · raw message

+ diff -u linux-2.6-denx/arch/powerpc/sysdev/tsi108_pci.c.ORIG linux-2.6-denx/arch/powerpc/sysdev/tsi108_pci.c

arch/powerpc/sysdev/tsi108_pci.c renamed from arch/powerpc/sysdev/tsi108_pci.c.ORIG +10 -0
@@ -251,7 +251,9 @@
 {
 	u_int irp_cfg;
 	int int_line = (irq - IRQ_PCI_INTAD_BASE);
+	unsigned long flags;
 
+	local_irq_save_hw_cond(flags);
 	irp_cfg = tsi108_read_reg(TSI108_PCI_OFFSET + TSI108_PCI_IRP_CFG_CTL);
 	mb();
 	irp_cfg |= (1 << int_line);	/* INTx_DIR = output */
@@ -259,19 +261,23 @@
 	tsi108_write_reg(TSI108_PCI_OFFSET + TSI108_PCI_IRP_CFG_CTL, irp_cfg);
 	mb();
 	irp_cfg = tsi108_read_reg(TSI108_PCI_OFFSET + TSI108_PCI_IRP_CFG_CTL);
+	local_irq_restore_hw_cond(flags);
 }
 
 static void tsi108_pci_int_unmask(u_int irq)
 {
 	u_int irp_cfg;
 	int int_line = (irq - IRQ_PCI_INTAD_BASE);
+	unsigned long flags;
 
+	local_irq_save_hw_cond(flags);
 	irp_cfg = tsi108_read_reg(TSI108_PCI_OFFSET + TSI108_PCI_IRP_CFG_CTL);
 	mb();
 	irp_cfg &= ~(1 << int_line);
 	irp_cfg |= (3 << (8 + (int_line * 2)));
 	tsi108_write_reg(TSI108_PCI_OFFSET + TSI108_PCI_IRP_CFG_CTL, irp_cfg);
 	mb();
+	local_irq_restore_hw_cond(flags);
 }
 
 static void init_pci_source(void)
@@ -362,6 +368,9 @@
 
 static void tsi108_pci_irq_end(u_int irq)
 {
+	unsigned long flags;
+
+	local_irq_save_hw_cond(flags);
 	tsi108_pci_int_unmask(irq);
 
 	/* Enable interrupts from PCI block */
@@ -369,6 +378,7 @@
 			 tsi108_read_reg(TSI108_PCI_OFFSET +
 					 TSI108_PCI_IRP_ENABLE) |
 			 TSI108_PCI_IRP_ENABLE_P_INT);
+	local_irq_restore_hw_cond(flags);
 	mb();
 }
 

+ diff -u linux-2.6-denx/drivers/pci/htirq.c.ORIG linux-2.6-denx/drivers/pci/htirq.c

drivers/pci/htirq.c renamed from drivers/pci/htirq.c.ORIG +1 -1
@@ -21,7 +21,7 @@
  * With multiple simultaneous hypertransport irq devices it might pay
  * to make this more fine grained.  But start with simple, stupid, and correct.
  */
-static DEFINE_SPINLOCK(ht_irq_lock);
+static IPIPE_DEFINE_SPINLOCK(ht_irq_lock);
 
 struct ht_irq_cfg {
 	struct pci_dev *dev;

+ diff -u linux-2.6-denx/drivers/serial/mpc52xx_uart.c.ORIG linux-2.6-denx/drivers/serial/mpc52xx_uart.c

drivers/serial/mpc52xx_uart.c renamed from drivers/serial/mpc52xx_uart.c.ORIG +34 -0
@@ -804,6 +804,40 @@
 #endif
 
 
+#ifdef CONFIG_IPIPE
+
+#include <stdarg.h>
+
+void __ipipe_serial_debug(const char *fmt, ...)
+{
+	struct console *co = MPC52xx_PSC_CONSOLE;
+	unsigned long flags, count;
+	struct uart_port *port;
+	char buf[128];
+	va_list ap;
+
+	if (co->index < 0)
+		return;		/* No console. */
+
+	port = &mpc52xx_uart_ports[co->index];
+
+	if (!port->mapbase)
+		return;		/* Too early. */
+
+	va_start(ap, fmt);
+	vsprintf(buf, fmt, ap);
+	va_end(ap);
+	count = strlen(buf);
+
+	local_irq_save_hw(flags);
+	mpc52xx_console_write(co, buf, count);
+	local_irq_restore_hw(flags);
+}
+
+EXPORT_SYMBOL(__ipipe_serial_debug);
+
+#endif
+
 /* ======================================================================== */
 /* UART Driver                                                              */
 /* ======================================================================== */

+ diff -u linux-2.6-denx/include/asm-powerpc/hw_irq.h.ORIG linux-2.6-denx/include/asm-powerpc/hw_irq.h

include/asm-powerpc/hw_irq.h renamed from include/asm-powerpc/hw_irq.h.ORIG +266 -10

278 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/asm-powerpc/ipipe_base.h.ORIG linux-2.6-denx/include/asm-powerpc/ipipe_base.h

include/asm-powerpc/ipipe_base.h renamed from include/asm-powerpc/ipipe_base.h.ORIG +148 -0

148 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/asm-powerpc/ipipe.h.ORIG linux-2.6-denx/include/asm-powerpc/ipipe.h

include/asm-powerpc/ipipe.h renamed from include/asm-powerpc/ipipe.h.ORIG +205 -0

205 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/asm-powerpc/mmu_context.h.ORIG linux-2.6-denx/include/asm-powerpc/mmu_context.h

include/asm-powerpc/mmu_context.h renamed from include/asm-powerpc/mmu_context.h.ORIG +6 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/asm-powerpc/paca.h.ORIG linux-2.6-denx/include/asm-powerpc/paca.h

include/asm-powerpc/paca.h renamed from include/asm-powerpc/paca.h.ORIG +4 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/asm-powerpc/ptrace.h.ORIG linux-2.6-denx/include/asm-powerpc/ptrace.h

include/asm-powerpc/ptrace.h renamed from include/asm-powerpc/ptrace.h.ORIG +1 -1

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/asm-powerpc/reg.h.ORIG linux-2.6-denx/include/asm-powerpc/reg.h

include/asm-powerpc/reg.h renamed from include/asm-powerpc/reg.h.ORIG +1 -1

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/asm-powerpc/time.h.ORIG linux-2.6-denx/include/asm-powerpc/time.h

include/asm-powerpc/time.h renamed from include/asm-powerpc/time.h.ORIG +4 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/asm-ppc/mmu_context.h.ORIG linux-2.6-denx/include/asm-ppc/mmu_context.h

include/asm-ppc/mmu_context.h renamed from include/asm-ppc/mmu_context.h.ORIG +11 -1

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/hardirq.h.ORIG linux-2.6-denx/include/linux/hardirq.h

include/linux/hardirq.h renamed from include/linux/hardirq.h.ORIG +2 -2

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/ipipe_base.h.ORIG linux-2.6-denx/include/linux/ipipe_base.h

include/linux/ipipe_base.h renamed from include/linux/ipipe_base.h.ORIG +77 -0

77 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/ipipe_compat.h.ORIG linux-2.6-denx/include/linux/ipipe_compat.h

include/linux/ipipe_compat.h renamed from include/linux/ipipe_compat.h.ORIG +54 -0

54 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/ipipe.h.ORIG linux-2.6-denx/include/linux/ipipe.h

include/linux/ipipe.h renamed from include/linux/ipipe.h.ORIG +557 -0

557 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/ipipe_percpu.h.ORIG linux-2.6-denx/include/linux/ipipe_percpu.h

include/linux/ipipe_percpu.h renamed from include/linux/ipipe_percpu.h.ORIG +69 -0

69 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/ipipe_tickdev.h.ORIG linux-2.6-denx/include/linux/ipipe_tickdev.h

include/linux/ipipe_tickdev.h renamed from include/linux/ipipe_tickdev.h.ORIG +55 -0

55 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/ipipe_trace.h.ORIG linux-2.6-denx/include/linux/ipipe_trace.h

include/linux/ipipe_trace.h renamed from include/linux/ipipe_trace.h.ORIG +65 -0

65 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/irq.h.ORIG linux-2.6-denx/include/linux/irq.h

include/linux/irq.h renamed from include/linux/irq.h.ORIG +6 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/kernel.h.ORIG linux-2.6-denx/include/linux/kernel.h

include/linux/kernel.h renamed from include/linux/kernel.h.ORIG +6 -2

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/linkage.h.ORIG linux-2.6-denx/include/linux/linkage.h

include/linux/linkage.h renamed from include/linux/linkage.h.ORIG +4 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/mm.h.ORIG linux-2.6-denx/include/linux/mm.h

include/linux/mm.h renamed from include/linux/mm.h.ORIG +1 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/module.h.ORIG linux-2.6-denx/include/linux/module.h

include/linux/module.h renamed from include/linux/module.h.ORIG +1 -1

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/preempt.h.ORIG linux-2.6-denx/include/linux/preempt.h

include/linux/preempt.h renamed from include/linux/preempt.h.ORIG +8 -4

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/sched.h.ORIG linux-2.6-denx/include/linux/sched.h

include/linux/sched.h renamed from include/linux/sched.h.ORIG +16 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/smp.h.ORIG linux-2.6-denx/include/linux/smp.h

include/linux/smp.h renamed from include/linux/smp.h.ORIG +2 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/spinlock.h.ORIG linux-2.6-denx/include/linux/spinlock.h

include/linux/spinlock.h renamed from include/linux/spinlock.h.ORIG +138 -22

160 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/include/linux/spinlock_types.h.ORIG linux-2.6-denx/include/linux/spinlock_types.h

include/linux/spinlock_types.h renamed from include/linux/spinlock_types.h.ORIG +14 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/init/Kconfig.ORIG linux-2.6-denx/init/Kconfig

init/Kconfig renamed from init/Kconfig.ORIG +1 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/init/main.c.ORIG linux-2.6-denx/init/main.c

init/main.c renamed from init/main.c.ORIG +7 -1

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/exit.c.ORIG linux-2.6-denx/kernel/exit.c

kernel/exit.c renamed from kernel/exit.c.ORIG +1 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/fork.c.ORIG linux-2.6-denx/kernel/fork.c

kernel/fork.c renamed from kernel/fork.c.ORIG +10 -1

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/ipipe/core.c.ORIG linux-2.6-denx/kernel/ipipe/core.c

kernel/ipipe/core.c renamed from kernel/ipipe/core.c.ORIG +1618 -0

1,618 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/ipipe/Kconfig.debug.ORIG linux-2.6-denx/kernel/ipipe/Kconfig.debug

kernel/ipipe/Kconfig.debug renamed from kernel/ipipe/Kconfig.debug.ORIG +88 -0

88 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/ipipe/Kconfig.ORIG linux-2.6-denx/kernel/ipipe/Kconfig

kernel/ipipe/Kconfig renamed from kernel/ipipe/Kconfig.ORIG +25 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/ipipe/Makefile.ORIG linux-2.6-denx/kernel/ipipe/Makefile

kernel/ipipe/Makefile renamed from kernel/ipipe/Makefile.ORIG +3 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/ipipe/tracer.c.ORIG linux-2.6-denx/kernel/ipipe/tracer.c

kernel/ipipe/tracer.c renamed from kernel/ipipe/tracer.c.ORIG +1294 -0

1,294 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/irq/chip.c.ORIG linux-2.6-denx/kernel/irq/chip.c

kernel/irq/chip.c renamed from kernel/irq/chip.c.ORIG +129 -0

129 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/Makefile.ORIG linux-2.6-denx/kernel/Makefile

kernel/Makefile renamed from kernel/Makefile.ORIG +1 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/printk.c.ORIG linux-2.6-denx/kernel/printk.c

kernel/printk.c renamed from kernel/printk.c.ORIG +77 -0

77 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/sched.c.ORIG linux-2.6-denx/kernel/sched.c

kernel/sched.c renamed from kernel/sched.c.ORIG +72 -3

75 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/signal.c.ORIG linux-2.6-denx/kernel/signal.c

kernel/signal.c renamed from kernel/signal.c.ORIG +1 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/kernel/spinlock.c.ORIG linux-2.6-denx/kernel/spinlock.c

kernel/spinlock.c renamed from kernel/spinlock.c.ORIG +2 -2

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/lib/bust_spinlocks.c.ORIG linux-2.6-denx/lib/bust_spinlocks.c

lib/bust_spinlocks.c renamed from lib/bust_spinlocks.c.ORIG +3 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/lib/ioremap.c.ORIG linux-2.6-denx/lib/ioremap.c

lib/ioremap.c renamed from lib/ioremap.c.ORIG +3 -2

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/lib/Kconfig.debug.ORIG linux-2.6-denx/lib/Kconfig.debug

lib/Kconfig.debug renamed from lib/Kconfig.debug.ORIG +2 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/lib/smp_processor_id.c.ORIG linux-2.6-denx/lib/smp_processor_id.c

lib/smp_processor_id.c renamed from lib/smp_processor_id.c.ORIG +3 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/lib/spinlock_debug.c.ORIG linux-2.6-denx/lib/spinlock_debug.c

lib/spinlock_debug.c renamed from lib/spinlock_debug.c.ORIG +18 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/Makefile.ORIG linux-2.6-denx/Makefile

Makefile renamed from Makefile.ORIG +4 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/mm/memory.c.ORIG linux-2.6-denx/mm/memory.c

mm/memory.c renamed from mm/memory.c.ORIG +190 -33

223 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/mm/mlock.c.ORIG linux-2.6-denx/mm/mlock.c

mm/mlock.c renamed from mm/mlock.c.ORIG +2 -2

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

+ diff -u linux-2.6-denx/mm/vmalloc.c.ORIG linux-2.6-denx/mm/vmalloc.c

mm/vmalloc.c renamed from mm/vmalloc.c.ORIG +2 -0

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.

#1 lore raw

Hi Wolfgang,

Quoted 7 lines · Wolfgang Grandegger

Hello,

attached is a patch for "arch/powerpc" for the DENX GIT tree linux-2.6-denx version 2.6.23. It should replace the patch adeos-ipipe-2.6.23-rc5-powerpc-DENX-2.0-01.patch. It just needed adaption for the renaming of head_4xx.S to head_40x.S in arch/powerpc/kernel/.

Great, thanks. I'm going to merge the latest updates from the generic I-pipe tree into your patch and roll the result out asap.

Btw, do you know if 2.6.23-DENX runs the PA-SEMI properly? Last time I checked (a month ago actually), -rc5 had some issues booting an Electra board due to upstream changes.

Signature · 1 line
Philippe.