LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] powerpc/ftrace: fix constraint to be early clobber
From: Benjamin Herrenschmidt @ 2009-05-15 22:27 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: linuxppc-dev, Ingo Molnar, LKML, Andrew Morton,
	Frederic Weisbecker
In-Reply-To: <alpine.DEB.2.00.0905141236420.30591@gandalf.stny.rr.com>

On Fri, 2009-05-15 at 10:33 -0400, Steven Rostedt wrote:
> After upgrading my distcc boxes from gcc 4.2.2 to 4.4.0, the function 
> graph tracer broke. This was discovered on my x86 boxes.
> 
> The issue is that gcc used the same register for an output as it did for 
> an input in an asm statement. I first thought this was a bug in gcc and 
> reported it. I was notified that gcc was correct and that the output had 
> to be flagged as an "early clobber".
> 
> I noticed that powerpc had the same issue and this patch fixes it.
> 
> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

Ack. You merge this or I do ?

Cheers,
Ben.

> diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
> index 70e2a73..68fd74e 100644
> --- a/arch/powerpc/kernel/ftrace.c
> +++ b/arch/powerpc/kernel/ftrace.c
> @@ -594,7 +594,7 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr)
>  			PPC_LONG "2b,4b\n"
>  		".previous"
>  
> -		: [old] "=r" (old), [faulted] "=r" (faulted)
> +		: [old] "=&r" (old), [faulted] "=r" (faulted)
>  		: [parent] "r" (parent), [return_hooker] "r" (return_hooker)
>  		: "memory"
>  	);
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply

* Patch 1/2: Add support for Xilinx PLB PCI soft-core [attempt3]
From: Roderick Colenbrander @ 2009-05-15 22:19 UTC (permalink / raw)
  To: Linuxppc-dev Development, Grant Likely

Hi,

As requested here the same patch but now with a signed-off line which I for=
got.

Regards,
Roderick Colenbrander

Signed-off-by: Roderick Colenbrander <thunderbird2k@gmail.com>


>From 2b34a315b18834448c0a8218d4da85ffaf76039e Mon Sep 17 00:00:00 2001
From: Roderick Colenbrander <thunderbird2k@gmail.com>
Date: Tue, 14 Apr 2009 15:45:07 +0200
Subject: [PATCH] Add support for the Xilinx PLB PCI soft-core which is
used on Xilinx ML410 and ML510 FPGA boards.

---
=A0arch/powerpc/sysdev/Kconfig =A0 =A0 =A0| =A0 =A04 ++
=A0arch/powerpc/sysdev/Makefile =A0 =A0 | =A0 =A01 +
=A0arch/powerpc/sysdev/virtex_pci.c | =A0 99 ++++++++++++++++++++++++++++++=
++++++++
=A03 files changed, 104 insertions(+), 0 deletions(-)
=A0create mode 100644 arch/powerpc/sysdev/virtex_pci.c

diff --git a/arch/powerpc/sysdev/Kconfig b/arch/powerpc/sysdev/Kconfig
index 3965828..2d0be14 100644
--- a/arch/powerpc/sysdev/Kconfig
+++ b/arch/powerpc/sysdev/Kconfig
@@ -12,3 +12,7 @@ config PPC_MSI_BITMAP
=A0 =A0 =A0 =A0depends on PCI_MSI
=A0 =A0 =A0 =A0default y if MPIC
=A0 =A0 =A0 =A0default y if FSL_PCI
+
+config XILINX_VIRTEX_PCI
+ =A0 =A0 =A0 bool
+ =A0 =A0 =A0 depends on PCI
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
index b33b28a..b93794e 100644
--- a/arch/powerpc/sysdev/Makefile
+++ b/arch/powerpc/sysdev/Makefile
@@ -34,6 +34,7 @@ obj-$(CONFIG_IPIC) =A0 =A0 =A0 =A0 =A0 =A0+=3D ipic.o
=A0obj-$(CONFIG_4xx) =A0 =A0 =A0 =A0 =A0 =A0 =A0+=3D uic.o
=A0obj-$(CONFIG_4xx_SOC) =A0 =A0 =A0 =A0 =A0+=3D ppc4xx_soc.o
=A0obj-$(CONFIG_XILINX_VIRTEX) =A0 =A0+=3D xilinx_intc.o
+obj-$(CONFIG_XILINX_VIRTEX_PCI) =A0 =A0 =A0 =A0+=3D virtex_pci.o
=A0obj-$(CONFIG_OF_RTC) =A0 =A0 =A0 =A0 =A0 +=3D of_rtc.o
=A0ifeq ($(CONFIG_PCI),y)
=A0obj-$(CONFIG_4xx) =A0 =A0 =A0 =A0 =A0 =A0 =A0+=3D ppc4xx_pci.o
diff --git a/arch/powerpc/sysdev/virtex_pci.c b/arch/powerpc/sysdev/virtex_=
pci.c
new file mode 100644
index 0000000..b5137b5
--- /dev/null
+++ b/arch/powerpc/sysdev/virtex_pci.c
@@ -0,0 +1,99 @@
+/*
+ * PCI support for Xilinx plbv46_pci soft-core which can be used on
+ * Xilinx Virtex ML410 / ML510 boards.
+ *
+ * Copyright 2009 Roderick Colenbrander
+ *
+ * The pci bridge fixup code was copied from ppc4xx_pci.c and was written
+ * by Benjamin Herrenschmidt.
+ * Copyright 2007 Ben. Herrenschmidt <benh@kernel.crashing.org>, IBM Corp.
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2. This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+#include <linux/pci.h>
+#include <mm/mmu_decl.h>
+#include <asm/io.h>
+
+#define XPLB_PCI_ADDR 0x10c
+#define XPLB_PCI_DATA 0x110
+#define XPLB_PCI_BUS =A00x114
+
+#define PCI_HOST_ENABLE_CMD PCI_COMMAND_SERR | PCI_COMMAND_PARITY |
PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY
+
+static void fixup_virtex_pci_bridge(struct pci_dev *dev)
+{
+ =A0 =A0 =A0 struct pci_controller *hose;
+ =A0 =A0 =A0 int i;
+
+ =A0 =A0 =A0 if (dev->devfn || dev->bus->self)
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
+
+ =A0 =A0 =A0 hose =3D pci_bus_to_host(dev->bus);
+ =A0 =A0 =A0 if (!hose)
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
+
+ =A0 =A0 =A0 if(!of_device_is_compatible(hose->dn, "xlnx,plbv46-pci-1.03.a=
"))
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
+
+ =A0 =A0 =A0 /* Hide the PCI host BARs from the kernel as their content do=
esn't
+ =A0 =A0 =A0 =A0* fit well in the resource management
+ =A0 =A0 =A0 =A0*/
+ =A0 =A0 =A0 for (i =3D 0; i < DEVICE_COUNT_RESOURCE; i++)
+ =A0 =A0 =A0 {
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 dev->resource[i].start =3D 0;
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 dev->resource[i].end =3D 0;
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 dev->resource[i].flags =3D 0;
+ =A0 =A0 =A0 }
+
+ =A0 =A0 =A0 dev_info(&dev->dev, "PCI: Hiding Xilinx plb-pci host bridge
resources %s\n", pci_name(dev));
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, fixup_virtex_pci_bridge);
+
+void virtex_pci_init(void)
+{
+ =A0 =A0 =A0 struct pci_controller *hose;
+ =A0 =A0 =A0 struct resource r;
+ =A0 =A0 =A0 void __iomem *pci_reg;
+ =A0 =A0 =A0 struct device_node *pci_node =3D of_find_compatible_node(NULL=
,
NULL, "xlnx,plbv46-pci-1.03.a");
+
+ =A0 =A0 =A0 if(!pci_node)
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
+
+ =A0 =A0 =A0 printk("Found a Xilinx plb-pci host bridge\n");
+
+ =A0 =A0 =A0 if(of_address_to_resource(pci_node, 0, &r))
+ =A0 =A0 =A0 {
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 printk("No address for Xilinx plb-pci host br=
idge\n");
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
+ =A0 =A0 =A0 }
+
+ =A0 =A0 =A0 hose =3D pcibios_alloc_controller(pci_node);
+ =A0 =A0 =A0 if (!hose)
+ =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
+
+ =A0 =A0 =A0 hose->first_busno =3D 0;
+ =A0 =A0 =A0 hose->last_busno =3D 0;
+
+ =A0 =A0 =A0 /* Setup config space */
+ =A0 =A0 =A0 setup_indirect_pci(hose, r.start + XPLB_PCI_ADDR, r.start +
XPLB_PCI_DATA, PPC_INDIRECT_TYPE_SET_CFG_TYPE);
+
+ =A0 =A0 =A0 /* According to the xilinx plbv46_pci documentation the soft-=
core starts
+ =A0 =A0 =A0 =A0* a self-init when the bus master enable bit is set. Witho=
ut this bit
+ =A0 =A0 =A0 =A0* set the pci bus can't be scanned.
+ =A0 =A0 =A0 =A0*/
+ =A0 =A0 =A0 early_write_config_word(hose, 0, 0, PCI_COMMAND, PCI_HOST_ENA=
BLE_CMD);
+
+ =A0 =A0 =A0 /* Set the max latency timer to 255 */
+ =A0 =A0 =A0 early_write_config_byte(hose, 0, 0, PCI_LATENCY_TIMER, 0xff);
+
+ =A0 =A0 =A0 /* Set the max bus number to 255 */
+ =A0 =A0 =A0 pci_reg =3D of_iomap(pci_node, 0);
+ =A0 =A0 =A0 out_8(pci_reg + XPLB_PCI_BUS, 0xff);
+ =A0 =A0 =A0 iounmap(pci_reg);
+
+ =A0 =A0 =A0 /* Register the host bridge with the linux kernel! */
+ =A0 =A0 =A0 pci_process_bridge_OF_ranges(hose, pci_node, 1);
+}
--
1.5.6.3



_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

^ permalink raw reply related

* Re: Patch 1/2: Add support for Xilinx PLB PCI soft-core [attempt2]
From: Grant Likely @ 2009-05-15 21:36 UTC (permalink / raw)
  To: Roderick Colenbrander; +Cc: linuxppc-dev
In-Reply-To: <1239784856.27533.2.camel@CE202>

Roderick,

These two patches are missing a "signed-off-by" line from you.  Can
you please reply with one confirming that the patches adhere to the
Developer's Certificate of Origin from
Documentation/SubmittingPatches?

Thanks,
g.

On Wed, Apr 15, 2009 at 2:40 AM, Roderick Colenbrander
<thunderbird2k@gmail.com> wrote:
> Hi,
>
> This is an updated version of the patch which takes into account a few ch=
anges suggested by Grant which I forgot to add.
>
> Regards,
> Roderick Colenbrander
>
> >From 2b34a315b18834448c0a8218d4da85ffaf76039e Mon Sep 17 00:00:00 2001
> From: Roderick Colenbrander <thunderbird2k@gmail.com>
> Date: Tue, 14 Apr 2009 15:45:07 +0200
> Subject: [PATCH] Add support for the Xilinx PLB PCI soft-core which is us=
ed on Xilinx ML410 and ML510 FPGA boards.
>
> ---
> =A0arch/powerpc/sysdev/Kconfig =A0 =A0 =A0| =A0 =A04 ++
> =A0arch/powerpc/sysdev/Makefile =A0 =A0 | =A0 =A01 +
> =A0arch/powerpc/sysdev/virtex_pci.c | =A0 99 ++++++++++++++++++++++++++++=
++++++++++
> =A03 files changed, 104 insertions(+), 0 deletions(-)
> =A0create mode 100644 arch/powerpc/sysdev/virtex_pci.c
>
> diff --git a/arch/powerpc/sysdev/Kconfig b/arch/powerpc/sysdev/Kconfig
> index 3965828..2d0be14 100644
> --- a/arch/powerpc/sysdev/Kconfig
> +++ b/arch/powerpc/sysdev/Kconfig
> @@ -12,3 +12,7 @@ config PPC_MSI_BITMAP
> =A0 =A0 =A0 =A0depends on PCI_MSI
> =A0 =A0 =A0 =A0default y if MPIC
> =A0 =A0 =A0 =A0default y if FSL_PCI
> +
> +config XILINX_VIRTEX_PCI
> + =A0 =A0 =A0 bool
> + =A0 =A0 =A0 depends on PCI
> diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
> index b33b28a..b93794e 100644
> --- a/arch/powerpc/sysdev/Makefile
> +++ b/arch/powerpc/sysdev/Makefile
> @@ -34,6 +34,7 @@ obj-$(CONFIG_IPIC) =A0 =A0 =A0 =A0 =A0 =A0+=3D ipic.o
> =A0obj-$(CONFIG_4xx) =A0 =A0 =A0 =A0 =A0 =A0 =A0+=3D uic.o
> =A0obj-$(CONFIG_4xx_SOC) =A0 =A0 =A0 =A0 =A0+=3D ppc4xx_soc.o
> =A0obj-$(CONFIG_XILINX_VIRTEX) =A0 =A0+=3D xilinx_intc.o
> +obj-$(CONFIG_XILINX_VIRTEX_PCI) =A0 =A0 =A0 =A0+=3D virtex_pci.o
> =A0obj-$(CONFIG_OF_RTC) =A0 =A0 =A0 =A0 =A0 +=3D of_rtc.o
> =A0ifeq ($(CONFIG_PCI),y)
> =A0obj-$(CONFIG_4xx) =A0 =A0 =A0 =A0 =A0 =A0 =A0+=3D ppc4xx_pci.o
> diff --git a/arch/powerpc/sysdev/virtex_pci.c b/arch/powerpc/sysdev/virte=
x_pci.c
> new file mode 100644
> index 0000000..b5137b5
> --- /dev/null
> +++ b/arch/powerpc/sysdev/virtex_pci.c
> @@ -0,0 +1,99 @@
> +/*
> + * PCI support for Xilinx plbv46_pci soft-core which can be used on
> + * Xilinx Virtex ML410 / ML510 boards.
> + *
> + * Copyright 2009 Roderick Colenbrander
> + *
> + * The pci bridge fixup code was copied from ppc4xx_pci.c and was writte=
n
> + * by Benjamin Herrenschmidt.
> + * Copyright 2007 Ben. Herrenschmidt <benh@kernel.crashing.org>, IBM Cor=
p.
> + *
> + * This file is licensed under the terms of the GNU General Public Licen=
se
> + * version 2. This program is licensed "as is" without any warranty of a=
ny
> + * kind, whether express or implied.
> + */
> +
> +#include <linux/pci.h>
> +#include <mm/mmu_decl.h>
> +#include <asm/io.h>
> +
> +#define XPLB_PCI_ADDR 0x10c
> +#define XPLB_PCI_DATA 0x110
> +#define XPLB_PCI_BUS =A00x114
> +
> +#define PCI_HOST_ENABLE_CMD PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_=
COMMAND_MASTER | PCI_COMMAND_MEMORY
> +
> +static void fixup_virtex_pci_bridge(struct pci_dev *dev)
> +{
> + =A0 =A0 =A0 struct pci_controller *hose;
> + =A0 =A0 =A0 int i;
> +
> + =A0 =A0 =A0 if (dev->devfn || dev->bus->self)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
> +
> + =A0 =A0 =A0 hose =3D pci_bus_to_host(dev->bus);
> + =A0 =A0 =A0 if (!hose)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
> +
> + =A0 =A0 =A0 if(!of_device_is_compatible(hose->dn, "xlnx,plbv46-pci-1.03=
.a"))
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
> +
> + =A0 =A0 =A0 /* Hide the PCI host BARs from the kernel as their content =
doesn't
> + =A0 =A0 =A0 =A0* fit well in the resource management
> + =A0 =A0 =A0 =A0*/
> + =A0 =A0 =A0 for (i =3D 0; i < DEVICE_COUNT_RESOURCE; i++)
> + =A0 =A0 =A0 {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 dev->resource[i].start =3D 0;
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 dev->resource[i].end =3D 0;
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 dev->resource[i].flags =3D 0;
> + =A0 =A0 =A0 }
> +
> + =A0 =A0 =A0 dev_info(&dev->dev, "PCI: Hiding Xilinx plb-pci host bridge=
 resources %s\n", pci_name(dev));
> +}
> +DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, fixup_virtex_pci_bridge=
);
> +
> +void virtex_pci_init(void)
> +{
> + =A0 =A0 =A0 struct pci_controller *hose;
> + =A0 =A0 =A0 struct resource r;
> + =A0 =A0 =A0 void __iomem *pci_reg;
> + =A0 =A0 =A0 struct device_node *pci_node =3D of_find_compatible_node(NU=
LL, NULL, "xlnx,plbv46-pci-1.03.a");
> +
> + =A0 =A0 =A0 if(!pci_node)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
> +
> + =A0 =A0 =A0 printk("Found a Xilinx plb-pci host bridge\n");
> +
> + =A0 =A0 =A0 if(of_address_to_resource(pci_node, 0, &r))
> + =A0 =A0 =A0 {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 printk("No address for Xilinx plb-pci host =
bridge\n");
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
> + =A0 =A0 =A0 }
> +
> + =A0 =A0 =A0 hose =3D pcibios_alloc_controller(pci_node);
> + =A0 =A0 =A0 if (!hose)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return;
> +
> + =A0 =A0 =A0 hose->first_busno =3D 0;
> + =A0 =A0 =A0 hose->last_busno =3D 0;
> +
> + =A0 =A0 =A0 /* Setup config space */
> + =A0 =A0 =A0 setup_indirect_pci(hose, r.start + XPLB_PCI_ADDR, r.start +=
 XPLB_PCI_DATA, PPC_INDIRECT_TYPE_SET_CFG_TYPE);
> +
> + =A0 =A0 =A0 /* According to the xilinx plbv46_pci documentation the sof=
t-core starts
> + =A0 =A0 =A0 =A0* a self-init when the bus master enable bit is set. Wit=
hout this bit
> + =A0 =A0 =A0 =A0* set the pci bus can't be scanned.
> + =A0 =A0 =A0 =A0*/
> + =A0 =A0 =A0 early_write_config_word(hose, 0, 0, PCI_COMMAND, PCI_HOST_E=
NABLE_CMD);
> +
> + =A0 =A0 =A0 /* Set the max latency timer to 255 */
> + =A0 =A0 =A0 early_write_config_byte(hose, 0, 0, PCI_LATENCY_TIMER, 0xff=
);
> +
> + =A0 =A0 =A0 /* Set the max bus number to 255 */
> + =A0 =A0 =A0 pci_reg =3D of_iomap(pci_node, 0);
> + =A0 =A0 =A0 out_8(pci_reg + XPLB_PCI_BUS, 0xff);
> + =A0 =A0 =A0 iounmap(pci_reg);
> +
> + =A0 =A0 =A0 /* Register the host bridge with the linux kernel! */
> + =A0 =A0 =A0 pci_process_bridge_OF_ranges(hose, pci_node, 1);
> +}
> --
> 1.5.6.3
>
>
>
>



--=20
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

^ permalink raw reply

* [PATCH] fsldma: fix infinite loop on multi-descriptor DMA chain completion
From: Ira Snyder @ 2009-05-15 21:27 UTC (permalink / raw)
  To: Dan Williams, Li Yang, linuxppc-dev

When creating a DMA transaction with multiple descriptors, the async_tx
cookie is set to 0 for each descriptor in the chain, excluding the last
descriptor, whose cookie is set to -EBUSY.

When fsl_dma_tx_submit() is run, it only assigns a cookie to the first
descriptor. All of the remaining descriptors keep their original value,
including the last descriptor, which is set to -EBUSY.

After the DMA completes, the driver will update the last completed cookie
to be -EBUSY, which is an error code instead of a valid cookie. This causes
dma_async_is_complete() to always return DMA_IN_PROGRESS.

This causes the fsldma driver to never cleanup the queue of link
descriptors, and the driver will re-run the DMA transaction on the hardware
each time it receives the End-of-Chain interrupt. This causes an infinite
loop.

With this patch, fsl_dma_tx_submit() is changed to assign a cookie to every
descriptor in the chain. The rest of the code then works without problems.

Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
---

I discovered this bug while working to add DMA_SLAVE support to the
fsldma driver.

Steps to reproduce:
1) #define DEBUG 1
2) #define FSL_DMA_LD_DEBUG 1
3) change FSL_DMA_BCR_MAX_CNT to (1 << 18)
4) add code to print the cookie while dumping LDs in issue_pending()
5) create a single memcpy transaction 1MB in length

You will see that the cookie for the first transaction gets set to a
non-negative value, and the rest of the cookies are 0 or -EBUSY.

The driver will now keep re-submitting the LD queue forever, and your
machine will lock up. The message "xfer LDs starting from XXXXXXXX" will
be continuously printed to the kernel log.

 drivers/dma/fsldma.c |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
