LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* RE: [PATCH 3/4][v2] fsl_rio: move machine_check handler into machine_check_e500 & machine_check_e500mc
From: Xie Shaohui-B21989 @ 2010-11-11 10:19 UTC (permalink / raw)
  To: Bounine, Alexandre, akpm
  Cc: Zang Roy-R61911, Gala Kumar-B11780, linuxppc-dev, linux-kernel,
	Li Yang-R58472
In-Reply-To: <0CE8B6BE3C4AD74AB97D9D29BD24E55201538B08@CORPEXCH1.na.ads.idt.com>




Best Regards,=20
Shaohui Xie=20


> -----Original Message-----
> From: Bounine, Alexandre [mailto:Alexandre.Bounine@idt.com]
> Sent: Thursday, November 11, 2010 6:55 AM
> To: Xie Shaohui-B21989; akpm@linux-foundation.org
> Cc: linux-kernel@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Li
Yang-
> R58472; Gala Kumar-B11780; Zang Roy-R61911
> Subject: RE: [PATCH 3/4][v2] fsl_rio: move machine_check handler into
> machine_check_e500 & machine_check_e500mc
>=20
> Shaohui Xie <b21989@freescale.com> wrote:
> >
> > diff --git a/arch/powerpc/kernel/traps.c
b/arch/powerpc/kernel/traps.c
> > index a45a63c..2a5fb9d 100644
> > --- a/arch/powerpc/kernel/traps.c
> > +++ b/arch/powerpc/kernel/traps.c
> > @@ -55,6 +55,7 @@
> >  #endif
> >  #include <asm/kexec.h>
> >  #include <asm/ppc-opcode.h>
> > +#include <linux/rio.h>
> >
> >  #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC)  int
> > (*__debugger)(struct pt_regs *regs) __read_mostly; @@ -500,6 +501,13
> > @@ int machine_check_e500mc(struct pt_regs *regs)
> >  		       reason & MCSR_MEA ? "Effective" : "Physical",
> addr);
> >  	}
> >
> > +	if (reason & MCSR_BUS_RBERR) {
> > +		printk("Bus - Read Data Bus Error\n"); #ifdef
CONFIG_RAPIDIO
> > +		recoverable =3D fsl_rio_mcheck_exception(regs); #endif
> > +	}
> > +
> >  	mtspr(SPRN_MCSR, mcsr);
> >  	return mfspr(SPRN_MCSR) =3D=3D 0 && recoverable;  } @@ -527,8
+535,12
> @@
> > int machine_check_e500(struct pt_regs *regs)
> >  		printk("Bus - Write Address Error\n");
> >  	if (reason & MCSR_BUS_IBERR)
> >  		printk("Bus - Instruction Data Error\n");
> > -	if (reason & MCSR_BUS_RBERR)
> > +	if (reason & MCSR_BUS_RBERR) {
> >  		printk("Bus - Read Data Bus Error\n");
> > +#ifdef CONFIG_RAPIDIO
> > +		fsl_rio_mcheck_exception(regs);
> > +#endif
> > +	}
> >  	if (reason & MCSR_BUS_WBERR)
> >  		printk("Bus - Read Data Bus Error\n");
> >  	if (reason & MCSR_BUS_IPERR)
>=20
> This implementation breaks an intended use of
> fsl_rio_mcheck_exception():
> 1. for e500 it does not check the return value of the rio handler and
> crashes the system even after RIO Mchk was serviced. Looks like e500mc
> version handles it better but I have no HW to test it.
> 2. the RIO Mchk is expected to be handled quietly but here it has many
> printk's. May be it is better to call the fsl_rio_mcheck_exception()
> handler in very beginning and simply exit if it returns 1.
>=20
> Alex.
[Xie Shaohui-B21989] Hi Alex, seems your suggestion is some kind of
conflict with Kumar, you can have a look at=20
http://patchwork.ozlabs.org/patch/67774/

Thanks
Shaohui

>=20
>=20

^ permalink raw reply

* [PATCH v2] fsldma: add support to 36-bit physical address
From: Li Yang @ 2010-11-11 12:16 UTC (permalink / raw)
  To: dan.j.williams; +Cc: linuxppc-dev, linux-kernel

Expand the dma_mask of fsldma device to 36-bit, indicating that the
DMA engine can deal with 36-bit physical address and does not need
the SWIOTLB to create bounce buffer for it when doing dma_map_*().

Signed-off-by: Li Yang <leoli@freescale.com>
---
Add more detailed commit message

 drivers/dma/fsldma.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
index cea08be..8c79b37 100644
--- a/drivers/dma/fsldma.c
+++ b/drivers/dma/fsldma.c
@@ -1,7 +1,7 @@
 /*
  * Freescale MPC85xx, MPC83xx DMA Engine support
  *
- * Copyright (C) 2007 Freescale Semiconductor, Inc. All rights reserved.
+ * Copyright (C) 2007-2010 Freescale Semiconductor, Inc. All rights reserved.
  *
  * Author:
  *   Zhang Wei <wei.zhang@freescale.com>, Jul 2007
@@ -1338,6 +1338,8 @@ static int __devinit fsldma_of_probe(struct platform_device *op,
 	fdev->common.device_control = fsl_dma_device_control;
 	fdev->common.dev = &op->dev;
 
+	dma_set_mask(&(op->dev), DMA_BIT_MASK(36));
+
 	dev_set_drvdata(&op->dev, fdev);
 
 	/*
-- 
1.6.6-rc1.GIT

^ permalink raw reply related

* Re: [PATCH] Add Freescale CodeWarrior debug support for kernel
From: Kumar Gala @ 2010-11-11 11:51 UTC (permalink / raw)
  To: Roy Zang; +Cc: linuxppc-dev, adrian.bogdan
In-Reply-To: <1288255803-10948-1-git-send-email-tie-fei.zang@freescale.com>


On Oct 28, 2010, at 3:50 AM, Roy Zang wrote:

> CodeWarrior is popular embedded tools to support debugging Powerpc.
> This patch adds Freescale CodeWarrior debug support for Linux kernel =
on
> 85xx/QorIQ platform.
>=20
> Signed-off-by: Bogdan Adrin <drian.bogdan@freescale.com>
> Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
> ---
> arch/powerpc/Kconfig.debug                    |    8 ++++++++
> arch/powerpc/Makefile                         |    5 +++++
> arch/powerpc/include/asm/reg_booke.h          |    4 ++++
> arch/powerpc/kernel/fsl_booke_entry_mapping.S |    3 +++
> arch/powerpc/kernel/head_fsl_booke.S          |   11 +++++++++--
> arch/powerpc/kernel/idle.c                    |    5 ++++-
> 6 files changed, 33 insertions(+), 3 deletions(-)
>=20
> diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
> index 2d38a50..eedd2ac 100644
> --- a/arch/powerpc/Kconfig.debug
> +++ b/arch/powerpc/Kconfig.debug
> @@ -153,6 +153,14 @@ config BDI_SWITCH
> 	  Unless you are intending to debug the kernel with one of these
> 	  machines, say N here.
>=20
> +config DEBUG_CODEWARRIOR
> +	bool "Include CodeWarrior kernel debugging"
> +	depends on DEBUG_KERNEL && PPC32
> +	help
> +	  Say Y here to include CodeWarrior kernel debugging option
> +	  Unless you are intending to debug the kernel with one of these
> +	  machines, say N here.
> +
> config BOOTX_TEXT
> 	bool "Support for early boot text console (BootX or OpenFirmware =
only)"
> 	depends on PPC_OF && PPC_BOOK3S
> diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
> index b7212b6..d3050e6 100644
> --- a/arch/powerpc/Makefile
> +++ b/arch/powerpc/Makefile
> @@ -121,6 +121,11 @@ KBUILD_CFLAGS	+=3D $(call =
cc-option,-fno-dwarf2-cfi-asm)
> # often slow when they are implemented at all
> KBUILD_CFLAGS		+=3D -mno-string
>=20
> +ifeq ($(CONFIG_DEBUG_CODEWARRIOR),y)
> +CFLAGS +=3D -g2 -gdwarf-2
> +AFLAGS_KERNEL +=3D -Wa,-gdwarf2
> +endif
> +
> ifeq ($(CONFIG_6xx),y)
> KBUILD_CFLAGS		+=3D -mcpu=3Dpowerpc
> endif
> diff --git a/arch/powerpc/include/asm/reg_booke.h =
b/arch/powerpc/include/asm/reg_booke.h
> index 667a498..ac65fcd 100644
> --- a/arch/powerpc/include/asm/reg_booke.h
> +++ b/arch/powerpc/include/asm/reg_booke.h
> @@ -35,7 +35,11 @@
> #define MSR_KERNEL	(MSR_ME|MSR_RI|MSR_IR|MSR_DR|MSR_CE)
> #define MSR_USER	(MSR_KERNEL|MSR_PR|MSR_EE)
> #else
> +#if defined(CONFIG_DEBUG_CODEWARRIOR)
> +#define MSR_KERNEL	(MSR_ME|MSR_RI|MSR_CE|MSR_DE)
> +#else
> #define MSR_KERNEL	(MSR_ME|MSR_RI|MSR_CE)
> +#endif
> #define MSR_USER	(MSR_KERNEL|MSR_PR|MSR_EE)
> #endif
>=20
> diff --git a/arch/powerpc/kernel/fsl_booke_entry_mapping.S =
b/arch/powerpc/kernel/fsl_booke_entry_mapping.S
> index a92c79b..9102aa7 100644
> --- a/arch/powerpc/kernel/fsl_booke_entry_mapping.S
> +++ b/arch/powerpc/kernel/fsl_booke_entry_mapping.S
> @@ -116,6 +116,9 @@ skpinv:	addi	r6,r6,1				=
/* Increment */
>=20
> 	xori	r6,r4,1
> 	slwi	r6,r6,5		/* setup new context with other address =
space */
> +#if defined(CONFIG_DEBUG_CODEWARRIOR)
> +	ori	r6, r6, 0x200	/* enable DE bit for MSR */

