LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/7] powerpc: Add book3s privileged doorbell exception vectors
From: Ian Munsie @ 2012-11-15  4:49 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Michael Neuling, linuxppc-dev, Ian Munsie
In-Reply-To: <1352954990-2858-1-git-send-email-imunsie@au1.ibm.com>

From: Ian Munsie <imunsie@au1.ibm.com>

Directed Privileged Doorbell Interrupts come in at 0xa00 (or
0xc000000000004a00 if relocation on exception is enabled), so add
exception vectors at these locations.

If doorbell support is not compiled in we handle it as an
unknown_exception.

Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
Tested-by: Michael Neuling <mikey@neuling.org>
---
 arch/powerpc/include/asm/exception-64s.h |    1 +
 arch/powerpc/kernel/exceptions-64s.S     |    9 +++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
index 9d5367e..b1edd80 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -305,6 +305,7 @@ label##_relon_hv:					\
 #define SOFTEN_VALUE_0x502	PACA_IRQ_EE
 #define SOFTEN_VALUE_0x900	PACA_IRQ_DEC
 #define SOFTEN_VALUE_0x982	PACA_IRQ_DEC
+#define SOFTEN_VALUE_0xa00	PACA_IRQ_DBELL
 #define SOFTEN_VALUE_0xe80	PACA_IRQ_DBELL
 #define SOFTEN_VALUE_0xe82	PACA_IRQ_DBELL
 
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index d08a3cd..176bf99 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -252,7 +252,7 @@ hardware_interrupt_hv:
 	MASKABLE_EXCEPTION_PSERIES(0x900, 0x900, decrementer)
 	STD_EXCEPTION_HV(0x980, 0x982, hdecrementer)
 
-	STD_EXCEPTION_PSERIES(0xa00, 0xa00, trap_0a)
+	MASKABLE_EXCEPTION_PSERIES(0xa00, 0xa00, doorbell_super)
 	KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xa00)
 
 	STD_EXCEPTION_PSERIES(0xb00, 0xb00, trap_0b)
@@ -655,7 +655,11 @@ machine_check_common:
 	STD_EXCEPTION_COMMON_ASYNC(0x500, hardware_interrupt, do_IRQ)
 	STD_EXCEPTION_COMMON_ASYNC(0x900, decrementer, .timer_interrupt)
 	STD_EXCEPTION_COMMON(0x980, hdecrementer, .hdec_interrupt)
-	STD_EXCEPTION_COMMON(0xa00, trap_0a, .unknown_exception)
+#ifdef CONFIG_PPC_DOORBELL
+	STD_EXCEPTION_COMMON_ASYNC(0xa00, doorbell_super, .doorbell_exception)
+#else
+	STD_EXCEPTION_COMMON_ASYNC(0xa00, doorbell_super, .unknown_exception)
+#endif
 	STD_EXCEPTION_COMMON(0xb00, trap_0b, .unknown_exception)
 	STD_EXCEPTION_COMMON(0xd00, single_step, .single_step_exception)
 	STD_EXCEPTION_COMMON(0xe00, trap_0e, .unknown_exception)
@@ -755,6 +759,7 @@ hardware_interrupt_relon_hv:
 	STD_RELON_EXCEPTION_PSERIES(0x4800, 0x800, fp_unavailable)
 	MASKABLE_RELON_EXCEPTION_PSERIES(0x4900, 0x900, decrementer)
 	STD_RELON_EXCEPTION_HV(0x4980, 0x982, hdecrementer)
+	MASKABLE_RELON_EXCEPTION_PSERIES(0x4a00, 0xa00, doorbell_super)
 	STD_RELON_EXCEPTION_PSERIES(0x4b00, 0xb00, trap_0b)
 
 	. = 0x4c00
-- 
1.7.10.4

^ permalink raw reply related

* powerpc: Add support for POWER8 directed doorbell interrupts
From: Ian Munsie @ 2012-11-15  4:49 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Michael Neuling, linuxppc-dev

This patch series adds support for using directed doorbell interrupts for IPIs
between threads within a core, which is supported by POWER8.

This should avoid the overhead of using XICS to deliver an IPI within a core,
though delivering IPIs between threads of different cores must still use XICS
as before.

Please note that this series depends on this series posted by Michael Neuling,
as it adds additional relocation on exception vectors:
https://lists.ozlabs.org/pipermail/linuxppc-dev/2012-November/101910.html

^ permalink raw reply

* [PATCH 4/7] powerpc: Select either privileged or hypervisor doorbell when sending
From: Ian Munsie @ 2012-11-15  4:49 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Michael Neuling, linuxppc-dev, Ian Munsie
In-Reply-To: <1352954990-2858-1-git-send-email-imunsie@au1.ibm.com>

From: Ian Munsie <imunsie@au1.ibm.com>

On book3s we have two msgsnd instructions with differing privilege
levels. This patch selects the appropriate instruction to use whenever
we send a doorbell interrupt.

Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
Tested-by: Michael Neuling <mikey@neuling.org>
---
 arch/powerpc/include/asm/dbell.h |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/include/asm/dbell.h b/arch/powerpc/include/asm/dbell.h
index 3b33856..5fa6b20 100644
--- a/arch/powerpc/include/asm/dbell.h
+++ b/arch/powerpc/include/asm/dbell.h
@@ -37,12 +37,25 @@ enum ppc_dbell {
 #define SPRN_DOORBELL_CPUTAG		SPRN_TIR
 #define PPC_DBELL_TAG_MASK		0x7f
 
+static inline void _ppc_msgsnd(u32 msg)
+{
+	if (cpu_has_feature(CPU_FTR_HVMODE))
+		__asm__ __volatile__ (PPC_MSGSND(%0) : : "r" (msg));
+	else
+		__asm__ __volatile__ (PPC_MSGSNDP(%0) : : "r" (msg));
+}
+
 #else /* CONFIG_PPC_BOOK3S */
 
 #define PPC_DBELL_MSGTYPE		PPC_DBELL
 #define SPRN_DOORBELL_CPUTAG		SPRN_PIR
 #define PPC_DBELL_TAG_MASK		0x3fff
 
+static inline void _ppc_msgsnd(u32 msg)
+{
+	__asm__ __volatile__ (PPC_MSGSND(%0) : : "r" (msg));
+}
+
 #endif /* CONFIG_PPC_BOOK3S */
 
 extern void doorbell_cause_ipi(int cpu, unsigned long data);
@@ -54,7 +67,7 @@ static inline void ppc_msgsnd(enum ppc_dbell type, u32 flags, u32 tag)
 	u32 msg = PPC_DBELL_TYPE(type) | (flags & PPC_DBELL_MSG_BRDCAST) |
 			(tag & 0x07ffffff);
 
-	__asm__ __volatile__ (PPC_MSGSND(%0) : : "r" (msg));
+	_ppc_msgsnd(msg);
 }
 
 #endif /* _ASM_POWERPC_DBELL_H */
-- 
1.7.10.4

^ permalink raw reply related

* [PATCH 7/7] powerpc: Hook up doorbells on server
From: Ian Munsie @ 2012-11-15  4:49 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Michael Neuling, linuxppc-dev, Ian Munsie
In-Reply-To: <1352954990-2858-1-git-send-email-imunsie@au1.ibm.com>

From: Ian Munsie <imunsie@au1.ibm.com>

This patch actually hooks up doorbell interrupts on POWER8:

- Select the PPC_DOORBELL Kconfig option from PPC_PSERIES

- Add the doorbell CPU feature bit to POWER8

- We define a new pSeries_cause_ipi_mux() function that issues a
  doorbell interrupt if the recipient is another thread within the same
  core as the sender. If the recipient is in a different core it falls
  back to using XICS to deliver the IPI as before.

- During pSeries_smp_probe() at boot, we check if doorbell interrupts
  are supported. If they are we set the cause_ipi function pointer to
  the above mentioned function, otherwise we leave it as whichever XICS
  cause_ipi function was determined by xics_smp_probe().

Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
Tested-by: Michael Neuling <mikey@neuling.org>
---
 arch/powerpc/include/asm/cputable.h    |    3 ++-
 arch/powerpc/platforms/pseries/Kconfig |    1 +
 arch/powerpc/platforms/pseries/smp.c   |   33 ++++++++++++++++++++++++++++++--
 3 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h
index 76f81bd..fc4d2c5 100644
--- a/arch/powerpc/include/asm/cputable.h
+++ b/arch/powerpc/include/asm/cputable.h
@@ -408,7 +408,8 @@ extern const char *powerpc_base_platform;
 	    CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \
 	    CPU_FTR_DSCR | CPU_FTR_SAO  | \
 	    CPU_FTR_STCX_CHECKS_ADDRESS | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
-	    CPU_FTR_ICSWX | CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY)
+	    CPU_FTR_ICSWX | CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY | \
+	    CPU_FTR_DBELL)
 #define CPU_FTRS_CELL	(CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \
 	    CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \
 	    CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \
diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig
index 837cf49..9a0941b 100644
--- a/arch/powerpc/platforms/pseries/Kconfig
+++ b/arch/powerpc/platforms/pseries/Kconfig
@@ -17,6 +17,7 @@ config PPC_PSERIES
 	select PPC_NATIVE
 	select PPC_PCI_CHOICE if EXPERT
 	select ZLIB_DEFLATE
+	select PPC_DOORBELL
 	default y
 
 config PPC_SPLPAR
diff --git a/arch/powerpc/platforms/pseries/smp.c b/arch/powerpc/platforms/pseries/smp.c
index 9fc0a49..32c82c2 100644
--- a/arch/powerpc/platforms/pseries/smp.c
+++ b/arch/powerpc/platforms/pseries/smp.c
@@ -42,6 +42,7 @@
 #include <asm/vdso_datapage.h>
 #include <asm/cputhreads.h>
 #include <asm/xics.h>
+#include <asm/dbell.h>
 
 #include "plpar_wrappers.h"
 #include "pseries.h"
@@ -54,6 +55,11 @@
  */
 static cpumask_var_t of_spin_mask;
 
+/*
+ * If we multiplex IPI mechanisms, store the appropriate XICS IPI mechanism here
+ */
+static void  (*xics_cause_ipi)(int cpu, unsigned long data);
+
 /* Query where a cpu is now.  Return codes #defined in plpar_wrappers.h */
 int smp_query_cpu_stopped(unsigned int pcpu)
 {
@@ -137,6 +143,8 @@ static void __devinit smp_xics_setup_cpu(int cpu)
 {
 	if (cpu != boot_cpuid)
 		xics_setup_cpu();
+	if (cpu_has_feature(CPU_FTR_DBELL))
+		doorbell_setup_this_cpu();
 
 	if (firmware_has_feature(FW_FEATURE_SPLPAR))
 		vpa_init(cpu);
@@ -195,6 +203,27 @@ static int smp_pSeries_cpu_bootable(unsigned int nr)
 	return 1;
 }
 
+/* Only used on systems that support multiple IPI mechanisms */
+static void pSeries_cause_ipi_mux(int cpu, unsigned long data)
+{
+	if (cpumask_test_cpu(cpu, cpu_sibling_mask(smp_processor_id())))
+		doorbell_cause_ipi(cpu, data);
+	else
+		xics_cause_ipi(cpu, data);
+}
+
+static __init int pSeries_smp_probe(void)
+{
+	int ret = xics_smp_probe();
+
+	if (cpu_has_feature(CPU_FTR_DBELL)) {
+		xics_cause_ipi = smp_ops->cause_ipi;
+		smp_ops->cause_ipi = pSeries_cause_ipi_mux;
+	}
+
+	return ret;
+}
+
 static struct smp_ops_t pSeries_mpic_smp_ops = {
 	.message_pass	= smp_mpic_message_pass,
 	.probe		= smp_mpic_probe,
@@ -204,8 +233,8 @@ static struct smp_ops_t pSeries_mpic_smp_ops = {
 
 static struct smp_ops_t pSeries_xics_smp_ops = {
 	.message_pass	= NULL,	/* Use smp_muxed_ipi_message_pass */
-	.cause_ipi	= NULL,	/* Filled at runtime by xics_smp_probe() */
-	.probe		= xics_smp_probe,
+	.cause_ipi	= NULL,	/* Filled at runtime by pSeries_smp_probe() */
+	.probe		= pSeries_smp_probe,
 	.kick_cpu	= smp_pSeries_kick_cpu,
 	.setup_cpu	= smp_xics_setup_cpu,
 	.cpu_bootable	= smp_pSeries_cpu_bootable,
-- 
1.7.10.4

^ permalink raw reply related

* [PATCH 2/7] powerpc: Add book3s hypervisor doorbell exception vectors
From: Ian Munsie @ 2012-11-15  4:49 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Michael Neuling, linuxppc-dev, Ian Munsie
In-Reply-To: <1352954990-2858-1-git-send-email-imunsie@au1.ibm.com>

From: Ian Munsie <imunsie@au1.ibm.com>

Directed Hypervisor Doorbell Interrupts come in at 0xe80 (or
0xc000000000004e80 if relocation on exceptions is enabled), so add
exception vectors at these locations.

If doorbell support is not compiled in we handle it as an
unknown_exception.

Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
Tested-by: Michael Neuling <mikey@neuling.org>
---
 arch/powerpc/include/asm/exception-64s.h |    2 ++
 arch/powerpc/kernel/exceptions-64s.S     |   16 +++++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
index ad708dd..9d5367e 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -305,6 +305,8 @@ label##_relon_hv:					\
 #define SOFTEN_VALUE_0x502	PACA_IRQ_EE
 #define SOFTEN_VALUE_0x900	PACA_IRQ_DEC
 #define SOFTEN_VALUE_0x982	PACA_IRQ_DEC
+#define SOFTEN_VALUE_0xe80	PACA_IRQ_DBELL
+#define SOFTEN_VALUE_0xe82	PACA_IRQ_DBELL
 
 #define __SOFTEN_TEST(h, vec)						\
 	lbz	r10,PACASOFTIRQEN(r13);					\
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index 4665e82..d08a3cd 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -293,6 +293,8 @@ hv_exception_trampoline:
 	b	hmi_exception_hv
 	. = 0xe60
 	b	hmi_exception_hv
+	. = 0xe80
+	b	h_doorbell_hv
 
 	/* We need to deal with the Altivec unavailable exception
 	 * here which is at 0xf20, thus in the middle of the
@@ -514,6 +516,8 @@ ALT_FTR_SECTION_END_IFCLR(CPU_FTR_ARCH_206)
 	KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe42)
 	STD_EXCEPTION_HV(., 0xe62, hmi_exception) /* need to flush cache ? */
 	KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe62)
+	MASKABLE_EXCEPTION_HV(., 0xe82, h_doorbell)
+	KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe82)
 
 	/* moved from 0xf00 */
 	STD_EXCEPTION_PSERIES(., 0xf00, performance_monitor)
@@ -657,6 +661,11 @@ machine_check_common:
 	STD_EXCEPTION_COMMON(0xe00, trap_0e, .unknown_exception)
 	STD_EXCEPTION_COMMON(0xe40, emulation_assist, .program_check_exception)
 	STD_EXCEPTION_COMMON(0xe60, hmi_exception, .unknown_exception)
+#ifdef CONFIG_PPC_DOORBELL
+	STD_EXCEPTION_COMMON_ASYNC(0xe80, h_doorbell, .doorbell_exception)
+#else
+	STD_EXCEPTION_COMMON_ASYNC(0xe80, h_doorbell, .unknown_exception)
+#endif
 	STD_EXCEPTION_COMMON_ASYNC(0xf00, performance_monitor, .performance_monitor_exception)
 	STD_EXCEPTION_COMMON(0x1300, instruction_breakpoint, .instruction_breakpoint_exception)
 	STD_EXCEPTION_COMMON(0x1502, denorm, .unknown_exception)
@@ -773,9 +782,8 @@ system_call_relon_pSeries:
 	. = 0x4e60
 	b	hmi_exception_relon_hv
 
-	/* For when we support the doorbell interrupt:
-	STD_RELON_EXCEPTION_HYPERVISOR(0x4e80, 0xe80, doorbell_hyper)
-	*/
+	. = 0x4e80
+	b	h_doorbell_relon_hv
 
 performance_monitor_relon_pSeries_1:
 	. = 0x4f00
@@ -1355,6 +1363,8 @@ _GLOBAL(do_stab_bolted)
 	KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe40)
 	STD_RELON_EXCEPTION_HV(., 0xe60, hmi_exception)
 	KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe60)