index dba0b58..de0e5c8 100644
--- a/drivers/dma/fsldma.c
+++ b/drivers/dma/fsldma.c
@@ -318,8 +318,8 @@ static void fsl_chan_toggle_ext_start(struct fsl_dma_chan *fsl_chan, int enable)
 
 static dma_cookie_t fsl_dma_tx_submit(struct dma_async_tx_descriptor *tx)
 {
-	struct fsl_desc_sw *desc = tx_to_fsl_desc(tx);
 	struct fsl_dma_chan *fsl_chan = to_fsl_chan(tx->chan);
+	struct fsl_desc_sw *desc;
 	unsigned long flags;
 	dma_cookie_t cookie;
 
@@ -327,14 +327,17 @@ static dma_cookie_t fsl_dma_tx_submit(struct dma_async_tx_descriptor *tx)
 	spin_lock_irqsave(&fsl_chan->desc_lock, flags);
 
 	cookie = fsl_chan->common.cookie;
-	cookie++;
-	if (cookie < 0)
-		cookie = 1;
-	desc->async_tx.cookie = cookie;
-	fsl_chan->common.cookie = desc->async_tx.cookie;
-
-	append_ld_queue(fsl_chan, desc);
-	list_splice_init(&desc->async_tx.tx_list, fsl_chan->ld_queue.prev);
+	list_for_each_entry(desc, &tx->tx_list, node) {
+		cookie++;
+		if (cookie < 0)
+			cookie = 1;
+
+		desc->async_tx.cookie = cookie;
+	}
+
+	fsl_chan->common.cookie = cookie;
+	append_ld_queue(fsl_chan, tx_to_fsl_desc(tx));
+	list_splice_init(&tx->tx_list, fsl_chan->ld_queue.prev);
 
 	spin_unlock_irqrestore(&fsl_chan->desc_lock, flags);
 
-- 
1.5.4.3

^ permalink raw reply related

* Re: Delay on intialization ide subsystem(most likely)
From: Andrey Gusev @ 2009-05-15 20:40 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz; +Cc: linux-ide, petkovbb, linuxppc-dev
In-Reply-To: <200905132046.33663.bzolnier@gmail.com>

On Wed, 13 May 2009 20:46:33 +0200
Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> wrote:

> On Wednesday 13 May 2009 19:11:23 Andrey Gusev wrote:
> > On Wed, 13 May 2009 15:28:26 +0200
> > Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> wrote:
> > 
> > > On Tuesday 12 May 2009 21:50:24 Andrey Gusev wrote:
> > > > On Mon, 27 Apr 2009 23:21:48 +0200
> > > > Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> wrote:
> > > > 
> > > > > On Monday 27 April 2009 22:36:45 Andrey Gusev wrote:
> > > > > > On Sat, 25 Apr 2009 16:48:38 +0200
> > > > > > Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> wrote:
> > > > > > 
> > > > > > > 
> > > > > > > Hi,
> > > > > > > 
> > > > > > > On Saturday 25 April 2009 15:02:03 Andrey Gusev wrote:
> > > > > > > > Hello!
> > > > > > > > 
> > > > > > > > I have tested linux-2.6.30-rc3 on my system and find
> > > > > > > > some problems. One of them is delaying on
> > > > > > > > initialization IDE subsystem. I don't have this problem
> > > > > > > > on 2.6.29.1. The difference is looked on log of dmesg.
> > > > > > > 
> > > > > > > Unfortunately this doesn't give us any hint about the root
> > > > > > > cause of the bug so please try narrowing the problem down
> > > > > > > to the specific change using git-bisect (sorry, there
> > > > > > > were 212 drivers/ide/ commits during v2.6.29..v2.6.30-rc3
> > > > > > > and much much more non-drivers/ide/ ones).
> > > > > > > 
> > > > > > > Thanks,
> > > > > > > Bart
> > > > > > > 
> > > > > > 
> > > > > > Hello!
> > > > > > 
> > > > > > 
> > > > > > The full result of bisect is:
> > > > > > 
> > > > > > 
> > > > > > git bisect start
> > > > > > # good: [8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84] Linux
> > > > > > 2.6.29 git bisect good
> > > > > > 8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84 # bad:
> > > > > > [091069740304c979f957ceacec39c461d0192158] Linux 2.6.30-rc3
> > > > > > git bisect bad 091069740304c979f957ceacec39c461d0192158 #
> > > > > > good: [40f07111be99b71c1e8d40c13cdc38445add787f] V4L/DVB
> > > > > > (11166): pvrusb2: Implement status fetching from
> > > > > > sub-devices git bisect good
> > > > > > 40f07111be99b71c1e8d40c13cdc38445add787f # good:
> > > > > > [ba0e1ebb7ea0616eebc29d2077355bacea62a9d8] Staging: sxg:
> > > > > > slicoss: Specify the license for Sahara SXG and Slicoss
> > > > > > drivers git bisect good
> > > > > > ba0e1ebb7ea0616eebc29d2077355bacea62a9d8
> > > > > > 
> > > > > > 
> > > > > > git bisect start 'drivers/ide/'
> > > > > 
> > > > > Please note that limiting search space to drivers/ide/ may not
> > > > > give reliable results in case problem was introduced by some
> > > > > other kernel area.
> > > > > 
> > > > > > # good: [ba0e1ebb7ea0616eebc29d2077355bacea62a9d8] Staging:
> > > > > > sxg: slicoss: Specify the license for Sahara SXG and
> > > > > > Slicoss drivers git bisect good
> > > > > > ba0e1ebb7ea0616eebc29d2077355bacea62a9d8 # bad:
> > > > > > [091069740304c979f957ceacec39c461d0192158] Linux 2.6.30-rc3
> > > > > > git bisect bad 091069740304c979f957ceacec39c461d0192158 #
> > > > > > good: [e01f251fd09fa7cb3d352eac7de17bb5d5bd1f9d] ide-cd:
> > > > > > convert cdrom_decode_status() to use switch statements git
> > > > > > bisect good e01f251fd09fa7cb3d352eac7de17bb5d5bd1f9d #
> > > > > > good: [3153c26b54230d025c6d536e8d3015def4524906] ide:
> > > > > > refactor tf_read() method git bisect good
> > > > > > 3153c26b54230d025c6d536e8d3015def4524906 # good:
> > > > > > [c018f1ee5cf81e58b93d9e93a2ee39cad13dc1ac] hpt366: fix
> > > > > > HPT370 DMA timeouts git bisect good
> > > > > > c018f1ee5cf81e58b93d9e93a2ee39cad13dc1ac # bad:
> > > > > > [d5f840bf74c09ca5a31e518c9d984999926b5f44] ide: Remove void
> > > > > > casts git bisect bad
> > > > > > d5f840bf74c09ca5a31e518c9d984999926b5f44 # bad:
> > > > > > [59c8d04f5ee97ea46da854e9adbbaa45d988c39d] hpt366: use
> > > > > > ATA_DMA_* constants git bisect bad
> > > > > > 59c8d04f5ee97ea46da854e9adbbaa45d988c39d
> > > > > 
> > > > > Uhh.. something went wrong during bisect.
> > > > > 
> > > > > "hpt366: use ATA_DMA_* constants" cannot be a first bad commit
> > > > > because hpt366 is not even used on this system.
> > > > > 
> > > > > Could it be that the delay doesn't happen on every boot for
> > > > > "bad" kernels?
> > > > > 
> > > > > Also, is 2.6.30-rc1 okay?
> > > > > 
> > > > > Thanks,
> > > > > Bart
> > > > > 
> > > > 
> > > > Hello all!
> > > > 
> > > > I continue to find reason of bug. I made more testing with
> > > > bisect and got result:
> > > > 
> > > > git bisect start
> > > > # bad: [c018f1ee5cf81e58b93d9e93a2ee39cad13dc1ac] hpt366: fix
> > > > HPT370 DMA timeouts git bisect bad
> > > >  # good:
> > > > [fb4252e59452c18b88af014a2c4ee697bbf8cbc6] at91_ide: turn on
> > > > PIO 6 support git bisect good
> > > > fb4252e59452c18b88af014a2c4ee697bbf8cbc6 # good:
> > > > [2e1c63b7ed36532b68f0eddd6a184d7ba1013b89] Merge branch
> > > > 'for-rc1/xen/core' of
> > > > git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen git
> > > > bisect good 2e1c63b7ed36532b68f0eddd6a184d7ba1013b89 # bad:
> > > > [cd97824994042b809493807ea644ba26c0c23290] Merge
> > > > git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 git
> > > > bisect bad cd97824994042b809493807ea644ba26c0c23290 # bad:
> > > > [a2c252ebdeaab28c9b400570594d576dae295958] Merge
> > > > git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes
> > > > git bisect bad a2c252ebdeaab28c9b400570594d576dae295958 # good:
> > > > [b897e6fbc49dd84b2634bca664344d503b907ce9] Merge branch
> > > > 'drm-intel-next' of
> > > > git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel
> > > > git bisect good b897e6fbc49dd84b2634bca664344d503b907ce9 #
> > > > good: [dfbc4752eab33e66f113f9daa2effbe241cd661d] brd: support
> > > > barriers git bisect good
> > > > dfbc4752eab33e66f113f9daa2effbe241cd661d # good:
> > > > [a23c218bd36e11120daf18e00a91d5dc20e288e6] Merge branch 'merge'
> > > > of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
> > > > git bisect good a23c218bd36e11120daf18e00a91d5dc20e288e6 #
> > > > good: [23da64b4714812b66ecf010e7dfb3ed1bf2eda69] Merge branch
> > > > 'for-linus' of git://git.kernel.dk/linux-2.6-block git bisect
> > > > good 23da64b4714812b66ecf010e7dfb3ed1bf2eda69 # good:
> > > > [a228df6339e0d385b8149c860d81b6007f5e9c81] GFS2: Move umount
> > > > flush rwsem git bisect good
> > > > a228df6339e0d385b8149c860d81b6007f5e9c81 # skip:
> > > > [1328df725239804ae30fc7257c1a3185e679b517] GFS2: Use
> > > > DEFINE_SPINLOCK git bisect skip
> > > > 1328df725239804ae30fc7257c1a3185e679b517 # good:
> > > > [10d2198805d7faa2b193485446ff6b1de42c9b78] GFS2: cleanup
> > > > file_operations mess git bisect good
> > > > 10d2198805d7faa2b193485446ff6b1de42c9b78
> > > > 
> > > > As I understand, I found bad commit, but it includes 5 commits.
> > > > I checked them and they are good. So, I did git checkout
> > > > a2c252ebdeaab28c9b400570594d576dae295958 and test one more time
> > > > this commit. I found that bag is unstable. The boot can be bad
> > > > or good on this commit. I compared dmesg of 'bad' and 'good'
> > > > booting, but it is equal till delay. 
> > > 
> > > Thanks for doing it.
> > > 
> > > > Any suggestions?
> > > 
> > > Hard to tell...
> > > 
> > > I went through all commits in-between
> > > 
> > > 	fb4252e59452c18b88af014a2c4ee697bbf8cbc6
> > > 
> > > and
> > > 
> > > 	a2c252ebdeaab28c9b400570594d576dae295958
> > > 
> > > and there are no obvious candidates..
> > > 
> > > Could you please refresh my memory and tell me whether 2.6.30-rc2
> > > was OK?
> > > 
> > 
> > It was ok, but I don't sure now. I tested only one boot, but this
> > problem is not stable. I am rechecking it.
> 
> Ok.
> 
> Please also recheck first 'good' commit if 2.6.30-rc2 turns out to be
> 'bad'.

My last testing is very interesting. I check boot of each kernel at
least 10 times. I checked 2.6.30-rc2, it is good. Rest results:

git bisect start
# good: [0882e8dd3aad33eca41696d463bb896e6c8817eb] Linux 2.6.30-rc2
git bisect good 0882e8dd3aad33eca41696d463bb896e6c8817eb
# bad: [a2c252ebdeaab28c9b400570594d576dae295958] Merge
git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes git
bisect bad a2c252ebdeaab28c9b400570594d576dae295958 # good:
[c2572f2b4ffc27ba79211aceee3bef53a59bb5cd] brd: fix cacheflushing git
bisect good c2572f2b4ffc27ba79211aceee3bef53a59bb5cd # bad:
[b71a0c296cee4debaf446760fbd29ead1587a7ac] powerpc: pseries/dtl.c
should include asm/firmware.h git bisect bad
b71a0c296cee4debaf446760fbd29ead1587a7ac

Last commit had delay only on 10 time, but it ripped my system, I can't
read any place on my hard drive. I can't mount any other device on it.
Fortunately, I have tmpfs and I mounted second hard disk on it place.
After my computer didn't turn on. It looks like dead drive or
controller, but after on/off and replace disks, it has alived. Below
is log of this bad boot.
[    0.000000] Using PowerMac machine description
[    0.000000] Total memory = 1536MB; using 4096kB for hash table (at cfc00000)
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.29 (andrey@power-debian) (gcc version 4.3.3 (Debian 4.3.3-3) ) #22 SMP PREEMPT Thu May 14 03:38:55 MSD 2009
[    0.000000] Found initrd at 0xc1a00000:0xc1f18000
[    0.000000] Found UniNorth memory controller & host bridge @ 0xf8000000 revision: 0x24
[    0.000000] Mapped at 0xff7c0000
[    0.000000] Found a Keylargo mac-io controller, rev: 3, mapped at 0xff740000
[    0.000000] PowerMac motherboard: PowerMac G4 Windtunnel
[    0.000000] CPU maps initialized for 1 thread per core
[    0.000000]  (thread shift is 0)
[    0.000000] console [udbg0] enabled
[    0.000000] Found UniNorth PCI host bridge at 0x00000000f0000000. Firmware bus number: 0->0
[    0.000000] PCI host bridge /pci@f0000000  ranges:
[    0.000000]  MEM 0x00000000f1000000..0x00000000f1ffffff -> 0x00000000f1000000 
[    0.000000]   IO 0x00000000f0000000..0x00000000f07fffff -> 0x0000000000000000
[    0.000000]  MEM 0x0000000090000000..0x00000000afffffff -> 0x0000000090000000 
[    0.000000] Found UniNorth PCI host bridge at 0x00000000f2000000. Firmware bus number: 0->0
[    0.000000] PCI host bridge /pci@f2000000 (primary) ranges:
[    0.000000]  MEM 0x00000000f3000000..0x00000000f3ffffff -> 0x00000000f3000000 
[    0.000000]   IO 0x00000000f2000000..0x00000000f27fffff -> 0x0000000000000000
[    0.000000]  MEM 0x0000000080000000..0x000000008fffffff -> 0x0000000080000000 
[    0.000000] Found UniNorth PCI host bridge at 0x00000000f4000000. Firmware bus number: 0->0
[    0.000000] PCI host bridge /pci@f4000000  ranges:
[    0.000000]  MEM 0x00000000f5000000..0x00000000f5ffffff -> 0x00000000f5000000 
[    0.000000]   IO 0x00000000f4000000..0x00000000f47fffff -> 0x0000000000000000
[    0.000000] via-pmu: Server Mode is disabled
[    0.000000] PMU driver v2 initialized for Core99, firmware: 0c
[    0.000000] nvram: Checking bank 0...
[    0.000000] nvram: gen0=1392, gen1=1391
[    0.000000] nvram: Active bank is: 0
[    0.000000] nvram: OF partition at 0x410
[    0.000000] nvram: XP partition at 0x1020
[    0.000000] nvram: NR partition at 0x1120
[    0.000000] Top of RAM: 0x60000000, Total RAM: 0x60000000
[    0.000000] Memory hole size: 0MB
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000000 -> 0x00030000
[    0.000000]   Normal   0x00030000 -> 0x00030000
[    0.000000]   HighMem  0x00030000 -> 0x00060000
[    0.000000] Movable zone start PFN for each node
[    0.000000] early_node_map[1] active PFN ranges
[    0.000000]     0: 0x00000000 -> 0x00060000
[    0.000000] On node 0 totalpages: 393216
[    0.000000] free_area_init_node: node 0, pgdat c042e0c0, node_mem_map c04a7000
[    0.000000]   DMA zone: 1536 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 195072 pages, LIFO batch:31
[    0.000000]   HighMem zone: 1536 pages used for memmap
[    0.000000]   HighMem zone: 195072 pages, LIFO batch:31
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 390144
[    0.000000] Kernel command line: root=/dev/mapper/power--group-root ro video=ofonly 
[    0.000000] Experimental hierarchical RCU implementation.
[    0.000000] Experimental hierarchical RCU init done.
[    0.000000] NR_IRQS:512
[    0.000000] mpic: Setting up MPIC " MPIC 1   " version 1.2 at 80040000, max 4 CPUs
[    0.000000] mpic: ISU size: 64, shift: 6, mask: 3f
[    0.000000] mpic: Initializing for 64 sources
[    0.000000] irq: irq 55 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 55
[    0.000000] PID hash table entries: 4096 (order: 12, 16384 bytes)
[    0.000000] GMT Delta read from XPRAM: 240 minutes, DST: on
[    0.000000] time_init: decrementer frequency = 33.304615 MHz
[    0.000000] time_init: processor frequency   = 866.666664 MHz
[    0.000000] clocksource: timebase mult[781a7d6] shift[22] registered
[    0.000000] clockevent: decrementer mult[886] shift[16] cpu[0]
[    0.000302] Console: colour dummy device 80x25
[    0.000470] console handover: boot [udbg0] -> real [tty0]
[    0.000705] irq: irq 22 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 22
[    0.000746] irq: irq 23 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 23
[    0.001702] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.002875] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.212638] High memory: 786432k
[    0.212649] Memory: 1544188k/1572864k available (4140k kernel code, 27588k reserved, 152k data, 332k bss, 236k init)
[    0.212804] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.212833] Calibrating delay loop... 66.56 BogoMIPS (lpj=332800)
[    0.430490] Security Framework initialized
[    0.430558] Mount-cache hash table entries: 512
[    0.431129] device-tree: Duplicate name in /cpus/PowerPC,G4@0/l2-cache, renamed to "l2-cache#1"
[    0.431233] device-tree: Duplicate name in /cpus/PowerPC,G4@0, renamed to "l2-cache#1"
[    0.431373] device-tree: Duplicate name in /cpus/PowerPC,G4@1/l2-cache, renamed to "l2-cache#1"
[    0.431470] device-tree: Duplicate name in /cpus/PowerPC,G4@1, renamed to "l2-cache#1"
[    0.434862] Initializing cgroup subsys ns
[    0.434879] Initializing cgroup subsys cpuacct
[    0.434892] Initializing cgroup subsys devices
[    0.434905] Initializing cgroup subsys freezer
[    0.435275] PowerMac SMP probe found 2 cpus
[    0.435390] irq: irq 42 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 42
[    0.435439] KeyWest i2c @0xf8001003 irq 42 /uni-n@f8000000/i2c@f8001000
[    0.435471]  channel 0 bus <multibus>
[    0.435483]  channel 1 bus <multibus>
[    0.435524] irq: irq 26 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 26
[    0.435540] KeyWest i2c @0x80018000 irq 26 /pci@f2000000/mac-io@17/i2c@18000
[    0.435561]  channel 0 bus <multibus>
[    0.435581] PMU i2c /pci@f2000000/mac-io@17/via-pmu@16000/pmu-i2c
[    0.435599]  channel 1 bus <multibus>
[    0.435612]  channel 2 bus <multibus>
[    0.435639] pmf: no parser for command 17 !
[    0.435701] Processor timebase sync using GPIO 0x73
[    0.435719] mpic: requesting IPIs ... 
[    0.435741] irq: irq 251 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 251
[    0.435759] irq: irq 252 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 252
[    0.435775] irq: irq 253 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 253
[    0.435792] irq: irq 254 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 254
[    0.435803] CPU0: L2CR is 80080000
[    0.435816] CPU0: L3CR is 8f0b0000
[477194871.574718] CPU1: L2CR was 80000
[477194871.574756] CPU1: L2CR set to 80080000
[477194871.574762] CPU1: L3CR was 0
[477194871.574923] CPU1: L3CR set to 8f0b0000
[    0.437467] Processor 1 found.
[    0.437528] clockevent: decrementer mult[886] shift[16] cpu[1]
[    0.437573] Brought up 2 CPUs
[    0.437747] CPU0 attaching sched-domain:
[    0.437757]  domain 0: span 0-1 level CPU
[    0.437766]   groups: 0 1
[    0.437783] CPU1 attaching sched-domain:
[    0.437790]  domain 0: span 0-1 level CPU
[    0.437797]   groups: 1 0
[    0.458104] net_namespace: 568 bytes
[    0.458801] NET: Registered protocol family 16
[    0.459386] irq: irq 25 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 25
[    0.459438] irq: irq 47 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 47
[    0.459775] PCI: Probing PCI hardware
[    0.459993] pci 0000:00:10.0: reg 10 32bit mmio: [0x91000000-0x91ffffff]
[    0.460006] pci 0000:00:10.0: reg 14 32bit mmio: [0x98000000-0x9fffffff]
[    0.460018] pci 0000:00:10.0: reg 18 32bit mmio: [0x000000-0x07ffff]
[    0.460041] pci 0000:00:10.0: reg 30 32bit mmio: [0x90000000-0x9001ffff]
[    0.460141] irq: irq 48 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 48
[    0.460450] pci 0001:10:17.0: reg 10 32bit mmio: [0x80000000-0x8007ffff]
[    0.460514] pci 0001:10:18.0: reg 10 32bit mmio: [0x80081000-0x80081fff]
[    0.460578] pci 0001:10:19.0: reg 10 32bit mmio: [0x80080000-0x80080fff]
[    0.460683] irq: irq 27 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 27
[    0.460727] irq: irq 28 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 28
[    0.461164] pci 0002:20:0d.0: reg 10 32bit mmio: [0xf5004000-0xf5007fff]
[    0.461231] pci 0002:20:0e.0: reg 10 32bit mmio: [0xf5000000-0xf5000fff]
[    0.461278] pci 0002:20:0e.0: supports D1 D2
[    0.461285] pci 0002:20:0e.0: PME# supported from D0 D1 D2 D3hot
[    0.461309] pci 0002:20:0e.0: PME# disabled
[    0.461348] pci 0002:20:0f.0: reg 10 32bit mmio: [0xf5200000-0xf53fffff]
[    0.461378] pci 0002:20:0f.0: reg 30 32bit mmio: [0xf5100000-0xf51fffff]
[    0.461457] irq: irq 39 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 39
[    0.461493] irq: irq 40 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 40
[    0.461533] irq: irq 41 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 41
[    0.461931] pci_bus 0000:00: resource 0 io:  [0x802000-0x1001fff]
[    0.461940] pci_bus 0000:00: resource 1 mem: [0xf1000000-0xf1ffffff]
[    0.461949] pci_bus 0000:00: resource 2 mem: [0x90000000-0xafffffff]
[    0.461958] pci_bus 0001:10: resource 0 io:  [0x00-0x7fffff]
[    0.461966] pci_bus 0001:10: resource 1 mem: [0xf3000000-0xf3ffffff]
[    0.461974] pci_bus 0001:10: resource 2 mem: [0x80000000-0x8fffffff]
[    0.461983] pci_bus 0002:20: resource 0 io:  [0xff7fe000-0xffffdfff]
[    0.461991] pci_bus 0002:20: resource 1 mem: [0xf5000000-0xf5ffffff]
[    0.463373] bio: create slab <bio-0> at 0
[    0.464123] usbcore: registered new interface driver usbfs
[    0.464207] usbcore: registered new interface driver hub
[    0.464422] usbcore: registered new device driver usb
[    0.508335] NET: Registered protocol family 2
[    0.517669] Switched to high resolution mode on CPU 0
[    0.527669] Switched to high resolution mode on CPU 1
[    0.617829] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.618895] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.621231] TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
[    0.622941] TCP: Hash tables configured (established 131072 bind 65536)
[    0.622971] TCP reno registered
[    0.647915] NET: Registered protocol family 1
[    0.648172] checking if image is initramfs...
[    0.987012] rootfs image is initramfs; unpacking...
[    0.987066] Freeing initrd memory: 5216k freed
[    0.988169] Thermal assist unit not available
[    0.988468] setup_kcore: restrict size=3fffffff
[    0.988750] audit: initializing netlink socket (disabled)
[    0.988807] type=2000 audit(1242269633.980:1): initialized
[    0.990677] highmem bounce pool size: 64 pages
[    0.995185] VFS: Disk quotas dquot_6.5.2
[    0.995441] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.996211] msgmni has been set to 1492
[    0.997485] alg: No test for stdrng (krng)
[    1.000150] alg: No test for stdrng (ansi_cprng)
[    1.000238] io scheduler noop registered
[    1.000270] io scheduler anticipatory registered
[    1.000286] io scheduler deadline registered
[    1.000347] io scheduler cfq registered (default)
[    1.000606] Using unsupported 640x480 NVDA,Display-B at 98004000, depth=8, pitch=1024
[    1.005902] Console: switching to colour frame buffer device 80x30
[    1.010427] fb0: Open Firmware frame buffer device on /pci@f0000000/NVDA,Parent@10/NVDA,Display-B@1
[    1.010699] Using unsupported 640x480 NVDA,Display-A at 99000000, depth=8, pitch=640
[    1.010998] fb1: Open Firmware frame buffer device on /pci@f0000000/NVDA,Parent@10/NVDA,Display-A@0
[    1.018282] Generic non-volatile memory driver v1.1
[    1.020794] Linux agpgart interface v0.103
[    1.023223] agpgart-uninorth 0000:00:0b.0: Apple UniNorth 2 chipset
[    1.025864] agpgart-uninorth 0000:00:0b.0: configuring for size idx: 8
[    1.028475] agpgart-uninorth 0000:00:0b.0: AGP aperture is 32M @ 0x0
[    1.030957] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    1.033777] pmac_zilog: 0.6 (Benjamin Herrenschmidt <benh@kernel.crashing.org>)
[    1.038780] ttyPZ0 at MMIO 0x80013020 (irq = 22) is a Z85c30 ESCC - Serial port
[    1.043994] ttyPZ1 at MMIO 0x80013000 (irq = 23) is a Z85c30 ESCC - Serial port
[    1.051577] brd: module loaded
[    1.055241] loop: module loaded
[    1.058028] MacIO PCI driver attached to Keylargo chipset
[    1.061160] irq: irq 32 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 32
[    1.061428] irq: irq 19 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 19
[    1.061452] irq: irq 11 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 16
[    1.061561] irq: irq 20 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 20
[    1.061584] irq: irq 12 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 17
[    1.061699] irq: irq 5 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 18
[    1.061723] irq: irq 6 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 21
[    1.061894] irq: irq 7 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 24
[    1.061918] irq: irq 8 on host /pci@f2000000/mac-io@17/interrupt-controller@40000 mapped to virtual irq 29
[    1.062392] input: Macintosh mouse button emulation as /class/input/input0
[    1.065414] Uniform Multi-Platform E-IDE driver
[    1.068180] ide-pmac 0002:20:0d.0: enabling device (0000 -> 0002)
[    1.071060] adb: starting probe task...
[    1.073637] adb: finished probe task...
[    2.097662] ide-pmac: Found Apple UniNorth ATA-6 controller (PCI), bus ID 3, irq 39
[    2.102451] Probing IDE interface ide0...
[    2.407838] hda: IBM-IC35L060AVVA07-0, ATA DISK drive
[    2.767650] hdb: QUANTUM FIREBALLP LM20.5, ATA DISK drive
[    2.770169] hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[    2.770346] hda: UDMA/100 mode selected
[    2.772898] hdb: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[    2.773144] hdb: UDMA/66 mode selected
[    2.775837] ide0 at 0xf1012000-0xf1012070,0xf1012160 on irq 39
[   67.637652] ide-pmac: Found Apple KeyLargo ATA-4 controller (macio), bus ID 2, irq 19
[   67.642398] Probing IDE interface ide1...
[   68.247755] ide1 at 0xf100e000-0xf100e070,0xf100e160 on irq 19
[  133.147657] ide-pmac: Found Apple KeyLargo ATA-3 controller (macio), bus ID 0, irq 20
[  133.152394] Probing IDE interface ide2...
[  133.577834] hde: PHILIPS CDD5101, ATAPI CD/DVD-ROM drive
[  133.937729] hde: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[  133.938126] hde: MWDMA2 mode selected
[  133.941426] ide2 at 0xf1016000-0xf1016070,0xf1016160 on irq 20
[  133.944047] ide-gd driver 1.18
[  133.946512] hda: max request size: 128KiB
[  197.687709] hda: 120103200 sectors (61492 MB) w/1863KiB Cache, CHS=65535/16/63
[  197.692702] hda: cache flushes supported
[  197.695404]  hda: [mac] hda1 hda2 hda3 hda4
[  197.717823] hdb: max request size: 128KiB
[  197.750301] hdb: 40132503 sectors (20547 MB) w/1900KiB Cache, CHS=39813/16/63
[  197.752759] hdb: cache flushes not supported
[  197.755223]  hdb:<3>ide-pmac lost interrupt, dma status: 8480
[  217.750084] hdb: lost interrupt
[  217.752469] hdb: dma_intr: status=0x58 { DriveReady SeekComplete DataRequest }
[  217.757462] ide: failed opcode was: unknown
[  217.762340] hda: DMA disabled
[  217.764699] hdb: DMA disabled
[  217.897615] ide0: reset: success
[  217.945789]  hdb1 hdb2 < hdb5 hdb6 hdb7 hdb8 >
[  218.008239] ide-cd driver 5.00
[  218.012452] ide-cd: hde: ATAPI 32X DVD-ROM CD-R/RW drive, 8192kB Cache
[  218.014675] Uniform CD-ROM driver Revision: 3.20
[  218.041570] sungem.c:v0.98 8/24/03 David S. Miller (davem@redhat.com)
[  218.118025] PHY ID: 2060e1, addr: 0
[  218.128186] eth0: Sun GEM (PCI) 10/100/1000BaseT Ethernet 00:03:93:ab:d1:a6
[  218.130518] eth0: Found BCM5421 PHY
[  218.132799] I2O subsystem v1.325
[  218.134926] i2o: max drivers = 8
[  218.138279] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[  218.140626] ohci_hcd 0001:10:18.0: enabling device (0000 -> 0002)
[  218.142880] ohci_hcd 0001:10:18.0: OHCI Host Controller
[  218.157628] ohci_hcd 0001:10:18.0: new USB bus registered, assigned bus number 1
[  218.161892] ohci_hcd 0001:10:18.0: irq 27, io mem 0x80081000
[  218.240030] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
[  218.242268] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  218.246509] usb usb1: Product: OHCI Host Controller
[  218.248722] usb usb1: Manufacturer: Linux 2.6.29 ohci_hcd
[  218.251023] usb usb1: SerialNumber: 0001:10:18.0
[  218.255152] usb usb1: configuration #1 chosen from 1 choice
[  218.257615] hub 1-0:1.0: USB hub found
[  218.259953] hub 1-0:1.0: 2 ports detected
[  218.264399] ohci_hcd 0001:10:19.0: enabling device (0000 -> 0002)
[  218.266706] ohci_hcd 0001:10:19.0: OHCI Host Controller
[  218.269059] ohci_hcd 0001:10:19.0: new USB bus registered, assigned bus number 2
[  218.273371] ohci_hcd 0001:10:19.0: irq 28, io mem 0x80080000
[  218.349992] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[  218.352364] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  218.356914] usb usb2: Product: OHCI Host Controller
[  218.359266] usb usb2: Manufacturer: Linux 2.6.29 ohci_hcd
[  218.361639] usb usb2: SerialNumber: 0001:10:19.0
[  218.364050] usb usb2: configuration #1 chosen from 1 choice
[  218.366407] hub 2-0:1.0: USB hub found
[  218.368610] hub 2-0:1.0: 2 ports detected
[  218.403137] mice: PS/2 mouse device common for all mice
[  218.405426] rtc-generic rtc-generic: rtc core: registered rtc-generic as rtc0
[  218.408136] i2c /dev entries driver
[  218.410538] PowerMac i2c bus pmu 2 registered
[  218.412830] PowerMac i2c bus pmu 1 registered
[  218.415060] PowerMac i2c bus mac-io 0 registered
[  218.417229] PowerMac i2c bus uni-n 1 registered
[  218.419451] PowerMac i2c bus uni-n 0 registered
[  218.422341] usbcore: registered new interface driver hiddev
[  218.425132] usbcore: registered new interface driver usbhid
[  218.427106] usbhid: v2.6:USB HID core driver
[  218.430307] TCP cubic registered
[  218.432145] NET: Registered protocol family 17
[  218.435219] registered taskstats version 1
[  218.437607] input: PMU as /class/input/input1
[  218.450373] rtc-generic rtc-generic: setting system clock to 2009-05-14 06:57:32 UTC (1242284252)
[  218.453954] Freeing unused kernel memory: 236k init
[  218.617681] usb 1-1: new low speed USB device using ohci_hcd and address 2
[  218.816162] usb 1-1: New USB device found, idVendor=0458, idProduct=002e
[  218.821254] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  218.823404] usb 1-1: Product: NetScroll+ Traveler
[  218.825530] usb 1-1: Manufacturer: KYE
[  218.827942] usb 1-1: configuration #1 chosen from 1 choice
[  218.843184] input: KYE NetScroll+ Traveler as /class/input/input2
[  218.867896] generic-usb 0003:0458:002E.0001: input,hidraw0: USB HID v1.10 Mouse [KYE NetScroll+ Traveler] on usb-0001:10:18.0-1/input0
[  219.017769] usb 2-1: new full speed USB device using ohci_hcd and address 2
[  219.206195] usb 2-1: New USB device found, idVendor=05e3, idProduct=0608
[  219.209052] usb 2-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[  219.211730] usb 2-1: Product: USB2.0 Hub
[  219.214744] usb 2-1: configuration #1 chosen from 1 choice
[  219.218282] hub 2-1:1.0: USB hub found
[  219.222182] hub 2-1:1.0: 4 ports detected
[  219.538191] usb 2-1.1: new full speed USB device using ohci_hcd and address 3
[  219.676147] usb 2-1.1: New USB device found, idVendor=05e3, idProduct=0608
[  219.678837] usb 2-1.1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[  219.683905] usb 2-1.1: Product: USB2.0 Hub
[  219.686618] usb 2-1.1: configuration #1 chosen from 1 choice
[  219.691245] hub 2-1.1:1.0: USB hub found
[  219.694174] hub 2-1.1:1.0: 4 ports detected
[  219.812810] ieee1394: module_layout: kernel tainted.
[  219.857852] ohci1394 0002:20:0e.0: enabling device (0000 -> 0002)
[  219.922300] ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[40]  MMIO=[f5000000-f50007ff]  Max Packet=[2048]  IR/IT contexts=[8/8]
[  219.990141] usb 2-1.1.1: new low speed USB device using ohci_hcd and address 4
[  220.120169] usb 2-1.1.1: New USB device found, idVendor=04d9, idProduct=0022
[  220.122656] usb 2-1.1.1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[  220.127345] usb 2-1.1.1: Product: USB Keyboard
[  220.129973] usb 2-1.1.1: configuration #1 chosen from 1 choice
[  220.144320] input: USB Keyboard as /class/input/input3
[  220.167879] generic-usb 0003:04D9:0022.0002: input,hidraw1: USB HID v1.10 Keyboard [USB Keyboard] on usb-0001:10:19.0-1.1.1/input0
[  220.193383] input: USB Keyboard as /class/input/input4
[  220.217831] generic-usb 0003:04D9:0022.0003: input,hidraw2: USB HID v1.10 Device [USB Keyboard] on usb-0001:10:19.0-1.1.1/input1
[  220.520512] eth0: Link is up at 100 Mbps, full-duplex.
[  220.833728] device-mapper: uevent: version 1.0.3
[  220.839499] device-mapper: ioctl: 4.14.0-ioctl (2008-04-23) initialised: dm-devel@redhat.com
[  221.300357] ieee1394: Host added: ID:BUS[0-00:1023]  GUID[000393fffeabd1a6]
[  248.319095] device-mapper: table: 254:0: crypt: Error allocating crypto tfm
[  248.321989] device-mapper: ioctl: error adding target to table
[  248.325455] device-mapper: ioctl: device doesn't appear to be in the dev hash table.
[  305.646186] kjournald starting.  Commit interval 5 seconds
[  305.646214] EXT3-fs: mounted filesystem with ordered data mode.
[  309.608189] udev: starting version 141
[  309.612897] udev: deprecated sysfs layout; update the kernel or disable CONFIG_SYSFS_DEPRECATED; some udev features will not work correctly
[  316.600821] EXT3 FS on dm-1, internal journal
[  317.696928] SCSI subsystem initialized
[  317.776899] DS1775 digital thermometer [@49]
[  317.779409] Temp: 52.2 C  Hyst: 60.0 C  OS: 65.0 C
[  317.782998] ADM1030 fan controller [@2c]
[  322.891056] kjournald starting.  Commit interval 5 seconds
[  322.892158] EXT3 FS on dm-3, internal journal
[  322.892180] EXT3-fs: mounted filesystem with ordered data mode.
[  322.939021] REISERFS (device dm-4): found reiserfs format "3.6" with standard journal
[  322.944332] REISERFS (device dm-4): using ordered data mode
[  322.954313] REISERFS (device dm-4): journal params: device dm-4, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
[  322.965326] REISERFS (device dm-4): checking transaction log (dm-4)
[  323.031967] REISERFS (device dm-4): Using r5 hash to sort names
[  323.160966] Adding 1048568k swap on /dev/mapper/power--group-swap_1.  Priority:-1 extents:1 across:1048568k 
[  325.461107] eth0: Link is up at 100 Mbps, full-duplex.
[  325.463883] eth0: Pause is enabled (rxfifo: 10240 off: 7168 on: 5632)
[  325.808809] CPU-temp: 52.2 C, Case: 32.0 C,  Fan: 0 (tuned -11)
[  344.162436] Process Xorg (pid:3051) mapped non-existing PCI legacy memory for 00000:00
[  471.307621] hda: irq timeout: status=0xc4 { Busy }
[  471.310558] ide: failed opcode was: unknown
[  471.367611] ide0: reset: master: error (0x08?)
[  476.390116] hda: status timeout: status=0xa0 { Busy }
[  476.393070] ide: failed opcode was: unknown
[  476.395884] hda: drive not ready for command
[  476.440117] ide0: reset: master: error (0x08?)
[  476.450278] end_request: I/O error, dev hda, sector 57379667
[  476.453129] end_request: I/O error, dev hda, sector 57379675
[  476.455901] end_request: I/O error, dev hda, sector 57379683
[  476.458617] end_request: I/O error, dev hda, sector 57379691
[  476.463376] end_request: I/O error, dev hda, sector 57379699
[  476.465985] end_request: I/O error, dev hda, sector 57379707
[  476.468519] end_request: I/O error, dev hda, sector 57379715
[  476.471171] end_request: I/O error, dev hda, sector 57379723
[  476.473607] end_request: I/O error, dev hda, sector 57379731
[  476.476000] end_request: I/O error, dev hda, sector 57379739
[  476.478329] end_request: I/O error, dev hda, sector 57379747
[  476.481274] end_request: I/O error, dev hda, sector 57379755
[  476.483381] end_request: I/O error, dev hda, sector 57379763
[  476.485372] end_request: I/O error, dev hda, sector 57379771
[  476.487239] end_request: I/O error, dev hda, sector 57379779
[  476.488990] end_request: I/O error, dev hda, sector 57379787
[  476.490850] end_request: I/O error, dev hda, sector 57379795
[  476.492433] end_request: I/O error, dev hda, sector 57379803
[  476.493908] end_request: I/O error, dev hda, sector 57379811
[  476.495343] end_request: I/O error, dev hda, sector 57379819
[  476.496686] end_request: I/O error, dev hda, sector 57379827
[  476.497963] end_request: I/O error, dev hda, sector 57379835
[  476.499138] end_request: I/O error, dev hda, sector 57379843
[  476.500468] end_request: I/O error, dev hda, sector 57379851
[  476.501502] end_request: I/O error, dev hda, sector 57379859
[  476.502474] end_request: I/O error, dev hda, sector 57379867
[  476.503382] end_request: I/O error, dev hda, sector 57379875
[  476.504230] end_request: I/O error, dev hda, sector 57379883
[  476.505032] end_request: I/O error, dev hda, sector 57379891
[  476.505776] end_request: I/O error, dev hda, sector 57379899
[  476.506437] end_request: I/O error, dev hda, sector 57379907
[  476.507100] end_request: I/O error, dev hda, sector 57379915
[  476.508251] end_request: I/O error, dev hda, sector 117093907
[  476.509223] end_request: I/O error, dev hda, sector 51253907
[  476.509924] Buffer I/O error on device dm-3, logical block 4259841
[  476.511085] lost page write due to I/O error on dm-3
[  476.511964] end_request: I/O error, dev hda, sector 51253947
[  476.512928] Buffer I/O error on device dm-3, logical block 4259846
[  476.513982] lost page write due to I/O error on dm-3
[  476.515108] end_request: I/O error, dev hda, sector 51455675
[  476.516340] Buffer I/O error on device dm-3, logical block 4285062
[  476.517668] lost page write due to I/O error on dm-3
[  476.519069] end_request: I/O error, dev hda, sector 57379795
[  476.520877] end_request: I/O error, dev hda, sector 5021603
[  476.522399] end_request: I/O error, dev hda, sector 5021611
[  476.523911] end_request: I/O error, dev hda, sector 5021619
[  476.525422] end_request: I/O error, dev hda, sector 5021627
[  476.526930] end_request: I/O error, dev hda, sector 5021635
[  476.528440] end_request: I/O error, dev hda, sector 5021643
[  476.529948] end_request: I/O error, dev hda, sector 5021651
[  476.531695] end_request: I/O error, dev hda, sector 5021659
[  476.533207] end_request: I/O error, dev hda, sector 5021667
[  476.534713] end_request: I/O error, dev hda, sector 5021675
[  476.536217] end_request: I/O error, dev hda, sector 5021683
[  476.537723] end_request: I/O error, dev hda, sector 5021691
[  476.539228] end_request: I/O error, dev hda, sector 5021699
[  476.540943] end_request: I/O error, dev hda, sector 5021707
[  476.540952] end_request: I/O error, dev hda, sector 5021715
[  476.540959] end_request: I/O error, dev hda, sector 5021723
[  476.540967] end_request: I/O error, dev hda, sector 5021731
[  476.540974] end_request: I/O error, dev hda, sector 5021739
[  476.540982] end_request: I/O error, dev hda, sector 5021747
[  476.540989] end_request: I/O error, dev hda, sector 5021755
[  476.540996] end_request: I/O error, dev hda, sector 5021763
[  476.541004] end_request: I/O error, dev hda, sector 5021771
[  476.541011] end_request: I/O error, dev hda, sector 5021779
[  476.541018] end_request: I/O error, dev hda, sector 5021787
[  476.541026] end_request: I/O error, dev hda, sector 5021795
[  476.541033] end_request: I/O error, dev hda, sector 5021803
[  476.541040] end_request: I/O error, dev hda, sector 5021811
[  476.541047] end_request: I/O error, dev hda, sector 5021819
[  476.541055] end_request: I/O error, dev hda, sector 5021827
[  476.541062] end_request: I/O error, dev hda, sector 5021835
[  476.541069] end_request: I/O error, dev hda, sector 5021843
[  476.541076] end_request: I/O error, dev hda, sector 5021851
[  476.541167] end_request: I/O error, dev hda, sector 51254051
[  476.541184] Buffer I/O error on device dm-3, logical block 4259859
[  476.541190] lost page write due to I/O error on dm-3
[  476.541206] end_request: I/O error, dev hda, sector 51319435
[  476.541223] Buffer I/O error on device dm-3, logical block 4268032
[  476.541228] lost page write due to I/O error on dm-3
[  476.541242] end_request: I/O error, dev hda, sector 115925067
[  476.541262] Buffer I/O error on device dm-4, logical block 2488
[  476.541268] lost page write due to I/O error on dm-4
[  476.541286] end_request: I/O error, dev hda, sector 115925075
[  476.541303] Buffer I/O error on device dm-4, logical block 2489
[  476.541309] lost page write due to I/O error on dm-4
[  476.541318] end_request: I/O error, dev hda, sector 115925083
[  476.541335] Buffer I/O error on device dm-4, logical block 2490
[  476.541341] lost page write due to I/O error on dm-4
[  476.541351] end_request: I/O error, dev hda, sector 115925091
[  476.541365] Buffer I/O error on device dm-4, logical block 2491
[  476.541371] lost page write due to I/O error on dm-4
[  476.541380] end_request: I/O error, dev hda, sector 115925099
[  476.541396] Buffer I/O error on device dm-4, logical block 2492
[  476.541402] lost page write due to I/O error on dm-4
[  476.541411] end_request: I/O error, dev hda, sector 115925107
[  476.541430] end_request: I/O error, dev hda, sector 115925115
[  476.541448] end_request: I/O error, dev hda, sector 115925123
[  476.541468] end_request: I/O error, dev hda, sector 115925131
[  476.541486] end_request: I/O error, dev hda, sector 115925139
[  476.541514] end_request: I/O error, dev hda, sector 115925147
[  476.590126] end_request: I/O error, dev hda, sector 5021731
[  476.610176] REISERFS abort (device dm-4): Journal write error in flush_commit_list
[  476.620152] end_request: I/O error, dev hda, sector 117008515
[  476.620198] end_request: I/O error, dev hda, sector 117008523
[  476.620226] end_request: I/O error, dev hda, sector 117064915
[  476.620244] end_request: I/O error, dev hda, sector 117064923
[  476.680674] end_request: I/O error, dev hda, sector 10153627
[  476.685700] EXT3-fs error (device dm-1): ext3_find_entry: reading directory #290582 offset 0
[  476.690971] Aborting journal on device dm-1.
[  476.693632] __journal_remove_journal_head: freeing b_committed_data
[  476.696663] end_request: I/O error, dev hda, sector 7324251
[  476.699372] Remounting filesystem read-only
[  476.702469] end_request: I/O error, dev hda, sector 504459
[  476.705271] end_request: I/O error, dev hda, sector 10153627
[  476.707893] EXT3-fs error (device dm-1): ext3_find_entry: reading directory #290582 offset 0
[  476.713242] end_request: I/O error, dev hda, sector 10153627
[  476.716038] EXT3-fs error (device dm-1): ext3_find_entry: reading directory #290582 offset 0
[  476.721960] end_request: I/O error, dev hda, sector 51253907
[  476.724799] EXT3-fs error (device dm-3): read_inode_bitmap: Cannot read inode bitmap - block_group = 130, inode_bitmap = 4259841
[  476.731245] end_request: I/O error, dev hda, sector 17175179
[  476.734460] EXT3-fs error (device dm-3) in ext3_new_inode: IO failure
[  476.737898] ------------[ cut here ]------------
[  476.741256] Badness at fs/buffer.c:1128
[  476.744648] NIP: c00e2b20 LR: c01500f8 CTR: 00000000
[  476.748028] REGS: c1dadc90 TRAP: 0700   Tainted: GF           (2.6.29)
[  476.751400] MSR: 00029032 <EE,ME,CE,IR,DR>  CR: 24042882  XER: 00000000
[  476.754835] TASK = ef1adb00[3040] 'gdm' THREAD: c1dac000 CPU: 1
[  476.754991] GPR00: 00000001 c1dadd40 ef1adb00 ef588348 00000179 00000000 00000178 00000002 
[  476.762014] GPR08: 00000078 c0490000 00000000 00000000 24042842 10069a6c c1dade70 c2241400 
[  476.769440] GPR16: 00008180 c1dadd98 00008000 00000001 c031f294 ef46f000 ef6d6fc0 00000000 
[  476.776867] GPR24: c1c44000 c1c45800 00000082 ed450720 00000001 ef588348 c2241400 c1c45800 
[  476.787908] NIP [c00e2b20] mark_buffer_dirty+0x1c/0xd0
[  476.791661] LR [c01500f8] ext3_commit_super+0x84/0xb0
[  476.795383] Call Trace:
[  476.799035] [c1dadd40] [c01500dc] ext3_commit_super+0x68/0xb0 (unreliable)
[  476.802837] [c1dadd60] [c0151ddc] ext3_handle_error+0xa4/0xd8
[  476.806649] [c1dadd70] [c0151e78] __ext3_std_error+0x68/0x7c
[  476.810394] [c1dadd90] [c01461a4] ext3_new_inode+0x9e8/0xadc
[  476.814068] [c1daddf0] [c014e044] ext3_create+0xc0/0x130
[  476.817677] [c1dade40] [c00c722c] vfs_create+0xf8/0x180
[  476.821217] [c1dade60] [c00ca364] do_filp_open+0x1ec/0x804
[  476.824688] [c1dadf20] [c00ba944] do_sys_open+0x60/0xf8
[  476.828098] [c1dadf40] [c0014e44] ret_from_syscall+0x0/0x38
[  476.831450] --- Exception: c01 at 0xf222eb8
[  476.831454]     LR = 0xf6a46c4
[  476.837862] Instruction dump:
[  476.840955] 5400d97e 0f000000 2f800000 419eff90 4bffff80 80030000 70090001 40a2002c 
[  476.847307] 3d20c049 8009adf4 7c000034 5400d97e <0f000000> 2f800000 41be0010 38000001 
[  476.855268] end_request: I/O error, dev hda, sector 17175179
[  476.857706] JBD: Detected IO errors while flushing file data on dm-3
[  476.860208] end_request: I/O error, dev hda, sector 68297707
[  476.860250] end_request: I/O error, dev hda, sector 68297715
[  476.860270] end_request: I/O error, dev hda, sector 68297723
[  476.860289] end_request: I/O error, dev hda, sector 68297731
[  476.860308] end_request: I/O error, dev hda, sector 68297739
[  476.865093] Aborting journal on device dm-3.
[  476.870556] end_request: I/O error, dev hda, sector 68297371
[  477.920153] end_request: I/O error, dev hda, sector 6273587
[  477.922915] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=181302, block=721141
[  477.931263] end_request: I/O error, dev hda, sector 9507259
[  477.934081] end_request: I/O error, dev hda, sector 9507267
[  477.936820] end_request: I/O error, dev hda, sector 9507259
[  481.608259] end_request: I/O error, dev hda, sector 117064675
[  481.610980] __ratelimit: 15 callbacks suppressed
[  481.613584] Buffer I/O error on device dm-4, logical block 144939
[  481.616264] lost page write due to I/O error on dm-4
[  481.619986] end_request: I/O error, dev hda, sector 117064923
[  481.622773] Buffer I/O error on device dm-4, logical block 144970
[  481.625550] lost page write due to I/O error on dm-4
[  481.628362] end_request: I/O error, dev hda, sector 117093907
[  481.631198] Buffer I/O error on device dm-4, logical block 148593
[  481.633972] lost page write due to I/O error on dm-4
[  481.636683] end_request: I/O error, dev hda, sector 117008523
[  481.639374] Buffer I/O error on device dm-4, logical block 137920
[  481.643163] lost page write due to I/O error on dm-4
[  481.645925] end_request: I/O error, dev hda, sector 117046539
[  481.648715] Buffer I/O error on device dm-4, logical block 142672
[  481.651531] lost page write due to I/O error on dm-4
[  481.660182] end_request: I/O error, dev hda, sector 116972771
[  481.660203] Buffer I/O error on device dm-4, logical block 133451
[  481.660209] lost page write due to I/O error on dm-4
[  481.660224] end_request: I/O error, dev hda, sector 117035715
[  481.660237] Buffer I/O error on device dm-4, logical block 141319
[  481.660243] lost page write due to I/O error on dm-4
[  536.620138] end_request: I/O error, dev hda, sector 117093907
[  536.626375] Buffer I/O error on device dm-4, logical block 148593
[  536.629512] lost page write due to I/O error on dm-4
[  539.483512] end_request: I/O error, dev hda, sector 57022227
[  539.486973] EXT3-fs error (device dm-3): ext3_get_inode_loc: unable to read inode block - inode=1247483, block=4980881
[  539.494313] end_request: I/O error, dev hda, sector 17175179
[  539.497790] Buffer I/O error on device dm-3, logical block 0
[  539.501265] lost page write due to I/O error on dm-3
[  539.509966] end_request: I/O error, dev hda, sector 63575867
[  539.513515] EXT3-fs error (device dm-3): ext3_get_inode_loc: unable to read inode block - inode=1452367, block=5800086
[  539.521013] end_request: I/O error, dev hda, sector 17175179
[  539.524589] Buffer I/O error on device dm-3, logical block 0
[  539.528136] lost page write due to I/O error on dm-3
[  539.535505] end_request: I/O error, dev hda, sector 35263131
[  539.539100] EXT3-fs error (device dm-3): ext3_get_inode_loc: unable to read inode block - inode=565251, block=2260994
[  539.547379] end_request: I/O error, dev hda, sector 17175179
[  539.551103] Buffer I/O error on device dm-3, logical block 0
[  539.554758] lost page write due to I/O error on dm-3
[  539.562786] end_request: I/O error, dev hda, sector 57022227
[  539.566532] EXT3-fs error (device dm-3): ext3_get_inode_loc: unable to read inode block - inode=1247479, block=4980881
[  539.574431] end_request: I/O error, dev hda, sector 17175179
[  539.578286] Buffer I/O error on device dm-3, logical block 0
[  539.582031] lost page write due to I/O error on dm-3
[  539.589707] end_request: I/O error, dev hda, sector 57022227
[  539.593516] EXT3-fs error (device dm-3): ext3_get_inode_loc: unable to read inode block - inode=1247488, block=4980881
[  539.602873] end_request: I/O error, dev hda, sector 17175179
[  539.606645] Buffer I/O error on device dm-3, logical block 0
[  539.610407] lost page write due to I/O error on dm-3
[  544.914873] end_request: I/O error, dev hda, sector 51319435
[  544.918474] ext3_abort called.
[  544.921915] EXT3-fs error (device dm-3): ext3_journal_start_sb: Detected aborted journal
[  544.928792] Remounting filesystem read-only
[  556.440156] end_request: I/O error, dev hda, sector 116167395
[  556.443581] REISERFS error (device dm-4): vs-13070 reiserfs_read_locked_inode: i/o failure occurred trying to find stat data of [2 176 0x0 SD]
[  556.460155] end_request: I/O error, dev hda, sector 116167467
[  556.463584] REISERFS error (device dm-4): vs-13070 reiserfs_read_locked_inode: i/o failure occurred trying to find stat data of [2 6986 0x0 SD]
[  566.605558] end_request: I/O error, dev hda, sector 13415147
[  566.608968] end_request: I/O error, dev hda, sector 13415155
[  566.612239] end_request: I/O error, dev hda, sector 13415163
[  566.615399] end_request: I/O error, dev hda, sector 13415171
[  566.618564] end_request: I/O error, dev hda, sector 13415147
[  566.622382] end_request: I/O error, dev hda, sector 13415147
[  595.166714] end_request: I/O error, dev hda, sector 10465947
[  595.172973] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  600.147137] end_request: I/O error, dev hda, sector 10465947
[  600.150448] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  600.156753] end_request: I/O error, dev hda, sector 10465947
[  600.160832] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  600.167958] end_request: I/O error, dev hda, sector 10465947
[  600.171741] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  602.571308] end_request: I/O error, dev hda, sector 116167571
[  602.575052] REISERFS error (device dm-4): vs-13070 reiserfs_read_locked_inode: i/o failure occurred trying to find stat data of [2 272 0x0 SD]
[  602.588314] end_request: I/O error, dev hda, sector 116167571
[  602.592947] REISERFS error (device dm-4): vs-13070 reiserfs_read_locked_inode: i/o failure occurred trying to find stat data of [2 271 0x0 SD]
[  602.604732] end_request: I/O error, dev hda, sector 116167363
[  602.608627] REISERFS error (device dm-4): vs-13070 reiserfs_read_locked_inode: i/o failure occurred trying to find stat data of [264 6657 0x0 SD]
[  602.620819] end_request: I/O error, dev hda, sector 116168139
[  602.624796] REISERFS error (device dm-4): vs-13070 reiserfs_read_locked_inode: i/o failure occurred trying to find stat data of [2 893 0x0 SD]
[  602.638679] end_request: I/O error, dev hda, sector 9941995
[  602.642773] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=290991, block=1179692
[  602.651031] end_request: I/O error, dev hda, sector 116167363
[  602.655158] REISERFS error (device dm-4): vs-13070 reiserfs_read_locked_inode: i/o failure occurred trying to find stat data of [264 5723 0x0 SD]
[  623.870160] end_request: I/O error, dev hda, sector 10465947
[  623.876708] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  628.930994] end_request: I/O error, dev hda, sector 10465947
[  628.934267] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  628.940986] end_request: I/O error, dev hda, sector 10465947
[  628.944217] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  628.950732] end_request: I/O error, dev hda, sector 10465947
[  628.953947] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  641.610554] end_request: I/O error, dev hda, sector 117093907
[  641.610748] Buffer I/O error on device dm-4, logical block 148593
[  641.610908] lost page write due to I/O error on dm-4
[  650.480125] end_request: I/O error, dev hda, sector 12300955
[  650.480343] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[  650.569665] end_request: I/O error, dev hda, sector 12300955
[  650.569897] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[  656.620130] end_request: I/O error, dev hda, sector 117093907
[  656.620324] Buffer I/O error on device dm-4, logical block 148593
[  656.620484] lost page write due to I/O error on dm-4
[  661.543724] end_request: I/O error, dev hda, sector 12300955
[  661.552197] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[  663.099138] end_request: I/O error, dev hda, sector 12300955
[  663.103284] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[  663.110596] end_request: I/O error, dev hda, sector 12300955
[  663.114189] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[  663.122196] end_request: I/O error, dev hda, sector 12300955
[  663.125832] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[  664.955009] end_request: I/O error, dev hda, sector 12300955
[  664.958585] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[  664.966715] end_request: I/O error, dev hda, sector 12300955
[  664.971149] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[  664.978654] end_request: I/O error, dev hda, sector 12300955
[  664.983255] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[  668.635161] end_request: I/O error, dev hda, sector 10465947
[  668.638923] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  668.646586] end_request: I/O error, dev hda, sector 10465947
[  668.651088] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  668.658695] end_request: I/O error, dev hda, sector 10465947
[  668.663075] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  682.763155] end_request: I/O error, dev hda, sector 10465947
[  682.766893] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[  821.638356] usb 2-1.3: new full speed USB device using ohci_hcd and address 5
[  821.860383] usb 2-1.3: New USB device found, idVendor=0930, idProduct=6518
[  821.863775] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  821.870335] usb 2-1.3: Product: DataTraveler 2.0
[  821.873611] usb 2-1.3: Manufacturer: Kingston
[  821.876880] usb 2-1.3: SerialNumber: 28C13A40C190A8E6
[  821.880596] usb 2-1.3: configuration #1 chosen from 1 choice
[  821.913822] end_request: I/O error, dev hda, sector 12196299
[  821.917451] end_request: I/O error, dev hda, sector 12196299
[  821.921610] end_request: I/O error, dev hda, sector 12196299
[  924.439207] usb 2-1.3: USB disconnect, address 5
[  927.618165] usb 2-1.3: new full speed USB device using ohci_hcd and address 6
[  927.831162] usb 2-1.3: New USB device found, idVendor=0930, idProduct=6518
[  927.832696] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  927.835727] usb 2-1.3: Product: DataTraveler 2.0
[  927.837376] usb 2-1.3: Manufacturer: Kingston
[  927.839060] usb 2-1.3: SerialNumber: 28C13A40C190A8E6
[  927.841380] usb 2-1.3: configuration #1 chosen from 1 choice
[  927.881687] end_request: I/O error, dev hda, sector 12196299
[  927.883709] end_request: I/O error, dev hda, sector 12196299
[  996.803563] end_request: I/O error, dev hda, sector 3036
[  996.805695] Buffer I/O error on device hda3, logical block 509
[  996.807892] end_request: I/O error, dev hda, sector 68572
[  996.810477] Buffer I/O error on device hda3, logical block 33277
[  996.812868] end_request: I/O error, dev hda, sector 3036
[  996.815293] Buffer I/O error on device hda3, logical block 509
[  996.817826] end_request: I/O error, dev hda, sector 68572
[  996.820616] Buffer I/O error on device hda3, logical block 33277
[  996.830381] end_request: I/O error, dev hda, sector 2020
[  996.833150] Buffer I/O error on device hda3, logical block 1
[  996.835982] lost page write due to I/O error on hda3
[  996.838886] EXT2-fs error (device hda3): ext2_readdir: bad page in #2
[ 1001.620115] end_request: I/O error, dev hda, sector 2028
[ 1001.626411] Buffer I/O error on device hda3, logical block 5
[ 1001.629708] lost page write due to I/O error on hda3
[ 1004.548305] end_request: I/O error, dev hda, sector 3036
[ 1004.551585] Buffer I/O error on device hda3, logical block 509
[ 1004.554790] end_request: I/O error, dev hda, sector 68572
[ 1004.558388] Buffer I/O error on device hda3, logical block 33277
[ 1004.577616] end_request: I/O error, dev hda, sector 2020
[ 1004.580805] Buffer I/O error on device hda3, logical block 1
[ 1004.583969] lost page write due to I/O error on hda3
[ 1004.587124] EXT2-fs error (device hda3): ext2_readdir: bad page in #2
[ 1007.188122] end_request: I/O error, dev hda, sector 3036
[ 1007.191640] Buffer I/O error on device hda3, logical block 509
[ 1007.194931] end_request: I/O error, dev hda, sector 68572
[ 1007.198186] Buffer I/O error on device hda3, logical block 33277
[ 1007.210113] end_request: I/O error, dev hda, sector 2020
[ 1007.213374] Buffer I/O error on device hda3, logical block 1
[ 1007.216627] lost page write due to I/O error on hda3
[ 1007.219875] EXT2-fs error (device hda3): ext2_readdir: bad page in #2
[ 1045.964236] ext3_abort called.
[ 1045.967578] EXT3-fs error (device dm-1): ext3_remount: Abort forced by user
[ 1065.046514] ext3_abort called.
[ 1065.049949] EXT3-fs error (device dm-1): ext3_remount: Abort forced by user
[ 1065.059427] ext3_abort called.
[ 1065.062917] EXT3-fs error (device dm-1): ext3_remount: Abort forced by user
[ 1138.870118] end_request: I/O error, dev hda, sector 10465947
[ 1138.873286] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[ 1147.874122] end_request: I/O error, dev hda, sector 10465947
[ 1147.877365] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[ 1151.988242] end_request: I/O error, dev hda, sector 10465947
[ 1151.991690] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[ 1164.719226] end_request: I/O error, dev hda, sector 6273603
[ 1164.724645] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=181334, block=721143
[ 1175.579326] end_request: I/O error, dev hda, sector 13353043
[ 1175.586419] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=395476, block=1606073
[ 1175.596029] end_request: I/O error, dev hda, sector 13353043
[ 1175.599647] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=395476, block=1606073
[ 1182.702517] end_request: I/O error, dev hda, sector 13448387
[ 1182.706045] end_request: I/O error, dev hda, sector 13448395
[ 1182.709469] end_request: I/O error, dev hda, sector 13448403
[ 1182.712860] end_request: I/O error, dev hda, sector 13448411
[ 1182.720115] end_request: I/O error, dev hda, sector 13448387
[ 1182.723533] end_request: I/O error, dev hda, sector 13448387
[ 1219.710328] end_request: I/O error, dev hda, sector 11665483
[ 1219.713738] end_request: I/O error, dev hda, sector 11665491
[ 1219.717028] end_request: I/O error, dev hda, sector 11665499
[ 1219.720252] end_request: I/O error, dev hda, sector 11665507
[ 1219.724041] end_request: I/O error, dev hda, sector 11665483
[ 1219.727243] end_request: I/O error, dev hda, sector 11665483
[ 1224.813634] end_request: I/O error, dev hda, sector 11665483
[ 1224.816829] end_request: I/O error, dev hda, sector 11665483
[ 1226.117609] end_request: I/O error, dev hda, sector 11665483
[ 1226.120982] end_request: I/O error, dev hda, sector 11665483
[ 1226.964969] end_request: I/O error, dev hda, sector 11665483
[ 1226.968035] end_request: I/O error, dev hda, sector 11665483
[ 1236.659700] usb 2-1.3: USB disconnect, address 6
[ 1239.908662] usb 2-1.3: new full speed USB device using ohci_hcd and address 7
[ 1240.121659] usb 2-1.3: New USB device found, idVendor=0930, idProduct=6518
[ 1240.124502] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1240.129933] usb 2-1.3: Product: DataTraveler 2.0
[ 1240.132687] usb 2-1.3: Manufacturer: Kingston
[ 1240.135327] usb 2-1.3: SerialNumber: 28C13A40C190A8E6
[ 1240.138159] usb 2-1.3: configuration #1 chosen from 1 choice
[ 1240.179737] end_request: I/O error, dev hda, sector 12196299
[ 1240.182758] end_request: I/O error, dev hda, sector 12196299
[ 1298.289137] end_request: I/O error, dev hda, sector 10465947
[ 1298.291501] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[ 1308.119975] end_request: I/O error, dev hda, sector 10465947
[ 1308.121977] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=306433, block=1245186
[ 1373.925868] end_request: I/O error, dev hda, sector 10248979
[ 1373.928710] end_request: I/O error, dev hda, sector 10248987
[ 1373.932248] end_request: I/O error, dev hda, sector 10248995
[ 1373.934904] end_request: I/O error, dev hda, sector 10249003
[ 1373.937432] end_request: I/O error, dev hda, sector 10249011
[ 1373.939882] end_request: I/O error, dev hda, sector 10249019
[ 1373.942301] end_request: I/O error, dev hda, sector 10249027
[ 1373.944657] end_request: I/O error, dev hda, sector 10249035
[ 1373.946946] end_request: I/O error, dev hda, sector 10249043
[ 1373.949169] end_request: I/O error, dev hda, sector 10249051
[ 1373.949178] end_request: I/O error, dev hda, sector 10249059
[ 1373.949186] end_request: I/O error, dev hda, sector 10249067
[ 1373.949194] end_request: I/O error, dev hda, sector 10249075
[ 1373.949201] end_request: I/O error, dev hda, sector 10249083
[ 1373.949208] end_request: I/O error, dev hda, sector 10249091
[ 1373.949215] end_request: I/O error, dev hda, sector 10249099
[ 1373.949222] end_request: I/O error, dev hda, sector 10249107
[ 1373.949229] end_request: I/O error, dev hda, sector 10249115
[ 1373.949236] end_request: I/O error, dev hda, sector 10249123
[ 1373.949243] end_request: I/O error, dev hda, sector 10249131
[ 1373.949250] end_request: I/O error, dev hda, sector 10249139
[ 1373.949361] end_request: I/O error, dev hda, sector 10249099
[ 1387.527157] end_request: I/O error, dev hda, sector 9827155
[ 1387.532621] end_request: I/O error, dev hda, sector 9827155
[ 1387.600391] end_request: I/O error, dev hda, sector 12300955
[ 1387.601853] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[ 1387.613726] end_request: I/O error, dev hda, sector 9827059
[ 1387.615973] end_request: I/O error, dev hda, sector 12300955
[ 1387.617472] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=362881, block=1474562
[ 1387.621430] end_request: I/O error, dev hda, sector 2274867
[ 1387.623238] end_request: I/O error, dev hda, sector 2274875
[ 1387.625032] end_request: I/O error, dev hda, sector 2274883
[ 1387.626822] end_request: I/O error, dev hda, sector 2274891
[ 1387.628744] end_request: I/O error, dev hda, sector 2274867
[ 1391.608036] end_request: I/O error, dev hda, sector 117093907
[ 1391.612215] Buffer I/O error on device dm-4, logical block 148593
[ 1391.614482] lost page write due to I/O error on dm-4
[ 1461.117615] end_request: I/O error, dev hda, sector 10249099
[ 1483.595980] end_request: I/O error, dev hda, sector 11665483
[ 1483.600025] end_request: I/O error, dev hda, sector 11665483
[ 1564.090515] end_request: I/O error, dev hda, sector 12039595
[ 1564.093623] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=356392, block=1441892
[ 1564.100197] end_request: I/O error, dev hda, sector 12039595
[ 1564.103350] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=356392, block=1441892
[ 1564.109744] end_request: I/O error, dev hda, sector 12039595
[ 1564.112987] EXT3-fs error (device dm-1): ext3_get_inode_loc: unable to read inode block - inode=356392, block=1441892
[ 1584.670563] VFS: Can't find ext3 filesystem on dev hdb5.
[ 1591.240781] VFS: Can't find ext3 filesystem on dev hdb6.
[ 1594.474972] kjournald starting.  Commit interval 5 seconds
[ 1594.479356] EXT3 FS on hdb7, internal journal
[ 1594.483906] EXT3-fs: mounted filesystem with ordered data mode.