Can we use MSR_DE@l instead of 0x200

> +#endif
> 	bl	1f		/* Find our address */
> 1:	mflr	r9
> 	rlwimi	r7,r9,0,20,31
> diff --git a/arch/powerpc/kernel/head_fsl_booke.S =
b/arch/powerpc/kernel/head_fsl_booke.S
> index 529b817..9962d09 100644
> --- a/arch/powerpc/kernel/head_fsl_booke.S
> +++ b/arch/powerpc/kernel/head_fsl_booke.S
> @@ -21,7 +21,7 @@
>  *		debbie_chu@mvista.com
>  *    Copyright 2002-2004 MontaVista Software, Inc.
>  *	PowerPC 44x support, Matt Porter <mporter@kernel.crashing.org>
> - *    Copyright 2004 Freescale Semiconductor, Inc
> + *    Copyright 2004,2010 Freescale Semiconductor, Inc
>  *	PowerPC e500 modifications, Kumar Gala =
<galak@kernel.crashing.org>
>  *
>  * This program is free software; you can redistribute  it and/or =
modify it
> @@ -135,7 +135,7 @@ _ENTRY(__early_start)
> 	mtspr	SPRN_HID0, r2
> #endif
>=20
> -#if !defined(CONFIG_BDI_SWITCH)
> +#if !defined(CONFIG_BDI_SWITCH) && !defined(CONFIG_DEBUG_CODEWARRIOR)
> 	/*
> 	 * The Abatron BDI JTAG debugger does not tolerate others
> 	 * mucking with the debug registers.
> @@ -197,6 +197,13 @@ _ENTRY(__early_start)
> /*
>  * Decide what sort of machine this is and initialize the MMU.
>  */
> +#if defined(CONFIG_DEBUG_CODEWARRIOR)
> +	lis	r10, 0x1008 /* clear the V bit from the L2MMU_CAM8 =
register */

why do we need this code?  It seems pretty fragile if its assuming =
something about TLB entry #8

> +	mtspr	SPRN_MAS0, r10
> +	lis	r10, 0x0
> +	mtspr	SPRN_MAS1, r10
> +	tlbwe
> +#endif
> 	mr	r3,r31
> 	mr	r4,r30
> 	mr	r5,r29
> diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c
> index 39a2baa..83fb019 100644
> --- a/arch/powerpc/kernel/idle.c
> +++ b/arch/powerpc/kernel/idle.c
> @@ -73,8 +73,11 @@ void cpu_idle(void)
> 				stop_critical_timings();
>=20
> 				/* check again after disabling irqs */
> -				if (!need_resched() && =
!cpu_should_die())
> +				if (!need_resched() && =
!cpu_should_die()) {
> +#if !defined(CONFIG_DEBUG_CODEWARRIOR)
> 					ppc_md.power_save();
> +#endif
> +				}
>=20
> 				start_critical_timings();
>=20
> --=20
> 1.5.6.5
>=20

^ permalink raw reply

* Re: [PATCH v2] fsldma: add support to 36-bit physical address
From: Kumar Gala @ 2010-11-11 11:56 UTC (permalink / raw)
  To: Li Yang; +Cc: dan.j.williams, linuxppc-dev, linux-kernel
In-Reply-To: <1289477789-10651-1-git-send-email-leoli@freescale.com>


On Nov 11, 2010, at 6:16 AM, Li Yang wrote:

> Expand the dma_mask of fsldma device to 36-bit, indicating that the
> DMA engine can deal with 36-bit physical address and does not need
> the SWIOTLB to create bounce buffer for it when doing dma_map_*().
>=20
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> Add more detailed commit message
>=20
> drivers/dma/fsldma.c |    4 +++-
> 1 files changed, 3 insertions(+), 1 deletions(-)
>=20
> diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
> index cea08be..8c79b37 100644
> --- a/drivers/dma/fsldma.c
> +++ b/drivers/dma/fsldma.c
> @@ -1,7 +1,7 @@
> /*
>  * Freescale MPC85xx, MPC83xx DMA Engine support
>  *
> - * Copyright (C) 2007 Freescale Semiconductor, Inc. All rights =
reserved.
> + * Copyright (C) 2007-2010 Freescale Semiconductor, Inc. All rights =
reserved.
>  *
>  * Author:
>  *   Zhang Wei <wei.zhang@freescale.com>, Jul 2007
> @@ -1338,6 +1338,8 @@ static int __devinit fsldma_of_probe(struct =
platform_device *op,
> 	fdev->common.device_control =3D fsl_dma_device_control;
> 	fdev->common.dev =3D &op->dev;
>=20
> +	dma_set_mask(&(op->dev), DMA_BIT_MASK(36));
> +

Is there any reason we shouldn't set DMA_BIT_MASK(64) since the DMA =
block programming model allows the address to be 64-bits?

> 	dev_set_drvdata(&op->dev, fdev);
>=20
> 	/*
> --=20
> 1.6.6-rc1.GIT
>=20

^ permalink raw reply

* Re: [PATCH 3/3] powerpc/85xx: Update of_platform_bus_probe list to include PCI controller
From: Kumar Gala @ 2010-11-11 11:59 UTC (permalink / raw)
  To: Lan Chunhe; +Cc: Kai.Jiang, akpm, linuxppc-dev, dougthompson
In-Reply-To: <1288934910-3202-1-git-send-email-b25806@freescale.com>


On Nov 5, 2010, at 12:28 AM, Lan Chunhe wrote:

> We need to get the pci controller created as an of platform device to
> allow the EDAC driver to bind to it on P4080DS.
>=20
> Signed-off-by: Kai.Jiang <Kai.Jiang@freescale.com>
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> Signed-off-by: Lan Chunhe <b25806@freescale.com>
> ---
> arch/powerpc/platforms/85xx/corenet_ds.c |    3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>=20
> diff --git a/arch/powerpc/platforms/85xx/corenet_ds.c =
b/arch/powerpc/platforms/85xx/corenet_ds.c
> index 2ab338c..bf9b9e5 100644
> --- a/arch/powerpc/platforms/85xx/corenet_ds.c
> +++ b/arch/powerpc/platforms/85xx/corenet_ds.c
> @@ -116,6 +116,9 @@ static const struct of_device_id of_device_ids[] =
__devinitconst =3D {
> 	{
> 		.compatible	=3D "fsl,rapidio-delta",
> 	},
> +	{
> +		.compatible	=3D "fsl,p4080-pcie",
> +	},
> 	{}
> };
>=20

We've talked about doing an explicit add of a new node instead of doing =
this everywhere.  I'd like to see that done instead.

- k
> --=20
> 1.5.4.5
>=20

^ permalink raw reply

* Re: [PATCH 3/3] powerpc/85xx: Update of_platform_bus_probe list to include PCI controller
From: Kumar Gala @ 2010-11-11 12:01 UTC (permalink / raw)
  To: Kumar Gala; +Cc: Lan Chunhe, linuxppc-dev, akpm, Kai.Jiang, dougthompson
In-Reply-To: <90A4C584-325F-4E5D-8D3C-1B5797F4CAC0@kernel.crashing.org>


On Nov 11, 2010, at 5:59 AM, Kumar Gala wrote:

>=20
> On Nov 5, 2010, at 12:28 AM, Lan Chunhe wrote:
>=20
>> We need to get the pci controller created as an of platform device to
>> allow the EDAC driver to bind to it on P4080DS.
>>=20
>> Signed-off-by: Kai.Jiang <Kai.Jiang@freescale.com>
>> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
>> Signed-off-by: Lan Chunhe <b25806@freescale.com>
>> ---
>> arch/powerpc/platforms/85xx/corenet_ds.c |    3 +++
>> 1 files changed, 3 insertions(+), 0 deletions(-)
>>=20
>> diff --git a/arch/powerpc/platforms/85xx/corenet_ds.c =
b/arch/powerpc/platforms/85xx/corenet_ds.c
>> index 2ab338c..bf9b9e5 100644
>> --- a/arch/powerpc/platforms/85xx/corenet_ds.c
>> +++ b/arch/powerpc/platforms/85xx/corenet_ds.c
>> @@ -116,6 +116,9 @@ static const struct of_device_id of_device_ids[] =
__devinitconst =3D {
>> 	{
>> 		.compatible	=3D "fsl,rapidio-delta",
>> 	},
>> +	{
>> +		.compatible	=3D "fsl,p4080-pcie",
>> +	},
>> 	{}
>> };
>>=20
>=20
> We've talked about doing an explicit add of a new node instead of =
doing this everywhere.  I'd like to see that done instead.

The thread that describes this a bit further is here:

http://patchwork.ozlabs.org/patch/59530/

- k=

^ permalink raw reply

* Re: [PATCH 1/3] edac: Use ccsr_pci structure instead of hardcoded define
From: Kumar Gala @ 2010-11-11 12:06 UTC (permalink / raw)
  To: Lan Chunhe; +Cc: Kai.Jiang, akpm, linuxppc-dev, dougthompson
In-Reply-To: <1288927383-1300-1-git-send-email-b25806@freescale.com>


On Nov 4, 2010, at 10:23 PM, Lan Chunhe wrote:

> There are some differences of register offset and definition between
> pci and pcie error management registers. While, some other pci/pcie
> error management registers are nearly the same.
>=20
> To merge pci and pcie edac code into one, it is easier to use ccsr_pci
> structure than the hardcoded define. So remove the hardcoded define =
and
> add pci/pcie error management register in ccsr_pci structure.
>=20
> Signed-off-by: Kai.Jiang <Kai.Jiang@freescale.com>
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> Signed-off-by: Lan Chunhe <b25806@freescale.com>
> ---
> arch/powerpc/sysdev/fsl_pci.h |   54 =
+++++++++++++++++++++++++++++++---------
> drivers/edac/mpc85xx_edac.h   |   13 +--------
> 2 files changed, 44 insertions(+), 23 deletions(-)

You need to bring in the changes from the next patch that address the =
use of the ccsr_pci struct instead of #defines into this patch.  =
Otherwise we break building of the code.  Also it makes the next patch =
easier to read as we are mixing the changes associated with 'struct =
ccsr_pci' with what its doing

>=20
> diff --git a/arch/powerpc/sysdev/fsl_pci.h =
b/arch/powerpc/sysdev/fsl_pci.h
> index 8ad72a1..796985b 100644
> --- a/arch/powerpc/sysdev/fsl_pci.h
> +++ b/arch/powerpc/sysdev/fsl_pci.h
> @@ -1,7 +1,7 @@
> /*
>  * MPC85xx/86xx PCI Express structure define
>  *
> - * Copyright 2007 Freescale Semiconductor, Inc
> + * Copyright 2007, 2010 Freescale Semiconductor, Inc
>  *
>  * This program is free software; you can redistribute  it and/or =
modify it
>  * under  the terms of  the GNU General  Public License as published =
by the
> @@ -14,6 +14,8 @@
> #ifndef __POWERPC_FSL_PCI_H
> #define __POWERPC_FSL_PCI_H
>=20
> +#include <asm/pci-bridge.h>
> +
> #define PCIE_LTSSM	0x0404		/* PCIE Link Training and Status =
*/
> #define PCIE_LTSSM_L0	0x16		/* L0 state */
> #define PIWAR_EN		0x80000000	/* Enable */
> @@ -71,18 +73,46 @@ struct ccsr_pci {
>  */
> 	struct pci_inbound_window_regs piw[3];
>=20
> -	__be32	pex_err_dr;		/* 0x.e00 - PCI/PCIE error =
detect register */
> -	u8	res21[4];
> -	__be32	pex_err_en;		/* 0x.e08 - PCI/PCIE error =
interrupt enable register */
> -	u8	res22[4];
> -	__be32	pex_err_disr;		/* 0x.e10 - PCI/PCIE error =
disable register */
> -	u8	res23[12];
> -	__be32	pex_err_cap_stat;	/* 0x.e20 - PCI/PCIE error =
capture status register */
> +/* Merge PCI/PCI Express error management registers */
> +	__be32	pex_err_dr;	  /* 0x.e00
> +				   * - PCI/PCIE error detect register
> +				   */
> +	__be32	pex_err_cap_dr;	  /* 0x.e04
> +				   * - PCI error capture disabled =
register
> +				   * - PCIE has no this register
> +				   */
> +	__be32	pex_err_en;	  /* 0x.e08
> +				   * - PCI/PCIE error interrupt enable =
register
> +				   */
> +	__be32	pex_err_attrib;	  /* 0x.e0c
> +				   * - PCI error attributes capture =
register
> +				   * - PCIE has no this register
> +				   */
> +	__be32	pex_err_disr;	  /* 0x.e10
> +				   * - PCI error address capture =
register
> +				   * - PCIE error disable register
> +				   */
> +	__be32	pex_err_ext_addr; /* 0x.e14
> +				   * - PCI error extended addr capture =
register
> +				   * - PCIE has no this register
> +				   */
> +	__be32	pex_err_dl;	  /* 0x.e18
> +				   * - PCI error data low capture =
register
> +				   * - PCIE has no this register
> +				   */
> +	__be32	pex_err_dh;	  /* 0x.e1c
> +				   * - PCI error data high capture =
register
> +				   * - PCIE has no this register
> +				   */
> +	__be32	pex_err_cap_stat; /* 0x.e20
> +				   * - PCI gasket timer register
> +				   * - PCIE error capture status =
register
> +				   */
> 	u8	res24[4];
> -	__be32	pex_err_cap_r0;		/* 0x.e28 - PCIE error capture =
register 0 */
> -	__be32	pex_err_cap_r1;		/* 0x.e2c - PCIE error capture =
register 0 */
> -	__be32	pex_err_cap_r2;		/* 0x.e30 - PCIE error capture =
register 0 */
> -	__be32	pex_err_cap_r3;		/* 0x.e34 - PCIE error capture =
register 0 */
> +	__be32	pex_err_cap_r0;	  /* 0x.e28 - PCIE error capture =
register 0 */
> +	__be32	pex_err_cap_r1;	  /* 0x.e2c - PCIE error capture =
register 1 */
> +	__be32	pex_err_cap_r2;	  /* 0x.e30 - PCIE error capture =
register 2 */
> +	__be32	pex_err_cap_r3;	  /* 0x.e34 - PCIE error capture =
register 3 */
> };
>=20
> extern int fsl_add_bridge(struct device_node *dev, int is_primary);
> diff --git a/drivers/edac/mpc85xx_edac.h b/drivers/edac/mpc85xx_edac.h
> index cb24df8..099581d 100644
> --- a/drivers/edac/mpc85xx_edac.h
> +++ b/drivers/edac/mpc85xx_edac.h
> @@ -1,5 +1,7 @@
> /*
>  * Freescale MPC85xx Memory Controller kenel module
> + * Copyright (c) 2010 Freescale Semiconductor, Inc.
> + *
>  * Author: Dave Jiang <djiang@mvista.com>
>  *
>  * 2006-2007 (c) MontaVista Software, Inc. This file is licensed under
> @@ -131,17 +133,6 @@
> #define PCI_EDE_PERR_MASK	(PCI_EDE_TGT_PERR | PCI_EDE_MST_PERR | \
> 				PCI_EDE_ADDR_PERR)
>=20
> -#define MPC85XX_PCI_ERR_DR		0x0000
> -#define MPC85XX_PCI_ERR_CAP_DR		0x0004
> -#define MPC85XX_PCI_ERR_EN		0x0008
> -#define MPC85XX_PCI_ERR_ATTRIB		0x000c
> -#define MPC85XX_PCI_ERR_ADDR		0x0010
> -#define MPC85XX_PCI_ERR_EXT_ADDR	0x0014
> -#define MPC85XX_PCI_ERR_DL		0x0018
> -#define MPC85XX_PCI_ERR_DH		0x001c
> -#define MPC85XX_PCI_GAS_TIMR		0x0020
> -#define MPC85XX_PCI_PCIX_TIMR		0x0024
> -
> struct mpc85xx_mc_pdata {
> 	char *name;
> 	int edac_idx;
> --=20
> 1.5.4.5
>=20

^ permalink raw reply

* Re: [REPOST] [PATCH 0/6] fixes and MPC8308 support for the mpc512x_dma driver
From: Wolfgang Denk @ 2010-11-11 12:11 UTC (permalink / raw)
  To: Ilya Yanok; +Cc: vlad, Kumar Gala, linuxppc-dev, dzu
In-Reply-To: <1288137180-3220-1-git-send-email-yanok@emcraft.com>

Dear Ilya Yanok,

In message <1288137180-3220-1-git-send-email-yanok@emcraft.com> you wrote:
> Hello everybody,
> 
> meanwhile I've fixed one more issue in mpc512x_dma driver.
> 
> Any comments? Anybody interrested in this driver? Piotr?
> 
> Still unsure how to deal with bitfield structures in IO space...
> 
> Regards, Ilya.
> 
> Signed-off-by: Ilya Yanok <yanok@emcraft.com>
> Cc: Piotr Ziecik <kosmo@semihalf.com>

Tested-by: Wolfgang Denk <wd@denx.de>
Acked-by: Wolfgang Denk <wd@denx.de>

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
I have often regretted my speech, never my silence.

^ permalink raw reply

* Re: [REPOST][PATCH] mpc8308: fix USB DR controller initialization
From: Wolfgang Denk @ 2010-11-11 12:18 UTC (permalink / raw)
  To: Ilya Yanok; +Cc: vlad, linuxppc-dev, dzu
In-Reply-To: <1288137756-3389-1-git-send-email-yanok@emcraft.com>

Dear Ilya Yanok,

In message <1288137756-3389-1-git-send-email-yanok@emcraft.com> you wrote:
> MPC8308 has ULPI pin muxing settings in SICRH register, bits 17-18
> which is different from both MPC8313 and MPC8315.
> Also MPC8308 doesn't have REFSEL, UTMI_PHY_EN and OTG_PORT fields
> in the USB DR controller CONTROL register.
> 
> Signed-off-by: Ilya Yanok <yanok@emcraft.com>

Tested-by: Wolfgang Denk <wd@denx.de>
Acked-by: Wolfgang Denk <wd@denx.de>

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
If you think the problem is bad now, just wait until we've solved it.
                                                        Epstein's Law

^ permalink raw reply

* Re: [PATCH 1/4][v2] powerpc: add e500 HID1 bit definition
From: Kumar Gala @ 2010-11-11 12:20 UTC (permalink / raw)
  To: Shaohui Xie; +Cc: Alexandre Bounine, akpm, linuxppc-dev, linux-kernel
In-Reply-To: <1288776931-20689-1-git-send-email-b21989@freescale.com>


On Nov 3, 2010, at 4:35 AM, Shaohui Xie wrote:

> From: Li Yang <leoli@freescale.com>
> 
> Also make 74xx HID1 definition conditional.
> 
> Signed-off-by: Li Yang <leoli@freescale.com>
> Signed-off-by: Shaohui Xie <b21989@freescale.com>
> Cc: Li Yang <leoli@freescale.com>
> Cc: Kumar Gala <kumar.gala@freescale.com>
> Cc: Roy Zang <tie-fei.zang@freescale.com>
> Cc: Alexandre Bounine <alexandre.bounine@idt.com>
> ---
> These patches have been send for almost one week, and has no feedback.
> 
> arch/powerpc/include/asm/reg.h       |    2 ++
> arch/powerpc/include/asm/reg_booke.h |   14 ++++++++++++++
> 2 files changed, 16 insertions(+), 0 deletions(-)

applied to next

- k

^ permalink raw reply

* Re: [PATCH 3/4][v2] fsl_rio: move machine_check handler into machine_check_e500 & machine_check_e500mc
From: Kumar Gala @ 2010-11-11 12:26 UTC (permalink / raw)
  To: Xie Shaohui-B21989
  Cc: Li Yang-R58472, linux-kernel, Zang Roy-R61911, Bounine, Alexandre,
	akpm, linuxppc-dev, Gala Kumar-B11780
In-Reply-To: <9FCE46230501DF4D9461B9ACC152FD7104DDA26D@zmy16exm20.fsl.freescale.net>


On Nov 11, 2010, at 4:19 AM, Xie Shaohui-B21989 wrote:

>=20
>=20
>=20
> Best Regards,=20
> Shaohui Xie=20
>=20
>=20
>> -----Original Message-----
>> From: Bounine, Alexandre [mailto:Alexandre.Bounine@idt.com]
>> Sent: Thursday, November 11, 2010 6:55 AM
>> To: Xie Shaohui-B21989; akpm@linux-foundation.org
>> Cc: linux-kernel@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Li
> Yang-
>> R58472; Gala Kumar-B11780; Zang Roy-R61911
>> Subject: RE: [PATCH 3/4][v2] fsl_rio: move machine_check handler into
>> machine_check_e500 & machine_check_e500mc
>>=20
>> Shaohui Xie <b21989@freescale.com> wrote:
>>>=20
>>> diff --git a/arch/powerpc/kernel/traps.c
> b/arch/powerpc/kernel/traps.c
>>> index a45a63c..2a5fb9d 100644
>>> --- a/arch/powerpc/kernel/traps.c
>>> +++ b/arch/powerpc/kernel/traps.c
>>> @@ -55,6 +55,7 @@
>>> #endif
>>> #include <asm/kexec.h>
>>> #include <asm/ppc-opcode.h>
>>> +#include <linux/rio.h>
>>>=20
>>> #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC)  int
>>> (*__debugger)(struct pt_regs *regs) __read_mostly; @@ -500,6 +501,13
>>> @@ int machine_check_e500mc(struct pt_regs *regs)
>>> 		       reason & MCSR_MEA ? "Effective" : "Physical",
>> addr);
>>> 	}
>>>=20
>>> +	if (reason & MCSR_BUS_RBERR) {
>>> +		printk("Bus - Read Data Bus Error\n"); #ifdef
> CONFIG_RAPIDIO
>>> +		recoverable =3D fsl_rio_mcheck_exception(regs); #endif
>>> +	}
>>> +
>>> 	mtspr(SPRN_MCSR, mcsr);
>>> 	return mfspr(SPRN_MCSR) =3D=3D 0 && recoverable;  } @@ -527,8
> +535,12
>> @@
>>> int machine_check_e500(struct pt_regs *regs)
>>> 		printk("Bus - Write Address Error\n");
>>> 	if (reason & MCSR_BUS_IBERR)
>>> 		printk("Bus - Instruction Data Error\n");
>>> -	if (reason & MCSR_BUS_RBERR)
>>> +	if (reason & MCSR_BUS_RBERR) {
>>> 		printk("Bus - Read Data Bus Error\n");
>>> +#ifdef CONFIG_RAPIDIO
>>> +		fsl_rio_mcheck_exception(regs);
>>> +#endif
>>> +	}
>>> 	if (reason & MCSR_BUS_WBERR)
>>> 		printk("Bus - Read Data Bus Error\n");
>>> 	if (reason & MCSR_BUS_IPERR)
>>=20
>> This implementation breaks an intended use of
>> fsl_rio_mcheck_exception():
>> 1. for e500 it does not check the return value of the rio handler and
>> crashes the system even after RIO Mchk was serviced. Looks like =
e500mc
>> version handles it better but I have no HW to test it.
>> 2. the RIO Mchk is expected to be handled quietly but here it has =
many
>> printk's. May be it is better to call the fsl_rio_mcheck_exception()
>> handler in very beginning and simply exit if it returns 1.
>>=20
>> Alex.
> [Xie Shaohui-B21989] Hi Alex, seems your suggestion is some kind of
> conflict with Kumar, you can have a look at=20
> http://patchwork.ozlabs.org/patch/67774/

I think Alex's comment is the fact we ignore the 'return' value in the =
machine_check_e500 case.

- k=

^ permalink raw reply

* Re: [PATCH 3/4][v2] fsl_rio: move machine_check handler into machine_check_e500 & machine_check_e500mc
From: Kumar Gala @ 2010-11-11 12:31 UTC (permalink / raw)
  To: Shaohui Xie; +Cc: Alexandre Bounine, akpm, linuxppc-dev, linux-kernel
In-Reply-To: <1288777018-24259-1-git-send-email-b21989@freescale.com>


On Nov 3, 2010, at 4:36 AM, Shaohui Xie wrote:

> Signed-off-by: Shaohui Xie <b21989@freescale.com>
> Cc: Li Yang <leoli@freescale.com>
> Cc: Kumar Gala <kumar.gala@freescale.com>
> Cc: Roy Zang <tie-fei.zang@freescale.com>
> Cc: Alexandre Bounine <alexandre.bounine@idt.com>
> ---
> arch/powerpc/kernel/traps.c   |   14 +++++++++++++-
> arch/powerpc/sysdev/fsl_rio.c |   15 +++------------
> include/linux/rio.h           |    1 +
> 3 files changed, 17 insertions(+), 13 deletions(-)
>=20
> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
> index a45a63c..2a5fb9d 100644
> --- a/arch/powerpc/kernel/traps.c
> +++ b/arch/powerpc/kernel/traps.c
> @@ -55,6 +55,7 @@
> #endif
> #include <asm/kexec.h>
> #include <asm/ppc-opcode.h>
> +#include <linux/rio.h>
>=20
> #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC)
> int (*__debugger)(struct pt_regs *regs) __read_mostly;
> @@ -500,6 +501,13 @@ int machine_check_e500mc(struct pt_regs *regs)
> 		       reason & MCSR_MEA ? "Effective" : "Physical", =
addr);
> 	}
>=20
> +	if (reason & MCSR_BUS_RBERR) {
> +		printk("Bus - Read Data Bus Error\n");
> +#ifdef CONFIG_RAPIDIO
> +		recoverable =3D fsl_rio_mcheck_exception(regs);
> +#endif
> +	}
> +
> 	mtspr(SPRN_MCSR, mcsr);
> 	return mfspr(SPRN_MCSR) =3D=3D 0 && recoverable;
> }
> @@ -527,8 +535,12 @@ int machine_check_e500(struct pt_regs *regs)

To deal w/Alex's comment do:

machine_check_e500(...) {

	int ret =3D 0;


> 		printk("Bus - Write Address Error\n");
> 	if (reason & MCSR_BUS_IBERR)
> 		printk("Bus - Instruction Data Error\n");
> -	if (reason & MCSR_BUS_RBERR)
> +	if (reason & MCSR_BUS_RBERR) {
> 		printk("Bus - Read Data Bus Error\n");
> +#ifdef CONFIG_RAPIDIO
> +		fsl_rio_mcheck_exception(regs);
> +#endif

make this like 'ret =3D fsl_rio...

> +	}
> 	if (reason & MCSR_BUS_WBERR)
> 		printk("Bus - Read Data Bus Error\n");
> 	if (reason & MCSR_BUS_IPERR)

return ret

> diff --git a/arch/powerpc/sysdev/fsl_rio.c =
b/arch/powerpc/sysdev/fsl_rio.c
> index 1143c93..a9bc1e8 100644
> --- a/arch/powerpc/sysdev/fsl_rio.c
> +++ b/arch/powerpc/sysdev/fsl_rio.c
> @@ -256,9 +256,7 @@ struct rio_priv {
> static void __iomem *rio_regs_win;
>=20
> #ifdef CONFIG_E500
> -static int (*saved_mcheck_exception)(struct pt_regs *regs);
> -
> -static int fsl_rio_mcheck_exception(struct pt_regs *regs)
> +int fsl_rio_mcheck_exception(struct pt_regs *regs)
> {
> 	const struct exception_table_entry *entry =3D NULL;
> 	unsigned long reason =3D mfspr(SPRN_MCSR);
> @@ -280,11 +278,9 @@ static int fsl_rio_mcheck_exception(struct =
pt_regs *regs)
> 		}
> 	}
>=20
> -	if (saved_mcheck_exception)
> -		return saved_mcheck_exception(regs);
> -	else
> -		return cur_cpu_spec->machine_check(regs);
> +	return 0;
> }
> +EXPORT_SYMBOL_GPL(fsl_rio_mcheck_exception);
> #endif
>=20
> /**
> @@ -1534,11 +1530,6 @@ int fsl_rio_setup(struct platform_device *dev)
> 	fsl_rio_doorbell_init(port);
> 	fsl_rio_port_write_init(port);
>=20
> -#ifdef CONFIG_E500
> -	saved_mcheck_exception =3D ppc_md.machine_check_exception;
> -	ppc_md.machine_check_exception =3D fsl_rio_mcheck_exception;
> -#endif
> -
> 	return 0;
> err:
> 	iounmap(priv->regs_win);
> diff --git a/include/linux/rio.h b/include/linux/rio.h
> index bd6eb0e..685b18f 100644
> --- a/include/linux/rio.h
> +++ b/include/linux/rio.h
> @@ -365,5 +365,6 @@ extern int rio_open_inb_mbox(struct rio_mport *, =
void *, int, int);
> extern void rio_close_inb_mbox(struct rio_mport *, int);
> extern int rio_open_outb_mbox(struct rio_mport *, void *, int, int);
> extern void rio_close_outb_mbox(struct rio_mport *, int);
> +extern int fsl_rio_mcheck_exception(struct pt_regs *);

This should be in asm/rio.h not linux/rio.h and:

Make it look like:

#ifdef CONFIG_RAPIDIO
extern int fsl_rio_mcheck_exception(struct pt_regs *);
#else
static inline int fsl_rio_mcheck_exception(struct pt_regs *) { }
#endif


>=20
> #endif				/* LINUX_RIO_H */
> --=20
> 1.6.4
>=20
>=20
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev

^ permalink raw reply

* Re: [REPOST][PATCH] mpc8308: fix USB DR controller initialization
From: Kumar Gala @ 2010-11-11 12:33 UTC (permalink / raw)
  To: Ilya Yanok; +Cc: vlad, linuxppc-dev, wd, dzu
In-Reply-To: <1288137756-3389-1-git-send-email-yanok@emcraft.com>


On Oct 26, 2010, at 7:02 PM, Ilya Yanok wrote:

> MPC8308 has ULPI pin muxing settings in SICRH register, bits 17-18
> which is different from both MPC8313 and MPC8315.
> Also MPC8308 doesn't have REFSEL, UTMI_PHY_EN and OTG_PORT fields
> in the USB DR controller CONTROL register.
> 
> Signed-off-by: Ilya Yanok <yanok@emcraft.com>
> ---
> 
> Kim, Kumar,
> 
> Please consider including this patch. Without it USB initialization code
> writes to the wrong bits on the MPC8308RDB.
> 
> Regards, Ilya.
> 
> arch/powerpc/boot/dts/mpc8308rdb.dts  |    2 +-
> arch/powerpc/platforms/83xx/mpc83xx.h |    2 ++
> arch/powerpc/platforms/83xx/usb.c     |   21 ++++++++++++++++-----
> 3 files changed, 19 insertions(+), 6 deletions(-)