+	MASKABLE_RELON_EXCEPTION_HV(., 0xe80, h_doorbell)
+	KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe80)
 
 	STD_RELON_EXCEPTION_PSERIES(., 0xf00, performance_monitor)
 	STD_RELON_EXCEPTION_PSERIES(., 0xf20, altivec_unavailable)
-- 
1.7.10.4

^ permalink raw reply related

* [PATCH 5/7] powerpc: Add code to handle soft-disabled doorbells on server
From: Ian Munsie @ 2012-11-15  4:49 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Michael Neuling, linuxppc-dev, Ian Munsie
In-Reply-To: <1352954990-2858-1-git-send-email-imunsie@au1.ibm.com>

From: Ian Munsie <imunsie@au1.ibm.com>

This patch adds the logic to properly handle doorbells that come in when
interrupts have been soft disabled and to replay them when interrupts
are re-enabled:

- masked_##_H##interrupt is modified to leave interrupts enabled when a
  doorbell has come in since doorbells are edge sensitive and as such
  won't be automatically re-raised.

- __check_irq_replay now tests if a doorbell happened on book3s, and
  returns either 0xe80 or 0xa00 depending on whether we are the
  hypervisor or not.

- restore_check_irq_replay now tests for the two possible server
  doorbell vector numbers to replay.

- __replay_interrupt also adds tests for the two server doorbell vector
  numbers, and is modified to use a compare instruction rather than an
  andi. on the single bit difference between 0x500 and 0x900.

The last two use a CPU feature section to avoid needlessly testing
against the hypervisor vector if it is not the hypervisor, and vice
versa.

Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
---
 arch/powerpc/kernel/entry_64.S       |   13 ++++++++++--
 arch/powerpc/kernel/exceptions-64s.S |   37 +++++++++++++++++++++++-----------
 arch/powerpc/kernel/irq.c            |   11 ++++++++--
 3 files changed, 45 insertions(+), 16 deletions(-)

diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index ad76666..df6857f 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -842,13 +842,22 @@ restore_check_irq_replay:
 	addi	r3,r1,STACK_FRAME_OVERHEAD;
 	bl	.timer_interrupt
 	b	.ret_from_except
+#ifdef CONFIG_PPC_DOORBELL
+1:
 #ifdef CONFIG_PPC_BOOK3E
-1:	cmpwi	cr0,r3,0x280
+	cmpwi	cr0,r3,0x280
+#else
+	BEGIN_FTR_SECTION
+		cmpwi	cr0,r3,0xe80
+	FTR_SECTION_ELSE
+		cmpwi	cr0,r3,0xa00
+	ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE)
+#endif /* CONFIG_PPC_BOOK3E */
 	bne	1f
 	addi	r3,r1,STACK_FRAME_OVERHEAD;
 	bl	.doorbell_exception
 	b	.ret_from_except
-#endif /* CONFIG_PPC_BOOK3E */
+#endif /* CONFIG_PPC_DOORBELL */
 1:	b	.ret_from_except /* What else to do here ? */
  
 unrecov_restore:
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index 176bf99..32fc04f 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -528,10 +528,12 @@ ALT_FTR_SECTION_END_IFCLR(CPU_FTR_ARCH_206)
 	KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf40)
 
 /*
- * An interrupt came in while soft-disabled. We set paca->irq_happened,
- * then, if it was a decrementer interrupt, we bump the dec to max and
- * and return, else we hard disable and return. This is called with
- * r10 containing the value to OR to the paca field.
+ * An interrupt came in while soft-disabled. We set paca->irq_happened, then:
+ * - If it was a decrementer interrupt, we bump the dec to max and and return.
+ * - If it was a doorbell we return immediately since doorbells are edge
+ *   triggered and won't automatically refire.
+ * - else we hard disable and return.
+ * This is called with r10 containing the value to OR to the paca field.
  */
 #define MASKED_INTERRUPT(_H)				\
 masked_##_H##interrupt:					\
@@ -539,13 +541,15 @@ masked_##_H##interrupt:					\
 	lbz	r11,PACAIRQHAPPENED(r13);		\
 	or	r11,r11,r10;				\
 	stb	r11,PACAIRQHAPPENED(r13);		\
-	andi.	r10,r10,PACA_IRQ_DEC;			\
-	beq	1f;					\
+	cmpwi	r10,PACA_IRQ_DEC;			\
+	bne	1f;					\
 	lis	r10,0x7fff;				\
 	ori	r10,r10,0xffff;				\
 	mtspr	SPRN_DEC,r10;				\
 	b	2f;					\
-1:	mfspr	r10,SPRN_##_H##SRR1;			\
+1:	cmpwi	r10,PACA_IRQ_DBELL;			\
+	beq	2f;					\
+	mfspr	r10,SPRN_##_H##SRR1;			\
 	rldicl	r10,r10,48,1; /* clear MSR_EE */	\
 	rotldi	r10,r10,16;				\
 	mtspr	SPRN_##_H##SRR1,r10;			\
@@ -562,8 +566,8 @@ masked_##_H##interrupt:					\
 
 /*
  * Called from arch_local_irq_enable when an interrupt needs
- * to be resent. r3 contains 0x500 or 0x900 to indicate which
- * kind of interrupt. MSR:EE is already off. We generate a
+ * to be resent. r3 contains 0x500, 0x900, 0xa00 or 0xe80 to indicate
+ * which kind of interrupt. MSR:EE is already off. We generate a
  * stackframe like if a real interrupt had happened.
  *
  * Note: While MSR:EE is off, we need to make sure that _MSR
@@ -579,9 +583,18 @@ _GLOBAL(__replay_interrupt)
 	mflr	r11
 	mfcr	r9
 	ori	r12,r12,MSR_EE
-	andi.	r3,r3,0x0800
-	bne	decrementer_common
-	b	hardware_interrupt_common
+	cmpwi	r3,0x900
+	beq	decrementer_common
+	cmpwi	r3,0x500
+	beq	hardware_interrupt_common
+BEGIN_FTR_SECTION
+	cmpwi	r3,0xe80
+	beq	h_doorbell_common
+FTR_SECTION_ELSE
+	cmpwi	r3,0xa00
+	beq	doorbell_super_common
+ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE)
+	blr
 
 #ifdef CONFIG_PPC_PSERIES
 /*
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 71413f4..4f97fe3 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -122,8 +122,8 @@ static inline notrace int decrementer_check_overflow(void)
 }
 
 /* This is called whenever we are re-enabling interrupts
- * and returns either 0 (nothing to do) or 500/900 if there's
- * either an EE or a DEC to generate.
+ * and returns either 0 (nothing to do) or 500/900/280/a00/e80 if
+ * there's an EE, DEC or DBELL to generate.
  *
  * This is called in two contexts: From arch_local_irq_restore()
  * before soft-enabling interrupts, and from the exception exit
@@ -182,6 +182,13 @@ notrace unsigned int __check_irq_replay(void)
 	local_paca->irq_happened &= ~PACA_IRQ_DBELL;
 	if (happened & PACA_IRQ_DBELL)
 		return 0x280;
+#else
+	local_paca->irq_happened &= ~PACA_IRQ_DBELL;
+	if (happened & PACA_IRQ_DBELL) {
+		if (cpu_has_feature(CPU_FTR_HVMODE))
+			return 0xe80;
+		return 0xa00;
+	}
 #endif /* CONFIG_PPC_BOOK3E */
 
 	/* There should be nothing left ! */
-- 
1.7.10.4

^ permalink raw reply related

* [PATCH 6/7] powerpc: Update Kconfig + Makefile to prepare for server doorbells
From: Ian Munsie @ 2012-11-15  4:49 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Michael Neuling, linuxppc-dev, Ian Munsie
In-Reply-To: <1352954990-2858-1-git-send-email-imunsie@au1.ibm.com>

From: Ian Munsie <imunsie@au1.ibm.com>

Move the rule to build doorbell support out of the Makefile and into a
new Kconfig boolean that platforms can select.

We will add doorbell support to pseries as well in the next patch.

Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
Tested-by: Michael Neuling <mikey@neuling.org>
---
 arch/powerpc/kernel/Makefile           |    4 ++--
 arch/powerpc/platforms/Kconfig.cputype |    6 ++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 8f61934..44fbbea 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -75,8 +75,8 @@ endif
 obj64-$(CONFIG_HIBERNATION)	+= swsusp_asm64.o
 obj-$(CONFIG_MODULES)		+= module.o module_$(CONFIG_WORD_SIZE).o
 obj-$(CONFIG_44x)		+= cpu_setup_44x.o
-obj-$(CONFIG_PPC_FSL_BOOK3E)	+= cpu_setup_fsl_booke.o dbell.o
-obj-$(CONFIG_PPC_BOOK3E_64)	+= dbell.o
+obj-$(CONFIG_PPC_FSL_BOOK3E)	+= cpu_setup_fsl_booke.o
+obj-$(CONFIG_PPC_DOORBELL)	+= dbell.o
 obj-$(CONFIG_JUMP_LABEL)	+= jump_label.o
 
 extra-y				:= head_$(CONFIG_WORD_SIZE).o
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index 72afd28..cea2f09 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -76,6 +76,7 @@ config PPC_BOOK3E_64
 	bool "Embedded processors"
 	select PPC_FPU # Make it a choice ?
 	select PPC_SMP_MUXED_IPI
+	select PPC_DOORBELL
 
 endchoice
 
@@ -208,6 +209,7 @@ config PPC_FSL_BOOK3E
 	select FSL_EMB_PERFMON
 	select PPC_SMP_MUXED_IPI
 	select SYS_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
+	select PPC_DOORBELL
 	default y if FSL_BOOKE
 
 config PTE_64BIT
@@ -382,4 +384,8 @@ config NOT_COHERENT_CACHE
 config CHECK_CACHE_COHERENCY
 	bool
 
+config PPC_DOORBELL
+	bool
+	default n
+
 endmenu
-- 
1.7.10.4

^ permalink raw reply related

* [powerpc:dt 10/10] lib/pSeries-reconfig-notifier-error-inject.c:4:34: fatal error: asm/pSeries_reconfig.h: No such file or directory
From: kbuild test robot @ 2012-11-15  5:26 UTC (permalink / raw)
  To: Nathan Fontenot; +Cc: linuxppc-dev

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git dt
head:   f459d63e1689b16a2f5a965557e19b25bad5dbdc
commit: f459d63e1689b16a2f5a965557e19b25bad5dbdc [10/10] powerpc+of: Remove the pSeries_reconfig.h file
config: make ARCH=powerpc allmodconfig

All error/warnings:

lib/pSeries-reconfig-notifier-error-inject.c:4:34: fatal error: asm/pSeries_reconfig.h: No such file or directory
compilation terminated.

vim +4 lib/pSeries-reconfig-notifier-error-inject.c

08dfb4dd Akinobu Mita 2012-07-30   1  #include <linux/kernel.h>
08dfb4dd Akinobu Mita 2012-07-30   2  #include <linux/module.h>
08dfb4dd Akinobu Mita 2012-07-30   3  
08dfb4dd Akinobu Mita 2012-07-30  @4  #include <asm/pSeries_reconfig.h>
08dfb4dd Akinobu Mita 2012-07-30   5  
08dfb4dd Akinobu Mita 2012-07-30   6  #include "notifier-error-inject.h"
08dfb4dd Akinobu Mita 2012-07-30   7  
08dfb4dd Akinobu Mita 2012-07-30   8  static int priority;
08dfb4dd Akinobu Mita 2012-07-30   9  module_param(priority, int, 0);
08dfb4dd Akinobu Mita 2012-07-30  10  MODULE_PARM_DESC(priority, "specify pSeries reconfig notifier priority");
08dfb4dd Akinobu Mita 2012-07-30  11  
08dfb4dd Akinobu Mita 2012-07-30  12  static struct notifier_err_inject reconfig_err_inject = {

---
0-DAY kernel build testing backend         Open Source Technology Center
Fengguang Wu, Yuanhan Liu                              Intel Corporation

^ permalink raw reply

* linux-next: manual merge of the powerpc tree with the signal tree
From: Stephen Rothwell @ 2012-11-15  6:03 UTC (permalink / raw)
  To: Benjamin Herrenschmidt, Paul Mackerras, linuxppc-dev
  Cc: linux-next, linux-kernel, Li Zhong, Al Viro

[-- Attachment #1: Type: text/plain, Size: 953 bytes --]

Hi all,

Today's linux-next merge of the powerpc tree got a conflict in
arch/powerpc/kernel/entry_64.S between commits 40792104b255 ("powerpc:
don't mess with r2 in copy_thread() and friends") and 53b50f9483cc
("powerpc: take dereferencing to ret_from_kernel_thread()") from the
signal tree and commit 12660b170253 ("powerpc: Fix
MAX_STACK_TRACE_ENTRIES too low warning !") from the powerpc tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc arch/powerpc/kernel/entry_64.S
index e9a906c,ad76666..0000000
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@@ -373,7 -373,9 +373,9 @@@ _GLOBAL(ret_from_fork
  _GLOBAL(ret_from_kernel_thread)
  	bl	.schedule_tail
  	REST_NVGPRS(r1)
 -	REST_GPR(2,r1)
 +	ld	r14, 0(r14)
+ 	li	r3,0
+ 	std	r3,0(r1)
  	mtlr	r14
  	mr	r3,r15
  	blrl

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* Re: hoo boy, interrupt Handling on BGQ
From: Segher Boessenkool @ 2012-11-15  6:50 UTC (permalink / raw)
  To: Jimi Xenidis; +Cc: Kumar Gala, linuxppc-dev
In-Reply-To: <9FB7F97D-D988-495B-93C8-746963DFF15C@pobox.com>

> So interrupts need to go to FW before Linux, please let not talk  
> about how silly that is.
> Lets talk about something far more silly...
> In order to get to the Linux exception handlers, we have to tell FW  
> where the interrupt page is, and then it _copies_ it.
>
> IFAICT, this means that each vectors on the "copied" page must:
> 1) construct an 64-bit absolute address to a per vector stub
> 2) leap at the (with bctr or blr)
> 3) restore CTR or LR and anything else that (1) messed up
> 4) normal branch to the actual vector
>
> This is what I'll be working on, but I'd love to hear any other ideas.

If you Linux exception handlers are at low (or high) real addresses, as
usual, you can just "ba" to them?


Segher

^ permalink raw reply

* linux-next: build failure after merge of the final tree (powercp tree related)
From: Stephen Rothwell @ 2012-11-15  7:06 UTC (permalink / raw)
  To: Benjamin Herrenschmidt, Paul Mackerras, linuxppc-dev
  Cc: Nathan Fontenot, linux-next, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1555 bytes --]

Hi all,

After merging the final tree, today's linux-next build (powerpc
allyesconfig) failed like this:

lib/pSeries-reconfig-notifier-error-inject.c:4:34: fatal error: asm/pSeries_reconfig.h: No such file or directory