> 
> [ BTW the above bisection points that the problem was introduced
> outside of drivers/ide or that it was introduced earlier that we'd
> initially thought ]
> 
> > I have added second hard drive and got new issue. May be this log
> > (dmesg) can tell you something. It is on first known 'bad commit'.
> > 2.6.29.2 can't properly
> 
> It tells us that there is some IRQ routing problem... seems like a
> platform or ide-pmac specific problem.  Does some earlier kernel work
> OK with this configuration?

I have Debian's 2.6.26, it has same problem. Don't take attention to time, I 
caught another bug on Aureal Vortex2, this driver kills kernel completely and
system time too. I am lucky on bugs on this machine.

[477194868.371586] Uniform Multi-Platform E-IDE driver
[477194868.371648] ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
[477194868.371902] adb: starting probe task...
[477194868.371994] adb: finished probe task...
[477194868.372138] ide-pmac 0002:20:0d.0: enabling device (0000 -> 0002)
[477194869.389956] ide0: Found Apple UniNorth ATA-6 controller, bus ID 3, irq 39
[477194869.390045] Probing IDE interface ide0...
[477194869.678137] hda: IBM-IC35L060AVVA07-0, ATA DISK drive
[477194869.958131] hdb: QUANTUM FIREBALLP LM20.5, ATA DISK drive
[477194870.014152] hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[477194870.014325] hda: UDMA/100 mode selected
[477194870.014533] hdb: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[477194870.014792] hdb: UDMA/66 mode selected
[477194870.015158] ide0 at 0xf100a000-0xf100a070,0xf100a160 on irq 39
[477194871.033954] ide1: Found Apple KeyLargo ATA-4 controller, bus ID 2, irq 19
[477194871.034039] Probing IDE interface ide1...
[477194871.602152] ide1 at 0xf1006000-0xf1006070,0xf1006160 on irq 19
[477194872.621954] ide2: Found Apple KeyLargo ATA-3 controller, bus ID 0, irq 20
[477194872.622034] Probing IDE interface ide2...
[477194873.022132] hde: PHILIPS CDD5101, ATAPI CD/DVD-ROM drive
[477194873.358138] hde: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[477194873.358517] hde: MWDMA2 mode selected
[477194873.358986] ide2 at 0xf100e000-0xf100e070,0xf100e160 on irq 20
[477194873.359673] ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
[477194873.359976] ohci_hcd 0001:10:18.0: enabling device (0000 -> 0002)
[477194873.360052] ohci_hcd 0001:10:18.0: OHCI Host Controller
[477194873.360474] ohci_hcd 0001:10:18.0: new USB bus registered, assigned bus number 1
[477194873.360581] ohci_hcd 0001:10:18.0: irq 27, io mem 0x80081000
[477194873.434119] usb usb1: configuration #1 chosen from 1 choice
[477194873.434363] hub 1-0:1.0: USB hub found
[477194873.434435] hub 1-0:1.0: 2 ports detected
[477194873.538660] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
[477194873.540998] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[477194873.543333] usb usb1: Product: OHCI Host Controller
[477194873.545636] usb usb1: Manufacturer: Linux 2.6.26-2-powerpc-smp ohci_hcd
[477194873.547962] usb usb1: SerialNumber: 0001:10:18.0
[477194873.550313] ohci_hcd 0001:10:19.0: enabling device (0000 -> 0002)
[477194873.552655] ohci_hcd 0001:10:19.0: OHCI Host Controller
[477194873.555333] ohci_hcd 0001:10:19.0: new USB bus registered, assigned bus number 2
[477194873.557692] ohci_hcd 0001:10:19.0: irq 28, io mem 0x80080000
[477194873.634070] usb usb2: configuration #1 chosen from 1 choice
[477194873.636535] hub 2-0:1.0: USB hub found
[477194873.638834] hub 2-0:1.0: 2 ports detected
[477194873.742460] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[477194873.744780] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[477194873.747109] usb usb2: Product: OHCI Host Controller
[477194873.749418] usb usb2: Manufacturer: Linux 2.6.26-2-powerpc-smp ohci_hcd
[477194873.751762] usb usb2: SerialNumber: 0001:10:19.0
[477194873.770248] mice: PS/2 mouse device common for all mice
[477194873.772918] platform ppc-rtc.0: rtc core: registered ppc_md as rtc0
[477194873.776612] TCP cubic registered
[477194873.779036] NET: Registered protocol family 17
[477194873.781981] registered taskstats version 1
[477194873.784847] input: PMU as /class/input/input1
[477194873.793963] usb 1-1: new low speed USB device using ohci_hcd and address 2
[477194873.802198] platform ppc-rtc.0: hctosys: invalid date/time
[477194873.804636] Freeing unused kernel memory: 236k init
[477194873.968070] usb 1-1: configuration #1 chosen from 1 choice
[477194873.976612] usb 1-1: New USB device found, idVendor=0458, idProduct=002e
[477194873.979066] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[477194873.981456] usb 1-1: Product: NetScroll+ Traveler
[477194873.983818] usb 1-1: Manufacturer: KYE
[477194874.218319] PowerMac i2c bus pmu 2 registered
[477194874.220984] PowerMac i2c bus pmu 1 registered
[477194874.223600] PowerMac i2c bus mac-io 0 registered
[477194874.226120] PowerMac i2c bus uni-n 1 registered
[477194874.228603] PowerMac i2c bus uni-n 0 registered
[477194874.242112] usb 2-1: new full speed USB device using ohci_hcd and address 2
[477194874.407190] usb 2-1: configuration #1 chosen from 1 choice
[477194874.411149] hub 2-1:1.0: USB hub found
[477194874.415076] hub 2-1:1.0: 4 ports detected
[477194874.534293] usb 2-1: New USB device found, idVendor=05e3, idProduct=0608
[477194874.537039] usb 2-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[477194874.539724] usb 2-1: Product: USB2.0 Hub
[477194874.771003] usb 2-1.1: new full speed USB device using ohci_hcd and address 3
[477194874.887185] usb 2-1.1: configuration #1 chosen from 1 choice
[477194874.889897] Linux agpgart interface v0.103
[477194874.890109] hub 2-1.1:1.0: USB hub found
[477194874.891983] hub 2-1.1:1.0: 4 ports detected
[477194874.899579] agpgart: Detected Apple UniNorth 2 chipset
[477194874.902002] agpgart: configuring for size idx: 8
[477194874.904312] agpgart: AGP aperture is 32M @ 0x0
[477194874.987211] hde: ATAPI 32X DVD-ROM CD-R/RW drive, 8192kB Cache
[477194874.989566] Uniform CD-ROM driver Revision: 3.20
[477194875.006296] usb 2-1.1: New USB device found, idVendor=05e3, idProduct=0608
[477194875.008637] usb 2-1.1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[477194875.010921] usb 2-1.1: Product: USB2.0 Hub
[477194875.024719] hda: max request size: 128KiB
[477194875.032590] hda: 120103200 sectors (61492 MB) w/1863KiB Cache, CHS=65535/16/63
[477194875.035083] hda: cache flushes supported
[477194875.037456]  hda: [mac] hda1 hda2 hda3 hda4
[477194875.048662] hdb: max request size: 128KiB
[477194875.057687] sungem.c:v0.98 8/24/03 David S. Miller (davem@redhat.com)
[477194875.065337] hdb: 40132503 sectors (20547 MB) w/1900KiB Cache, CHS=39813/16/63
[477194875.067826] hdb: cache flushes not supported
[477194875.070216]  hdb:<7>PHY ID: 2060e1, addr: 0
[477194875.130989] eth0: Sun GEM (PCI) 10/100/1000BaseT Ethernet 00:03:93:ab:d1:a6
[477194875.133278] eth0: Found BCM5421 PHY
[477194875.135709] ohci1394 0002:20:0e.0: enabling device (0000 -> 0002)
[477194875.189908] ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[40]  MMIO=[f5000000-f50007ff]  Max Packet=[2048]  IR/IT contexts=[8/8]
[477194875.243002] usb 2-1.2: new low speed USB device using ohci_hcd and address 4
[477194875.362206] usb 2-1.2: configuration #1 chosen from 1 choice
[477194875.366594] usb 2-1.2: New USB device found, idVendor=04d9, idProduct=0022
[477194875.369010] usb 2-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[477194875.371387] usb 2-1.2: Product: USB Keyboard
[477194875.387102] usbcore: registered new interface driver hiddev
[477194875.395057] input: KYE NetScroll+ Traveler as /class/input/input2
[477194875.430143] input,hidraw0: USB HID v1.10 Mouse [KYE NetScroll+ Traveler] on usb-0001:10:18.0-1
[477194875.443051] input: USB Keyboard as /class/input/input3
[477194875.462050] input,hidraw1: USB HID v1.10 Keyboard [USB Keyboard] on usb-0001:10:19.0-1.2
[477194875.484936] input: USB Keyboard as /class/input/input4
[477194875.502025] input,hidraw2: USB HID v1.10 Device [USB Keyboard] on usb-0001:10:19.0-1.2
[477194875.504573] usbcore: registered new interface driver usbhid
[477194875.507035] usbhid: v2.6:USB HID core driver
[477194876.470402] ieee1394: Host added: ID:BUS[0-00:1023]  GUID[000393fffeabd1a6]
[477194877.526334] eth0: Link is up at 100 Mbps, full-duplex.
[477194895.065957] ide-pmac lost interrupt, dma status: 8480
[477194895.068535] hdb: lost interrupt
[477194895.070952] hdb: dma_intr: status=0x58 { DriveReady SeekComplete DataRequest }
[477194895.073444] ide: failed opcode was: unknown
[477194895.076053] hda: DMA disabled
[477194895.078504] hdb: DMA disabled
[477194895.209948] ide0: reset: success
[477194895.430619]  hdb1 hdb2 < hdb5 hdb6 hdb7 hdb8 >