applied to next

- k

^ permalink raw reply

* Re: [PATCH 2/4][v2] fsl_rio: fix non-standard HID1 register access
From: Kumar Gala @ 2010-11-11 12:20 UTC (permalink / raw)
  To: Shaohui Xie; +Cc: Alexandre Bounine, akpm, linuxppc-dev, linux-kernel
In-Reply-To: <1288776997-23562-1-git-send-email-b21989@freescale.com>


On Nov 3, 2010, at 4:36 AM, Shaohui Xie wrote:

> Signed-off-by: Shaohui Xie <b21989@freescale.com>
> Cc: Li Yang <leoli@freescale.com>
> Cc: Kumar Gala <kumar.gala@freescale.com>
> Cc: Roy Zang <tie-fei.zang@freescale.com>
> Cc: Alexandre Bounine <alexandre.bounine@idt.com>
> ---
> arch/powerpc/kernel/cpu_setup_fsl_booke.S |    6 ++++++
> arch/powerpc/sysdev/fsl_rio.c             |    2 --
> 2 files changed, 6 insertions(+), 2 deletions(-)

applied to next

- k

^ permalink raw reply

* RE: [PATCH 3/4][v2] fsl_rio: move machine_check handler into machine_check_e500 & machine_check_e500mc
From: Bounine, Alexandre @ 2010-11-11 13:40 UTC (permalink / raw)
  To: Kumar Gala, Xie Shaohui-B21989
  Cc: Li Yang-R58472, linux-kernel, Zang Roy-R61911, Gala Kumar-B11780,
	linuxppc-dev, akpm