Caused by commit f459d63e1689 ("powerpc+of: Remove the pSeries_reconfig.h
file") and even if the file existed, things were removed by commit
1cf3d8b3d24c ("powerpc+of: Add of node/property notification chain for
adds and removes") that would cause
lib/pSeries-reconfig-notifier-error-inject.c to fail to build.  I have
marked it as broken for now using this patch:

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Thu, 15 Nov 2012 18:02:13 +1100
Subject: [PATCH] lib: disable PSERIES_RECONFIG_NOTIFIER_ERROR_INJECT

It has been fundamentally broken by other changes.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 lib/Kconfig.debug |    1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 41faf0b..ad84944 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1195,6 +1195,7 @@ config MEMORY_NOTIFIER_ERROR_INJECT
 config PSERIES_RECONFIG_NOTIFIER_ERROR_INJECT
 	tristate "pSeries reconfig notifier error injection module"
 	depends on PPC_PSERIES && NOTIFIER_ERROR_INJECTION
+	depends on BROKEN
 	help
 	  This option provides the ability to inject artifical errors to
 	  pSeries reconfig notifier chain callbacks.  It is controlled
-- 
1.7.10.280.gaa39

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply related

* Re: linux-next: build failure after merge of the final tree (powercp tree related)
From: Benjamin Herrenschmidt @ 2012-11-15  7:11 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: linuxppc-dev, linux-next, Paul Mackerras, linux-kernel,
	Nathan Fontenot
In-Reply-To: <20121115180607.4a545ad6b6b6c8e3481a11e9@canb.auug.org.au>

On Thu, 2012-11-15 at 18:06 +1100, Stephen Rothwell wrote:
> Hi all,
> 
> After merging the final tree, today's linux-next build (powerpc
> allyesconfig) failed like this:
> 
> lib/pSeries-reconfig-notifier-error-inject.c:4:34: fatal error: asm/pSeries_reconfig.h: No such file or directory
> 
> Caused by commit f459d63e1689 ("powerpc+of: Remove the pSeries_reconfig.h
> file") and even if the file existed, things were removed by commit
> 1cf3d8b3d24c ("powerpc+of: Add of node/property notification chain for
> adds and removes") that would cause
> lib/pSeries-reconfig-notifier-error-inject.c to fail to build.  I have
> marked it as broken for now using this patch:

My bad, didn't notice, I don't have error injection enabled in my test
configs. I think that stuff went in after the original patches were
written I think.

Not a big deal, nobody actually enables that error inject test stuff
just yet, I'll put a fix patch into my "dt" and my "next" branch asap.

Cheers,
Ben.
 
> From: Stephen Rothwell <sfr@canb.auug.org.au>
> Date: Thu, 15 Nov 2012 18:02:13 +1100
> Subject: [PATCH] lib: disable PSERIES_RECONFIG_NOTIFIER_ERROR_INJECT
> 
> It has been fundamentally broken by other changes.
> 
> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
> ---
>  lib/Kconfig.debug |    1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index 41faf0b..ad84944 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -1195,6 +1195,7 @@ config MEMORY_NOTIFIER_ERROR_INJECT
>  config PSERIES_RECONFIG_NOTIFIER_ERROR_INJECT
>  	tristate "pSeries reconfig notifier error injection module"
>  	depends on PPC_PSERIES && NOTIFIER_ERROR_INJECTION
> +	depends on BROKEN
>  	help
>  	  This option provides the ability to inject artifical errors to
>  	  pSeries reconfig notifier chain callbacks.  It is controlled
> -- 
> 1.7.10.280.gaa39
> 

^ permalink raw reply

* Re: [PATCH] cpuidle: Measure idle state durations with monotonic clock
From: Preeti Murthy @ 2012-11-15  9:04 UTC (permalink / raw)
  To: Julius Werner
  Cc: Kevin Hilman, Deepthi Dharwar, Trinabh Gupta, Lists Linaro-dev,
	Peter Zijlstra, linux-pm, Daniel Lezcano, linux-kernel,
	Rafael J. Wysocki, linux-acpi, Srivatsa S. Bhat, Andrew Morton,
	linuxppc-dev, Sameer Nanda, Len Brown
In-Reply-To: <1352944590-8776-1-git-send-email-jwerner@chromium.org>

Hi all,

The code looks correct and inviting to me as it has led to good cleanups.
I dont think passing 0 as the argument to the function
sched_clock_idle_wakeup_event()
should lead to problems,as it does not do anything useful with the
passed arguments.

My only curiosity is what was the purpose of passing idle residency time to
sched_clock_idle_wakeup_event() when this data could always be retrieved from
dev->last_residency for each cpu,which gets almost immediately updated.

But this does not seem to come in way of this patch for now.Anyway I
have added Peter to
the list so that he can opine about this issue if possible and needed.

Reviewed-by: Preeti U Murthy <preeti@linux.vnet.ibm.com>


Regards
Preeti U Murthy

^ permalink raw reply

* [PATCH 0/6] powerpc/book3e: support kexec and kdump
From: Tiejun Chen @ 2012-11-15  9:39 UTC (permalink / raw)
  To: benh; +Cc: linuxppc-dev, linux-kernel

This patchset is used to support kexec and kdump on book3e.

Tested on fsl-p5040 DS.

Tiejun Chen (6):
      powerpc/book3e: support CONFIG_RELOCATABLE
      book3e/kexec/kdump: enable kexec for kernel
      book3e/kexec/kdump: create a 1:1 TLB mapping
      book3e/kexec/kdump: introduce a kexec kernel flag
      book3e/kexec/kdump: skip ppc32 kexec specfic
      book3e/kexec/kdump: redefine VIRT_PHYS_OFFSET

 arch/powerpc/Kconfig                     |    2 +-
 arch/powerpc/include/asm/exception-64e.h |    8 ++++
 arch/powerpc/include/asm/page.h          |    2 +
 arch/powerpc/include/asm/smp.h           |    3 ++
 arch/powerpc/kernel/exceptions-64e.S     |   15 ++++++-
 arch/powerpc/kernel/head_64.S            |   43 +++++++++++++++++--
 arch/powerpc/kernel/machine_kexec_64.c   |    6 +++
 arch/powerpc/kernel/misc_64.S            |   67 +++++++++++++++++++++++++++++-
 arch/powerpc/lib/feature-fixups.c        |    7 ++++
 arch/powerpc/platforms/85xx/smp.c        |   26 ++++++++++++
 10 files changed, 173 insertions(+), 6 deletions(-)

Tiejun

^ permalink raw reply

* [PATCH 1/6] powerpc/book3e: support CONFIG_RELOCATABLE
From: Tiejun Chen @ 2012-11-15  9:39 UTC (permalink / raw)
  To: benh; +Cc: linuxppc-dev, linux-kernel
In-Reply-To: <1352972396-13489-1-git-send-email-tiejun.chen@windriver.com>

book3e is different with book3s since 3s includes the exception
vectors code in head_64.S as it relies on absolute addressing
which is only possible within this compilation unit. So we have
to get that label address with got.

And when boot a relocated kernel, we should reset ipvr properly again
after .relocate.

Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
 arch/powerpc/include/asm/exception-64e.h |    8 ++++++++
 arch/powerpc/kernel/exceptions-64e.S     |   15 ++++++++++++++-
 arch/powerpc/kernel/head_64.S            |   22 ++++++++++++++++++++++
 arch/powerpc/lib/feature-fixups.c        |    7 +++++++
 4 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/include/asm/exception-64e.h b/arch/powerpc/include/asm/exception-64e.h
index 51fa43e..89e940d 100644
--- a/arch/powerpc/include/asm/exception-64e.h
+++ b/arch/powerpc/include/asm/exception-64e.h
@@ -214,10 +214,18 @@ exc_##label##_book3e:
 #define TLB_MISS_STATS_SAVE_INFO_BOLTED
 #endif
 
+#ifndef CONFIG_RELOCATABLE
 #define SET_IVOR(vector_number, vector_offset)	\
 	li	r3,vector_offset@l; 		\
 	ori	r3,r3,interrupt_base_book3e@l;	\
 	mtspr	SPRN_IVOR##vector_number,r3;
+#else
+#define SET_IVOR(vector_number, vector_offset)	\
+	LOAD_REG_ADDR(r3,interrupt_base_book3e);\
+	rlwinm	r3,r3,0,15,0;			\
+	ori	r3,r3,vector_offset@l;		\
+	mtspr	SPRN_IVOR##vector_number,r3;
+#endif
 
 #endif /* _ASM_POWERPC_EXCEPTION_64E_H */
 
diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
index 4e7083e..82be30b 100644
--- a/arch/powerpc/kernel/exceptions-64e.S
+++ b/arch/powerpc/kernel/exceptions-64e.S
@@ -1104,7 +1104,15 @@ skpinv:	addi	r6,r6,1				/* Increment */
  * r4 = MAS0 w/TLBSEL & ESEL for the temp mapping
  */
 	/* Now we branch the new virtual address mapped by this entry */
+#ifdef CONFIG_RELOCATABLE
+	/* We have to find out address from lr. */
+	bl	1f		/* Find our address */
+1:	mflr	r6
+	addi	r6,r6,(2f - 1b)
+	tovirt(r6,r6)
+#else
 	LOAD_REG_IMMEDIATE(r6,2f)
+#endif
 	lis	r7,MSR_KERNEL@h
 	ori	r7,r7,MSR_KERNEL@l
 	mtspr	SPRN_SRR0,r6
@@ -1355,9 +1363,14 @@ _GLOBAL(book3e_secondary_thread_init)
 	mflr	r28
 	b	3b
 
-_STATIC(init_core_book3e)
+_GLOBAL(init_core_book3e)
 	/* Establish the interrupt vector base */
+#ifdef CONFIG_RELOCATABLE
+	tovirt(r2,r2)
+	LOAD_REG_ADDR(r3, interrupt_base_book3e)
+#else
 	LOAD_REG_IMMEDIATE(r3, interrupt_base_book3e)
+#endif
 	mtspr	SPRN_IVPR,r3
 	sync
 	blr
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index 9e07bd0..aa7df52 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -395,12 +395,22 @@ _STATIC(__after_prom_start)
 	/* process relocations for the final address of the kernel */
 	lis	r25,PAGE_OFFSET@highest	/* compute virtual base of kernel */
 	sldi	r25,r25,32
+#if defined(CONFIG_PPC_BOOK3E)
+	tovirt(r26,r26)			/* on booke, we already run at PAGE_OFFSET */
+#endif
 	lwz	r7,__run_at_load-_stext(r26)
+#if defined(CONFIG_PPC_BOOK3E)
+	tophys(r26,r26)			/* Restore for the remains. */
+#endif
 	cmplwi	cr0,r7,1	/* flagged to stay where we are ? */
 	bne	1f
 	add	r25,r25,r26
 1:	mr	r3,r25
 	bl	.relocate
+#if defined(CONFIG_PPC_BOOK3E)
+	/* We should set ivpr again after .relocate. */
+	bl	.init_core_book3e
+#endif
 #endif
 
 /*
@@ -428,11 +438,23 @@ _STATIC(__after_prom_start)
  * variable __run_at_load, if it is set the kernel is treated as relocatable
  * kernel, otherwise it will be moved to PHYSICAL_START
  */
+#if defined(CONFIG_PPC_BOOK3E)
+	tovirt(r26,r26)			/* on booke, we already run at PAGE_OFFSET */
+#endif
 	lwz	r7,__run_at_load-_stext(r26)
+#if defined(CONFIG_PPC_BOOK3E)
+	tophys(r26,r26)			/* Restore for the remains. */
+#endif
 	cmplwi	cr0,r7,1
 	bne	3f
 
+#ifdef CONFIG_PPC_BOOK3E
+	LOAD_REG_ADDR(r5, interrupt_end_book3e)
+	LOAD_REG_ADDR(r11, _stext)
+	sub	r5,r5,r11
+#else
 	li	r5,__end_interrupts - _stext	/* just copy interrupts */
+#endif
 	b	5f
 3:
 #endif
diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c
index 7a8a748..13f20ed 100644
--- a/arch/powerpc/lib/feature-fixups.c
+++ b/arch/powerpc/lib/feature-fixups.c
@@ -135,13 +135,20 @@ void do_final_fixups(void)
 #if defined(CONFIG_PPC64) && defined(CONFIG_RELOCATABLE)
 	int *src, *dest;
 	unsigned long length;
+#ifdef CONFIG_PPC_BOOK3E
+	extern char interrupt_end_book3e[];
+#endif
 
 	if (PHYSICAL_START == 0)
 		return;
 
 	src = (int *)(KERNELBASE + PHYSICAL_START);
 	dest = (int *)KERNELBASE;
+#ifdef CONFIG_PPC_BOOK3E
+	length = (interrupt_end_book3e - _stext) / sizeof(int);
+#else
 	length = (__end_interrupts - _stext) / sizeof(int);
+#endif
 
 	while (length--) {
 		patch_instruction(dest, *src);
-- 
1.7.9.5

^ permalink raw reply related

* [PATCH 3/6] book3e/kexec/kdump: create a 1:1 TLB mapping
From: Tiejun Chen @ 2012-11-15  9:39 UTC (permalink / raw)
  To: benh; +Cc: linuxppc-dev, linux-kernel
In-Reply-To: <1352972396-13489-1-git-send-email-tiejun.chen@windriver.com>

book3e have no real MMU mode so we have to create a 1:1 TLB
mapping to make sure we can access the real physical address.
And correct something to support this pseudo real mode on book3e.

Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
 arch/powerpc/kernel/head_64.S |    9 ++++---
 arch/powerpc/kernel/misc_64.S |   55 ++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 60 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index aa7df52..d51ffc0 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -425,12 +425,12 @@ _STATIC(__after_prom_start)
 	tovirt(r3,r3)			/* on booke, we already run at PAGE_OFFSET */
 #endif
 	mr.	r4,r26			/* In some cases the loader may  */
+#if defined(CONFIG_PPC_BOOK3E)
+	tovirt(r4,r4)
+#endif
 	beq	9f			/* have already put us at zero */
 	li	r6,0x100		/* Start offset, the first 0x100 */
 					/* bytes were copied earlier.	 */
-#ifdef CONFIG_PPC_BOOK3E
-	tovirt(r6,r6)			/* on booke, we already run at PAGE_OFFSET */
-#endif
 
 #ifdef CONFIG_RELOCATABLE
 /*
@@ -472,6 +472,9 @@ _STATIC(__after_prom_start)
 p_end:	.llong	_end - _stext
 
 4:	/* Now copy the rest of the kernel up to _end */
+#if defined(CONFIG_PPC_BOOK3E)
+	tovirt(r26,r26)
+#endif
 	addis	r5,r26,(p_end - _stext)@ha
 	ld	r5,(p_end - _stext)@l(r5)	/* get _end */
 5:	bl	.copy_and_flush		/* copy the rest */
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
index c2acf8c..ffe6043 100644
--- a/arch/powerpc/kernel/misc_64.S
+++ b/arch/powerpc/kernel/misc_64.S
@@ -449,6 +449,49 @@ kexec_flag:
 
 
 #ifdef CONFIG_KEXEC
+#ifdef CONFIG_PPC_BOOK3E
+/* BOOK3E have no a real MMU mode so we have to setup the initial TLB
+ * for a core to map v:0 to p:0 as 1:1. This current implementation
+ * assume that 1G is enough for kexec.
+ */
+#include <asm/mmu.h>
+kexec_create_tlb:
+	/* Invalidate all TLBs to avoid any TLB conflict. */
+	PPC_TLBILX_ALL(0,R0)
+	sync
+	isync
+
+	mfspr	r10,SPRN_TLB1CFG
+	andi.	r10,r10,TLBnCFG_N_ENTRY	/* Extract # entries */
+	subi	r10,r10,1		/* Often its always safe to use last */
+	lis	r9,MAS0_TLBSEL(1)@h
+	rlwimi	r9,r10,16,4,15		/* Setup MAS0 = TLBSEL | ESEL(r9) */
+
+/* Setup a temp mapping v:0 to p:0 as 1:1 and return to it.
+ */
+#ifdef CONFIG_SMP
+#define M_IF_SMP	MAS2_M
+#else
+#define M_IF_SMP	0
+#endif
+	mtspr	SPRN_MAS0,r9
+
+	lis	r9,(MAS1_VALID|MAS1_IPROT)@h
+	ori	r9,r9,(MAS1_TSIZE(BOOK3E_PAGESZ_1GB))@l
+	mtspr	SPRN_MAS1,r9
+
+	LOAD_REG_IMMEDIATE(r9, 0x0 | M_IF_SMP)
+	mtspr	SPRN_MAS2,r9
+
+	LOAD_REG_IMMEDIATE(r9, 0x0 | MAS3_SR | MAS3_SW | MAS3_SX)
+	mtspr	SPRN_MAS3,r9
+	li	r9,0
+	mtspr	SPRN_MAS7,r9
+
+	tlbwe
+	isync
+	blr
+#endif
 
 /* kexec_smp_wait(void)
  *
@@ -462,6 +505,10 @@ kexec_flag:
  */
 _GLOBAL(kexec_smp_wait)
 	lhz	r3,PACAHWCPUID(r13)
+#ifdef CONFIG_PPC_BOOK3E
+	/* Create a 1:1 mapping. */
+	bl	kexec_create_tlb
+#endif
 	bl	real_mode
 
 	li	r4,KEXEC_STATE_REAL_MODE
@@ -478,6 +525,7 @@ _GLOBAL(kexec_smp_wait)
  * don't overwrite r3 here, it is live for kexec_wait above.
  */
 real_mode:	/* assume normal blr return */
+#ifndef CONFIG_PPC_BOOK3E
 1:	li	r9,MSR_RI
 	li	r10,MSR_DR|MSR_IR
 	mflr	r11		/* return address to SRR0 */
@@ -489,7 +537,10 @@ real_mode:	/* assume normal blr return */
 	mtspr	SPRN_SRR1,r10
 	mtspr	SPRN_SRR0,r11
 	rfid
-
+#else
+	/* the real mode is nothing for book3e. */
+	blr
+#endif
 
 /*
  * kexec_sequence(newstack, start, image, control, clear_all())
@@ -538,6 +589,8 @@ _GLOBAL(kexec_sequence)
 	mtmsrd	r3,1
 #else
 	wrteei	0
+	/* Create a 1:1 mapping. */
+	bl	kexec_create_tlb
 #endif
 
 	/* copy dest pages, flush whole dest image */
-- 
1.7.9.5

^ permalink raw reply related

* [PATCH 4/6] book3e/kexec/kdump: introduce a kexec kernel flag
From: Tiejun Chen @ 2012-11-15  9:39 UTC (permalink / raw)
  To: benh; +Cc: linuxppc-dev, linux-kernel
In-Reply-To: <1352972396-13489-1-git-send-email-tiejun.chen@windriver.com>

We need to introduce a flag to indicate we're already running
a kexec kernel then we can go proper path. For example, We
shouldn't access spin_table from the bootloader to up any secondary
cpu for kexec kernel, and kexec kernel already know how to jump to
generic_secondary_smp_init.

Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
 arch/powerpc/include/asm/smp.h    |    3 +++
 arch/powerpc/kernel/head_64.S     |   12 ++++++++++++
 arch/powerpc/kernel/misc_64.S     |    6 ++++++
 arch/powerpc/platforms/85xx/smp.c |   14 ++++++++++++++
 4 files changed, 35 insertions(+)

diff --git a/arch/powerpc/include/asm/smp.h b/arch/powerpc/include/asm/smp.h
index e807e9d..aadbe9b 100644
--- a/arch/powerpc/include/asm/smp.h
+++ b/arch/powerpc/include/asm/smp.h
@@ -190,6 +190,9 @@ extern void generic_secondary_thread_init(void);
 extern unsigned long __secondary_hold_spinloop;
 extern unsigned long __secondary_hold_acknowledge;
 extern char __secondary_hold;
+#ifdef CONFIG_KEXEC
+extern unsigned long __run_at_kexec;
+#endif
 
 extern void __early_start(void);
 #endif /* __ASSEMBLY__ */
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index d51ffc0..9c30d9f 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -89,6 +89,12 @@ __secondary_hold_spinloop:
 __secondary_hold_acknowledge:
 	.llong	0x0
 
+#if defined(CONFIG_KEXEC) || defined(CONFIG_CRASH_DUMP)
+	.globl	__run_at_kexec
+__run_at_kexec:
+	.llong	0x0	/* Flag for the secondary kernel from kexec. */
+#endif
+
 #ifdef CONFIG_RELOCATABLE
 	/* This flag is set to 1 by a loader if the kernel should run
 	 * at the loaded address instead of the linked address.  This
@@ -441,6 +447,12 @@ _STATIC(__after_prom_start)
 #if defined(CONFIG_PPC_BOOK3E)
 	tovirt(r26,r26)			/* on booke, we already run at PAGE_OFFSET */
 #endif
+#if defined(CONFIG_KEXEC) || defined(CONFIG_CRASH_DUMP)
+	/* If relocated we need to restore this flag on that relocated address. */
+	ld	r7,__run_at_kexec-_stext(r3)
+	std	r7,__run_at_kexec-_stext(r26)
+#endif
+
 	lwz	r7,__run_at_load-_stext(r26)
 #if defined(CONFIG_PPC_BOOK3E)
 	tophys(r26,r26)			/* Restore for the remains. */
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
index ffe6043..b81f8ac 100644
--- a/arch/powerpc/kernel/misc_64.S
+++ b/arch/powerpc/kernel/misc_64.S
@@ -608,6 +608,12 @@ _GLOBAL(kexec_sequence)
 	bl	.copy_and_flush	/* (dest, src, copy limit, start offset) */
 1:	/* assume normal blr return */
 
+	/* notify we're going into kexec kernel for SMP. */
+	LOAD_REG_ADDR(r3,__run_at_kexec)
+	li	r4,1
+	std	r4,0(r3)
+	sync
+
 	/* release other cpus to the new kernel secondary start at 0x60 */
 	mflr	r5
 	li	r6,1
diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c
index 6fcfa12..c7febd5 100644
--- a/arch/powerpc/platforms/85xx/smp.c
+++ b/arch/powerpc/platforms/85xx/smp.c
@@ -137,6 +137,9 @@ static int __cpuinit smp_85xx_kick_cpu(int nr)
 	int hw_cpu = get_hard_smp_processor_id(nr);
 	int ioremappable;
 	int ret = 0;
+#if defined(CONFIG_KEXEC) || defined(CONFIG_CRASH_DUMP)
+	unsigned long *ptr;
+#endif
 
 	WARN_ON(nr < 0 || nr >= NR_CPUS);
 	WARN_ON(hw_cpu < 0 || hw_cpu >= NR_CPUS);
@@ -213,6 +216,14 @@ out:
 #else
 	smp_generic_kick_cpu(nr);
 
+#if defined(CONFIG_KEXEC) || defined(CONFIG_CRASH_DUMP)
+	ptr  = (unsigned long *)((unsigned long)&__run_at_kexec);
+	/* We shouldn't access spin_table from the bootloader to up any
+	 * secondary cpu for kexec kernel, and kexec kernel already
+	 * know how to jump to generic_secondary_smp_init.
+	 */
+	if (!*ptr) {
+#endif
 	out_be32(&spin_table->pir, hw_cpu);
 	out_be64((u64 *)(&spin_table->addr_h),
 	  __pa((u64)*((unsigned long long *)generic_secondary_smp_init)));
@@ -220,6 +231,9 @@ out:
 	if (!ioremappable)
 		flush_dcache_range((ulong)spin_table,
 			(ulong)spin_table + sizeof(struct epapr_spin_table));
+#if defined(CONFIG_KEXEC) || defined(CONFIG_CRASH_DUMP)
+	}
+#endif
 #endif
 
 	local_irq_restore(flags);
-- 
1.7.9.5

^ permalink raw reply related

* [PATCH 2/6] book3e/kexec/kdump: enable kexec for kernel
From: Tiejun Chen @ 2012-11-15  9:39 UTC (permalink / raw)
  To: benh; +Cc: linuxppc-dev, linux-kernel
In-Reply-To: <1352972396-13489-1-git-send-email-tiejun.chen@windriver.com>

We need to active KEXEC for book3e and bypass or convert non-book3e stuff
in kexec coverage.

Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
 arch/powerpc/Kconfig                   |    2 +-
 arch/powerpc/kernel/machine_kexec_64.c |    6 ++++++
 arch/powerpc/kernel/misc_64.S          |    6 ++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index a902a5c..3000cab8 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -357,7 +357,7 @@ config ARCH_ENABLE_MEMORY_HOTREMOVE
 
 config KEXEC
 	bool "kexec system call (EXPERIMENTAL)"
-	depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) && EXPERIMENTAL
+	depends on (PPC_BOOK3S || FSL_BOOKE || PPC_BOOK3E || (44x && !SMP)) && EXPERIMENTAL
 	help
 	  kexec is a system call that implements the ability to shutdown your
 	  current kernel, and to start another kernel.  It is like a reboot
diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c
index d7f6090..2c0cbf0 100644
--- a/arch/powerpc/kernel/machine_kexec_64.c
+++ b/arch/powerpc/kernel/machine_kexec_64.c
@@ -32,6 +32,7 @@
 int default_machine_kexec_prepare(struct kimage *image)
 {
 	int i;
+#ifndef CONFIG_PPC_BOOK3E
 	unsigned long begin, end;	/* limits of segment */
 	unsigned long low, high;	/* limits of blocked memory range */
 	struct device_node *node;
@@ -40,6 +41,7 @@ int default_machine_kexec_prepare(struct kimage *image)
 
 	if (!ppc_md.hpte_clear_all)
 		return -ENOENT;
+#endif
 
 	/*
 	 * Since we use the kernel fault handlers and paging code to
@@ -50,6 +52,7 @@ int default_machine_kexec_prepare(struct kimage *image)
 		if (image->segment[i].mem < __pa(_end))
 			return -ETXTBSY;
 
+#ifndef CONFIG_PPC_BOOK3E
 	/*
 	 * For non-LPAR, we absolutely can not overwrite the mmu hash
 	 * table, since we are still using the bolted entries in it to
@@ -91,6 +94,7 @@ int default_machine_kexec_prepare(struct kimage *image)
 				return -ETXTBSY;
 		}
 	}
+#endif
 
 	return 0;
 }
@@ -358,6 +362,7 @@ void default_machine_kexec(struct kimage *image)
 	/* NOTREACHED */
 }
 
+#ifndef CONFIG_PPC_BOOK3E
 /* Values we need to export to the second kernel via the device tree. */
 static unsigned long htab_base;
 
@@ -402,3 +407,4 @@ static int __init export_htab_values(void)
 	return 0;
 }
 late_initcall(export_htab_values);
+#endif
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
index 5cfa800..c2acf8c 100644
--- a/arch/powerpc/kernel/misc_64.S
+++ b/arch/powerpc/kernel/misc_64.S
@@ -532,9 +532,13 @@ _GLOBAL(kexec_sequence)
 	lhz	r25,PACAHWCPUID(r13)	/* get our phys cpu from paca */
 
 	/* disable interrupts, we are overwriting kernel data next */
+#ifndef CONFIG_PPC_BOOK3E
 	mfmsr	r3
 	rlwinm	r3,r3,0,17,15
 	mtmsrd	r3,1
+#else
+	wrteei	0
+#endif
 
 	/* copy dest pages, flush whole dest image */
 	mr	r3,r29
@@ -556,10 +560,12 @@ _GLOBAL(kexec_sequence)
 	li	r6,1
 	stw	r6,kexec_flag-1b(5)
 
+#ifndef CONFIG_PPC_BOOK3E
 	/* clear out hardware hash page table and tlb */
 	ld	r5,0(r27)		/* deref function descriptor */
 	mtctr	r5
 	bctrl				/* ppc_md.hpte_clear_all(void); */
+#endif
 
 /*
  *   kexec image calling is:
-- 
1.7.9.5

^ permalink raw reply related

* [PATCH 5/6] book3e/kexec/kdump: skip ppc32 kexec specfic
From: Tiejun Chen @ 2012-11-15  9:39 UTC (permalink / raw)
  To: benh; +Cc: linuxppc-dev, linux-kernel
In-Reply-To: <1352972396-13489-1-git-send-email-tiejun.chen@windriver.com>

ppc64 kexec mechanism has a different implementation with ppc32
so skipp those ppc32 specfic.

Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
 arch/powerpc/platforms/85xx/smp.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c
index c7febd5..d3ec57c 100644
--- a/arch/powerpc/platforms/85xx/smp.c
+++ b/arch/powerpc/platforms/85xx/smp.c
@@ -257,6 +257,7 @@ struct smp_ops_t smp_85xx_ops = {
 };
 
 #ifdef CONFIG_KEXEC
+#ifdef CONFIG_PPC32
 atomic_t kexec_down_cpus = ATOMIC_INIT(0);
 
 void mpc85xx_smp_kexec_cpu_down(int crash_shutdown, int secondary)
@@ -275,6 +276,13 @@ static void mpc85xx_smp_kexec_down(void *arg)
 	if (ppc_md.kexec_cpu_down)
 		ppc_md.kexec_cpu_down(0,1);
 }
+#else
+void mpc85xx_smp_kexec_cpu_down(int crash_shutdown, int secondary)
+{
+	local_irq_disable();
+	mpic_teardown_this_cpu(secondary);
+}
+#endif
 
 static void map_and_flush(unsigned long paddr)
 {
@@ -326,11 +334,14 @@ static void mpc85xx_smp_flush_dcache_kexec(struct kimage *image)
 
 static void mpc85xx_smp_machine_kexec(struct kimage *image)
 {
+#ifdef CONFIG_PPC32
 	int timeout = INT_MAX;
 	int i, num_cpus = num_present_cpus();
+#endif
 
 	mpc85xx_smp_flush_dcache_kexec(image);
 
+#ifdef CONFIG_PPC32
 	if (image->type == KEXEC_TYPE_DEFAULT)
 		smp_call_function(mpc85xx_smp_kexec_down, NULL, 0);
 
@@ -348,6 +359,7 @@ static void mpc85xx_smp_machine_kexec(struct kimage *image)
 		if ( i == smp_processor_id() ) continue;
 		mpic_reset_core(i);
 	}
+#endif
 
 	default_machine_kexec(image);
 }
-- 
1.7.9.5

^ permalink raw reply related

* [PATCH 6/6] book3e/kexec/kdump: redefine VIRT_PHYS_OFFSET
From: Tiejun Chen @ 2012-11-15  9:39 UTC (permalink / raw)
  To: benh; +Cc: linuxppc-dev, linux-kernel
In-Reply-To: <1352972396-13489-1-git-send-email-tiejun.chen@windriver.com>

Book3e is always aligned 1GB to create TLB so we should
use (KERNELBASE - MEMORY_START) as VIRT_PHYS_OFFSET to
get __pa/__va properly while boot kdump.

Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
 arch/powerpc/include/asm/page.h |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
index f072e97..2cba08a 100644
--- a/arch/powerpc/include/asm/page.h
+++ b/arch/powerpc/include/asm/page.h
@@ -112,6 +112,8 @@ extern long long virt_phys_offset;
 /* See Description below for VIRT_PHYS_OFFSET */
 #ifdef CONFIG_RELOCATABLE_PPC32
 #define VIRT_PHYS_OFFSET virt_phys_offset
+#elif defined(CONFIG_PPC_BOOK3E_64)
+#define VIRT_PHYS_OFFSET (KERNELBASE - MEMORY_START)
 #else
 #define VIRT_PHYS_OFFSET (KERNELBASE - PHYSICAL_START)
 #endif
-- 
1.7.9.5

^ permalink raw reply related

* Re: [patch 4/4] mm, oom: remove statically defined arch functions of same name
From: Kamezawa Hiroyuki @ 2012-11-15  8:48 UTC (permalink / raw)
  To: David Rientjes
  Cc: Paul Mundt, linux-sh, Greg Kroah-Hartman, x86, linux-kernel,
	Michal Hocko, linux-mm, Ingo Molnar, Paul Mackerras,
	KOSAKI Motohiro, H. Peter Anvin, Andrew Morton, linuxppc-dev,
	Thomas Gleixner
In-Reply-To: <alpine.DEB.2.00.1211140113480.32125@chino.kir.corp.google.com>

(2012/11/14 18:15), David Rientjes wrote:
> out_of_memory() is a globally defined function to call the oom killer.
> x86, sh, and powerpc all use a function of the same name within file
> scope in their respective fault.c unnecessarily.  Inline the functions
> into the pagefault handlers to clean the code up.
>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Paul Mundt <lethal@linux-sh.org>
> Signed-off-by: David Rientjes <rientjes@google.com>

I think this is good.

Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

^ permalink raw reply

* Re: [PATCH] cpuidle: Measure idle state durations with monotonic clock
From: Daniel Lezcano @ 2012-11-15 10:52 UTC (permalink / raw)
  To: Julius Werner
  Cc: Kevin Hilman, Deepthi Dharwar, Trinabh Gupta, Lists Linaro-dev,
	linux-pm, linux-kernel, Rafael J. Wysocki, linux-acpi,
	Srivatsa S. Bhat, Andrew Morton, linuxppc-dev, Sameer Nanda,
	Len Brown
In-Reply-To: <1352944590-8776-1-git-send-email-jwerner@chromium.org>

On 11/15/2012 02:56 AM, Julius Werner wrote:
> Many cpuidle drivers measure their time spent in an idle state by
> reading the wallclock time before and after idling and calculating the
> difference. This leads to erroneous results when the wallclock time gets
> updated by another processor in the meantime, adding that clock
> adjustment to the idle state's time counter.
> 
> If the clock adjustment was negative, the result is even worse due to an
> erroneous cast from int to unsigned long long of the last_residency
> variable. The negative 32 bit integer will zero-extend and result in a
> forward time jump of roughly four billion milliseconds or 1.3 hours on
> the idle state residency counter.
> 
> This patch changes all affected cpuidle drivers to either use the
> monotonic clock for their measurements or make use of the generic time
> measurement wrapper in cpuidle.c, which was already working correctly.
> Some superfluous CLIs/STIs in the ACPI code are removed (interrupts
> should always already be disabled before entering the idle function, and
> not get reenabled until the generic wrapper has performed its second
> measurement). It also removes the erroneous cast, making sure that
> negative residency values are applied correctly even though they should
> not appear anymore.
> 
> Signed-off-by: Julius Werner <jwerner@chromium.org>

Tested on a Core 2 Duo (processor_idle driver).

Tested-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>



-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

^ permalink raw reply

* Re: Deprecating reserve-map in favor of properties
From: Grant Likely @ 2012-11-15 12:11 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: devicetree-discuss, linuxppc-dev, Cyril Chemparathy
In-Reply-To: <1351798896.12271.241.camel@pasglop>

On Fri, 02 Nov 2012 06:41:36 +1100, Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
> On Thu, 2012-11-01 at 15:21 +0100, Grant Likely wrote:
> 
> > I think this makes sense. Cyril and I are just talking about what he
> > needs. He wants to set aside per-device reserved regions and would
> > like to have the ability to reference a particular reserved region
> > from a device node, probably with a phandle. I like the look of the
> > reserved-{ranges,names} properties in the root, but I see the argument
> > that it isn't very flexible. What about something like this:
> > 
> > reserved-memory {
> >         reserved@0x10000000 { reg = <0x10000000 0x08000000>; };
> >         reserved@0x01000000 { reg = <0x01000000 0x00200000>; };
> > }
> > 
> > The node name of the child nodes could be different of course.
> 
> I'm not that fan of different nodes, especially nodes with nodes in them
> for that purpose. Seems overkill.
> 
> Can't he reference reserved entries as <phandle>,<index> pairs ?

That would work too.

> I still think a single property would do fine. We could mandate those be
> in the respective "memory" nodes but them you have potentially to break
> up reserved regions if you have multiple memory nodes (NUMA) etc...

It makes sense to me for the reserved ranges to be kept with the memory
nodes themselves, even if it does mean that sometimes they need to be
split up for multiple memory nodes.

> > Right, that would work also even though I prefer phandle references in
> > general. Is it conceivable that additional data would want to be
> > attached to a particular reserved region?
> 
> phandle references and names aren't exclusive from each other. The name
> remains a useful diagnostic tool.
> 
> If you want additional data, make a node somewhere to represent that
> region along with its additional data, that node can have a reference to
> the reserved map entry.
> 
> I'd keep the reserve map itself simple. It's a "synthetic property" a
> bit like the memory nodes. IE. The "memory" nodes don't have to
> represent physical memory controllers & DIMMs. They represent the
> overall view of memory by the CPUs. You can represent the MCs and the
> DIMMs elsewhere in the SoC node.

okay.

g.

^ permalink raw reply

* FW: e1000e hardware bring-up problem
From: Sumesh Kaana @ 2012-11-15 13:28 UTC (permalink / raw)
  To: linuxppc-dev@lists.ozlabs.org
In-Reply-To: <OF69EAD6CA.250DF267-ON65257AB7.0045C620-65257AB7.0045EB55@in.ibm.com>

[-- Attachment #1: Type: text/plain, Size: 59296 bytes --]

Hello All,
I am trying to bring-up a network interface on my card. The card which is based on PowerPC 440, running linux, has an Intel NIC plugged onto PCIe link.
When I do a ping test , following happens:
1.  The card (10.10.10.111) and a PC (10.10.10.2) are connected to a switch. PC has Wireshark installed.2.  Pinging from the card to PC - issued ping 10.10.10.2 -c 2 (used a startup script. No serial console)3.  PC receives an ARP REQ prior to ICMP from the CARD.       <--------- observed on Wireshark installed on the PC.4.  PC responses with an ARP RESP .5.  the NIC(intel GigE)  on the card receives ARP RESP and the NIC counters are incremented. But, Neither DD (Descriptor Done) nor EOP (End Of Packet) bits are set on the descriptor.
When the NIC receives a frame, NIC is supposed to issue the DMA operation to store the received frame to the host buffer and upon successful DMA of the frame to host memory, the NIC is supposed to increment RDH (Receive Descriptor Head) pointer and set DD and EOP bits on the status field of descriptor and has to notify the processor. But that did not happen. I'm fine receiving other interrupts.
Can anyone point out why this can happen? Any pointers would be great help.
Following is the bootlog of the machine: (Userspace prints are observed using ttyprintk method, the lines starting with '[U]' prefixed are from userland)

<6>[    0.000000] Using XXX machine description<5>[    0.000000] Linux version 3.3.0-rc2 (root@sumeshkn) (gcc version 4.4.6 20110731 (gcc 7.2-4) (GCC) ) #119 PREEMPT Wed Nov 14 06:09:47 EST 2012<7>[    0.000000] Found initrd at 0xc0991000:0xc0faeac2<7>[    0.000000] Top of RAM: 0x60000000, Total RAM: 0x10000000<7>[    0.000000] Memory hole size: 1280MB<7>[    0.000000] Zone PFN ranges:<7>[    0.000000]   DMA      0x00050000 -> 0x00060000<7>[    0.000000]   Normal   empty<7>[    0.000000]   HighMem  empty<7>[    0.000000] Movable zone start PFN for each node<7>[    0.000000] Early memory PFN ranges<7>[    0.000000]     0: 0x00050000 -> 0x00060000<7>[    0.000000] On node 0 totalpages: 65536<7>[    0.000000] free_area_init_node: node 0, pgdat c0322ce8, node_mem_map c035b000<7>[    0.000000]   DMA zone: 512 pages used for memmap<7>[    0.000000]   DMA zone: 0 pages reserved<7>[    0.000000]   DMA zone: 65024 pages, LIFO batch:15<6>[    0.000000] MMU: Allocated 1088 bytes of context maps for 255 contexts<7>[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768<7>[    0.000000] pcpu-alloc: [0] 0 <7>[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024<5>[    0.000000] Kernel command line: root=/dev/ram init=_no_such_application rw<6>[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)<6>[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)<6>[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)<7>[    0.000000] High memory: 0k<6>[    0.000000] Memory: 250108k/262144k available (3076k kernel code, 12036k reserved, 168k data, 182k bss, 176k init)<6>[    0.000000] Kernel virtual memory layout:<6>[    0.000000]   * 0xfffcf000..0xfffff000  : fixmap<6>[    0.000000]   * 0xffc00000..0xffe00000  : highmem PTEs<6>[    0.000000]   * 0xffa00000..0xffc00000  : consistent mem<6>[    0.000000]   * 0xffa00000..0xffa00000  : early ioremap<6>[    0.000000]   * 0xd1000000..0xffa00000  : vmalloc & ioremap<6>[    0.000000] NR_IRQS:512<6>[    0.000000] kmemleak: Kernel memory leak detector disabled<7>[    0.000000] [XXXEIC] Found XXX pseudo intc driver<7>[    0.000000] [XXXEIC] No 'interrupts' Found, breaking<7>[    0.000000] [XXXEIC] Alloc and init an irq_host structure: irq_alloc_host():Successfull<7>[    0.000000] [XXXEIC] calling irq_set_default_host<7>[    0.000000] time_init: decrementer frequency = 166.666667 MHz<7>[    0.000000] time_init: processor frequency   = 666.666664 MHz<6>[    0.000000] clocksource: timebase mult[6000000] shift[24] registered<7>[    0.000000] clockevent: decrementer mult[2aaaaaac] shift[32] cpu[0]<6>[    0.000000] Console: colour dummy device 80x25<6>[    0.000000] console [tty0] enabled<4>[    0.000000] kmemleak: Early log buffer exceeded (908), please increase DEBUG_KMEMLEAK_EARLY_LOG_SIZE<6>[    0.000059] pid_max: default: 32768 minimum: 301<6>[    0.000079] Mount-cache hash table entries: 512<6>[    0.000288] NET: Registered protocol family 16<7>[    0.000468] XXX_PCIE:ibm,plb-pciex-440xxx matching : xxx_device_mbase : 0xd1000000<1>[    0.000469] XXX_PCIE: inside Core init <3>[    0.000473] XXX_PCIE: ppc4xx_pciex_check_core_init : Done <3>[    0.000474] XXX_PCIE: device_type : pci <3>[    0.000476] XXX_PCIE: dcr_resource_start : Done <3>[    0.000477] XXX_PCIE: dcr_map : Done <1>[    0.000478] XXX_PCIE: inside init port hw <3>[    0.104007] XXX_PCIE: ppc4xx_pciex_port_init : Done <7>[    0.104009] XXX_PCIE: bus-range : 0 - 1XXX_PCIE: pci_bios allocation success <1>[    0.104011] XXX_PCIE: ppc4xx_pciex_port_setup_hose - port->endpoint: 0  <1>[    0.104013] XXX_PCIE: hose->ops: Done  <6>[    0.104014] PCI host bridge /pciex (primary) ranges:<6>[    0.104015] ranges property :not null<6>[    0.104016]  MEM 0x0000000080000000..0x000000009fffffff -> 0x0000000080000000 <1>[    0.104018] XXX_PCIE: pci_process_bridge_OF_ranges : Done  <1>[    0.104019] XXX_PCIE: ppc4xx_parse_dma_ranges : Done  <6>[    0.104021] PCIE0: successfully set as root-complex<3>[    0.104022] XXX_PCIE: ppc4xx_pciex_port_setup_hose : Done <3>[    0.104024] XXX_PCIE:  ppc4xx_pci_find_bridges : Done <6>[    0.104064] PCI: Probing PCI hardware<7>[    0.104067] PCI: Scanning PHB /pciex<4>[    0.104068] PCI: I/O resource not set for host bridge /pciex (domain 0)<7>[    0.104069] PCI: PHB IO resource    = 0000000000000000-00000000ffffffff [100]<7>[    0.104070] PCI: PHB MEM resource 0 = 0000000080000000-000000009fffffff [200]<7>[    0.104070] PCI: PHB MEM offset     = 0000000000000000<7>[    0.104071] PCI: PHB IO  offset     = 00000000<6>[    0.104102] PCI host bridge to bus 0000:00<6>[    0.104106] pci_bus 0000:00: root bus resource [io  0x0000-0xffffffff]<6>[    0.104108] pci_bus 0000:00: root bus resource [mem 0x80000000-0x9fffffff]<7>[    0.104109] pci-common-    probe mode: 0<7>[    0.104109] pci_bus 0000:00: scanning bus<7>[    0.104113] pci 0000:00:04.0: [8086:105e] type 0 class 0x000200<7>[    0.104115] pci 0000:00:04.0: calling fixup_xxx+0x0/0x1f8<7>[    0.104115] XXX_FIXUP_EARLY: vendor : 8086, device: 105e<7>[    0.104116] <6>XXX_FIXUP : val1 at 0x0 is 8086<7>[    0.104116] <6>XXX_FIXUP : 0x2 is 105e<7>[    0.104117] <6>XXX_FIXUP : 0x4 is 0<7>[    0.104117] <6>XXX_FIXUP : 0x6 is 10<7>[    0.104117] <6>XXX_FIXUP : base 0 is 80000000<7>[    0.104118] <6>XXX_FIXUP : base 1 80020000<7>[    0.104118] PCI-common: enabling interrupts in thumper<7>[    0.104119] XXX_FIXUP_EARLY: PCI_INTERRUPT_LINE:  c<7>[    0.104119] XXX_FIXUP_EARLY: mfmsr : 29000<7>[    0.104120] pci 0000:00:04.0: calling quirk_mmio_always_on+0x0/0x24<7>[    0.104121] pci 0000:00:04.0: reg 10: [mem 0x80000000-0x8001ffff]<7>[    0.104122] pci 0000:00:04.0: reg 14: [mem 0x80020000-0x8003ffff]<7>[    0.104123] pci 0000:00:04.0: reg 18: [io  0x82040000-0x8204001f]<7>[    0.104124] pci 0000:00:04.0: reg 30: [mem 0x83000000-0x8301ffff pref]<7>[    0.104125] pci 0000:00:04.0: calling pcibios_fixup_resources+0x0/0x270<6>[    0.104125] XXX_PCIE: pcibios_fixup_resources : start <6>[    0.104127] XXX_PCIE: pcibios_fixup_resources : this is bridge : DEVICE_CNT_RSRC: 11<6>[    0.104128] XXX_PCIE: pcibios_fixup_resources : res->start: 0x80000000, pci_reassign: 0, probe_only:4<7>[    0.104131] PCI:0000:00:04.0 Resource 0 0000000080000000-000000008001ffff [40200] fixup...<7>[    0.104131] PCI:0000:00:04.0            0000000080000000-000000008001ffff<6>[    0.104132] XXX_PCIE: pcibios_fixup_resources : res->start: 0x80020000, pci_reassign: 0, probe_only:4<7>[    0.104134] PCI:0000:00:04.0 Resource 1 0000000080020000-000000008003ffff [40200] fixup...<7>[    0.104134] PCI:0000:00:04.0            0000000080020000-000000008003ffff<6>[    0.104135] XXX_PCIE: pcibios_fixup_resources : res->start: 0x82040000, pci_reassign: 0, probe_only:4<7>[    0.104137] PCI:0000:00:04.0 Resource 2 0000000082040000-000000008204001f [40101] fixup...<7>[    0.104138] PCI:0000:00:04.0            0000000082040000-000000008204001f<6>[    0.104138] XXX_PCIE: pcibios_fixup_resources : res->start: 0x83000000, pci_reassign: 0, probe_only:4<7>[    0.104140] PCI:0000:00:04.0 Resource 6 0000000083000000-000000008301ffff [4e200] fixup...<7>[    0.104141] PCI:0000:00:04.0            0000000083000000-000000008301ffff<7>[    0.104142] pci 0000:00:04.0: calling fixup_ppc4xx_pci_bridge+0x0/0x14c<6>[    0.104142] XXX_PCIE: fixup_ppc4xx_pci_bridge <7>[    0.104144] pci 0000:00:04.0: calling quirk_resource_alignment+0x0/0x1d4<7>[    0.104146] pci 0000:00:04.0: PME# supported from D0 D3hot<7>[    0.104147] pci 0000:00:04.0: PME# disabled<7>[    0.104149] pci_bus 0000:00: pci_scan_slot: Done<7>[    0.104149] pci_bus 0000:00: fixups for bus<7>[    0.104150] PCI: Fixup bus devices 0 (PHB)<7>[    0.104150] PCI: Try to map irq for 0000:00:04.0...<7>[    0.104151]  No map ! Using line 12 (pin 1) from PCI config<7>[    0.104153] [XXXEIC] xxx_intc_map called: irq: 12<7>[    0.104154] [XXXEIC] set flow type 8<7>[    0.104155]  Mapped to linux irq 16<7>[    0.104155] pci 0000:00:04.0: scanning [bus 00-04] behind bridge, pass 0<7>[    0.104156] pci 0000:00:04.0: bus configuration invalid, reconfiguring<7>[    0.104156] pci 0000:00:04.0: scanning [bus 00-00] behind bridge, pass 1<7>[    0.104160] pci_bus 0000:01: scanning bus<7>[    0.104161] pci_bus 0000:01: pci_scan_slot: Done<7>[    0.104161] pci_bus 0000:01: fixups for bus<6>[    0.104162] pci 0000:00:04.0: PCI bridge to [bus 01-ff]<7>[    0.104163] PCI: Fixup bus devices 1 (0000:00:04.0)<7>[    0.104164] pci_bus 0000:01: bus scan returning with max=01<7>[    0.104165] pci_bus 0000:00: bus scan returning with max=01<7>[    0.104165] pci-common-    pcibios_scan_phb : Done<6>[    0.104223] XXX_PCIE: pci_bus_add_devices<7>[    0.104226] PCI: Allocating bus resources for 0000:00...<7>[    0.104227] PCI: PHB (bus 0) bridge rsrc 4: 0000000000000000-00000000ffffffff [0x100], parent c0305df0 (PCI IO)<7>[    0.104228] PCI: PHB (bus 0) bridge rsrc 5: 0000000080000000-000000009fffffff [0x200], parent c0305dc8 (PCI mem)<7>[    0.104229] PCI: Allocating bus resources for 0000:01...<7>[    0.104231] PCI: Allocating 0000:00:04.0: Resource 0: 0000000080000000..000000008001ffff [40200]<7>[    0.104231] PCI: Allocating 0000:00:04.0: Resource 1: 0000000080020000..000000008003ffff [40200]<7>[    0.104232] PCI: Allocating 0000:00:04.0: Resource 2: 0000000082040000..000000008204001f [40101]<7>[    0.104233] PCI: Allocating 0000:00:04.0: Resource 6: 0000000083000000..000000008301ffff [4e200]<6>[    0.104233] XXX_PCIE: pcibios_resource_survey():Done<6>[    0.105446] bio: create slab <bio-0> at 0<6>[    0.105549] vgaarb: loaded<6>[    0.105719] Switching to clocksource timebase<6>[    0.107988] NET: Registered protocol family 2<6>[    0.108411] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)<6>[    0.108475] TCP established hash table entries: 8192 (order: 4, 65536 bytes)<6>[    0.108507] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)<6>[    0.108522] TCP: Hash tables configured (established 8192 bind 8192)<6>[    0.108525] TCP reno registered<6>[    0.108527] UDP hash table entries: 256 (order: 0, 4096 bytes)<6>[    0.108530] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)<6>[    0.108557] NET: Registered protocol family 1<7>[    0.108561] PCI_QUIRKS : pci_apply_final_quirks<7>[    0.108564] pci 0000:00:04.0: calling quirk_e100_interrupt+0x0/0x1b0<7>[    0.108565] pci 0000:00:04.0: calling quirk_cardbus_legacy+0x0/0x50<7>[    0.108566] pci 0000:00:04.0: calling quirk_usb_early_handoff+0x0/0x718<7>[    0.108567] PCI: CLS 128 bytes, default 32<6>[    0.108670] Trying to unpack rootfs image as initramfs...<6>[    0.109118] rootfs image is not initramfs (no cpio magic); looks like an initrd<6>[    0.111639] Freeing initrd memory: 6264k freed<6>[    0.111883] msgmni has been set to 500<6>[    0.111955] io scheduler noop registered<6>[    0.111958] io scheduler deadline registered<6>[    0.111964] io scheduler cfq registered (default)<6>[    0.128011] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled<6>[    0.129473] brd: module loaded<6>[    0.130417] loop: module loaded<6>[    0.130446] Xilinx SystemACE device driver, major=254<6>[    0.130558] e1000e: Intel(R) PRO/1000 Network Driver - 1.5.1-k<6>[    0.130562] e1000e: Copyright(c) 1999 - 2011 Intel Corporation.<6>[    0.130567] e1000e 0000:00:04.0: Disabling ASPM  L1<6>[    0.130569] e1000e 0000:00:04.0: enabling device (0000 -> 0002)<7>[    0.130571] e1000e 0000:00:04.0: enabling bus mastering<3>[    0.130595] e1000e 0000:00:04.0: (unregistered net_device): Failed to initialize MSI interrupts.  Falling back to legacy interrupts.<6>[    0.313821] e1000e 0000:00:04.0: eth0: (PCI Express:2.5GT/s:Width x4) e4:1f:13:4f:28:d4<6>[    0.313825] e1000e 0000:00:04.0: eth0: Intel(R) PRO/1000 Network Connection<6>[    0.313837] e1000e 0000:00:04.0: eth0: MAC: 0, PHY: 4, PBA No: E34292-004<6>[    0.313949] mousedev: PS/2 mouse device common for all mice<6>[    0.314063] TCP cubic registered<6>[    0.314066] NET: Registered protocol family 17<6>[    0.314074] NET: Registered protocol family 15<5>[    0.314140] RAMDISK: gzip image found at block 0<4>[    0.369460] EXT2-fs (ram0): warning: mounting unchecked fs, running e2fsck is recommended<6>[    0.369472] VFS: Mounted root (ext2 filesystem) on device 1:0.<6>[    0.369569] Freeing unused kernel memory: 176k freed<6>[    0.369573] Executing _no_such_application<4>[    0.369587] Failed to execute _no_such_application.  Attempting defaults...<6>[    0.369588] Executing /sbin/hello_world<6>[    0.369600] /sbin/hello_world --- Failed.<6>[    0.369601] Executing /sbin/init<6>[    0.371822] [U] lspci -vv<6>[    0.372849] [U] 00:04.0 Class 0200: Device 8086:105e (rev 06)<6>[    0.372854] [U] 	Subsystem: Device 1014:0340<6>[    0.372856] [U] 	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<6>[    0.372860] [U] 	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<6>[    0.372862] [U] 	Latency: 0, Cache Line Size: 128 bytes<6>[    0.372864] [U] 	Interrupt: pin A routed to IRQ 16<6>[    0.372866] [U] 	Region 0: Memory at 80000000 (32-bit, non-prefetchable) [size=128K]<6>[    0.372869] [U] 	Region 1: Memory at 80020000 (32-bit, non-prefetchable) [size=128K]<6>[    0.372871] [U] 	Region 2: I/O ports at 82040000 [disabled] [size=32]<6>[    0.372873] [U] 	Expansion ROM at 83000000 [disabled] [size=128K]<6>[    0.372878] [U] 	Capabilities: [c8] Power Management version 2<6>[    0.372881] [U] 		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)<6>[    0.372884] [U] 		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-<6>[    0.372886] [U] 	Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+<6>[    0.372888] [U] 		Address: 0000000000000000  Data: 0000<6>[    0.372891] [U] 	Capabilities: [e0] Express (v1) Endpoint, MSI 00<6>[    0.372893] [U] 		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us<6>[    0.372896] [U] 			ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset-<6>[    0.372898] [U] 		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-<6>[    0.372900] [U] 			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+<6>[    0.372902] [U] 			MaxPayload 128 bytes, MaxReadReq 512 bytes<6>[    0.372904] [U] 		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-<6>[    0.372907] [U] 		LnkCap:	Port #0, Speed 2.5GT/s, Width x4, ASPM L0s, Latency L0 <4us, L1 <64us<6>[    0.372909] [U] 			ClockPM- Surprise- LLActRep- BwNot-<6>[    0.372911] [U] 		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-<6>[    0.372913] [U] 			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-<6>[    0.372916] [U] 		LnkSta:	Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-<6>[    0.372920] [U] 	Capabilities: [100 v1] Advanced Error Reporting<6>[    0.372923] [U] 		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<6>[    0.372927] [U] 		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-<6>[    0.372930] [U] 		UESvrt:	DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-<6>[    0.372933] [U] 		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-<6>[    0.372935] [U] 		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-<6>[    0.372937] [U] 		AERCap:	First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-<6>[    0.372940] [U] 	Capabilities: [140 v1] Device Serial Number e4-1f-13-ff-ff-4f-28-d4<6>[    0.372951] [U] <6>[    0.373275] [U] 1.ifconfig eth0 10.10.10.10 netmask 255.0.0.0 up<7>[    0.373613] netdev.c:e1000_open<7>[    0.483627] netdev.c: e1000e_configure<7>[    0.483627] e1000_configure_rx: rdlen: 1000<7>[    0.509726] e1000_alloc_rx_buffers: buffer_info[0]->dma: 5ec97022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2270c95e<7>[    0.509732] e1000_alloc_rx_buffers: buffer_info[1]->dma: 5f2ea822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a82e5f<7>[    0.509734] e1000_alloc_rx_buffers: buffer_info[2]->dma: 5f2ea022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a02e5f<7>[    0.509739] e1000_alloc_rx_buffers: buffer_info[3]->dma: 5f2cf822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f82c5f<7>[    0.509742] e1000_alloc_rx_buffers: buffer_info[4]->dma: 5f2cf022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f02c5f<7>[    0.509747] e1000_alloc_rx_buffers: buffer_info[5]->dma: 5f2d0822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22082d5f<7>[    0.509750] e1000_alloc_rx_buffers: buffer_info[6]->dma: 5f2d0022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22002d5f<7>[    0.509755] e1000_alloc_rx_buffers: buffer_info[7]->dma: 5f2d1822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22182d5f<7>[    0.509757] e1000_alloc_rx_buffers: buffer_info[8]->dma: 5f2d1022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22102d5f<7>[    0.509762] e1000_alloc_rx_buffers: buffer_info[9]->dma: 5f2d2822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22282d5f<7>[    0.509765] e1000_alloc_rx_buffers: buffer_info[10]->dma: 5f2d2022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22202d5f<7>[    0.509770] e1000_alloc_rx_buffers: buffer_info[11]->dma: 5f2d3822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22382d5f<7>[    0.509773] e1000_alloc_rx_buffers: buffer_info[12]->dma: 5f2d3022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22302d5f<7>[    0.509777] e1000_alloc_rx_buffers: buffer_info[13]->dma: 5f2d4822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22482d5f<7>[    0.509780] e1000_alloc_rx_buffers: buffer_info[14]->dma: 5f2d4022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22402d5f<7>[    0.509785] e1000_alloc_rx_buffers: buffer_info[15]->dma: 5f2d5822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22582d5f<7>[    0.509788] e1000_alloc_rx_buffers: buffer_info[16]->dma: 5f2d5022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22502d5f<7>[    0.509792] e1000_alloc_rx_buffers: buffer_info[17]->dma: 5f2d6822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22682d5f<7>[    0.509795] e1000_alloc_rx_buffers: buffer_info[18]->dma: 5f2d6022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22602d5f<7>[    0.509799] e1000_alloc_rx_buffers: buffer_info[19]->dma: 5f2d7822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22782d5f<7>[    0.509804] e1000_alloc_rx_buffers: buffer_info[20]->dma: 5f2d7022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22702d5f<7>[    0.509808] e1000_alloc_rx_buffers: buffer_info[21]->dma: 5f2d9822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22982d5f<7>[    0.509811] e1000_alloc_rx_buffers: buffer_info[22]->dma: 5f2d9022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22902d5f<7>[    0.509816] e1000_alloc_rx_buffers: buffer_info[23]->dma: 5f2da822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a82d5f<7>[    0.509819] e1000_alloc_rx_buffers: buffer_info[24]->dma: 5f2da022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a02d5f<7>[    0.509823] e1000_alloc_rx_buffers: buffer_info[25]->dma: 5f2db822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b82d5f<7>[    0.509826] e1000_alloc_rx_buffers: buffer_info[26]->dma: 5f2db022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b02d5f<7>[    0.509830] e1000_alloc_rx_buffers: buffer_info[27]->dma: 5f2dc822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c82d5f<7>[    0.509833] e1000_alloc_rx_buffers: buffer_info[28]->dma: 5f2dc022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c02d5f<7>[    0.509838] e1000_alloc_rx_buffers: buffer_info[29]->dma: 5f2c1822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22182c5f<7>[    0.509841] e1000_alloc_rx_buffers: buffer_info[30]->dma: 5f2c1022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22102c5f<7>[    0.509845] e1000_alloc_rx_buffers: buffer_info[31]->dma: 5f2c2822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22282c5f<7>[    0.509848] e1000_alloc_rx_buffers: buffer_info[32]->dma: 5f2c2022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22202c5f<7>[    0.509852] e1000_alloc_rx_buffers: buffer_info[33]->dma: 5f2c3822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22382c5f<7>[    0.509855] e1000_alloc_rx_buffers: buffer_info[34]->dma: 5f2c3022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22302c5f<7>[    0.509860] e1000_alloc_rx_buffers: buffer_info[35]->dma: 5f2c4822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22482c5f<7>[    0.509863] e1000_alloc_rx_buffers: buffer_info[36]->dma: 5f2c4022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22402c5f<7>[    0.509868] e1000_alloc_rx_buffers: buffer_info[37]->dma: 5f2c5822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22582c5f<7>[    0.509871] e1000_alloc_rx_buffers: buffer_info[38]->dma: 5f2c5022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22502c5f<7>[    0.509875] e1000_alloc_rx_buffers: buffer_info[39]->dma: 5f2ce822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e82c5f<7>[    0.509879] e1000_alloc_rx_buffers: buffer_info[40]->dma: 5f2ce022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e02c5f<7>[    0.509884] e1000_alloc_rx_buffers: buffer_info[41]->dma: 5f91f822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f8915f<7>[    0.509887] e1000_alloc_rx_buffers: buffer_info[42]->dma: 5f91f022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f0915f<7>[    0.509891] e1000_alloc_rx_buffers: buffer_info[43]->dma: 5f923822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2238925f<7>[    0.509894] e1000_alloc_rx_buffers: buffer_info[44]->dma: 5f923022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2230925f<7>[    0.509898] e1000_alloc_rx_buffers: buffer_info[45]->dma: 5f8ef822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f88e5f<7>[    0.509901] e1000_alloc_rx_buffers: buffer_info[46]->dma: 5f8ef022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f08e5f<7>[    0.509906] e1000_alloc_rx_buffers: buffer_info[47]->dma: 5f89b822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b8895f<7>[    0.509909] e1000_alloc_rx_buffers: buffer_info[48]->dma: 5f89b022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b0895f<7>[    0.509913] e1000_alloc_rx_buffers: buffer_info[49]->dma: 5f8e3822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22388e5f<7>[    0.509916] e1000_alloc_rx_buffers: buffer_info[50]->dma: 5f8e3022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22308e5f<7>[    0.509921] e1000_alloc_rx_buffers: buffer_info[51]->dma: 5f8eb822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b88e5f<7>[    0.509924] e1000_alloc_rx_buffers: buffer_info[52]->dma: 5f8eb022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b08e5f<7>[    0.509928] e1000_alloc_rx_buffers: buffer_info[53]->dma: 5f8e4822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22488e5f<7>[    0.509931] e1000_alloc_rx_buffers: buffer_info[54]->dma: 5f8e4022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22408e5f<7>[    0.509935] e1000_alloc_rx_buffers: buffer_info[55]->dma: 5f851822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2218855f<7>[    0.509938] e1000_alloc_rx_buffers: buffer_info[56]->dma: 5f851022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2210855f<7>[    0.509943] e1000_alloc_rx_buffers: buffer_info[57]->dma: 5f894822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2248895f<7>[    0.509946] e1000_alloc_rx_buffers: buffer_info[58]->dma: 5f894022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2240895f<7>[    0.509950] e1000_alloc_rx_buffers: buffer_info[59]->dma: 5f899822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2298895f<7>[    0.509954] e1000_alloc_rx_buffers: buffer_info[60]->dma: 5f899022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2290895f<7>[    0.509959] e1000_alloc_rx_buffers: buffer_info[61]->dma: 5f893822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2238895f<7>[    0.509962] e1000_alloc_rx_buffers: buffer_info[62]->dma: 5f893022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2230895f<7>[    0.509967] e1000_alloc_rx_buffers: buffer_info[63]->dma: 5f9f1822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22189f5f<7>[    0.509969] e1000_alloc_rx_buffers: buffer_info[64]->dma: 5f9f1022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22109f5f<7>[    0.509974] e1000_alloc_rx_buffers: buffer_info[65]->dma: 5e3dc822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c83d5e<7>[    0.509977] e1000_alloc_rx_buffers: buffer_info[66]->dma: 5e3dc022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c03d5e<7>[    0.509983] e1000_alloc_rx_buffers: buffer_info[67]->dma: 5f84a822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a8845f<7>[    0.509986] e1000_alloc_rx_buffers: buffer_info[68]->dma: 5f84a022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a0845f<7>[    0.509990] e1000_alloc_rx_buffers: buffer_info[69]->dma: 5ec4e822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e8c45e<7>[    0.509993] e1000_alloc_rx_buffers: buffer_info[70]->dma: 5ec4e022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e0c45e<7>[    0.509998] e1000_alloc_rx_buffers: buffer_info[71]->dma: 5ec4f822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f8c45e<7>[    0.510001] e1000_alloc_rx_buffers: buffer_info[72]->dma: 5ec4f022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f0c45e<7>[    0.510005] e1000_alloc_rx_buffers: buffer_info[73]->dma: 5f9f8822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22889f5f<7>[    0.510008] e1000_alloc_rx_buffers: buffer_info[74]->dma: 5f9f8022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22809f5f<7>[    0.510013] e1000_alloc_rx_buffers: buffer_info[75]->dma: 5f9f9822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22989f5f<7>[    0.510016] e1000_alloc_rx_buffers: buffer_info[76]->dma: 5f9f9022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22909f5f<7>[    0.510020] e1000_alloc_rx_buffers: buffer_info[77]->dma: 5f9a0822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22089a5f<7>[    0.510023] e1000_alloc_rx_buffers: buffer_info[78]->dma: 5f9a0022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22009a5f<7>[    0.510028] e1000_alloc_rx_buffers: buffer_info[79]->dma: 5f9a1822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22189a5f<7>[    0.510032] e1000_alloc_rx_buffers: buffer_info[80]->dma: 5f9a1022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22109a5f<7>[    0.510036] e1000_alloc_rx_buffers: buffer_info[81]->dma: 5f83f822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f8835f<7>[    0.510039] e1000_alloc_rx_buffers: buffer_info[82]->dma: 5f83f022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f0835f<7>[    0.510044] e1000_alloc_rx_buffers: buffer_info[83]->dma: 5f3fe822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e83f5f<7>[    0.510047] e1000_alloc_rx_buffers: buffer_info[84]->dma: 5f3fe022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e03f5f<7>[    0.510051] e1000_alloc_rx_buffers: buffer_info[85]->dma: 5f3ff822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f83f5f<7>[    0.510054] e1000_alloc_rx_buffers: buffer_info[86]->dma: 5f3ff022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f03f5f<7>[    0.510058] e1000_alloc_rx_buffers: buffer_info[87]->dma: 5ec36822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2268c35e<7>[    0.510061] e1000_alloc_rx_buffers: buffer_info[88]->dma: 5ec36022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2260c35e<7>[    0.510066] e1000_alloc_rx_buffers: buffer_info[89]->dma: 5ec37822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2278c35e<7>[    0.510069] e1000_alloc_rx_buffers: buffer_info[90]->dma: 5ec37022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2270c35e<7>[    0.510073] e1000_alloc_rx_buffers: buffer_info[91]->dma: 5f3c4822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22483c5f<7>[    0.510076] e1000_alloc_rx_buffers: buffer_info[92]->dma: 5f3c4022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22403c5f<7>[    0.510081] e1000_alloc_rx_buffers: buffer_info[93]->dma: 5f3c5822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22583c5f<7>[    0.510084] e1000_alloc_rx_buffers: buffer_info[94]->dma: 5f3c5022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22503c5f<7>[    0.510088] e1000_alloc_rx_buffers: buffer_info[95]->dma: 5ec04822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2248c05e<7>[    0.510091] e1000_alloc_rx_buffers: buffer_info[96]->dma: 5ec04022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2240c05e<7>[    0.510096] e1000_alloc_rx_buffers: buffer_info[97]->dma: 5ec05822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2258c05e<7>[    0.510099] e1000_alloc_rx_buffers: buffer_info[98]->dma: 5ec05022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2250c05e<7>[    0.510103] e1000_alloc_rx_buffers: buffer_info[99]->dma: 5ec16822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2268c15e<7>[    0.510108] e1000_alloc_rx_buffers: buffer_info[100]->dma: 5ec16022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2260c15e<7>[    0.510112] e1000_alloc_rx_buffers: buffer_info[101]->dma: 5ec66822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2268c65e<7>[    0.510115] e1000_alloc_rx_buffers: buffer_info[102]->dma: 5ec66022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2260c65e<7>[    0.510120] e1000_alloc_rx_buffers: buffer_info[103]->dma: 5ec67822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2278c65e<7>[    0.510122] e1000_alloc_rx_buffers: buffer_info[104]->dma: 5ec67022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2270c65e<7>[    0.510127] e1000_alloc_rx_buffers: buffer_info[105]->dma: 5f3f2822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22283f5f<7>[    0.510130] e1000_alloc_rx_buffers: buffer_info[106]->dma: 5f3f2022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22203f5f<7>[    0.510134] e1000_alloc_rx_buffers: buffer_info[107]->dma: 5f3f3822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22383f5f<7>[    0.510137] e1000_alloc_rx_buffers: buffer_info[108]->dma: 5f3f3022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22303f5f<7>[    0.510142] e1000_alloc_rx_buffers: buffer_info[109]->dma: 5eca2822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2228ca5e<7>[    0.510144] e1000_alloc_rx_buffers: buffer_info[110]->dma: 5eca2022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2220ca5e<7>[    0.510149] e1000_alloc_rx_buffers: buffer_info[111]->dma: 5eca3822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2238ca5e<7>[    0.510152] e1000_alloc_rx_buffers: buffer_info[112]->dma: 5eca3022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2230ca5e<7>[    0.510156] e1000_alloc_rx_buffers: buffer_info[113]->dma: 5f35c822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c8355f<7>[    0.510159] e1000_alloc_rx_buffers: buffer_info[114]->dma: 5f35c022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c0355f<7>[    0.510164] e1000_alloc_rx_buffers: buffer_info[115]->dma: 5f35d822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d8355f<7>[    0.510167] e1000_alloc_rx_buffers: buffer_info[116]->dma: 5f35d022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d0355f<7>[    0.510171] e1000_alloc_rx_buffers: buffer_info[117]->dma: 5f37e822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e8375f<7>[    0.510174] e1000_alloc_rx_buffers: buffer_info[118]->dma: 5f37e022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e0375f<7>[    0.510179] e1000_alloc_rx_buffers: buffer_info[119]->dma: 5f37f822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f8375f<7>[    0.510183] e1000_alloc_rx_buffers: buffer_info[120]->dma: 5f37f022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f0375f<7>[    0.510187] e1000_alloc_rx_buffers: buffer_info[121]->dma: 5f31f822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f8315f<7>[    0.510190] e1000_alloc_rx_buffers: buffer_info[122]->dma: 5f31f022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f0315f<7>[    0.510195] e1000_alloc_rx_buffers: buffer_info[123]->dma: 5f9fc822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c89f5f<7>[    0.510198] e1000_alloc_rx_buffers: buffer_info[124]->dma: 5f9fc022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c09f5f<7>[    0.510202] e1000_alloc_rx_buffers: buffer_info[125]->dma: 5f9fd822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d89f5f<7>[    0.510205] e1000_alloc_rx_buffers: buffer_info[126]->dma: 5f9fd022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d09f5f<7>[    0.510210] e1000_alloc_rx_buffers: buffer_info[127]->dma: 5f3ac822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c83a5f<7>[    0.510213] e1000_alloc_rx_buffers: buffer_info[128]->dma: 5f3ac022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c03a5f<7>[    0.510217] e1000_alloc_rx_buffers: buffer_info[129]->dma: 5f3ad822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d83a5f<7>[    0.510220] e1000_alloc_rx_buffers: buffer_info[130]->dma: 5f3ad022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d03a5f<7>[    0.510225] e1000_alloc_rx_buffers: buffer_info[131]->dma: 5ec9e822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e8c95e<7>[    0.510228] e1000_alloc_rx_buffers: buffer_info[132]->dma: 5ec9e022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e0c95e<7>[    0.510232] e1000_alloc_rx_buffers: buffer_info[133]->dma: 5ec9f822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f8c95e<7>[    0.510235] e1000_alloc_rx_buffers: buffer_info[134]->dma: 5ec9f022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f0c95e<7>[    0.510240] e1000_alloc_rx_buffers: buffer_info[135]->dma: 5ecce822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e8cc5e<7>[    0.510243] e1000_alloc_rx_buffers: buffer_info[136]->dma: 5ecce022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e0cc5e<7>[    0.510247] e1000_alloc_rx_buffers: buffer_info[137]->dma: 5eccf822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f8cc5e<7>[    0.510250] e1000_alloc_rx_buffers: buffer_info[138]->dma: 5eccf022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f0cc5e<7>[    0.510255] e1000_alloc_rx_buffers: buffer_info[139]->dma: 5d3de822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e83d5d<7>[    0.510259] e1000_alloc_rx_buffers: buffer_info[140]->dma: 5d3de022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e03d5d<7>[    0.510263] e1000_alloc_rx_buffers: buffer_info[141]->dma: 5f9d4822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22489d5f<7>[    0.510266] e1000_alloc_rx_buffers: buffer_info[142]->dma: 5f9d4022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22409d5f<7>[    0.510271] e1000_alloc_rx_buffers: buffer_info[143]->dma: 5f9d5822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22589d5f<7>[    0.510274] e1000_alloc_rx_buffers: buffer_info[144]->dma: 5f9d5022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22509d5f<7>[    0.510278] e1000_alloc_rx_buffers: buffer_info[145]->dma: 5f9b4822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22489b5f<7>[    0.510281] e1000_alloc_rx_buffers: buffer_info[146]->dma: 5f9b4022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22409b5f<7>[    0.510286] e1000_alloc_rx_buffers: buffer_info[147]->dma: 5f9b5822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22589b5f<7>[    0.510288] e1000_alloc_rx_buffers: buffer_info[148]->dma: 5f9b5022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22509b5f<7>[    0.510293] e1000_alloc_rx_buffers: buffer_info[149]->dma: 5f91c822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c8915f<7>[    0.510296] e1000_alloc_rx_buffers: buffer_info[150]->dma: 5f91c022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c0915f<7>[    0.510300] e1000_alloc_rx_buffers: buffer_info[151]->dma: 5f91d822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d8915f<7>[    0.510303] e1000_alloc_rx_buffers: buffer_info[152]->dma: 5f91d022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d0915f<7>[    0.510308] e1000_alloc_rx_buffers: buffer_info[153]->dma: 5f2cc822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c82c5f<7>[    0.510311] e1000_alloc_rx_buffers: buffer_info[154]->dma: 5f2cc022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c02c5f<7>[    0.510315] e1000_alloc_rx_buffers: buffer_info[155]->dma: 5f2cd822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d82c5f<7>[    0.510318] e1000_alloc_rx_buffers: buffer_info[156]->dma: 5f2cd022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d02c5f<7>[    0.510323] e1000_alloc_rx_buffers: buffer_info[157]->dma: 5f2c8822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22882c5f<7>[    0.510326] e1000_alloc_rx_buffers: buffer_info[158]->dma: 5f2c8022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22802c5f<7>[    0.510330] e1000_alloc_rx_buffers: buffer_info[159]->dma: 5f2c9822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22982c5f<7>[    0.510334] e1000_alloc_rx_buffers: buffer_info[160]->dma: 5f2c9022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22902c5f<7>[    0.510339] e1000_alloc_rx_buffers: buffer_info[161]->dma: 5f2cb822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b82c5f<7>[    0.510342] e1000_alloc_rx_buffers: buffer_info[162]->dma: 5f2cb022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b02c5f<7>[    0.510346] e1000_alloc_rx_buffers: buffer_info[163]->dma: 5f840822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2208845f<7>[    0.510349] e1000_alloc_rx_buffers: buffer_info[164]->dma: 5f840022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2200845f<7>[    0.510354] e1000_alloc_rx_buffers: buffer_info[165]->dma: 5f841822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2218845f<7>[    0.510357] e1000_alloc_rx_buffers: buffer_info[166]->dma: 5f841022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2210845f<7>[    0.510361] e1000_alloc_rx_buffers: buffer_info[167]->dma: 5f842822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2228845f<7>[    0.510364] e1000_alloc_rx_buffers: buffer_info[168]->dma: 5f842022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2220845f<7>[    0.510368] e1000_alloc_rx_buffers: buffer_info[169]->dma: 5f843822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2238845f<7>[    0.510371] e1000_alloc_rx_buffers: buffer_info[170]->dma: 5f843022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2230845f<7>[    0.510376] e1000_alloc_rx_buffers: buffer_info[171]->dma: 5f854822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2248855f<7>[    0.510379] e1000_alloc_rx_buffers: buffer_info[172]->dma: 5f854022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2240855f<7>[    0.510383] e1000_alloc_rx_buffers: buffer_info[173]->dma: 5f855822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2258855f<7>[    0.510386] e1000_alloc_rx_buffers: buffer_info[174]->dma: 5f855022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2250855f<7>[    0.510391] e1000_alloc_rx_buffers: buffer_info[175]->dma: 5f856822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2268855f<7>[    0.510394] e1000_alloc_rx_buffers: buffer_info[176]->dma: 5f856022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2260855f<7>[    0.510398] e1000_alloc_rx_buffers: buffer_info[177]->dma: 5f857822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2278855f<7>[    0.510401] e1000_alloc_rx_buffers: buffer_info[178]->dma: 5f857022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2270855f<7>[    0.510406] e1000_alloc_rx_buffers: buffer_info[179]->dma: 5f918822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2288915f<7>[    0.510410] e1000_alloc_rx_buffers: buffer_info[180]->dma: 5f918022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2280915f<7>[    0.510414] e1000_alloc_rx_buffers: buffer_info[181]->dma: 5f91a822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a8915f<7>[    0.510417] e1000_alloc_rx_buffers: buffer_info[182]->dma: 5f91a022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a0915f<7>[    0.510422] e1000_alloc_rx_buffers: buffer_info[183]->dma: 5f91b822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b8915f<7>[    0.510424] e1000_alloc_rx_buffers: buffer_info[184]->dma: 5f91b022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b0915f<7>[    0.510431] e1000_alloc_rx_buffers: buffer_info[185]->dma: 5f958822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2288955f<7>[    0.510434] e1000_alloc_rx_buffers: buffer_info[186]->dma: 5f958022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2280955f<7>[    0.510438] e1000_alloc_rx_buffers: buffer_info[187]->dma: 5f95a822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a8955f<7>[    0.510441] e1000_alloc_rx_buffers: buffer_info[188]->dma: 5f95a022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a0955f<7>[    0.510445] e1000_alloc_rx_buffers: buffer_info[189]->dma: 5f95b822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b8955f<7>[    0.510448] e1000_alloc_rx_buffers: buffer_info[190]->dma: 5f95b022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b0955f<7>[    0.510453] e1000_alloc_rx_buffers: buffer_info[191]->dma: 5f9b0822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22089b5f<7>[    0.510456] e1000_alloc_rx_buffers: buffer_info[192]->dma: 5f9b0022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22009b5f<7>[    0.510460] e1000_alloc_rx_buffers: buffer_info[193]->dma: 5f9b1822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22189b5f<7>[    0.510463] e1000_alloc_rx_buffers: buffer_info[194]->dma: 5f9b1022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22109b5f<7>[    0.510468] e1000_alloc_rx_buffers: buffer_info[195]->dma: 5f9b2822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22289b5f<7>[    0.510471] e1000_alloc_rx_buffers: buffer_info[196]->dma: 5f9b2022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22209b5f<7>[    0.510476] e1000_alloc_rx_buffers: buffer_info[197]->dma: 5f9b3822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22389b5f<7>[    0.510479] e1000_alloc_rx_buffers: buffer_info[198]->dma: 5f9b3022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22309b5f<7>[    0.510483] e1000_alloc_rx_buffers: buffer_info[199]->dma: 5f96c822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c8965f<7>[    0.510487] e1000_alloc_rx_buffers: buffer_info[200]->dma: 5f96c022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c0965f<7>[    0.510492] e1000_alloc_rx_buffers: buffer_info[201]->dma: 5f96e822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e8965f<7>[    0.510495] e1000_alloc_rx_buffers: buffer_info[202]->dma: 5f96e022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e0965f<7>[    0.510499] e1000_alloc_rx_buffers: buffer_info[203]->dma: 5f96f822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f8965f<7>[    0.510502] e1000_alloc_rx_buffers: buffer_info[204]->dma: 5f96f022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f0965f<7>[    0.510506] e1000_alloc_rx_buffers: buffer_info[205]->dma: 5f92c822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c8925f<7>[    0.510509] e1000_alloc_rx_buffers: buffer_info[206]->dma: 5f92c022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22c0925f<7>[    0.510514] e1000_alloc_rx_buffers: buffer_info[207]->dma: 5f92d822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d8925f<7>[    0.510516] e1000_alloc_rx_buffers: buffer_info[208]->dma: 5f92d022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22d0925f<7>[    0.510521] e1000_alloc_rx_buffers: buffer_info[209]->dma: 5f92e822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e8925f<7>[    0.510524] e1000_alloc_rx_buffers: buffer_info[210]->dma: 5f92e022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22e0925f<7>[    0.510529] e1000_alloc_rx_buffers: buffer_info[211]->dma: 5f92f822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f8925f<7>[    0.510531] e1000_alloc_rx_buffers: buffer_info[212]->dma: 5f92f022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22f0925f<7>[    0.510536] e1000_alloc_rx_buffers: buffer_info[213]->dma: 5f9e4822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22489e5f<7>[    0.510539] e1000_alloc_rx_buffers: buffer_info[214]->dma: 5f9e4022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22409e5f<7>[    0.510543] e1000_alloc_rx_buffers: buffer_info[215]->dma: 5f9e5822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22589e5f<7>[    0.510546] e1000_alloc_rx_buffers: buffer_info[216]->dma: 5f9e5022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22509e5f<7>[    0.510551] e1000_alloc_rx_buffers: buffer_info[217]->dma: 5f9e6822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22689e5f<7>[    0.510554] e1000_alloc_rx_buffers: buffer_info[218]->dma: 5f9e6022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22609e5f<7>[    0.510558] e1000_alloc_rx_buffers: buffer_info[219]->dma: 5f9e7822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22789e5f<7>[    0.510563] e1000_alloc_rx_buffers: buffer_info[220]->dma: 5f9e7022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22709e5f<7>[    0.510567] e1000_alloc_rx_buffers: buffer_info[221]->dma: 5f9d1822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22189d5f<7>[    0.510570] e1000_alloc_rx_buffers: buffer_info[222]->dma: 5f9d1022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22109d5f<7>[    0.510575] e1000_alloc_rx_buffers: buffer_info[223]->dma: 5f9d2822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22289d5f<7>[    0.510578] e1000_alloc_rx_buffers: buffer_info[224]->dma: 5f9d2022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22209d5f<7>[    0.510582] e1000_alloc_rx_buffers: buffer_info[225]->dma: 5f9d3822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22389d5f<7>[    0.510585] e1000_alloc_rx_buffers: buffer_info[226]->dma: 5f9d3022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22309d5f<7>[    0.510589] e1000_alloc_rx_buffers: buffer_info[227]->dma: 5f9f4822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22489f5f<7>[    0.510592] e1000_alloc_rx_buffers: buffer_info[228]->dma: 5f9f4022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22409f5f<7>[    0.510597] e1000_alloc_rx_buffers: buffer_info[229]->dma: 5f9f5822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22589f5f<7>[    0.510599] e1000_alloc_rx_buffers: buffer_info[230]->dma: 5f9f5022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22509f5f<7>[    0.510604] e1000_alloc_rx_buffers: buffer_info[231]->dma: 5f9f6822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22689f5f<7>[    0.510607] e1000_alloc_rx_buffers: buffer_info[232]->dma: 5f9f6022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22609f5f<7>[    0.510611] e1000_alloc_rx_buffers: buffer_info[233]->dma: 5f9f7822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22789f5f<7>[    0.510614] e1000_alloc_rx_buffers: buffer_info[234]->dma: 5f9f7022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22709f5f<7>[    0.510619] e1000_alloc_rx_buffers: buffer_info[235]->dma: 5e3d8822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22883d5e<7>[    0.510622] e1000_alloc_rx_buffers: buffer_info[236]->dma: 5e3d8022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22803d5e<7>[    0.510627] e1000_alloc_rx_buffers: buffer_info[237]->dma: 5e3d9822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22983d5e<7>[    0.510630] e1000_alloc_rx_buffers: buffer_info[238]->dma: 5e3d9022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22903d5e<7>[    0.510634] e1000_alloc_rx_buffers: buffer_info[239]->dma: 5e3da822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a83d5e<7>[    0.510638] e1000_alloc_rx_buffers: buffer_info[240]->dma: 5e3da022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a03d5e<7>[    0.510642] e1000_alloc_rx_buffers: buffer_info[241]->dma: 5ecb8822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2288cb5e<7>[    0.510645] e1000_alloc_rx_buffers: buffer_info[242]->dma: 5ecb8022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2280cb5e<7>[    0.510650] e1000_alloc_rx_buffers: buffer_info[243]->dma: 5ecb9822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2298cb5e<7>[    0.510653] e1000_alloc_rx_buffers: buffer_info[244]->dma: 5ecb9022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2290cb5e<7>[    0.510657] e1000_alloc_rx_buffers: buffer_info[245]->dma: 5ecba822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a8cb5e<7>[    0.510660] e1000_alloc_rx_buffers: buffer_info[246]->dma: 5ecba022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a0cb5e<7>[    0.510665] e1000_alloc_rx_buffers: buffer_info[247]->dma: 5ecbb822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b8cb5e<7>[    0.510667] e1000_alloc_rx_buffers: buffer_info[248]->dma: 5ecbb022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22b0cb5e<7>[    0.510672] e1000_alloc_rx_buffers: buffer_info[249]->dma: 5ecc8822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2288cc5e<7>[    0.510675] e1000_alloc_rx_buffers: buffer_info[250]->dma: 5ecc8022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2280cc5e<7>[    0.510680] e1000_alloc_rx_buffers: buffer_info[251]->dma: 5ecc9822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2298cc5e<7>[    0.510683] e1000_alloc_rx_buffers: buffer_info[252]->dma: 5ecc9022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 2290cc5e<7>[    0.510687] e1000_alloc_rx_buffers: buffer_info[253]->dma: 5ecca822,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a8cc5e<7>[    0.510690] e1000_alloc_rx_buffers: buffer_info[254]->dma: 5ecca022,rx_buffer_len:5f2, rx_desc->read.buffer_addr; 22a0cc5e<7>[    0.510697] e1000_intr: ICR: 80000004<7>[    0.510700] e1000_clean_rx_irq:staterr: 0, skb->len: 0, skb->data_len: 0,ring.rx_desc[0], rx_desc.buf_addr:0, buf_info.dma: 2270c95e, buf_info.len: 0<7>[    0.510701] 2270c95e       0       0       0<6>[    0.511312] [U] ethtool -d eth0<6>[    0.512139] [U] MAC Registers<6>[    0.512143] [U] -------------<6>[    0.512196] [U] 0x00000: CTRL (Device control register)  0x400C0241<6>[    0.512200] [U]       Endian mode (buffers):             little<6>[    0.512202] [U]       Link reset:                        normal<6>[    0.512204] [U]       Set link up:                       1<6>[    0.512206] [U]       Invert Loss-Of-Signal:             no<6>[    0.512208] [U]       Receive flow control:              disabled<6>[    0.512210] [U]       Transmit flow control:             disabled<6>[    0.512212] [U]       VLAN mode:                         enabled<6>[    0.512214] [U]       Auto speed detect:                 disabled<6>[    0.512216] [U]       Speed select:                      1000Mb/s<6>[    0.512218] [U]       Force speed:                       no<6>[    0.512219] [U]       Force duplex:                      no<6>[    0.512221] [U] 0x00008: STATUS (Device status register) 0x00080341<6>[    0.512223] [U]       Duplex:                            full<6>[    0.512225] [U]       Link up:                           no link config<6>[    0.512227] [U]       TBI mode:                          disabled<6>[    0.512229] [U]       Link speed:                        100Mb/s<6>[    0.512231] [U]       Bus type:                          PCI Express<6>[    0.512233] [U]       Port number:                       0<6>[    0.512234] [U] 0x00100: RCTL (Receive control register) 0x04008002<6>[    0.512236] [U]       Receiver:                          enabled<6>[    0.512238] [U]       Store bad packets:                 disabled<6>[    0.512240] [U]       Unicast promiscuous:               disabled<6>[    0.512242] [U]       Multicast promiscuous:             disabled<6>[    0.512244] [U]       Long packet:                       disabled<6>[    0.512246] [U]       Descriptor minimum threshold size: 1/2<6>[    0.512247] [U]       Broadcast accept mode:             accept<6>[    0.512249] [U]       VLAN filter:                       disabled<6>[    0.512251] [U]       Canonical form indicator:          disabled<6>[    0.512253] [U]       Discard pause frames:              filtered<6>[    0.512255] [U]       Pass MAC control frames:           don't pass<6>[    0.512256] [U]       Receive buffer size:               2048<6>[    0.512258] [U] 0x02808: RDLEN (Receive desc length)     0x00001000<6>[    0.512260] [U] 0x02810: RDH   (Receive desc head)       0x00000000<6>[    0.512262] [U] 0x02818: RDT   (Receive desc tail)       0x000000F0<6>[    0.512264] [U] 0x02820: RDTR  (Receive delay timer)     0x00000020<6>[    0.512265] [U] 0x00400: TCTL (Transmit ctrl register)   0x3103F0F8<6>[    0.512267] [U]       Transmitter:                       disabled<6>[    0.512269] [U]       Pad short packets:                 enabled<6>[    0.512271] [U]       Software XOFF Transmission:        disabled<6>[    0.512273] [U]       Re-transmit on late collision:     enabled<6>[    0.512274] [U] 0x03808: TDLEN (Transmit desc length)    0x00001000<6>[    0.512276] [U] 0x03810: TDH   (Transmit desc head)      0x00000000<6>[    0.512278] [U] 0x03818: TDT   (Transmit desc tail)      0x00000000<6>[    0.512280] [U] 0x03820: TIDV  (Transmit delay timer)    0x00000008<6>[    0.512281] [U] PHY type:                                unknown<6>[    0.512641] [U] 3.ping 10.10.10.2 -c 3<6>[    0.513100] [U] PING 10.10.10.2 (10.10.10.2): 56 data bytes<7>[    0.513845] e1000_intr: ICR: 80000010<7>[    0.513847] e1000_clean_rx_irq:staterr: 0, skb->len: 0, skb->data_len: 0,ring.rx_desc[0], rx_desc.buf_addr:0, buf_info.dma: 2270c95e, buf_info.len: 0<7>[    0.513848] 2270c95e       0       0       0<7>[    0.561398] e1000_intr: ICR: 80000004<7>[    0.561400] e1000_clean_rx_irq:staterr: 0, skb->len: 0, skb->data_len: 0,ring.rx_desc[0], rx_desc.buf_addr:0, buf_info.dma: 2270c95e, buf_info.len: 0<7>[    0.561400] 2270c95e       0       0       0<6>[    0.562524] e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx<6>[    0.562528] e1000e 0000:00:04.0: eth0: 10/100 speed: disabling TSO<7>[    0.562536] e1000_intr: ICR: 80000012<7>[    0.562537] e1000_clean_rx_irq:staterr: 0, skb->len: 0, skb->data_len: 0,ring.rx_desc[0], rx_desc.buf_addr:0, buf_info.dma: 2270c95e, buf_info.len: 0<7>[    0.562538] 2270c95e       0       0       0<7>[    2.826136] e1000_intr: ICR: 80000011<7>[    2.826138] e1000_clean_rx_irq:staterr: 0, skb->len: 0, skb->data_len: 0,ring.rx_desc[0], rx_desc.buf_addr:0, buf_info.dma: 2270c95e, buf_info.len: 0<7>[    2.826139] 2270c95e       0       0       0<7>[    4.821733] e1000_intr: ICR: 80000011<7>[    4.821735] e1000_clean_rx_irq:staterr: 0, skb->len: 0, skb->data_len: 0,ring.rx_desc[0], rx_desc.buf_addr:0, buf_info.dma: 2270c95e, buf_info.len: 0<7>[    4.821736] 2270c95e       0       0       0<7>[    6.821727] e1000_intr: ICR: 80000010<7>[    6.821728] e1000_clean_rx_irq:staterr: 0, skb->len: 0, skb->data_len: 0,ring.rx_desc[0], rx_desc.buf_addr:0, buf_info.dma: 2270c95e, buf_info.len: 0<7>[    6.821729] 2270c95e       0       0       0<7>[    8.821732] e1000_intr: ICR: 80000010<7>[    8.821734] e1000_clean_rx_irq:staterr: 0, skb->len: 0, skb->data_len: 0,ring.rx_desc[0], rx_desc.buf_addr:0, buf_info.dma: 2270c95e, buf_info.len: 0<7>[    8.821735] 2270c95e       0       0       0<7>[   10.821727] e1000_intr: ICR: 80000010<7>[   10.821728] e1000_clean_rx_irq:staterr: 0, skb->len: 0, skb->data_len: 0,ring.rx_desc[0], rx_desc.buf_addr:0, buf_info.dma: 2270c95e, buf_info.len: 0<7>[   10.821729] 2270c95e       0       0       0<6>[   12.529730] [U] <6>[   12.529734] [U] --- 10.10.10.2 ping statistics ---<6>[   12.529737] [U] 3 packets transmitted, 0 packets received, 100% packet loss<6>[   12.530068] [U] cat /proc/interrupts<6>[   12.530432] [U]            CPU0       <6>[   12.530435] [U]  16:         18  XXX INTC Level     eth0<6>[   12.530436] [U] LOC:       3132   Local timer interrupts<6>[   12.530438] [U] SPU:          0   Spurious interrupts<6>[   12.530439] [U] CNT:          0   Performance monitoring interrupts<6>[   12.530440] [U] MCE:          0   Machine check exceptions<6>[   12.530770] [U] cat /proc/meminfo | grep em<6>[   12.531658] [U] executing /home/stat.sh<6>[   12.532611] [U] 1) stat.sh: ifconfig eth0<6>[   12.533383] [U] eth0      Link encap:Ethernet  HWaddr E4:1F:13:4F:28:D4  <6>[   12.533400] [U]           inet addr:10.10.10.111  Bcast:10.255.255.255  Mask:255.0.0.0<6>[   12.533428] [U]           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<6>[   12.533439] [U]           RX packets:2 errors:0 dropped:0 overruns:0 frame:0<6>[   12.533447] [U]           TX packets:2 errors:0 dropped:0 overruns:0 carrier:0<6>[   12.533453] [U]           collisions:0 txqueuelen:1000 <6>[   12.533465] [U]           RX bytes:128 (128.0 B)  TX bytes:128 (128.0 B)<6>[   12.533472] [U]           Interrupt:16 Memory:80000000-80020000 <6>[   12.533474] [U] <6>[   12.533832] [U] 1) stat.sh: ethtool -S eth0 | grep x_pack<6>[   12.534042] [U] NIC statistics:<6>[   12.534049] [U]      rx_packets: 2<6>[   12.534050] [U]      tx_packets: 2<6>[   12.534051] [U]      rx_bytes: 128<6>[   12.534052] [U]      tx_bytes: 128<6>[   12.534054] [U]      rx_broadcast: 0<6>[   12.534055] [U]      tx_broadcast: 2<6>[   12.534056] [U]      rx_multicast: 0<6>[   12.534057] [U]      tx_multicast: 0<6>[   12.534059] [U]      rx_errors: 0<6>[   12.534060] [U]      tx_errors: 0<6>[   12.534061] [U]      tx_dropped: 0<6>[   12.534062] [U]      multicast: 0<6>[   12.534064] [U]      collisions: 0<6>[   12.534065] [U]      rx_length_errors: 0<6>[   12.534066] [U]      rx_over_errors: 0<6>[   12.534067] [U]      rx_crc_errors: 0<6>[   12.534069] [U]      rx_frame_errors: 0<6>[   12.534070] [U]      rx_no_buffer_count: 0<6>[   12.534071] [U]      rx_missed_errors: 0<6>[   12.534073] [U]      tx_aborted_errors: 0<6>[   12.534074] [U]      tx_carrier_errors: 0<6>[   12.534075] [U]      tx_fifo_errors: 0<6>[   12.534077] [U]      tx_heartbeat_errors: 0<6>[   12.534078] [U]      tx_window_errors: 0<6>[   12.534079] [U]      tx_abort_late_coll: 0<6>[   12.534081] [U]      tx_deferred_ok: 0<6>[   12.534082] [U]      tx_single_coll_ok: 0<6>[   12.534083] [U]      tx_multi_coll_ok: 0<6>[   12.534085] [U]      tx_timeout_count: 0<6>[   12.534086] [U]      tx_restart_queue: 0<6>[   12.534087] [U]      rx_long_length_errors: 0<6>[   12.534089] [U]      rx_short_length_errors: 0<6>[   12.534090] [U]      rx_align_errors: 0<6>[   12.534092] [U]      tx_tcp_seg_good: 0<6>[   12.534093] [U]      tx_tcp_seg_failed: 0<6>[   12.534094] [U]      rx_flow_control_xon: 0<6>[   12.534096] [U]      rx_flow_control_xoff: 0<6>[   12.534097] [U]      tx_flow_control_xon: 0<6>[   12.534098] [U]      tx_flow_control_xoff: 0<6>[   12.534100] [U]      rx_long_byte_count: 128<6>[   12.534101] [U]      rx_csum_offload_good: 0<6>[   12.534103] [U]      rx_csum_offload_errors: 0<6>[   12.534104] [U]      rx_header_split: 0<6>[   12.534105] [U]      alloc_rx_buff_failed: 0<6>[   12.534107] [U]      tx_smbus: 0<6>[   12.534108] [U]      rx_smbus: 0<6>[   12.534109] [U]      dropped_smbus: 0<6>[   12.534110] [U]      rx_dma_failed: 0<6>[   12.534112] [U]      tx_dma_failed: 0


Regards,Sumesh. 		 	   		  

[-- Attachment #2: Type: text/html, Size: 111621 bytes --]

^ permalink raw reply

* Re: [PATCH] bindings: i2c: use consistent naming for i2c binding descriptions
From: Grant Likely @ 2012-11-15 15:58 UTC (permalink / raw)
  To: Wolfram Sang, linux-i2c
  Cc: devicetree-discuss, Wolfram Sang, linux-kernel, linuxppc-dev,
	Rob Herring, linux-arm-kernel
In-Reply-To: <1352827003-24287-1-git-send-email-wolfram@the-dreams.de>

On Tue, 13 Nov 2012 18:16:43 +0100, Wolfram Sang <wolfram@the-dreams.de> wrote:
> Filenames of devictree binding documentation seems to be arbitrary and
> for me it is unneeded hazzle to find the corresponding documentation for
> a specific driver.
> 
> Naming the description the same as the driver is a lot easier and makes
> sense to me since the driver defines the binding it understands.
> 
> Also, remove a reference in one source to the binding documentation, since path
> information easily gets stale.
> 
> Signed-off-by: Wolfram Sang <wolfram@the-dreams.de>
> Cc: Rob Herring <robherring2@gmail.com>
> Cc: Grant Likely <grant.likely@secretlab.ca>

Applied, thanks.

g.

^ permalink raw reply


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