> 
> > initialize it too (got lost interrupt and disable dma).
> > 
> > [    1.113901] Uniform Multi-Platform E-IDE driver
> > [    1.120304] ide-pmac 0002:20:0d.0: enabling device (0000 -> 0002)
> > [    1.123139] adb: starting probe task...
> > [    1.125609] adb: finished probe task...
> > [    2.147653] ide-pmac: Found Apple UniNorth ATA-6 controller
> > (PCI), bus ID 3, irq 39 [    2.152331] Probing IDE interface ide0...
> > [    2.457825] hda: IBM-IC35L060AVVA07-0, ATA DISK drive
> > [    2.817641] hdb: QUANTUM FIREBALLP LM20.5, ATA DISK drive
> > [   66.660447] hda: host max PIO4 wanted PIO255(auto-tune) selected
> > PIO4 [   66.660624] hda: UDMA/100 mode selected
> > [   66.663170] hdb: host max PIO4 wanted PIO255(auto-tune) selected
> > PIO4 [   66.663415] hdb: UDMA/66 mode selected
> > [   66.666108] ide0 at 0xf1012000-0xf1012070,0xf1012160 on irq 39
> > [   67.697640] ide-pmac: Found Apple KeyLargo ATA-4 controller
> > (macio), bus ID 2, irq 19 [   67.702368] Probing IDE interface
> > ide1... [  131.867685] ide1 at 0xf100e000-0xf100e070,0xf100e160 on
> > irq 19 [  132.897559] ide-pmac: Found Apple KeyLargo ATA-3
> > controller (macio), bus ID 0, irq 20 [  132.902273] Probing IDE
> > interface ide2... [  196.898053] hde: PHILIPS CDD5101, ATAPI
> > CD/DVD-ROM drive [  260.980668] hde: host max PIO4 wanted
> > PIO255(auto-tune) selected PIO4 [  260.981049] hde: MWDMA2 mode
> > selected [  260.984269] ide2 at 0xf1016000-0xf1016070,0xf1016160 on
> > irq 20 [  260.989418] ide-gd driver 1.18
> > [  260.991880] hda: max request size: 128KiB
> > [  261.039649] hda: 120103200 sectors (61492 MB) w/1863KiB Cache,
> > CHS=65535/16/63 [  261.044690] hda: cache flushes supported
> > [  261.047292]  hda: [mac] hda1 hda2 hda3 hda4
> > [  261.060150] hdb: max request size: 128KiB
> > [  261.089788] hdb: 40132503 sectors (20547 MB) w/1900KiB Cache,
> > CHS=39813/16/63 [  261.092287] hdb: cache flushes not supported
> > [  261.094754]  hdb:<3>ide-pmac lost interrupt, dma status: 8480
> > [  281.089717] hdb: lost interrupt
> > [  281.092085] hdb: dma_intr: status=0x58 { DriveReady SeekComplete
> > DataRequest } [  281.097038] ide: failed opcode was: unknown
> > [  281.101900] hda: DMA disabled
> > [  281.104247] hdb: DMA disabled
> > [  281.187260] ide0: reset: success
> > [  281.230368]  hdb1 hdb2 < hdb5 hdb6 hdb7 hdb8 >
> > [  281.285486] ide-cd driver 5.00
> > [  281.297481] ide-cd: hde: ATAPI 32X DVD-ROM CD-R/RW drive, 8192kB
> > Cache [  281.299687] Uniform CD-ROM driver Revision: 3.20
> 