In-Reply-To: <A530CF80-F6B6-40BE-A465-18884B887432@kernel.crashing.org>

Kumar Gala <galak@kernel.crashing.org> wrote:
> > [Xie Shaohui-B21989] Hi Alex, seems your suggestion is some kind of
> > conflict with Kumar, you can have a look at
> > http://patchwork.ozlabs.org/patch/67774/
>=20
> I think Alex's comment is the fact we ignore the 'return' value in the
machine_check_e500 case.

Yes, this one and plus the fact that Mchk exception messages are printed
even if it was handled successfully (by RIO handler). Messages are
printed in both: e500 and e500mc handlers.

Alex.
 =20

^ permalink raw reply

* RE: [PATCH 3/4][v2] fsl_rio: move machine_check handler into machine_check_e500 & machine_check_e500mc
From: Bounine, Alexandre @ 2010-11-11 14:29 UTC (permalink / raw)
  To: Kumar Gala, Shaohui Xie; +Cc: akpm, linuxppc-dev, linux-kernel
In-Reply-To: <0B482EBF-AF82-4C61-A35E-D9619246D259@freescale.com>

Kumar Gala <kumar.gala@freescale.com> wrote:
> > @@ -527,8 +535,12 @@ int machine_check_e500(struct pt_regs *regs)
>=20
> To deal w/Alex's comment do:
>=20
> machine_check_e500(...) {
>=20
> 	int ret =3D 0;
>=20
>=20
> > 		printk("Bus - Write Address Error\n");
> > 	if (reason & MCSR_BUS_IBERR)
> > 		printk("Bus - Instruction Data Error\n");
> > -	if (reason & MCSR_BUS_RBERR)
> > +	if (reason & MCSR_BUS_RBERR) {
> > 		printk("Bus - Read Data Bus Error\n");
> > +#ifdef CONFIG_RAPIDIO
> > +		fsl_rio_mcheck_exception(regs);
> > +#endif
>=20
> make this like 'ret =3D fsl_rio...
>=20

Please, place it in the beginning of the machine_check_e500[mc](...) as
well to avoid any 'printk' if RIO exception was handled properly.

Alex.=20

^ permalink raw reply

* [PATCHv6 6/7] wire up sys_time_change_notify() on powerpc
From: Alexander Shishkin @ 2010-11-11 19:30 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jesper Nilsson, Greg KH, Chris Friesen, John Stultz,
	Andreas Schwab, Kay Sievers, linuxppc-dev, Christoph Hellwig,
	Alexander Shishkin, Paul Mackerras, H. Peter Anvin,
	Kirill A. Shutemov, Andrew Morton, Linus Torvalds,
	Thomas Gleixner
In-Reply-To: <1289503802-22444-1-git-send-email-virtuoso@slind.org>

Signed-off-by: Alexander Shishkin <virtuoso@slind.org>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: Paul Mackerras <paulus@samba.org>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Andreas Schwab <schwab@linux-m68k.org>
CC: Alexander Shishkin <virtuoso@slind.org>
CC: Christoph Hellwig <hch@lst.de>
CC: Jesper Nilsson <jesper.nilsson@axis.com>
CC: linuxppc-dev@lists.ozlabs.org
CC: linux-kernel@vger.kernel.org
---
 arch/powerpc/include/asm/systbl.h |    1 +
 arch/powerpc/include/asm/unistd.h |    3 ++-
 2 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/include/asm/systbl.h b/arch/powerpc/include/asm/systbl.h
index aa0f1eb..a57cc82 100644
--- a/arch/powerpc/include/asm/systbl.h
+++ b/arch/powerpc/include/asm/systbl.h
@@ -348,3 +348,4 @@ COMPAT_SYS_SPU(sendmsg)
 COMPAT_SYS_SPU(recvmsg)
 COMPAT_SYS_SPU(recvmmsg)
 SYSCALL_SPU(accept4)
+SYSCALL(time_change_notify)
diff --git a/arch/powerpc/include/asm/unistd.h b/arch/powerpc/include/asm/unistd.h
index 6151937..bea2c9e 100644
--- a/arch/powerpc/include/asm/unistd.h
+++ b/arch/powerpc/include/asm/unistd.h
@@ -367,10 +367,11 @@
 #define __NR_recvmsg		342
 #define __NR_recvmmsg		343
 #define __NR_accept4		344
+#define __NR_time_change_notify 345
 
 #ifdef __KERNEL__
 
-#define __NR_syscalls		345
+#define __NR_syscalls		346
 
 #define __NR__exit __NR_exit
 #define NR_syscalls	__NR_syscalls
-- 
1.7.2.1.45.gb66c2

^ permalink raw reply related

* setuid() libc function hang on Freescale P1020 RDB
From: xuan zhao @ 2010-11-11 19:54 UTC (permalink / raw)
  To: linuxppc-dev

Hi GURUs

I am working on application based on Freescale P1020 SDK.  But for
some reasons, my application hangs in setuid(0).


The Freescale P1020 SDK is using this toolchain:
                  gcc-4.3.74-eglibc-2.8.74-dp-2
and the kernel is also from SDK:
                  linux-2.6.31.


The threads in my application are like:

main() thread -  SCHED_NORMAL
      |
      |-------        thread #a,  implement a timer using SIGALRM   -  SCHE=
D_RR
      |
      |--------       thread #b  =96 SCHED_NORMAL            -  this is
who hangs at setuid(0).
                             |
                             |--------   thread #c -  SCHED_RR,
waitting on a netlink FD for  incomming event


I added some code in kernel, I found that my thread #b returns from
sys_setuid() successfully, with its "task_struct->state" as
TASK_RUNNING. but for some reason, it doesn't return to my user-level
application code. it seems that it stays in setuid() libc function and
another system call sys_futex(), and its kernel mode stack calltrace
is like:

[cdc25c80] [c007e5ac] __rcu_process_callbacks+0x2c4/0x3a0 (unreliable)
[cdc25d40] [c0007ef8] __switch_to+0x5c/0xcc
[cdc25d50] [c0488ab8] schedule+0x2dc/0x4c4
[cdc25db0] [c00699e0] futex_wait_queue_me+0xfc/0x134
[cdc25de0] [c0069b54] futex_wait+0x13c/0x2cc
[cdc25ec0] [c006c560] do_futex+0x58/0x1e8
[cdc25ee0] [c006c784] sys_futex+0x94/0x1e4
[cdc25f40] [c0010254] ret_from_syscall+0x0/0x3c


I notice that there was  some discussion about RT thread setuid() hang,

http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-02/msg09870.html
but that fix is already in kernel.2.6.31, and my thread is
SCHED_NORMAL, not RT. so I guess it is not like my case.

And this is some kernel configurations:

CONFIG_TREE_RCU=3Dy
# CONFIG_TREE_PREEMPT_RCU is not set
# CONFIG_RCU_TRACE is not set
CONFIG_RCU_FANOUT=3D32
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
CONFIG_IKCONFIG=3Dy
CONFIG_IKCONFIG_PROC=3Dy
CONFIG_LOG_BUF_SHIFT=3D14
CONFIG_GROUP_SCHED=3Dy
# CONFIG_FAIR_GROUP_SCHED is not set
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_USER_SCHED=3Dy
# CONFIG_CGROUP_SCHED is not set
# CONFIG_CGROUPS is not set


CONFIG_PREEMPT_NONE=3Dy
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set

         CONFIG_PREEMPT is not set, but setuid() hangs no matter
whether or not it is set.



Any way, I am completely out of ideas.

Is this caused by the toolchain of Freescale P1020 SDK?  Do you have
any ideas about what I should do to debug this issue?

I would appreciate it a lot if you GURUs could give me some idea. If
you need me to provide more information, please let me know.


thanks

^ permalink raw reply

* Re: Can't boot benh/powerpc.git kernel
From: Jim Keniston @ 2010-11-12  0:07 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
In-Reply-To: <1289426817.2147.1403.camel@pasglop>

On Thu, 2010-11-11 at 09:06 +1100, Benjamin Herrenschmidt wrote:
> On Wed, 2010-11-10 at 11:54 -0800, Jim Keniston wrote:
> > I got Ben's linux/kernel/git/benh/powerpc.git source and built it
> > (.config file attached*).  It hangs on boot.  When I boot it with
> > loglevel=8, its last words are:
> 
> First, please try with Linus upstream. The "master" branch in my git
> tree is quite stale, and my next and merge branch are too at the moment
> as I'm still travelling. All our current stuff was merged during the
> last merge window so there's nothing "new" for you to pickup in my tree
> at the moment :-)
> 
> If the problem still occurs, I'll have a look next week.
> 
> Cheers,
> Ben.

I built from Linus's git tree, and that kernel doesn't boot, either.
(It doesn't hang, but rather panics during boot.  I can provide a
console log if you like.)

v2.6.36 and v2.6.37-rc1 boot fine for me.  I'll post my nvram-related
patches against v2.6.37-rc1.

Jim

^ permalink raw reply

* Re: Can't boot benh/powerpc.git kernel
From: Benjamin Herrenschmidt @ 2010-11-12  2:29 UTC (permalink / raw)
  To: Jim Keniston; +Cc: linuxppc-dev
In-Reply-To: <1289520464.4752.12.camel@localhost>

On Thu, 2010-11-11 at 16:07 -0800, Jim Keniston wrote:
> I built from Linus's git tree, and that kernel doesn't boot, either.
> (It doesn't hang, but rather panics during boot.  I can provide a
> console log if you like.)
> 
> v2.6.36 and v2.6.37-rc1 boot fine for me.  I'll post my nvram-related
> patches against v2.6.37-rc1.

Ok, pls send me as much details as you can (git rev etc...), log, and
details about the machine. I'll have a look next week.

Cheers,
Ben

^ permalink raw reply

* RE: [PATCH v2] fsldma: add support to 36-bit physical address
From: Li Yang-R58472 @ 2010-11-12  3:16 UTC (permalink / raw)
  To: Kumar Gala; +Cc: dan.j.williams, linuxppc-dev, linux-kernel
In-Reply-To: <54AAF9B7-9533-45B8-9C49-A964203AF707@kernel.crashing.org>

>Subject: Re: [PATCH v2] fsldma: add support to 36-bit physical address
>
>
>On Nov 11, 2010, at 6:16 AM, Li Yang wrote:
>
>> Expand the dma_mask of fsldma device to 36-bit, indicating that the
>> DMA engine can deal with 36-bit physical address and does not need =
the
>> SWIOTLB to create bounce buffer for it when doing dma_map_*().
>>
>> Signed-off-by: Li Yang <leoli@freescale.com>
>> ---
>> Add more detailed commit message
>>
>> drivers/dma/fsldma.c |    4 +++-
>> 1 files changed, 3 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c index
>> cea08be..8c79b37 100644
>> --- a/drivers/dma/fsldma.c
>> +++ b/drivers/dma/fsldma.c
>> @@ -1,7 +1,7 @@
>> /*
>>  * Freescale MPC85xx, MPC83xx DMA Engine support
>>  *
>> - * Copyright (C) 2007 Freescale Semiconductor, Inc. All rights =
reserved.
>> + * Copyright (C) 2007-2010 Freescale Semiconductor, Inc. All rights
>reserved.
>>  *
>>  * Author:
>>  *   Zhang Wei <wei.zhang@freescale.com>, Jul 2007
>> @@ -1338,6 +1338,8 @@ static int __devinit fsldma_of_probe(struct
>platform_device *op,
>> 	fdev->common.device_control =3D fsl_dma_device_control;
>> 	fdev->common.dev =3D &op->dev;
>>
>> +	dma_set_mask(&(op->dev), DMA_BIT_MASK(36));
>> +
>
>Is there any reason we shouldn't set DMA_BIT_MASK(64) since the DMA =
block
>programming model allows the address to be 64-bits?

The current code is only verified on chips with 36-bit physical address. =
 I'm not sure if the driver can work without any change on the 64-bit =
chip, although the register model suggests it can work well with 64-bit. =
 If you can confirm that it's compatible with the block on 64-bit chip, =
then we can change it to 64 bit dma mask.

- Leo

^ permalink raw reply

* [PATCH 0/4] More ppc64 nvram code cleanup
From: Jim Keniston @ 2010-11-12  4:53 UTC (permalink / raw)
  To: linuxppc-dev

This series contains some fixups to Ben Herrenschmidt's Aug. 2 patch
set, "[RFC] Clean up ppc64 nvram code" --
http://lists.ozlabs.org/pipermail/linuxppc-dev/2010-August/084601.html

These patches apply atop Ben's 11-patch series.
---

Jim Keniston (4):
      Handle partition names >= 12 chars
      Fix NVRAM partition list setup
      Fix nvram_create_partition() arg order
      Fix powerpc nvram init order


 arch/powerpc/kernel/nvram_64.c         |   31 +++++++++++--------------------
 arch/powerpc/platforms/pseries/nvram.c |    8 ++++----
 2 files changed, 15 insertions(+), 24 deletions(-)

--
Jim Keniston
IBM Linux Technology Center
Beaverton, OR

^ permalink raw reply

* [PATCH 1/4] Fix powerpc nvram init order
From: Jim Keniston @ 2010-11-12  4:53 UTC (permalink / raw)
  To: linuxppc-dev
In-Reply-To: <20101112045346.4290.43739.stgit@localhost.localdomain>

Don't run pseries_nvram_init_log_partition() until after the partition
list has been initialized.  Fixes a boot-time crash.

Signed-off-by: Jim Keniston <jkenisto@us.ibm.com>
---

 arch/powerpc/platforms/pseries/nvram.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/nvram.c b/arch/powerpc/platforms/pseries/nvram.c
index e3acb0b..e1a43d9 100644
--- a/arch/powerpc/platforms/pseries/nvram.c
+++ b/arch/powerpc/platforms/pseries/nvram.c
@@ -318,7 +318,7 @@ static int __init pseries_nvram_init_log_partition(void)
 	
 	return 0;
 }
-machine_arch_initcall(pseries, pseries_nvram_init_log_partition);
+machine_late_initcall(pseries, pseries_nvram_init_log_partition);
 
 int __init pSeries_nvram_init(void)
 {

^ permalink raw reply related

* [PATCH 3/4] Fix NVRAM partition list setup
From: Jim Keniston @ 2010-11-12  4:54 UTC (permalink / raw)
  To: linuxppc-dev
In-Reply-To: <20101112045346.4290.43739.stgit@localhost.localdomain>

Simplify creation and use of the NVRAM partition list.

Signed-off-by: Jim Keniston <jkenisto@us.ibm.com>
---

 arch/powerpc/kernel/nvram_64.c |   26 ++++++++------------------
 1 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
index d467f8c..19122d4 100644
--- a/arch/powerpc/kernel/nvram_64.c
+++ b/arch/powerpc/kernel/nvram_64.c
@@ -51,7 +51,7 @@ struct nvram_partition {
 	unsigned int index;
 };
 
-static struct nvram_partition * nvram_part;
+static LIST_HEAD(nvram_partitions);
 
 static loff_t dev_nvram_llseek(struct file *file, loff_t offset, int origin)
 {
@@ -196,13 +196,11 @@ static struct miscdevice nvram_dev = {
 #ifdef DEBUG_NVRAM
 static void __init nvram_print_partitions(char * label)
 {
-	struct list_head * p;
 	struct nvram_partition * tmp_part;
 	
 	printk(KERN_WARNING "--------%s---------\n", label);
 	printk(KERN_WARNING "indx\t\tsig\tchks\tlen\tname\n");
-	list_for_each(p, &nvram_part->partition) {
-		tmp_part = list_entry(p, struct nvram_partition, partition);
+	list_for_each_entry(tmp_part, &nvram_partitions, partition) {
 		printk(KERN_WARNING "%4d    \t%02x\t%02x\t%d\t%s\n",
 		       tmp_part->index, tmp_part->header.signature,
 		       tmp_part->header.checksum, tmp_part->header.length,
@@ -250,7 +248,7 @@ int __init nvram_remove_partition(const char *name, int sig)
 	struct nvram_partition *part, *prev, *tmp;
 	int rc;
 
-	list_for_each_entry(part, &nvram_part->partition, partition) {
+	list_for_each_entry(part, &nvram_partitions, partition) {
 		if (part->header.signature != sig)
 			continue;
 		if (name && strncmp(name, part->header.name, 12))
@@ -269,7 +267,7 @@ int __init nvram_remove_partition(const char *name, int sig)
 
 	/* Merge contiguous ones */
 	prev = NULL;
-	list_for_each_entry_safe(part, tmp, &nvram_part->partition, partition) {
+	list_for_each_entry_safe(part, tmp, &nvram_partitions, partition) {
 		if (part->header.signature != NVRAM_SIG_FREE) {
 			prev = NULL;
 			continue;
@@ -333,7 +331,7 @@ loff_t __init nvram_create_partition(const char *name, int sig,
 
 	/* Find a free partition that will give us the maximum needed size 
 	   If can't find one that will give us the minimum size needed */
-	list_for_each_entry(part, &nvram_part->partition, partition) {
+	list_for_each_entry(part, &nvram_partitions, partition) {
 		if (part->header.signature != NVRAM_SIG_FREE)
 			continue;
 
@@ -412,7 +410,7 @@ int nvram_get_partition_size(loff_t data_index)
 {
 	struct nvram_partition *part;
 	
-	list_for_each_entry(part, &nvram_part->partition, partition) {
+	list_for_each_entry(part, &nvram_partitions, partition) {
 		if (part->index + NVRAM_HEADER_LEN == data_index)
 			return (part->header.length - 1) * NVRAM_BLOCK_LEN;
 	}
@@ -430,7 +428,7 @@ loff_t nvram_find_partition(const char *name, int sig, int *out_size)
 {
 	struct nvram_partition *p;
 
-	list_for_each_entry(p, &nvram_part->partition, partition) {
+	list_for_each_entry(p, &nvram_partitions, partition) {
 		if (p->header.signature == sig &&
 		    (!name || !strncmp(p->header.name, name, 12))) {
 			if (out_size)
@@ -499,7 +497,7 @@ static int __init nvram_scan_partitions(void)
 		
 		memcpy(&tmp_part->header, &phead, NVRAM_HEADER_LEN);
 		tmp_part->index = cur_index;
-		list_add_tail(&tmp_part->partition, &nvram_part->partition);
+		list_add_tail(&tmp_part->partition, &nvram_partitions);
 		
 		cur_index += phead.length * NVRAM_BLOCK_LEN;
 	}
@@ -526,14 +524,6 @@ static int __init nvram_init(void)
 		return rc;
 	}
   	
-  	/* initialize our anchor for the nvram partition list */
-  	nvram_part = kmalloc(sizeof(struct nvram_partition), GFP_KERNEL);
-  	if (!nvram_part) {
-  		printk(KERN_ERR "nvram_init: Failed kmalloc\n");
-  		return -ENOMEM;
-  	}
-  	INIT_LIST_HEAD(&nvram_part->partition);
-  
   	/* Get all the NVRAM partitions */
   	error = nvram_scan_partitions();
   	if (error) {

^ permalink raw reply related

* [PATCH 4/4] Handle partition names >= 12 chars
From: Jim Keniston @ 2010-11-12  4:54 UTC (permalink / raw)
  To: linuxppc-dev
In-Reply-To: <20101112045346.4290.43739.stgit@localhost.localdomain>

The name field in the nvram_header can be < 12 chars, null-terminated,
or 12 chars without the null.  Handle this safely.

Signed-off-by: Jim Keniston <jkenisto@us.ibm.com>
---

 arch/powerpc/kernel/nvram_64.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
index 19122d4..cda7c3f 100644
--- a/arch/powerpc/kernel/nvram_64.c
+++ b/arch/powerpc/kernel/nvram_64.c
@@ -42,6 +42,7 @@ struct nvram_header {
 	unsigned char signature;
 	unsigned char checksum;
 	unsigned short length;
+	/* Terminating null required only for names < 12 chars. */
 	char name[12];
 };
 
@@ -201,7 +202,7 @@ static void __init nvram_print_partitions(char * label)
 	printk(KERN_WARNING "--------%s---------\n", label);
 	printk(KERN_WARNING "indx\t\tsig\tchks\tlen\tname\n");
 	list_for_each_entry(tmp_part, &nvram_partitions, partition) {
-		printk(KERN_WARNING "%4d    \t%02x\t%02x\t%d\t%s\n",
+		printk(KERN_WARNING "%4d    \t%02x\t%02x\t%d\t%12s\n",
 		       tmp_part->index, tmp_part->header.signature,
 		       tmp_part->header.checksum, tmp_part->header.length,
 		       tmp_part->header.name);
@@ -256,7 +257,7 @@ int __init nvram_remove_partition(const char *name, int sig)
 
 		/* Make partition a free partition */
 		part->header.signature = NVRAM_SIG_FREE;
-		sprintf(part->header.name, "wwwwwwwwwwww");
+		strncpy(part->header.name, "wwwwwwwwwwww", 12);
 		part->header.checksum = nvram_checksum(&part->header);
 		rc = nvram_write_header(part);
 		if (rc <= 0) {

^ permalink raw reply related


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