^ permalink raw reply

* [PATCH] mv643xx_eth: fix PPC DMA breakage
From: Gabriel Paubert @ 2009-05-15 18:39 UTC (permalink / raw)
  To: Lennert Buytenhek; +Cc: tbm, LinuxPPC, pacman, netdev, David Miller

After 2.6.29, PPC no more admits passing NULL to the dev parameter of
the DMA API. The result is a BUG followed by solid lock-up when the 
mv643xx_eth driver brings an interface up. The following patch makes 
the driver work on my Pegasos again; it is mostly a search and replace 
of NULL by mp->dev->dev.parent in dma allocation/freeing/mapping/unmapping
functions.

Signed-off-by: Gabriel Paubert <paubert@iram.es>

diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index a400d71..6bb5af3 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -569,7 +569,7 @@ static int rxq_process(struct rx_queue *rxq, int budget)
 		if (rxq->rx_curr_desc == rxq->rx_ring_size)
 			rxq->rx_curr_desc = 0;
 
-		dma_unmap_single(NULL, rx_desc->buf_ptr,
+		dma_unmap_single(mp->dev->dev.parent, rx_desc->buf_ptr,
 				 rx_desc->buf_size, DMA_FROM_DEVICE);
 		rxq->rx_desc_count--;
 		rx++;
@@ -678,8 +678,9 @@ static int rxq_refill(struct rx_queue *rxq, int budget)
 
 		rx_desc = rxq->rx_desc_area + rx;
 
-		rx_desc->buf_ptr = dma_map_single(NULL, skb->data,
-					mp->skb_size, DMA_FROM_DEVICE);
+		rx_desc->buf_ptr = dma_map_single(mp->dev->dev.parent,
+						  skb->data, mp->skb_size,
+						  DMA_FROM_DEVICE);
 		rx_desc->buf_size = mp->skb_size;
 		rxq->rx_skb[rx] = skb;
 		wmb();
@@ -718,6 +719,7 @@ static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb)
 
 static void txq_submit_frag_skb(struct tx_queue *txq, struct sk_buff *skb)
 {
+	struct mv643xx_eth_private *mp = txq_to_mp(txq);
 	int nr_frags = skb_shinfo(skb)->nr_frags;
 	int frag;
 
@@ -746,10 +748,10 @@ static void txq_submit_frag_skb(struct tx_queue *txq, struct sk_buff *skb)
 
 		desc->l4i_chk = 0;
 		desc->byte_cnt = this_frag->size;
-		desc->buf_ptr = dma_map_page(NULL, this_frag->page,
-						this_frag->page_offset,
-						this_frag->size,
-						DMA_TO_DEVICE);
+		desc->buf_ptr = dma_map_page(mp->dev->dev.parent,
+					     this_frag->page,
+					     this_frag->page_offset,
+					     this_frag->size, DMA_TO_DEVICE);
 	}
 }
 
@@ -826,7 +828,8 @@ no_csum:
 
 	desc->l4i_chk = l4i_chk;
 	desc->byte_cnt = length;
-	desc->buf_ptr = dma_map_single(NULL, skb->data, length, DMA_TO_DEVICE);
+	desc->buf_ptr = dma_map_single(mp->dev->dev.parent, skb->data,
+				       length, DMA_TO_DEVICE);
 
 	__skb_queue_tail(&txq->tx_skb, skb);
 
@@ -956,10 +959,10 @@ static int txq_reclaim(struct tx_queue *txq, int budget, int force)
 		}
 
 		if (cmd_sts & TX_FIRST_DESC) {
-			dma_unmap_single(NULL, desc->buf_ptr,
+			dma_unmap_single(mp->dev->dev.parent, desc->buf_ptr,
 					 desc->byte_cnt, DMA_TO_DEVICE);
 		} else {
-			dma_unmap_page(NULL, desc->buf_ptr,
+			dma_unmap_page(mp->dev->dev.parent, desc->buf_ptr,
 				       desc->byte_cnt, DMA_TO_DEVICE);
 		}
 
@@ -1894,9 +1897,9 @@ static int rxq_init(struct mv643xx_eth_private *mp, int index)
 						mp->rx_desc_sram_size);
 		rxq->rx_desc_dma = mp->rx_desc_sram_addr;
 	} else {
-		rxq->rx_desc_area = dma_alloc_coherent(NULL, size,
-							&rxq->rx_desc_dma,
-							GFP_KERNEL);
+		rxq->rx_desc_area = dma_alloc_coherent(mp->dev->dev.parent,
+						       size, &rxq->rx_desc_dma,
+						       GFP_KERNEL);
 	}
 
 	if (rxq->rx_desc_area == NULL) {
@@ -1947,7 +1950,7 @@ out_free:
 	if (index == 0 && size <= mp->rx_desc_sram_size)
 		iounmap(rxq->rx_desc_area);
 	else
-		dma_free_coherent(NULL, size,
+		dma_free_coherent(mp->dev->dev.parent, size,
 				  rxq->rx_desc_area,
 				  rxq->rx_desc_dma);
 
@@ -1979,7 +1982,7 @@ static void rxq_deinit(struct rx_queue *rxq)
 	    rxq->rx_desc_area_size <= mp->rx_desc_sram_size)
 		iounmap(rxq->rx_desc_area);
 	else
-		dma_free_coherent(NULL, rxq->rx_desc_area_size,
+		dma_free_coherent(mp->dev->dev.parent, rxq->rx_desc_area_size,
 				  rxq->rx_desc_area, rxq->rx_desc_dma);
 
 	kfree(rxq->rx_skb);
@@ -2007,9 +2010,9 @@ static int txq_init(struct mv643xx_eth_private *mp, int index)
 						mp->tx_desc_sram_size);
 		txq->tx_desc_dma = mp->tx_desc_sram_addr;
 	} else {
-		txq->tx_desc_area = dma_alloc_coherent(NULL, size,
-							&txq->tx_desc_dma,
-							GFP_KERNEL);
+		txq->tx_desc_area = dma_alloc_coherent(mp->dev->dev.parent,
+						       size, &txq->tx_desc_dma,
+						       GFP_KERNEL);
 	}
 
 	if (txq->tx_desc_area == NULL) {
@@ -2053,7 +2056,7 @@ static void txq_deinit(struct tx_queue *txq)
 	    txq->tx_desc_area_size <= mp->tx_desc_sram_size)
 		iounmap(txq->tx_desc_area);
 	else
-		dma_free_coherent(NULL, txq->tx_desc_area_size,
+		dma_free_coherent(mp->dev->dev.parent, txq->tx_desc_area_size,
 				  txq->tx_desc_area, txq->tx_desc_dma);
 }
 

^ permalink raw reply related

* [PATCH] fsldma: snooping is not enabled for last entry in descriptor chain
From: Ira Snyder @ 2009-05-15 18:33 UTC (permalink / raw)
  To: Dan Williams, Li Yang, linuxppc-dev

On the 83xx controller, snooping is necessary for the DMA controller to
ensure cache coherence with the CPU when transferring to/from RAM.

The last descriptor in a chain will always have the End-of-Chain interrupt
bit set, so we can set the snoop bit while adding the End-of-Chain
interrupt bit.

Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
---

While working on adding the DMA_SLAVE feature, I noticed that the last
descriptor in a chain does not have the snoop bits enabled.

This is easily verified by doing the following:
1) set FSL_DMA_BCR_MAX_CNT = (1 << 18)
2) #define DEBUG 1
3) #define FSL_DMA_LD_DEBUG 1
4) setup a 1MB memcpy operation

The memcpy must be set up on an idle channel, and must be submitted
without any other transactions. dma_async_memcpy_issue_pending() must be
called without queueing any more transactions. You will see that the
snoop bit (bit 4) is not set in the last descriptor.

 drivers/dma/fsldma.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
index 4264c98..dba0b58 100644
--- a/drivers/dma/fsldma.c
+++ b/drivers/dma/fsldma.c
@@ -179,9 +179,14 @@ static void dma_halt(struct fsl_dma_chan *fsl_chan)
 static void set_ld_eol(struct fsl_dma_chan *fsl_chan,
 			struct fsl_desc_sw *desc)
 {
+	u64 snoop_bits;
+
+	snoop_bits = ((fsl_chan->feature & FSL_DMA_IP_MASK) == FSL_DMA_IP_83XX)
+		? FSL_DMA_SNEN : 0;
+
 	desc->hw.next_ln_addr = CPU_TO_DMA(fsl_chan,
-		DMA_TO_CPU(fsl_chan, desc->hw.next_ln_addr, 64)	| FSL_DMA_EOL,
-		64);
+		DMA_TO_CPU(fsl_chan, desc->hw.next_ln_addr, 64) | FSL_DMA_EOL
+			| snoop_bits, 64);
 }
 
 static void append_ld_queue(struct fsl_dma_chan *fsl_chan,
-- 
1.5.4.3

^ permalink raw reply related

* [PATCH] fbdev: Add PLB support and cleanup DCR in xilinxfb driver.
From: Grant Likely @ 2009-05-15 18:19 UTC (permalink / raw)
  To: linuxppc-dev, linux-fbdev-devel, Antonino Daplas; +Cc: Suneel, John Linn

From: John Linn <john.linn@xilinx.com>

Added support for the new xps tft controller. The new core
has PLB interface support in addition to existing DCR interface.

Removed platform device support as both MicroBlaze and PowerPC
use device tree.

Previously, the dcr interface was assumed to be used in mmio mode,
and the register space of the dcr interface was precomputed and stuffed
into the device tree. This driver now makes use of the new dcr
infrastructure to represent the dcr interface. This enables the dcr
interface to be connected directly to a native dcr interface in a clean
way.

Added compatibility for ml507 dvi core.

Signed-off-by: Suneel <suneelg@xilinx.com>
Signed-off-by: Stephen Neuendorffer <stephen.neuendorffer@xilinx.com>
Signed-off-by: John Linn <john.linn@xilinx.com>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
---

Antonino,

This patch has gone through a couple of cycles of review on the linuxppc
mailing list (the linux-fbdev mailing list wasn't cc'd unfortunately,
hence I'm reposting it).  I think it's ready to be merged.  Can you please
comment and/or pick it up?

If you prefer, I'm willing to merge it via my powerpc tree.

Thanks,
g.

 drivers/video/xilinxfb.c |  290 ++++++++++++++++++++++++----------------------
 1 files changed, 151 insertions(+), 139 deletions(-)


diff --git a/drivers/video/xilinxfb.c b/drivers/video/xilinxfb.c
index 40a3a2a..7a868bd 100644
--- a/drivers/video/xilinxfb.c
+++ b/drivers/video/xilinxfb.c
@@ -1,13 +1,12 @@
 /*
- * xilinxfb.c
- *
- * Xilinx TFT LCD frame buffer driver
+ * Xilinx TFT frame buffer driver
  *
  * Author: MontaVista Software, Inc.
  *         source@mvista.com
  *
  * 2002-2007 (c) MontaVista Software, Inc.
  * 2007 (c) Secret Lab Technologies, Ltd.
+ * 2009 (c) Xilinx Inc.
  *
  * This file is licensed under the terms of the GNU General Public License
  * version 2.  This program is licensed "as is" without any warranty of any
@@ -24,33 +23,38 @@
 #include <linux/device.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
+#include <linux/version.h>
 #include <linux/errno.h>
 #include <linux/string.h>
 #include <linux/mm.h>
 #include <linux/fb.h>
 #include <linux/init.h>
 #include <linux/dma-mapping.h>
-#include <linux/platform_device.h>
-#if defined(CONFIG_OF)
 #include <linux/of_device.h>
 #include <linux/of_platform.h>
-#endif
-#include <asm/io.h>
+#include <linux/io.h>
 #include <linux/xilinxfb.h>
+#include <asm/dcr.h>
 
 #define DRIVER_NAME		"xilinxfb"
-#define DRIVER_DESCRIPTION	"Xilinx TFT LCD frame buffer driver"
+
 
 /*
  * Xilinx calls it "PLB TFT LCD Controller" though it can also be used for
- * the VGA port on the Xilinx ML40x board. This is a hardware display controller
- * for a 640x480 resolution TFT or VGA screen.
+ * the VGA port on the Xilinx ML40x board. This is a hardware display
+ * controller for a 640x480 resolution TFT or VGA screen.
  *
  * The interface to the framebuffer is nice and simple.  There are two
  * control registers.  The first tells the LCD interface where in memory
  * the frame buffer is (only the 11 most significant bits are used, so
  * don't start thinking about scrolling).  The second allows the LCD to
  * be turned on or off as well as rotated 180 degrees.
+ *
+ * In case of direct PLB access the second control register will be at
+ * an offset of 4 as compared to the DCR access where the offset is 1
+ * i.e. REG_CTRL. So this is taken care in the function
+ * xilinx_fb_out_be32 where it left shifts the offset 2 times in case of
+ * direct PLB access.
  */
 #define NUM_REGS	2
 #define REG_FB_ADDR	0
@@ -107,17 +111,28 @@ static struct fb_var_screeninfo xilinx_fb_var = {
 	.activate =	FB_ACTIVATE_NOW
 };
 
+
+#define PLB_ACCESS_FLAG	0x1		/* 1 = PLB, 0 = DCR */
+
 struct xilinxfb_drvdata {
 
 	struct fb_info	info;		/* FB driver info record */
 
-	u32		regs_phys;	/* phys. address of the control registers */
-	u32 __iomem	*regs;		/* virt. address of the control registers */
+	phys_addr_t	regs_phys;	/* phys. address of the control
+						registers */
+	void __iomem	*regs;		/* virt. address of the control
+						registers */
+
+	dcr_host_t      dcr_host;
+	unsigned int    dcr_start;
+	unsigned int    dcr_len;
 
 	void		*fb_virt;	/* virt. address of the frame buffer */
 	dma_addr_t	fb_phys;	/* phys. address of the frame buffer */
 	int		fb_alloced;	/* Flag, was the fb memory alloced? */
 
+	u8 		flags;		/* features of the driver */
+
 	u32		reg_ctrl_default;
 
 	u32		pseudo_palette[PALETTE_ENTRIES_NO];
@@ -128,14 +143,19 @@ struct xilinxfb_drvdata {
 	container_of(_info, struct xilinxfb_drvdata, info)
 
 /*
- * The LCD controller has DCR interface to its registers, but all
- * the boards and configurations the driver has been tested with
- * use opb2dcr bridge. So the registers are seen as memory mapped.
- * This macro is to make it simple to add the direct DCR access
- * when it's needed.
+ * The XPS TFT Controller can be accessed through PLB or DCR interface.
+ * To perform the read/write on the registers we need to check on
+ * which bus its connected and call the appropriate write API.
  */
-#define xilinx_fb_out_be32(driverdata, offset, val) \
-	out_be32(driverdata->regs + offset, val)
+static void xilinx_fb_out_be32(struct xilinxfb_drvdata *drvdata, u32 offset,
+				u32 val)
+{
+	if (drvdata->flags & PLB_ACCESS_FLAG)
+		out_be32(drvdata->regs + (offset << 2), val);
+	else
+		dcr_write(drvdata->dcr_host, offset, val);
+
+}
 
 static int
 xilinx_fb_setcolreg(unsigned regno, unsigned red, unsigned green, unsigned blue,
@@ -203,35 +223,34 @@ static struct fb_ops xilinxfb_ops =
  * Bus independent setup/teardown
  */
 
-static int xilinxfb_assign(struct device *dev, unsigned long physaddr,
+static int xilinxfb_assign(struct device *dev,
+			   struct xilinxfb_drvdata *drvdata,
+			   unsigned long physaddr,
 			   struct xilinxfb_platform_data *pdata)
 {
-	struct xilinxfb_drvdata *drvdata;
 	int rc;
 	int fbsize = pdata->xvirt * pdata->yvirt * BYTES_PER_PIXEL;
 
-	/* Allocate the driver data region */
-	drvdata = kzalloc(sizeof(*drvdata), GFP_KERNEL);
-	if (!drvdata) {
-		dev_err(dev, "Couldn't allocate device private record\n");
-		return -ENOMEM;
-	}
-	dev_set_drvdata(dev, drvdata);
-
-	/* Map the control registers in */
-	if (!request_mem_region(physaddr, 8, DRIVER_NAME)) {
-		dev_err(dev, "Couldn't lock memory region at 0x%08lX\n",
-			physaddr);
-		rc = -ENODEV;
-		goto err_region;
-	}
-	drvdata->regs_phys = physaddr;
-	drvdata->regs = ioremap(physaddr, 8);
-	if (!drvdata->regs) {
-		dev_err(dev, "Couldn't lock memory region at 0x%08lX\n",
-			physaddr);
-		rc = -ENODEV;
-		goto err_map;
+	if (drvdata->flags & PLB_ACCESS_FLAG) {
+		/*
+		 * Map the control registers in if the controller
+		 * is on direct PLB interface.
+		 */
+		if (!request_mem_region(physaddr, 8, DRIVER_NAME)) {
+			dev_err(dev, "Couldn't lock memory region at 0x%08lX\n",
+				physaddr);
+			rc = -ENODEV;
+			goto err_region;
+		}
+
+		drvdata->regs_phys = physaddr;
+		drvdata->regs = ioremap(physaddr, 8);
+		if (!drvdata->regs) {
+			dev_err(dev, "Couldn't lock memory region at 0x%08lX\n",
+				physaddr);
+			rc = -ENODEV;
+			goto err_map;
+		}
 	}
 
 	/* Allocate the framebuffer memory */
@@ -247,7 +266,10 @@ static int xilinxfb_assign(struct device *dev, unsigned long physaddr,
 	if (!drvdata->fb_virt) {
 		dev_err(dev, "Could not allocate frame buffer memory\n");
 		rc = -ENOMEM;
-		goto err_fbmem;
+		if (drvdata->flags & PLB_ACCESS_FLAG)
+			goto err_fbmem;
+		else
+			goto err_region;
 	}
 
 	/* Clear (turn to black) the framebuffer */
@@ -260,7 +282,8 @@ static int xilinxfb_assign(struct device *dev, unsigned long physaddr,
 	drvdata->reg_ctrl_default = REG_CTRL_ENABLE;
 	if (pdata->rotate_screen)
 		drvdata->reg_ctrl_default |= REG_CTRL_ROTATE;
-	xilinx_fb_out_be32(drvdata, REG_CTRL, drvdata->reg_ctrl_default);
+	xilinx_fb_out_be32(drvdata, REG_CTRL,
+					drvdata->reg_ctrl_default);
 
 	/* Fill struct fb_info */
 	drvdata->info.device = dev;
@@ -296,11 +319,14 @@ static int xilinxfb_assign(struct device *dev, unsigned long physaddr,
 		goto err_regfb;
 	}
 
+	if (drvdata->flags & PLB_ACCESS_FLAG) {
+		/* Put a banner in the log (for DEBUG) */
+		dev_dbg(dev, "regs: phys=%lx, virt=%p\n", physaddr,
+					drvdata->regs);
+	}
 	/* Put a banner in the log (for DEBUG) */
-	dev_dbg(dev, "regs: phys=%lx, virt=%p\n", physaddr, drvdata->regs);
-	dev_dbg(dev, "fb: phys=%llx, virt=%p, size=%x\n",
-		(unsigned long long) drvdata->fb_phys, drvdata->fb_virt,
-		fbsize);
+	dev_dbg(dev, "fb: phys=%p, virt=%p, size=%x\n",
+		(void *)drvdata->fb_phys, drvdata->fb_virt, fbsize);
 
 	return 0;	/* success */
 
@@ -311,14 +337,19 @@ err_cmap:
 	if (drvdata->fb_alloced)
 		dma_free_coherent(dev, PAGE_ALIGN(fbsize), drvdata->fb_virt,
 			drvdata->fb_phys);
+	else
+		iounmap(drvdata->fb_virt);
+
 	/* Turn off the display */
 	xilinx_fb_out_be32(drvdata, REG_CTRL, 0);
 
 err_fbmem:
-	iounmap(drvdata->regs);
+	if (drvdata->flags & PLB_ACCESS_FLAG)
+		iounmap(drvdata->regs);
 
 err_map:
-	release_mem_region(physaddr, 8);
+	if (drvdata->flags & PLB_ACCESS_FLAG)
+		release_mem_region(physaddr, 8);
 
 err_region:
 	kfree(drvdata);
@@ -342,12 +373,18 @@ static int xilinxfb_release(struct device *dev)
 	if (drvdata->fb_alloced)
 		dma_free_coherent(dev, PAGE_ALIGN(drvdata->info.fix.smem_len),
 				  drvdata->fb_virt, drvdata->fb_phys);
+	else
+		iounmap(drvdata->fb_virt);
 
 	/* Turn off the display */
 	xilinx_fb_out_be32(drvdata, REG_CTRL, 0);
-	iounmap(drvdata->regs);
 
-	release_mem_region(drvdata->regs_phys, 8);
+	/* Release the resources, as allocated based on interface */
+	if (drvdata->flags & PLB_ACCESS_FLAG) {
+		iounmap(drvdata->regs);
+		release_mem_region(drvdata->regs_phys, 8);
+	} else
+		dcr_unmap(drvdata->dcr_host, drvdata->dcr_len);
 
 	kfree(drvdata);
 	dev_set_drvdata(dev, NULL);
@@ -356,77 +393,57 @@ static int xilinxfb_release(struct device *dev)
 }
 
 /* ---------------------------------------------------------------------
- * Platform bus binding
- */
-
-static int
-xilinxfb_platform_probe(struct platform_device *pdev)
-{
-	struct xilinxfb_platform_data *pdata;
-	struct resource *res;
-
-	/* Find the registers address */
-	res = platform_get_resource(pdev, IORESOURCE_IO, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "Couldn't get registers resource\n");
-		return -ENODEV;
-	}
-
-	/* If a pdata structure is provided, then extract the parameters */
-	pdata = &xilinx_fb_default_pdata;
-	if (pdev->dev.platform_data) {
-		pdata = pdev->dev.platform_data;
-		if (!pdata->xres)
-			pdata->xres = xilinx_fb_default_pdata.xres;
-		if (!pdata->yres)
-			pdata->yres = xilinx_fb_default_pdata.yres;
-		if (!pdata->xvirt)
-			pdata->xvirt = xilinx_fb_default_pdata.xvirt;
-		if (!pdata->yvirt)
-			pdata->yvirt = xilinx_fb_default_pdata.yvirt;
-	}
-
-	return xilinxfb_assign(&pdev->dev, res->start, pdata);
-}
-
-static int
-xilinxfb_platform_remove(struct platform_device *pdev)
-{
-	return xilinxfb_release(&pdev->dev);
-}
-
-
-static struct platform_driver xilinxfb_platform_driver = {
-	.probe		= xilinxfb_platform_probe,
-	.remove		= xilinxfb_platform_remove,
-	.driver = {
-		.owner = THIS_MODULE,
-		.name = DRIVER_NAME,
-	},
-};
-
-/* ---------------------------------------------------------------------
  * OF bus binding
  */
 
-#if defined(CONFIG_OF)
 static int __devinit
 xilinxfb_of_probe(struct of_device *op, const struct of_device_id *match)
 {
-	struct resource res;
 	const u32 *prop;
+	u32 *p;
+	u32 tft_access;
 	struct xilinxfb_platform_data pdata;
+	struct resource res;
 	int size, rc;
+	int start = 0, len = 0;
+	dcr_host_t dcr_host;
+	struct xilinxfb_drvdata *drvdata;
 
 	/* Copy with the default pdata (not a ptr reference!) */
 	pdata = xilinx_fb_default_pdata;
 
 	dev_dbg(&op->dev, "xilinxfb_of_probe(%p, %p)\n", op, match);
 
-	rc = of_address_to_resource(op->node, 0, &res);
-	if (rc) {
-		dev_err(&op->dev, "invalid address\n");
-		return rc;
+	/*
+	 * To check whether the core is connected directly to DCR or PLB
+	 * interface and initialize the tft_access accordingly.
+	 */
+	p = (u32 *)of_get_property(op->node, "xlnx,dcr-splb-slave-if", NULL);
+
+	if (p)
+		tft_access = *p;
+	else
+		tft_access = 0;		/* For backward compatibility */
+
+	/*
+	 * Fill the resource structure if its direct PLB interface
+	 * otherwise fill the dcr_host structure.
+	 */
+	if (tft_access) {
+		rc = of_address_to_resource(op->node, 0, &res);
+		if (rc) {
+			dev_err(&op->dev, "invalid address\n");
+			return -ENODEV;
+		}
+
+	} else {
+		start = dcr_resource_start(op->node, 0);
+		len = dcr_resource_len(op->node, 0);
+		dcr_host = dcr_map(op->node, start, len);
+		if (!DCR_MAP_OK(dcr_host)) {
+			dev_err(&op->dev, "invalid address\n");
+			return -ENODEV;
+		}
 	}
 
 	prop = of_get_property(op->node, "phys-size", &size);
@@ -450,7 +467,26 @@ xilinxfb_of_probe(struct of_device *op, const struct of_device_id *match)
 	if (of_find_property(op->node, "rotate-display", NULL))
 		pdata.rotate_screen = 1;
 
-	return xilinxfb_assign(&op->dev, res.start, &pdata);
+	/* Allocate the driver data region */
+	drvdata = kzalloc(sizeof(*drvdata), GFP_KERNEL);
+	if (!drvdata) {
+		dev_err(&op->dev, "Couldn't allocate device private record\n");
+		return -ENOMEM;
+	}
+	dev_set_drvdata(&op->dev, drvdata);
+
+	if (tft_access)
+		drvdata->flags |= PLB_ACCESS_FLAG;
+
+	/* Arguments are passed based on the interface */
+	if (drvdata->flags & PLB_ACCESS_FLAG) {
+		return xilinxfb_assign(&op->dev, drvdata, res.start, &pdata);
+	} else {
+		drvdata->dcr_start = start;
+		drvdata->dcr_len = len;
+		drvdata->dcr_host = dcr_host;
+		return xilinxfb_assign(&op->dev, drvdata, 0, &pdata);
+	}
 }
 
 static int __devexit xilinxfb_of_remove(struct of_device *op)
@@ -460,7 +496,9 @@ static int __devexit xilinxfb_of_remove(struct of_device *op)
 
 /* Match table for of_platform binding */
 static struct of_device_id xilinxfb_of_match[] __devinitdata = {
+	{ .compatible = "xlnx,xps-tft-1.00.a", },
 	{ .compatible = "xlnx,plb-tft-cntlr-ref-1.00.a", },
+	{ .compatible = "xlnx,plb-dvi-cntlr-ref-1.00.c", },
 	{},
 };
 MODULE_DEVICE_TABLE(of, xilinxfb_of_match);
@@ -476,22 +514,6 @@ static struct of_platform_driver xilinxfb_of_driver = {
 	},
 };
 
-/* Registration helpers to keep the number of #ifdefs to a minimum */
-static inline int __init xilinxfb_of_register(void)
-{
-	pr_debug("xilinxfb: calling of_register_platform_driver()\n");
-	return of_register_platform_driver(&xilinxfb_of_driver);
-}
-
-static inline void __exit xilinxfb_of_unregister(void)
-{
-	of_unregister_platform_driver(&xilinxfb_of_driver);
-}
-#else /* CONFIG_OF */
-/* CONFIG_OF not enabled; do nothing helpers */
-static inline int __init xilinxfb_of_register(void) { return 0; }
-static inline void __exit xilinxfb_of_unregister(void) { }
-#endif /* CONFIG_OF */
 
 /* ---------------------------------------------------------------------
  * Module setup and teardown
@@ -500,28 +522,18 @@ static inline void __exit xilinxfb_of_unregister(void) { }
 static int __init
 xilinxfb_init(void)
 {
-	int rc;
-	rc = xilinxfb_of_register();
-	if (rc)
-		return rc;
-
-	rc = platform_driver_register(&xilinxfb_platform_driver);
-	if (rc)
-		xilinxfb_of_unregister();
-
-	return rc;
+	return of_register_platform_driver(&xilinxfb_of_driver);
 }
 
 static void __exit
 xilinxfb_cleanup(void)
 {
-	platform_driver_unregister(&xilinxfb_platform_driver);
-	xilinxfb_of_unregister();
+	of_unregister_platform_driver(&xilinxfb_of_driver);
 }
 
 module_init(xilinxfb_init);
 module_exit(xilinxfb_cleanup);
 
 MODULE_AUTHOR("MontaVista Software, Inc. <source@mvista.com>");
-MODULE_DESCRIPTION(DRIVER_DESCRIPTION);
+MODULE_DESCRIPTION("Xilinx TFT frame buffer driver");
 MODULE_LICENSE("GPL");

^ permalink raw reply related

* [PATCH] Allow selecting mv643xx_eth on Pegasos again
From: Gabriel Paubert @ 2009-05-15 18:18 UTC (permalink / raw)
  To: Matt Sealey; +Cc: LinuxPPC

Since PPC_MUTIPLATFORM was removed, it was impossible to select the
driver for mv643xx_eth on the Pegasos. Fix by allowing to select
the driver on CHRP platforms; Pegasos is a CHRP platform and the driver
will not work wihtout arch/powerpc/platforms/chrp/pegasos_eth.

The patch also removes all references to MV64360 config option which 
no more exists.

Signed-off-by: Gabriel Paubert <paubert@iram.es> 

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index a0d1146..1dfeb62 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -360,7 +360,7 @@ config PPCBUG_NVRAM
 
 config IRQ_ALL_CPUS
 	bool "Distribute interrupts on all CPUs by default"
-	depends on SMP && !MV64360
+	depends on SMP 
 	help
 	  This option gives the kernel permission to distribute IRQs across
 	  multiple CPUs.  Saying N here will route all IRQs to the first
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 214a92d..6fc0ff4 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -2351,7 +2351,7 @@ config UGETH_TX_ON_DEMAND
 
 config MV643XX_ETH
 	tristate "Marvell Discovery (643XX) and Orion ethernet support"
-	depends on MV64360 || MV64X60 || (PPC_MULTIPLATFORM && PPC32) || PLAT_ORION
+	depends on MV64X60 || PPC_CHRP || PLAT_ORION
 	select INET_LRO
 	select PHYLIB
 	help

^ permalink raw reply related

* [patch] powerpc/ps3: Update ps3_defconfig
From: Geoff Levand @ 2009-05-15 18:01 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev

Refresh and set these options:

 CONFIG_SYSFS_DEPRECATED_V2: y -> n
 CONFIG_INPUT_JOYSTICK:      y -> n
 CONFIG_HID_SONY:            n -> m
 CONFIG_RTC_DRV_PS3:         - -> m

Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
---
Ben,

Please apply for 2.6.30.

-Geoff

 arch/powerpc/configs/ps3_defconfig |  105 +++++++++++++++++++++----------------
 1 file changed, 62 insertions(+), 43 deletions(-)

--- a/arch/powerpc/configs/ps3_defconfig
+++ b/arch/powerpc/configs/ps3_defconfig
@@ -1,13 +1,14 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.29-rc8
-# Fri Mar 13 09:28:45 2009
+# Linux kernel version: 2.6.30-rc5
+# Fri May 15 10:37:00 2009
 #
 CONFIG_PPC64=y
 
 #
 # Processor support
 #
+CONFIG_PPC_BOOK3S=y
 # CONFIG_POWER4_ONLY is not set
 CONFIG_POWER3=y
 CONFIG_POWER4=y
@@ -55,9 +56,11 @@ CONFIG_OF=y
 # CONFIG_GENERIC_TBSYNC is not set
 CONFIG_AUDIT_ARCH=y
 CONFIG_GENERIC_BUG=y
+CONFIG_DTC=y
 # CONFIG_DEFAULT_UIMAGE is not set
 # CONFIG_PPC_DCR_NATIVE is not set
 # CONFIG_PPC_DCR_MMIO is not set
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 
 #
@@ -72,6 +75,7 @@ CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
 # CONFIG_BSD_PROCESS_ACCT is not set
 # CONFIG_TASKSTATS is not set
 # CONFIG_AUDIT is not set
@@ -88,8 +92,7 @@ CONFIG_CLASSIC_RCU=y
 CONFIG_LOG_BUF_SHIFT=17
 # CONFIG_GROUP_SCHED is not set
 # CONFIG_CGROUPS is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
 # CONFIG_RELAY is not set
 CONFIG_NAMESPACES=y
 # CONFIG_UTS_NS is not set
@@ -99,6 +102,9 @@ CONFIG_NAMESPACES=y
 # CONFIG_NET_NS is not set
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
@@ -107,6 +113,7 @@ CONFIG_SYSCTL_SYSCALL=y
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
 CONFIG_KALLSYMS_EXTRA_PASS=y
+# CONFIG_STRIP_ASM_SYMS is not set
 CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
@@ -138,6 +145,7 @@ CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
 CONFIG_HAVE_DMA_ATTRS=y
 CONFIG_USE_GENERIC_SMP_HELPERS=y
+# CONFIG_SLOW_WORK is not set
 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -150,7 +158,6 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_SRCVERSION_ALL is not set
 CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
 CONFIG_BLK_DEV_BSG=y
 # CONFIG_BLK_DEV_INTEGRITY is not set
 CONFIG_BLOCK_COMPAT=y
@@ -172,7 +179,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
 #
 # Platform support
 #
-CONFIG_PPC_MULTIPLATFORM=y
 # CONFIG_PPC_PSERIES is not set
 # CONFIG_PPC_ISERIES is not set
 # CONFIG_PPC_PMAC is not set
@@ -209,6 +215,7 @@ CONFIG_SPU_FS_64K_LS=y
 # CONFIG_SPU_TRACE is not set
 CONFIG_SPU_BASE=y
 # CONFIG_PQ2ADS is not set
+# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set
 # CONFIG_IPIC is not set
 # CONFIG_MPIC is not set
 # CONFIG_MPIC_WEIRD is not set
@@ -279,11 +286,14 @@ CONFIG_PHYS_ADDR_T_64BIT=y
 CONFIG_ZONE_DMA_FLAG=1
 CONFIG_BOUNCE=y
 CONFIG_UNEVICTABLE_LRU=y
+CONFIG_HAVE_MLOCK=y
+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
 CONFIG_ARCH_MEMORY_PROBE=y
 CONFIG_PPC_HAS_HASH_64K=y
 CONFIG_PPC_4K_PAGES=y
 # CONFIG_PPC_16K_PAGES is not set
 # CONFIG_PPC_64K_PAGES is not set
+# CONFIG_PPC_256K_PAGES is not set
 CONFIG_FORCE_MAX_ZONEORDER=13
 CONFIG_SCHED_SMT=y
 CONFIG_PROC_DEVICETREE=y
@@ -316,7 +326,6 @@ CONFIG_NET=y
 #
 # Networking options
 #
-CONFIG_COMPAT_NET_DEV_OPS=y
 CONFIG_PACKET=y
 CONFIG_PACKET_MMAP=y
 CONFIG_UNIX=y
@@ -389,6 +398,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
 # CONFIG_LAPB is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
+# CONFIG_PHONET is not set
 # CONFIG_NET_SCHED is not set
 # CONFIG_DCB is not set
 
@@ -396,6 +406,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_CAN is not set
 # CONFIG_IRDA is not set
@@ -419,11 +430,9 @@ CONFIG_BT_HCIBTUSB=m
 # CONFIG_BT_HCIBFUSB is not set
 # CONFIG_BT_HCIVHCI is not set
 # CONFIG_AF_RXRPC is not set
-# CONFIG_PHONET is not set
 CONFIG_WIRELESS=y
 CONFIG_CFG80211=m
 # CONFIG_CFG80211_REG_DEBUG is not set
-CONFIG_NL80211=y
 # CONFIG_WIRELESS_OLD_REGULATORY is not set
 CONFIG_WIRELESS_EXT=y
 # CONFIG_WIRELESS_EXT_SYSFS is not set
@@ -602,6 +611,7 @@ CONFIG_SCSI_WAIT_SCAN=m
 # CONFIG_SCSI_SRP_ATTRS is not set
 # CONFIG_SCSI_LOWLEVEL is not set
 # CONFIG_SCSI_DH is not set
+# CONFIG_SCSI_OSD_INITIATOR is not set
 # CONFIG_ATA is not set
 CONFIG_MD=y
 # CONFIG_BLK_DEV_MD is not set
@@ -616,6 +626,7 @@ CONFIG_BLK_DEV_DM=m
 # CONFIG_DM_UEVENT is not set
 # CONFIG_MACINTOSH_DRIVERS is not set
 CONFIG_NETDEVICES=y
+CONFIG_COMPAT_NET_DEV_OPS=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
 # CONFIG_MACVLAN is not set
@@ -625,6 +636,8 @@ CONFIG_NETDEVICES=y
 # CONFIG_PHYLIB is not set
 CONFIG_NET_ETHERNET=y
 CONFIG_MII=m
+# CONFIG_ETHOC is not set
+# CONFIG_DNET is not set
 # CONFIG_IBM_NEW_EMAC_ZMII is not set
 # CONFIG_IBM_NEW_EMAC_RGMII is not set
 # CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -646,12 +659,13 @@ CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE=
 CONFIG_WLAN_80211=y
 # CONFIG_LIBERTAS is not set
 # CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_AT76C50X_USB is not set
 # CONFIG_USB_ZD1201 is not set
 # CONFIG_USB_NET_RNDIS_WLAN is not set
 # CONFIG_RTL8187 is not set
 # CONFIG_MAC80211_HWSIM is not set
 # CONFIG_P54_COMMON is not set
-# CONFIG_IWLWIFI_LEDS is not set
+# CONFIG_AR9170_USB is not set
 # CONFIG_HOSTAP is not set
 # CONFIG_B43 is not set
 # CONFIG_B43LEGACY is not set
@@ -673,6 +687,7 @@ CONFIG_USB_PEGASUS=m
 CONFIG_USB_USBNET=m
 CONFIG_USB_NET_AX8817X=m
 # CONFIG_USB_NET_CDCETHER is not set
+# CONFIG_USB_NET_CDC_EEM is not set
 # CONFIG_USB_NET_DM9601 is not set
 # CONFIG_USB_NET_SMSC95XX is not set
 # CONFIG_USB_NET_GL620A is not set
@@ -724,28 +739,7 @@ CONFIG_INPUT_EVDEV=m
 #
 # CONFIG_INPUT_KEYBOARD is not set
 # CONFIG_INPUT_MOUSE is not set
-CONFIG_INPUT_JOYSTICK=y
-# CONFIG_JOYSTICK_ANALOG is not set
-# CONFIG_JOYSTICK_A3D is not set
-# CONFIG_JOYSTICK_ADI is not set
-# CONFIG_JOYSTICK_COBRA is not set
-# CONFIG_JOYSTICK_GF2K is not set
-# CONFIG_JOYSTICK_GRIP is not set
-# CONFIG_JOYSTICK_GRIP_MP is not set
-# CONFIG_JOYSTICK_GUILLEMOT is not set
-# CONFIG_JOYSTICK_INTERACT is not set
-# CONFIG_JOYSTICK_SIDEWINDER is not set
-# CONFIG_JOYSTICK_TMDC is not set
-# CONFIG_JOYSTICK_IFORCE is not set
-# CONFIG_JOYSTICK_WARRIOR is not set
-# CONFIG_JOYSTICK_MAGELLAN is not set
-# CONFIG_JOYSTICK_SPACEORB is not set
-# CONFIG_JOYSTICK_SPACEBALL is not set
-# CONFIG_JOYSTICK_STINGER is not set
-# CONFIG_JOYSTICK_TWIDJOY is not set
-# CONFIG_JOYSTICK_ZHENHUA is not set
-# CONFIG_JOYSTICK_JOYDUMP is not set
-# CONFIG_JOYSTICK_XPAD is not set
+# CONFIG_INPUT_JOYSTICK is not set
 # CONFIG_INPUT_TABLET is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
 # CONFIG_INPUT_MISC is not set
@@ -864,6 +858,7 @@ CONFIG_FB_PS3_DEFAULT_SIZE_M=9
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FB_METRONOME is not set
 # CONFIG_FB_MB862XX is not set
+# CONFIG_FB_BROADSHEET is not set
 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
@@ -934,15 +929,17 @@ CONFIG_USB_HIDDEV=y
 #
 # Special HID drivers
 #
-# CONFIG_HID_COMPAT is not set
 # CONFIG_HID_A4TECH is not set
 # CONFIG_HID_APPLE is not set
 # CONFIG_HID_BELKIN is not set
 # CONFIG_HID_CHERRY is not set
 # CONFIG_HID_CHICONY is not set
 # CONFIG_HID_CYPRESS is not set
+# CONFIG_DRAGONRISE_FF is not set
 # CONFIG_HID_EZKEY is not set
+# CONFIG_HID_KYE is not set
 # CONFIG_HID_GYRATION is not set
+# CONFIG_HID_KENSINGTON is not set
 # CONFIG_HID_LOGITECH is not set
 # CONFIG_HID_MICROSOFT is not set
 # CONFIG_HID_MONTEREY is not set
@@ -950,7 +947,7 @@ CONFIG_USB_HIDDEV=y
 # CONFIG_HID_PANTHERLORD is not set
 # CONFIG_HID_PETALYNX is not set
 # CONFIG_HID_SAMSUNG is not set
-# CONFIG_HID_SONY is not set
+CONFIG_HID_SONY=m
 # CONFIG_HID_SUNPLUS is not set
 # CONFIG_GREENASIA_FF is not set
 # CONFIG_HID_TOPSEED is not set
@@ -1012,11 +1009,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 # CONFIG_USB_TMC is not set
 
 #
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
 #
 
 #
-# see USB_STORAGE Help for more information
+# also be needed; see USB_STORAGE Help for more info
 #
 CONFIG_USB_STORAGE=m
 # CONFIG_USB_STORAGE_DEBUG is not set
@@ -1058,7 +1055,6 @@ CONFIG_USB_STORAGE=m
 # CONFIG_USB_LED is not set
 # CONFIG_USB_CYPRESS_CY7C63 is not set
 # CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
 # CONFIG_USB_IDMOUSE is not set
 # CONFIG_USB_FTDI_ELAN is not set
 # CONFIG_USB_APPLEDISPLAY is not set
@@ -1074,6 +1070,7 @@ CONFIG_USB_STORAGE=m
 #
 # OTG and related infrastructure
 #
+# CONFIG_NOP_USB_XCEIV is not set
 # CONFIG_MMC is not set
 # CONFIG_MEMSTICK is not set
 # CONFIG_NEW_LEDS is not set
@@ -1113,8 +1110,10 @@ CONFIG_RTC_INTF_DEV=y
 #
 # on-CPU RTC drivers
 #
-CONFIG_RTC_DRV_PPC=m
+# CONFIG_RTC_DRV_GENERIC is not set
+CONFIG_RTC_DRV_PS3=m
 # CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
 # CONFIG_UIO is not set
 # CONFIG_STAGING is not set
 
@@ -1125,6 +1124,7 @@ CONFIG_EXT2_FS=m
 # CONFIG_EXT2_FS_XATTR is not set
 # CONFIG_EXT2_FS_XIP is not set
 CONFIG_EXT3_FS=m
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
 CONFIG_EXT3_FS_XATTR=y
 # CONFIG_EXT3_FS_POSIX_ACL is not set
 # CONFIG_EXT3_FS_SECURITY is not set
@@ -1161,6 +1161,11 @@ CONFIG_AUTOFS4_FS=m
 # CONFIG_FUSE_FS is not set
 
 #
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
 # CD-ROM/DVD Filesystems
 #
 CONFIG_ISO9660_FS=m
@@ -1211,6 +1216,7 @@ CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_ROMFS_FS is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
+# CONFIG_NILFS2_FS is not set
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=y
 CONFIG_NFS_V3=y
@@ -1223,7 +1229,6 @@ CONFIG_LOCKD_V4=y
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=y
 CONFIG_SUNRPC_GSS=y
-# CONFIG_SUNRPC_REGISTER_V4 is not set
 CONFIG_RPCSEC_GSS_KRB5=y
 # CONFIG_RPCSEC_GSS_SPKM3 is not set
 # CONFIG_SMB_FS is not set
@@ -1283,6 +1288,7 @@ CONFIG_NLS_ISO8859_1=y
 # CONFIG_NLS_KOI8_U is not set
 # CONFIG_NLS_UTF8 is not set
 # CONFIG_DLM is not set
+CONFIG_BINARY_PRINTF=y
 
 #
 # Library routines
@@ -1296,15 +1302,16 @@ CONFIG_CRC_ITU_T=m
 CONFIG_CRC32=y
 # CONFIG_CRC7 is not set
 # CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=m
 CONFIG_LZO_COMPRESS=m
 CONFIG_LZO_DECOMPRESS=m
-CONFIG_PLIST=y
+CONFIG_DECOMPRESS_GZIP=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
 CONFIG_HAVE_LMB=y
+CONFIG_NLATTR=y
 
 #
 # Kernel hacking
@@ -1322,6 +1329,9 @@ CONFIG_DEBUG_KERNEL=y
 CONFIG_DETECT_SOFTLOCKUP=y
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
 CONFIG_SCHED_DEBUG=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_TIMER_STATS is not set
@@ -1357,12 +1367,15 @@ CONFIG_DEBUG_LIST=y
 # CONFIG_FAULT_INJECTION is not set
 # CONFIG_LATENCYTOP is not set
 CONFIG_SYSCTL_SYSCALL_CHECK=y
+# CONFIG_DEBUG_PAGEALLOC is not set
 CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
 CONFIG_RING_BUFFER=y
 CONFIG_TRACING=y
+CONFIG_TRACING_SUPPORT=y
 
 #
 # Tracers
@@ -1371,18 +1384,21 @@ CONFIG_TRACING=y
 # CONFIG_IRQSOFF_TRACER is not set
 # CONFIG_SCHED_TRACER is not set
 # CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_EVENT_TRACER is not set
 # CONFIG_BOOT_TRACER is not set
 # CONFIG_TRACE_BRANCH_PROFILING is not set
 # CONFIG_STACK_TRACER is not set
+# CONFIG_KMEMTRACE is not set
+# CONFIG_WORKQUEUE_TRACER is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
 # CONFIG_FTRACE_STARTUP_TEST is not set
-# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_DYNAMIC_DEBUG is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
 CONFIG_PRINT_STACK_DEPTH=64
 CONFIG_DEBUG_STACKOVERFLOW=y
 # CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_CODE_PATCHING_SELFTEST is not set
 # CONFIG_FTR_FIXUP_SELFTEST is not set
 # CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -1415,10 +1431,12 @@ CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_RNG=m
 CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
 CONFIG_CRYPTO_GF128MUL=m
 # CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_WORKQUEUE=y
 # CONFIG_CRYPTO_CRYPTD is not set
 # CONFIG_CRYPTO_AUTHENC is not set
 # CONFIG_CRYPTO_TEST is not set
@@ -1487,6 +1505,7 @@ CONFIG_CRYPTO_SALSA20=m
 # Compression
 #
 # CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_ZLIB is not set
 CONFIG_CRYPTO_LZO=m
 
 #

^ permalink raw reply

* Re: [PATCH] sata_fsl: Fix the command description of FSL SATA controller
From: Jeff Garzik @ 2009-05-15 18:16 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linux-ide, linux-kernel, linuxppc-dev
In-Reply-To: <Pine.LNX.4.64.0905140945540.8378@localhost.localdomain>

Kumar Gala wrote:
> From: Dave Liu <daveliu@freescale.com>
> 
> The bit 11 of command description is reserved bit in Freescale
> SATA controller and needs to be set to '1'.  This is needed to
> make sure the last write from the controller to the buffer
> descriptor is seen before an interrupt is raised.
> 
> Signed-off-by: Dave Liu <daveliu@freescale.com>
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> ---
> 
> Jeff, please pick this up as a bug fix for 2.6.30
> 
>  drivers/ata/sata_fsl.c |    8 +++++---
>  1 files changed, 5 insertions(+), 3 deletions(-)

applied

^ permalink raw reply

* Re: [PATCH v3] sata_fsl: Fix compile warnings
From: Jeff Garzik @ 2009-05-15 18:16 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linux-ide, linux-kernel, linuxppc-dev
In-Reply-To: <1242270650-27945-1-git-send-email-galak@kernel.crashing.org>

Kumar Gala wrote:
> We we build with dma_addr_t as a 64-bit quantity we get:
> 
> drivers/ata/sata_fsl.c: In function 'sata_fsl_fill_sg':
> drivers/ata/sata_fsl.c:340: warning: format '%x' expects type 'unsigned int', but argument 4 has type 'dma_addr_t'
> 
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> ---
> * v2: fixed extra 'x'
> * v3: fixed whitespace issue
> 
>  drivers/ata/sata_fsl.c |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)

applied

^ permalink raw reply

* [PATCH] fsldma: fix memory leak on error path in fsl_dma_prep_memcpy()
From: Ira Snyder @ 2009-05-15 16:59 UTC (permalink / raw)
  To: Dan Williams, Li Yang, linuxppc-dev

When preparing a memcpy operation, if the kernel fails to allocate memory
for a link descriptor after the first link descriptor has already been
allocated, then some memory will never be released. Fix the problem by
walking the list of allocated descriptors backwards, and freeing the
allocated descriptors back into the DMA pool.

Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
---
 drivers/dma/fsldma.c |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
index da8a8ed..4264c98 100644
--- a/drivers/dma/fsldma.c
+++ b/drivers/dma/fsldma.c
@@ -454,8 +454,8 @@ static struct dma_async_tx_descriptor *fsl_dma_prep_memcpy(
 {
 	struct fsl_dma_chan *fsl_chan;
 	struct fsl_desc_sw *first = NULL, *prev = NULL, *new;
+	struct list_head *list;
 	size_t copy;
-	LIST_HEAD(link_chain);
 
 	if (!chan)
 		return NULL;
@@ -472,7 +472,7 @@ static struct dma_async_tx_descriptor *fsl_dma_prep_memcpy(
 		if (!new) {
 			dev_err(fsl_chan->dev,
 					"No free memory for link descriptor\n");
-			return NULL;
+			goto fail;
 		}
 #ifdef FSL_DMA_LD_DEBUG
 		dev_dbg(fsl_chan->dev, "new link desc alloc %p\n", new);
@@ -507,7 +507,19 @@ static struct dma_async_tx_descriptor *fsl_dma_prep_memcpy(
 	/* Set End-of-link to the last link descriptor of new list*/
 	set_ld_eol(fsl_chan, new);
 
-	return first ? &first->async_tx : NULL;
+	return &first->async_tx;
+
+fail:
+	if (!first)
+		return NULL;
+
+	list = &first->async_tx.tx_list;
+	list_for_each_entry_safe_reverse(new, prev, list, node) {
+		list_del(&new->node);
+		dma_pool_free(fsl_chan->desc_pool, new, new->async_tx.phys);
+	}
+
+	return NULL;
 }
 
 /**
-- 
1.5.4.3

^ permalink raw reply related

* Re: [PATCH] [PowerPC] MPC8272ADS: fix device tree for 8 MB flash, size
From: Scott Wood @ 2009-05-15 15:36 UTC (permalink / raw)
  To: Heiko Schocher; +Cc: linuxppc-dev, Wolfgang Denk, linux-kernel
In-Reply-To: <4A0D03AB.2040602@denx.de>

On Fri, May 15, 2009 at 07:54:51AM +0200, Heiko Schocher wrote:
> Scott Wood wrote:
> > We should proabbly leave out the ranges altogether, and have u-boot
> > populate it from the mappings it establishes.
> 
> No, I vote for manipulating just the entries, which u-boot dynamically
> detect, and let the other entries untouched. It is possible that
> there is a device which u-boot didn;t use/know, and there is in the DTS
> an ranges entry for it (Maybe not on the MPC8727ADS, but we should
> define a rule, how a bootloader has to manipulate entries). So if
> u-boot build the complete ranges entry, it maybe miss something.

If u-boot doesn't know about it, then it didn't create the mapping, and
thus it's not accessible (if something later on creates a mapping, it can
update ranges itself).  The devices themselves would still be described,
just not the non-existent mapping.

The benefit is that you would have just one place that reads out the
localbus config into the device tree, with no error-prone duplication of
data, or separate hacks for each board that has something that is
variable.

We could leave ranges in the dts for cuImage, and have u-boot just
overwrite the entire thing rather than patch up individual entries.

> > I don't see how current u-boot would accomodate more than 8MiB flash on
> > this board (there's some detection in board/freescale/mpc8260ads/flash.c,
> 
> Didn;t this board uses the CFI driver? :-(

Not yet, unfortunately.  This is pretty old code.

-Scott

^ permalink raw reply

* Re: FEC & SDMA (bestcomm) interaction on the 5200
From: Grant Likely @ 2009-05-15 14:52 UTC (permalink / raw)
  To: Dimiter Popoff; +Cc: linuxppc-dev
In-Reply-To: <4A0D1FF1-302-2D5C780A@nukeman.tgi-sci.com>

On Fri, May 15, 2009 at 2:36 AM, Dimiter Popoff <dp@tgi-sci.com> wrote:
> Hi people,
>
> I am porting my (not linux) OS to the 5200. I went all the
> way understanding how the SDMA works and programming what
> I needed for it so things are now pretty stable in terms
> of disk I/O and system memory -> PCI (offscreen window
> buffers -> PCI display framebuffer).
>
> =A0And I wanted to make use of the Ethernet ("FEC", as they have
> it), hoping it would take me a few days (not my first one).
>
> =A0I am out of luck - it is practically undocumented. There is some
> talk of receive buffers which the FEC should see empty etc.,
> how on earth is that supposed to happen when it has no bus
> master capability at all? It relies on the SDMA for its bus
> activity - but in what format does it expect to get these
> buffer related data?
> =A0Or (more likely, at least hopefully so) this talk in the
> MPC5200BUM (and MPC5200UM, for that) is just nonsense and
> the FEC simply puts in the FIFO incoming packets, writing as
> a last .l the receive frame status word? If so, I could
> easily handle that with the SDMA.
> =A0Same question about transmitting. I can only hope/assume
> that the FEC will just send what it is handed through the
> FIFO by the SDMA, the very first .l being the frame control
> word, and ending when the TFD from the data drd1a or whatever
> makes it through?

It's been a long time since I've been in the bowels of the FEC driver,
but I believe you are correct.

g.

--=20
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

^ permalink raw reply

* [PATCH V2] mpc5121/clocks: make debug output more readable
From: Wolfram Sang @ 2009-05-15 14:40 UTC (permalink / raw)
  To: Grant Likely; +Cc: linuxppc-dev
In-Reply-To: <fa686aa40905080840x308c1addld75b1ec5df386c13@mail.gmail.com>

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


- refactor printk with pr_info/pr_cont
- use '=' in output to connect key/value pairs

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Cc: John Rigby <jcrigby@gmail.com>
Cc: Grant Likely <grant.likely@secretlab.ca>

---
 arch/powerpc/platforms/512x/clock.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Index: arch/powerpc/platforms/512x/clock.c
===================================================================
--- arch/powerpc/platforms/512x/clock.c.orig
+++ arch/powerpc/platforms/512x/clock.c
@@ -83,13 +83,13 @@ static void dump_clocks(void)
 	mutex_lock(&clocks_mutex);
 	printk(KERN_INFO "CLOCKS:\n");
 	list_for_each_entry(p, &clocks, node) {
-		printk(KERN_INFO "  %s %ld", p->name, p->rate);
+		pr_info("  %s=%ld", p->name, p->rate);
 		if (p->parent)
-			printk(KERN_INFO " %s %ld", p->parent->name,
+			pr_cont(" %s=%ld", p->parent->name,
 			       p->parent->rate);
 		if (p->flags & CLK_HAS_CTRL)
-			printk(KERN_INFO " reg/bit %d/%d", p->reg, p->bit);
-		printk("\n");
+			pr_cont(" reg/bit=%d/%d", p->reg, p->bit);
+		pr_cont("\n");
 	}
 	mutex_unlock(&clocks_mutex);
 }

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

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

^ permalink raw reply

* [PATCH] powerpc/ftrace: fix constraint to be early clobber
From: Steven Rostedt @ 2009-05-15 14:33 UTC (permalink / raw)
  To: LKML, linuxppc-dev; +Cc: Ingo Molnar, Andrew Morton, Frederic Weisbecker


After upgrading my distcc boxes from gcc 4.2.2 to 4.4.0, the function 
graph tracer broke. This was discovered on my x86 boxes.

The issue is that gcc used the same register for an output as it did for 
an input in an asm statement. I first thought this was a bug in gcc and 
reported it. I was notified that gcc was correct and that the output had 
to be flagged as an "early clobber".

I noticed that powerpc had the same issue and this patch fixes it.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
index 70e2a73..68fd74e 100644
--- a/arch/powerpc/kernel/ftrace.c
+++ b/arch/powerpc/kernel/ftrace.c
@@ -594,7 +594,7 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr)
 			PPC_LONG "2b,4b\n"
 		".previous"
 
-		: [old] "=r" (old), [faulted] "=r" (faulted)
+		: [old] "=&r" (old), [faulted] "=r" (faulted)
 		: [parent] "r" (parent), [return_hooker] "r" (return_hooker)
 		: "memory"
 	);

^ permalink raw reply related

* Re: [PATCH] i2c-mpc: generate START condition after STOP caused by read i2c_msg
From: Joakim Tjernlund @ 2009-05-15 14:16 UTC (permalink / raw)
  To: Esben Haabendal; +Cc: linuxppc-dev, linux-i2c
In-Reply-To: <d2b9ea600905150552u6951a92es5dd119dcc37e641d@mail.gmail.com>

Esben Haabendal <esbenhaabendal@gmail.com> wrote on 15/05/2009 14:52:28:
>
> Your new patch also does not work.
>
> Have you tested it?

sure, works fine. I haven't stressed it too much though.

>
> I already tried something very much what you sent here, I believe the
> only difference was that I named the "last" variable "stop". I also
> tried several other aproaches, and none of them worked.  I would
> appreciate not to have to test all of them seperately again through
> this mailing list ;-)

:), point taken.

>
> Anyway, your patch also is in conflict with the MPC8360ERM. The spec
> specifies that a repeated start must follow an ACK, and not a "NO
> ACK".

Ouch, will have to check too, but later.

>
> When doing a repeated start after a NO ACK, the slave does not ACK the
> address (I get an RXAK).  When doing as specified, ACK'ing the last
> byte read and then doing a repeated START, i2c_wait() fails due to
> CSR_MCF bit missing.  I thought it would be possible to find somewhere
> to do a dummy read to get around this, but failed to do so without
> breaking something else.
>
> Could we go forward with my initial patch, and then continue the work
> on this repeated START approach for future releases?

Yes, go ahead.

 Jocke

^ permalink raw reply

* Re: [PATCH] i2c-mpc: generate START condition after STOP caused by read i2c_msg
From: Esben Haabendal @ 2009-05-15 12:52 UTC (permalink / raw)
  To: Joakim Tjernlund; +Cc: linuxppc-dev, linux-i2c
In-Reply-To: <OFCADC684E.A2599121-ONC12575B7.003B8AB5-C12575B7.003CF795@transmode.se>

Your new patch also does not work.

Have you tested it?

I already tried something very much what you sent here, I believe the
only difference was that I named the "last" variable "stop". I also
tried several other aproaches, and none of them worked.  I would
appreciate not to have to test all of them seperately again through
this mailing list ;-)

Anyway, your patch also is in conflict with the MPC8360ERM. The spec
specifies that a repeated start must follow an ACK, and not a "NO
ACK".

When doing a repeated start after a NO ACK, the slave does not ACK the
address (I get an RXAK).  When doing as specified, ACK'ing the last
byte read and then doing a repeated START, i2c_wait() fails due to
CSR_MCF bit missing.  I thought it would be possible to find somewhere
to do a dummy read to get around this, but failed to do so without
breaking something else.

Could we go forward with my initial patch, and then continue the work
on this repeated START approach for future releases?

/Esben

^ permalink raw reply

* Re: [PATCH v2] powerpc/pci: clean up direct access to sysdata by iseries platform
From: Kumar Gala @ 2009-05-15 12:50 UTC (permalink / raw)
  To: Stephen Rothwell; +Cc: Linuxppc-dev Development
In-Reply-To: <1242391640-18826-1-git-send-email-galak@kernel.crashing.org>


On May 15, 2009, at 7:47 AM, Kumar Gala wrote:

> We shouldn't directly access sysdata to get the device node.  We  
> should
> be calling pci_device_to_OF_node().
>
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> ---
> * Updated based on sfr's iseries pci fix patch
>
> arch/powerpc/platforms/iseries/iommu.c |    2 +-
> arch/powerpc/platforms/iseries/pci.c   |    8 ++++----
> 2 files changed, 5 insertions(+), 5 deletions(-)

Stephen if you can test this version that would be great.

thanks

- k

^ permalink raw reply

* git tree w/swiotlb/36-bit physical support for MPC8641/MPC85xx
From: Kumar Gala @ 2009-05-15 12:48 UTC (permalink / raw)
  To: Linuxppc-dev Development

For those that care and have an interest I've posted a 'swiotlb'  
branch that includes all the patches needed for running with large  
amounts of memory on MPC8641 or MPC85xx based systems.  This branch is  
based on v2.6.30-rc5 + next branch + core swiotlb patches

	git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc.git swiotlb

The expectation is all this code will be in 2.6.31.

If you have any issues please let me know.

- k

^ permalink raw reply

* [PATCH v2] powerpc/pci: clean up direct access to sysdata by iseries platform
From: Kumar Gala @ 2009-05-15 12:47 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Stephen Rothwell

We shouldn't directly access sysdata to get the device node.  We should
be calling pci_device_to_OF_node().

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
* Updated based on sfr's iseries pci fix patch

 arch/powerpc/platforms/iseries/iommu.c |    2 +-
 arch/powerpc/platforms/iseries/pci.c   |    8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/platforms/iseries/iommu.c b/arch/powerpc/platforms/iseries/iommu.c
index 4021982..224913a 100644
--- a/arch/powerpc/platforms/iseries/iommu.c
+++ b/arch/powerpc/platforms/iseries/iommu.c
@@ -177,7 +177,7 @@ static struct iommu_table *iommu_table_find(struct iommu_table * tbl)
 static void pci_dma_dev_setup_iseries(struct pci_dev *pdev)
 {
 	struct iommu_table *tbl;
-	struct device_node *dn = pdev->sysdata;
+	struct device_node *dn = pci_device_to_OF_node(dev);
 	struct pci_dn *pdn = PCI_DN(dn);
 	const u32 *lsn = of_get_property(dn, "linux,logical-slot-number", NULL);
 
diff --git a/arch/powerpc/platforms/iseries/pci.c b/arch/powerpc/platforms/iseries/pci.c
index 21cddc3..175aac8 100644
--- a/arch/powerpc/platforms/iseries/pci.c
+++ b/arch/powerpc/platforms/iseries/pci.c
@@ -318,6 +318,7 @@ static void __init iomm_table_allocate_entry(struct pci_dev *dev, int bar_num)
 {
 	struct resource *bar_res = &dev->resource[bar_num];
 	long bar_size = pci_resource_len(dev, bar_num);
+	struct device_node *dn = pci_device_to_OF_node(dev);
 
 	/*
 	 * No space to allocate, quick exit, skip Allocation.
@@ -335,9 +336,9 @@ static void __init iomm_table_allocate_entry(struct pci_dev *dev, int bar_num)
 	 * Allocate the number of table entries needed for BAR.
 	 */
 	while (bar_size > 0 ) {
-		iomm_table[current_iomm_table_entry] = dev->sysdata;
+		iomm_table[current_iomm_table_entry] = dn;
 		ds_addr_table[current_iomm_table_entry] =
-			iseries_ds_addr(dev->sysdata) | (bar_num << 24);
+			iseries_ds_addr(dn) | (bar_num << 24);
 		bar_size -= IOMM_TABLE_ENTRY_SIZE;
 		++current_iomm_table_entry;
 	}
@@ -410,7 +411,7 @@ void __init iSeries_pcibios_fixup_resources(struct pci_dev *pdev)
 	struct device_node *node;
 	int i;
 
-	node = find_device_node(bus, pdev->devfn);
+	node = pci_device_to_OF_node(pdev);
 	pr_debug("PCI: iSeries %s, pdev %p, node %p\n",
 		 pci_name(pdev), pdev, node);
 	if (!node) {
@@ -441,7 +442,6 @@ void __init iSeries_pcibios_fixup_resources(struct pci_dev *pdev)
 		}
 	}
 
-	pdev->sysdata = node;
 	allocate_device_bars(pdev);
 	iseries_device_information(pdev, bus, *sub_bus);
 }
-- 
1.6.0.6

^ permalink raw reply related

* kernel module compilation error
From: Vijay Nikam @ 2009-05-15 11:51 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Scott Wood, Ron Madrid

Hello All,

I upgraded the Linux kernel version from 2.6.20 to 2.6.23 on eval
board mpc8313erdb. Then I wrote a simple hello_world kernel module for
testing but when I do make it gives following compilation error.
Whereas I did not had this problem with kernel 2.6.20 !!!

It says; 'include/asm/current.h:35: error: invalid register name for =91cur=
rent=92'

Following is complete error log

################################
make -C /usr/local/mpc8313/linux-2.6.23 M=3D/opt/test/module/hello_world mo=
dules
make[1]: Entering directory `/usr/local/mpc8313/linux-2.6.23'
CC [M] /opt/test/module/hello_world/hello.o
In file included from include/linux/capability.h:48,
from include/linux/sched.h:50,
from include/asm/elf.h:6,
from include/linux/elf.h:8,
from include/linux/module.h:15,
from /opt/test/module/hello_world/hello.c:5:
include/asm/current.h:35: error: invalid register name for =91current=92
make[2]: *** [/opt/test/module/hello_world/hello.o] Error 1
make[1]: *** [_module_/opt/test/module/hello_world] Error 2
make[1]: Leaving directory `/usr/local/mpc8313/linux-2.6.23'
make: *** [all] Error 2
############################################

Could anyone please let me know the way to proceed or a way to think
to resolve this issue ? ? ?

Kindly please acknowledge ... thank you.

Kind Regards,
Vijay Nikam

^ permalink raw reply

* Re: [PATCH] powerpc/ftrace: Use pr_devel() in ftrace.c
From: Michael Ellerman @ 2009-05-15 11:30 UTC (permalink / raw)
  To: Steven Rostedt; +Cc: linuxppc-dev
In-Reply-To: <alpine.DEB.2.00.0905141149130.30591@gandalf.stny.rr.com>

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

On Thu, 2009-05-14 at 11:49 -0400, Steven Rostedt wrote:
> I'm fine with this patch, but it should go via the PPC tree.

Yep, it went To linux-ppc, CC you - so that's the plan, I'll nag Ben to
pick it up.

> Acked-by: Steven Rostedt <rostedt@goodmis.org>

Thanks for the ack.

cheers

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply

* Re: [PATCH] i2c-mpc: generate START condition after STOP caused by read i2c_msg
From: Joakim Tjernlund @ 2009-05-15 11:05 UTC (permalink / raw)
  To: Esben Haabendal; +Cc: linuxppc-dev, linux-i2c
In-Reply-To: <d2b9ea600905150318s69b86b5ct3816b274bf343a79@mail.gmail.com>

Esben Haabendal <esbenhaabendal@gmail.com> wrote on 15/05/2009 12:18:39:

>
> I have now spent a few hours trying a lot of different paths to fix
> this approach, but I simply cannot find a way to get i2c read to work
> without a trailing STOP condition with this controller.

I found a bug which lets me remove the "fix" and seems related to your
problem. Updated patch last in mail

>
> Is there a problem in applying my patch, as it should be "clean"
> improvement over the current implementation, which uses STOP
> condition, but does not work.
>
> Until Isomeone finds a way to get it to work without STOP, we will
> have a working driver, which I assume is what we want.

Your patch appears OK too. I just wanted to see if a better fix was
possible. Your patch is less risky and it is the safe bet so soon before
release.

 Jocke

diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
index 6c1cddd..04eff40 100644
--- a/drivers/i2c/busses/i2c-mpc.c
+++ b/drivers/i2c/busses/i2c-mpc.c
@@ -189,9 +189,6 @@ static int mpc_write(struct mpc_i2c *i2c, int target,
 	unsigned timeout = i2c->adap.timeout;
 	u32 flags = restart ? CCR_RSTA : 0;

-	/* Start with MEN */
-	if (!restart)
-		writeccr(i2c, CCR_MEN);
 	/* Start as master */
 	writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_MTX | flags);
 	/* Write target byte */
@@ -214,15 +211,12 @@ static int mpc_write(struct mpc_i2c *i2c, int target,
 }

 static int mpc_read(struct mpc_i2c *i2c, int target,
-		    u8 * data, int length, int restart)
+		    u8 * data, int length, int restart, int last)
 {
 	unsigned timeout = i2c->adap.timeout;
 	int i, result;
 	u32 flags = restart ? CCR_RSTA : 0;

-	/* Start with MEN */
-	if (!restart)
-		writeccr(i2c, CCR_MEN);
 	/* Switch to read - restart */
 	writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_MTX | flags);
 	/* Write target address byte - this time with the read flag set */
@@ -241,18 +235,18 @@ static int mpc_read(struct mpc_i2c *i2c, int target,
 		readb(i2c->base + MPC_I2C_DR);
 	}

-	for (i = 0; i < length; i++) {
+	for (i = length; i ; --i) {
 		result = i2c_wait(i2c, timeout, 0);
 		if (result < 0)
 			return result;

 		/* Generate txack on next to last byte */
-		if (i == length - 2)
+		if (i == 2)
 			writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_MSTA | CCR_TXAK);
-		/* Generate stop on last byte */
-		if (i == length - 1)
-			writeccr(i2c, CCR_MIEN | CCR_MEN | CCR_TXAK);
-		data[i] = readb(i2c->base + MPC_I2C_DR);
+		/* Generate stop on last byte, iff last transaction */
+		if (i == 1 && last)
+			writeccr(i2c, CCR_MIEN | CCR_MEN);
+		data[length-i] = readb(i2c->base + MPC_I2C_DR);
 	}

 	return length;
@@ -294,7 +288,7 @@ static int mpc_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
 		tm_i2c_select_mux(pmsg->addr);
 		if (pmsg->flags & I2C_M_RD)
 			ret =
-			    mpc_read(i2c, pmsg->addr, pmsg->buf, pmsg->len, i);
+			    mpc_read(i2c, pmsg->addr, pmsg->buf, pmsg->len, i, i == num-1);
 		else
 			ret =
 			    mpc_write(i2c, pmsg->addr, pmsg->buf, pmsg->len, i);

^ 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