<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-15993</id>
	<title>Nabble - linuxppc</title>
	<updated>2009-12-07T08:23:18Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/linuxppc-f15993.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/linuxppc-f15993.html" />
	<subtitle type="html">Linux for PowerPC</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26679709</id>
	<title>Re: [PATCH] powerpc: mpc8xxx_gpio: Add ability to mask off unused GPIO pins</title>
	<published>2009-12-07T08:23:18Z</published>
	<updated>2009-12-07T08:23:18Z</updated>
	<author>
		<name>Peter Tyser</name>
	</author>
	<content type="html">Hi Anton,
&lt;br&gt;I've CC-ed devicetree-discuss. &amp;nbsp;The original patch is at
&lt;br&gt;&lt;a href=&quot;http://patchwork.ozlabs.org/patch/40361/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://patchwork.ozlabs.org/patch/40361/&lt;/a&gt;&amp;nbsp;for reference.
&lt;br&gt;&lt;br&gt;On Sat, 2009-12-05 at 23:51 +0300, Anton Vorontsov wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sat, Dec 05, 2009 at 01:32:32PM -0600, Peter Tyser wrote:
&lt;br&gt;&amp;gt; [...]
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Adding a new &amp;quot;fsl,gpio-mask&amp;quot; device tree property allows a dts file to
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; accurately describe what GPIO pins are available for use on a given
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; board.
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; I don't see any real usage for this. If device tree specifies a wrong
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; gpio in the gpios = &amp;lt;&amp;gt; property, then it's a bug in the device tree
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; and should be fixed (or workarounded in the platform code).
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; If a user fiddles with unknown gpios via sysfs interface, then it's
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; user's problem.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Its the sysfs case that I'm concerned about. &amp;nbsp;Primarily because:
&lt;br&gt;&amp;gt; &amp;gt; 1. Users scratch their head when they see that the &amp;quot;ngpio&amp;quot; sysfs value
&lt;br&gt;&amp;gt; &amp;gt; doesn't match their CPU manual or board vendor's manual, and
&lt;br&gt;&amp;gt; &amp;gt; subsequently ask their board vendor's engineers (ie me:) what's up.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I don't think that adding code and device tree entries just for
&lt;br&gt;&amp;gt; documentation purposes is a good idea.
&lt;/div&gt;&lt;br&gt;Its not just for documentation purposes. &amp;nbsp;Right now, the sysfs &amp;quot;ngpio&amp;quot;
&lt;br&gt;value is flat out wrong for some processors, regardless of
&lt;br&gt;documentation. &amp;nbsp;Granted its not a critical bug, but I'd still consider
&lt;br&gt;it a bug.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; 2. Improperly using GPIO pins could damage hardware for some boards.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Well, your initial patch tried to solve a different problem: to not
&lt;br&gt;&amp;gt; let users to request non-existent GPIOs, which is usually safe.
&lt;br&gt;&lt;br&gt;I can update the commit message with this rational if it makes a
&lt;br&gt;difference.
&lt;br&gt;&lt;br&gt;&amp;gt; [...]
&lt;br&gt;&amp;gt; &amp;gt; #2 could be worked around by exporting GPIO pins in platform code so
&lt;br&gt;&amp;gt; &amp;gt; that they are not available via sysfs.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Yes, badly designed hardware deserves ugly hacks in the platform
&lt;br&gt;&amp;gt; code. ;-) So for this problem, just request these gpios in the
&lt;br&gt;&amp;gt; platform code.
&lt;br&gt;&lt;br&gt;I'd wager lots of boards have GPIO pins that a user shouldn't play
&lt;br&gt;around with once Linux boots up. &amp;nbsp;Like GPIO pins used to program an
&lt;br&gt;FPGA, or control a PLL, etc. &amp;nbsp;1 device tree property is nicer than
&lt;br&gt;hacking up lots of platform code...
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; Would it be any more acceptable to instead add
&lt;br&gt;&amp;gt; &amp;gt; a &amp;quot;fsl,num-gpio&amp;quot; property so that &amp;quot;ngpio&amp;quot; actually reported an accurate
&lt;br&gt;&amp;gt; &amp;gt; value and non-existent GPIO pins couldn't be used/exported?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'd think it's actually less acceptable. fsl,gpio-mask is more generic,
&lt;br&gt;&amp;gt; since from gpio-mask you can deduce ngpio. But it's still ugly.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What would be OK to do is to describe in the device tree every
&lt;br&gt;&amp;gt; device that is using some GPIO, and then let the userspace request
&lt;br&gt;&amp;gt; *only* gpios that are described in the device-tree. That way you
&lt;br&gt;&amp;gt; can automatically exclude not-existent gpios.
&lt;br&gt;&amp;gt; And if some gpios are just headers on the board, you can still
&lt;br&gt;&amp;gt; describe them in the device tree via &amp;quot;gpio-header&amp;quot; nodes.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Still, a lot of efforts for no real gain...
&lt;/div&gt;&lt;br&gt;Agreed. &amp;nbsp;Seems like a clean solution, but is a chunk of work.
&lt;br&gt;&lt;br&gt;In any case, my high-level thought process is:
&lt;br&gt;1. Currently, the &amp;quot;ngpio&amp;quot; value is wrong for some processors and should
&lt;br&gt;be fixed.
&lt;br&gt;2. Adding a new &amp;quot;fsl,gpio-mask&amp;quot; gpio solves #1, and has the benefit of
&lt;br&gt;allowing the device tree to easily reserve GPIO pins which should not be
&lt;br&gt;used in Linux.
&lt;br&gt;&lt;br&gt;I guess I'm not seeing the big downside of a new &amp;quot;fsl,gpio-mask&amp;quot;
&lt;br&gt;property. &amp;nbsp;Its the device tree's job to describe the hardware. &amp;nbsp;The
&lt;br&gt;change is pretty minimal (~15 lines), and the property can be made
&lt;br&gt;optional.
&lt;br&gt;&lt;br&gt;Or is there another suggestion on how to resolve #1 above? &amp;nbsp;I consider
&lt;br&gt;it a bug and would like to fix it.
&lt;br&gt;&lt;br&gt;Best,
&lt;br&gt;Peter
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26679709&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--powerpc%3A-mpc8xxx_gpio%3A-Add-ability-to-mask-off-unused-GPIO-pins-tp26648130p26679709.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26679694</id>
	<title>Re: MACE DMA problem on Powermac 7300</title>
	<published>2009-12-07T08:22:23Z</published>
	<updated>2009-12-07T08:22:23Z</updated>
	<author>
		<name>Risto Suominen</name>
	</author>
	<content type="html">Hi, Ben,
&lt;br&gt;&lt;br&gt;2009/12/7, Benjamin Herrenschmidt &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26679694&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;benh@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cache coherency bugs in the chipset or HW bugs in DBDMA, we've been
&lt;br&gt;&amp;gt; seeing those on/off on those old apple chipsets...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Try forcing a 32 bytes alignment ?
&lt;br&gt;&amp;gt;
&lt;br&gt;You're thinking of placing the DMA descriptors on different cache lines?
&lt;br&gt;&lt;br&gt;That's excactly what I did with de2104x. But it was easier, I think.
&lt;br&gt;The chip handled its own DMA, and by writing a skip value to a
&lt;br&gt;register... I don't know this GC DMA controller well enough and
&lt;br&gt;haven't found the documentation either...
&lt;br&gt;&lt;br&gt;But I tried the de21041 board with unmodified driver on this 7300, and
&lt;br&gt;it works. The problem was on a 5500.
&lt;br&gt;&lt;br&gt;Risto
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26679694&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MACE-DMA-problem-on-Powermac-7300-tp26669898p26679694.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26672967</id>
	<title>[PATCH] offb: add support for framebuffer handoff to offb.</title>
	<published>2009-12-06T22:01:26Z</published>
	<updated>2009-12-06T22:01:26Z</updated>
	<author>
		<name>Dave Airlie</name>
	</author>
	<content type="html">From: Dave Airlie &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672967&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;airlied@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;This allows offb to be used for initial framebuffer,
&lt;br&gt;and a kms driver to take over later in the boot sequence.
&lt;br&gt;&lt;br&gt;Signed-off-by: Dave Airlie &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672967&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;airlied@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;drivers/video/offb.c | &amp;nbsp; 15 ++++++++++++++-
&lt;br&gt;&amp;nbsp;1 files changed, 14 insertions(+), 1 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/drivers/video/offb.c b/drivers/video/offb.c
&lt;br&gt;index 4d8c54c..b043ac8 100644
&lt;br&gt;--- a/drivers/video/offb.c
&lt;br&gt;+++ b/drivers/video/offb.c
&lt;br&gt;@@ -282,8 +282,17 @@ static int offb_set_par(struct fb_info *info)
&lt;br&gt;&amp;nbsp;	return 0;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+static void offb_destroy(struct fb_info *info)
&lt;br&gt;+{
&lt;br&gt;+	if (info-&amp;gt;screen_base)
&lt;br&gt;+		iounmap(info-&amp;gt;screen_base);
&lt;br&gt;+	release_mem_region(info-&amp;gt;aperture_base, info-&amp;gt;aperture_size);
&lt;br&gt;+	framebuffer_release(info);
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;static struct fb_ops offb_ops = {
&lt;br&gt;&amp;nbsp;	.owner		= THIS_MODULE,
&lt;br&gt;+	.fb_destroy	= offb_destroy,
&lt;br&gt;&amp;nbsp;	.fb_setcolreg	= offb_setcolreg,
&lt;br&gt;&amp;nbsp;	.fb_set_par	= offb_set_par,
&lt;br&gt;&amp;nbsp;	.fb_blank	= offb_blank,
&lt;br&gt;@@ -482,10 +491,14 @@ static void __init offb_init_fb(const char *name, const char *full_name,
&lt;br&gt;&amp;nbsp;	var-&amp;gt;sync = 0;
&lt;br&gt;&amp;nbsp;	var-&amp;gt;vmode = FB_VMODE_NONINTERLACED;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+	/* set offb aperture size for generic probing */
&lt;br&gt;+	info-&amp;gt;aperture_base = address;
&lt;br&gt;+	info-&amp;gt;aperture_size = fix-&amp;gt;smem_len;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;	info-&amp;gt;fbops = &amp;offb_ops;
&lt;br&gt;&amp;nbsp;	info-&amp;gt;screen_base = ioremap(address, fix-&amp;gt;smem_len);
&lt;br&gt;&amp;nbsp;	info-&amp;gt;pseudo_palette = (void *) (info + 1);
&lt;br&gt;-	info-&amp;gt;flags = FBINFO_DEFAULT | foreign_endian;
&lt;br&gt;+	info-&amp;gt;flags = FBINFO_DEFAULT | FBINFO_MISC_FIRMWARE | foreign_endian;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	fb_alloc_cmap(&amp;info-&amp;gt;cmap, 256, 0);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-- 
&lt;br&gt;1.6.5.rc2
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672967&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--offb%3A-add-support-for-framebuffer-handoff-to-offb.-tp26672967p26672967.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26671516</id>
	<title>Re: MACE DMA problem on Powermac 7300</title>
	<published>2009-12-06T18:03:44Z</published>
	<updated>2009-12-06T18:03:44Z</updated>
	<author>
		<name>Benjamin Herrenschmidt</name>
	</author>
	<content type="html">On Mon, 2009-12-07 at 00:36 +0200, Risto Suominen wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I post this in hope that somebody could shed some light on how should
&lt;br&gt;&amp;gt; the DMA work in conjunction with the MACE ethernet controller. I find
&lt;br&gt;&amp;gt; difficult to understand why it does not work in my case:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What happens? First two bytes of a received frame are not what they
&lt;br&gt;&amp;gt; should be in more than 50% of frames. This can be avoided by receiving
&lt;br&gt;&amp;gt; the frame on a word boundary, but with the usual skb_reserve(..., 2)
&lt;br&gt;&amp;gt; (to make the IP header land on word boundary), it won't work.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So, I can make the driver work by receiving at 0 offset, and then
&lt;br&gt;&amp;gt; moving the data 2 bytes up, before handing it over to upper layers.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; This used to work with a 2.4.27 kernel, obviously the Grand Central
&lt;br&gt;&amp;gt; DBDMA controller can receive on non-word boundaries. Now I have
&lt;br&gt;&amp;gt; 2.6.15.7.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Any ideas, what could cause this kind of behaviour (and regression)?
&lt;/div&gt;&lt;br&gt;Cache coherency bugs in the chipset or HW bugs in DBDMA, we've been
&lt;br&gt;seeing those on/off on those old apple chipsets...
&lt;br&gt;&lt;br&gt;Try forcing a 32 bytes alignment ?
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Ben.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26671516&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MACE-DMA-problem-on-Powermac-7300-tp26669898p26671516.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26671169</id>
	<title>Re: using different format for hugetlbfs</title>
	<published>2009-12-06T17:04:37Z</published>
	<updated>2009-12-06T17:04:37Z</updated>
	<author>
		<name>Benjamin Herrenschmidt</name>
	</author>
	<content type="html">&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Even than, does that preclude the format I suggested? &amp;nbsp;I'm assuming &amp;nbsp;
&lt;br&gt;&amp;gt; that pgd_t/pud_t/pmd_t are always a double word so the low order 4- 
&lt;br&gt;&amp;gt; bits should be 0 (on 64-bit), so using the lsb as the flag between &amp;nbsp;
&lt;br&gt;&amp;gt; hugetlb and normal pointer should still work.
&lt;br&gt;&lt;br&gt;Might do, depends if David has enough bits ... &amp;nbsp;David ?
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Ben.
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26671169&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/using-different-format-for-hugetlbfs-tp26638670p26671169.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26669898</id>
	<title>MACE DMA problem on Powermac 7300</title>
	<published>2009-12-06T14:36:15Z</published>
	<updated>2009-12-06T14:36:15Z</updated>
	<author>
		<name>Risto Suominen</name>
	</author>
	<content type="html">Hi, everybody,
&lt;br&gt;&lt;br&gt;I post this in hope that somebody could shed some light on how should
&lt;br&gt;the DMA work in conjunction with the MACE ethernet controller. I find
&lt;br&gt;difficult to understand why it does not work in my case:
&lt;br&gt;&lt;br&gt;What happens? First two bytes of a received frame are not what they
&lt;br&gt;should be in more than 50% of frames. This can be avoided by receiving
&lt;br&gt;the frame on a word boundary, but with the usual skb_reserve(..., 2)
&lt;br&gt;(to make the IP header land on word boundary), it won't work.
&lt;br&gt;&lt;br&gt;So, I can make the driver work by receiving at 0 offset, and then
&lt;br&gt;moving the data 2 bytes up, before handing it over to upper layers.
&lt;br&gt;&lt;br&gt;This used to work with a 2.4.27 kernel, obviously the Grand Central
&lt;br&gt;DBDMA controller can receive on non-word boundaries. Now I have
&lt;br&gt;2.6.15.7.
&lt;br&gt;&lt;br&gt;Any ideas, what could cause this kind of behaviour (and regression)?
&lt;br&gt;&lt;br&gt;Best regards,
&lt;br&gt;Risto Suominen
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26669898&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MACE-DMA-problem-on-Powermac-7300-tp26669898p26669898.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26664266</id>
	<title>[RFC] doc/powerpc: try to explain why the interrupt numbers are off by 16</title>
	<published>2009-12-06T03:32:47Z</published>
	<updated>2009-12-06T03:32:47Z</updated>
	<author>
		<name>Sebastian Andrzej Siewior</name>
	</author>
	<content type="html">Signed-off-by: Sebastian Andrzej Siewior &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26664266&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sebastian@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&amp;nbsp;Documentation/powerpc/dts-bindings/fsl/mpic.txt | &amp;nbsp; 42 +++++++++++++++++++++++
&lt;br&gt;&amp;nbsp;1 files changed, 42 insertions(+), 0 deletions(-)
&lt;br&gt;&amp;nbsp;create mode 100644 Documentation/powerpc/dts-bindings/fsl/mpic.txt
&lt;br&gt;&lt;br&gt;diff --git a/Documentation/powerpc/dts-bindings/fsl/mpic.txt b/Documentation/powerpc/dts-bindings/fsl/mpic.txt
&lt;br&gt;new file mode 100644
&lt;br&gt;index 0000000..71e39cf
&lt;br&gt;--- /dev/null
&lt;br&gt;+++ b/Documentation/powerpc/dts-bindings/fsl/mpic.txt
&lt;br&gt;@@ -0,0 +1,42 @@
&lt;br&gt;+* OpenPIC and its interrupt numbers on Freescale's e500/e600 cores
&lt;br&gt;+
&lt;br&gt;+The OpenPIC specification does not specify which interrupt source has to
&lt;br&gt;+become which interrupt number. This is up to the software implementation
&lt;br&gt;+of the interrupt controller. The only requirement is that every
&lt;br&gt;+interrupt source has to have an unique interrupt number / vector number.
&lt;br&gt;+To accomplish this the current implementation assigns the number zero to
&lt;br&gt;+the first source, the number one to the second source and so on until
&lt;br&gt;+all interrupt sources have their unique number.
&lt;br&gt;+Usually the assigned vector number equals the interrupt number mentioned
&lt;br&gt;+in the documentation for a given core / CPU. This is however not true
&lt;br&gt;+for the e500 cores (MPC85XX CPUs) where the documentation distinguishes
&lt;br&gt;+between internal and external interrupt sources and starts counting at
&lt;br&gt;+zero for both of them.
&lt;br&gt;+
&lt;br&gt;+So what to write for external interrupt source X or internal interrupt
&lt;br&gt;+source Y into the device tree? Here is an example:
&lt;br&gt;+
&lt;br&gt;+The memory map for the interrupt controller in the MPC8544[0] shows,
&lt;br&gt;+that the first interrupt source starts at 0x5_0000 (PIC Register Address
&lt;br&gt;+Map-Interrupt Source Configuration Registers). This source becomes the
&lt;br&gt;+number zero therefore:
&lt;br&gt;+ External interrupt 0 = interrupt number 0
&lt;br&gt;+ External interrupt 1 = interrupt number 1
&lt;br&gt;+ External interrupt 2 = interrupt number 2
&lt;br&gt;+ ...
&lt;br&gt;+Every interrupt number allocates 0x20 bytes register space. So to get
&lt;br&gt;+its number it is sufficient to shift the lower 16bits to right by five.
&lt;br&gt;+So for the external interrupt 10 we have:
&lt;br&gt;+ &amp;nbsp;0x0140 &amp;gt;&amp;gt; 5 = 10
&lt;br&gt;+
&lt;br&gt;+After the external sources, the internal sources follow. The in core I2C
&lt;br&gt;+controller on the MPC8544 for instance has the internal source number
&lt;br&gt;+27. Oo obtain its interrupt number we take the lower 16bits of its memory
&lt;br&gt;+address (0x5_0560) and shift it right:
&lt;br&gt;+ 0x0560 &amp;gt;&amp;gt; 5 = 43
&lt;br&gt;+
&lt;br&gt;+Therefore the I2C device node for the MPC8544 CPU has to have the
&lt;br&gt;+interrupt number 43 specified in the device tree.
&lt;br&gt;+
&lt;br&gt;+[0] MPC8544E PowerQUICCTM III, Integrated Host Processor Family Reference Manual
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;MPC8544ERM Rev. 1 10/2007
&lt;br&gt;-- 
&lt;br&gt;1.6.5.3
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26664266&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MPC85xx-External-Internal-Interrupts-tp25300023p26664266.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26661831</id>
	<title>Re: using different format for hugetlbfs</title>
	<published>2009-12-05T19:05:01Z</published>
	<updated>2009-12-05T19:05:01Z</updated>
	<author>
		<name>Kumar Gala-3</name>
	</author>
	<content type="html">&lt;br&gt;On Dec 4, 2009, at 3:25 PM, Benjamin Herrenschmidt wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, 2009-12-04 at 08:09 -0600, Kumar Gala wrote:
&lt;br&gt;&amp;gt;&amp;gt; On Dec 4, 2009, at 2:58 AM, Benjamin Herrenschmidt wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On Fri, 2009-12-04 at 01:18 -0600, Kumar Gala wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Ben, David,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If we want to support true 4G/4G split on ppc32 using the MSB of &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; address to determine of the pgd_t is for hugetlbfs isn't going to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; work. &amp;nbsp;Since every pointer in the pgd_t -&amp;gt; pud_t -&amp;gt; pmd_t is &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; point to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; at least a 4K page I would think the low order 12-bits should &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; always
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be 0.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On 32 bit maybe. On 64, the pg/u/md's can be smaller. I don't really
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; want to have a different encoding for both types though.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; What do you mean they can be smaller? &amp;nbsp;We have some scenario when we
&lt;br&gt;&amp;gt;&amp;gt; dont allocate a full page? &amp;nbsp;I agree having the encodings be different
&lt;br&gt;&amp;gt;&amp;gt; would be bad. &amp;nbsp;I'm trying to avoid having it be different between 32
&lt;br&gt;&amp;gt;&amp;gt; bit and 64 (but maybe that will be impossible).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yes. The intermediary levels are smaller on 64-bit. Also, with &amp;nbsp;
&lt;br&gt;&amp;gt; hugetlbfs
&lt;br&gt;&amp;gt; it can create special levels of various sizes depending on the
&lt;br&gt;&amp;gt; requirements to fit a given huge page size. And that would be true of
&lt;br&gt;&amp;gt; both 32 and 64-bit in fact.
&lt;/div&gt;&lt;br&gt;Even than, does that preclude the format I suggested? &amp;nbsp;I'm assuming &amp;nbsp;
&lt;br&gt;that pgd_t/pud_t/pmd_t are always a double word so the low order 4- 
&lt;br&gt;bits should be 0 (on 64-bit), so using the lsb as the flag between &amp;nbsp;
&lt;br&gt;hugetlb and normal pointer should still work.
&lt;br&gt;&lt;br&gt;- k
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26661831&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/using-different-format-for-hugetlbfs-tp26638670p26661831.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26659219</id>
	<title>Re: [PATCH] powerpc: mpc8xxx_gpio: Add ability to mask off unused GPIO pins</title>
	<published>2009-12-05T12:51:49Z</published>
	<updated>2009-12-05T12:51:49Z</updated>
	<author>
		<name>Anton Vorontsov-2</name>
	</author>
	<content type="html">On Sat, Dec 05, 2009 at 01:32:32PM -0600, Peter Tyser wrote:
&lt;br&gt;[...]
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; Adding a new &amp;quot;fsl,gpio-mask&amp;quot; device tree property allows a dts file to
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; accurately describe what GPIO pins are available for use on a given
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; board.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I don't see any real usage for this. If device tree specifies a wrong
&lt;br&gt;&amp;gt; &amp;gt; gpio in the gpios = &amp;lt;&amp;gt; property, then it's a bug in the device tree
&lt;br&gt;&amp;gt; &amp;gt; and should be fixed (or workarounded in the platform code).
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; If a user fiddles with unknown gpios via sysfs interface, then it's
&lt;br&gt;&amp;gt; &amp;gt; user's problem.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Its the sysfs case that I'm concerned about. &amp;nbsp;Primarily because:
&lt;br&gt;&amp;gt; 1. Users scratch their head when they see that the &amp;quot;ngpio&amp;quot; sysfs value
&lt;br&gt;&amp;gt; doesn't match their CPU manual or board vendor's manual, and
&lt;br&gt;&amp;gt; subsequently ask their board vendor's engineers (ie me:) what's up.
&lt;/div&gt;&lt;br&gt;I don't think that adding code and device tree entries just for
&lt;br&gt;documentation purposes is a good idea.
&lt;br&gt;&lt;br&gt;&amp;gt; 2. Improperly using GPIO pins could damage hardware for some boards.
&lt;br&gt;&lt;br&gt;Well, your initial patch tried to solve a different problem: to not
&lt;br&gt;let users to request non-existent GPIOs, which is usually safe.
&lt;br&gt;&lt;br&gt;[...]
&lt;br&gt;&amp;gt; #2 could be worked around by exporting GPIO pins in platform code so
&lt;br&gt;&amp;gt; that they are not available via sysfs.
&lt;br&gt;&lt;br&gt;Yes, badly designed hardware deserves ugly hacks in the platform
&lt;br&gt;code. ;-) So for this problem, just request these gpios in the
&lt;br&gt;platform code.
&lt;br&gt;&lt;br&gt;&amp;gt; Would it be any more acceptable to instead add
&lt;br&gt;&amp;gt; a &amp;quot;fsl,num-gpio&amp;quot; property so that &amp;quot;ngpio&amp;quot; actually reported an accurate
&lt;br&gt;&amp;gt; value and non-existent GPIO pins couldn't be used/exported?
&lt;br&gt;&lt;br&gt;I'd think it's actually less acceptable. fsl,gpio-mask is more generic,
&lt;br&gt;since from gpio-mask you can deduce ngpio. But it's still ugly.
&lt;br&gt;&lt;br&gt;What would be OK to do is to describe in the device tree every
&lt;br&gt;device that is using some GPIO, and then let the userspace request
&lt;br&gt;*only* gpios that are described in the device-tree. That way you
&lt;br&gt;can automatically exclude not-existent gpios.
&lt;br&gt;And if some gpios are just headers on the board, you can still
&lt;br&gt;describe them in the device tree via &amp;quot;gpio-header&amp;quot; nodes.
&lt;br&gt;&lt;br&gt;Still, a lot of efforts for no real gain...
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Anton Vorontsov
&lt;br&gt;email: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26659219&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cbouatmailru@...&lt;/a&gt;
&lt;br&gt;irc://irc.freenode.net/bd2
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26659219&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--powerpc%3A-mpc8xxx_gpio%3A-Add-ability-to-mask-off-unused-GPIO-pins-tp26648130p26659219.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26658970</id>
	<title>Re: [PATCH] Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;</title>
	<published>2009-12-05T12:25:56Z</published>
	<updated>2009-12-05T12:25:56Z</updated>
	<author>
		<name>Benjamin Herrenschmidt</name>
	</author>
	<content type="html">On Fri, 2009-12-04 at 14:20 -0700, Grant Likely wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; From: Asier Llano Palacios &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26658970&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;asierllano@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; net/mpc5200: Fix locking on fec_mpc52xx driver
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Fix the locking scheme on the fec_mpc52xx driver. &amp;nbsp;This device can
&lt;br&gt;&amp;gt; receive IRQs from three sources; the FEC itself, the tx DMA, and the
&lt;br&gt;&amp;gt; rx DMA. &amp;nbsp;Mutual exclusion was handled by taking a spin_lock() in the
&lt;br&gt;&amp;gt; critical regions, but because the handlers are run with IRQs enabled,
&lt;br&gt;&amp;gt; spin_lock() is insufficient and the driver can end up interrupting
&lt;br&gt;&amp;gt; a critical region anyway from another IRQ.
&lt;/div&gt;&lt;br&gt;&amp;nbsp;.../...
&lt;br&gt;&lt;br&gt;I would suggest a simpler locking strategy.
&lt;br&gt;&lt;br&gt;The network stack is going to provide you with a lock already which is
&lt;br&gt;the tx queue lock. It's going to be taken for you in start_xmit.
&lt;br&gt;&lt;br&gt;That gives you a simple locking against tx using existing network stack
&lt;br&gt;lock unlock primitives
&lt;br&gt;&lt;br&gt;Everything else should happen within NAPI poll.
&lt;br&gt;&lt;br&gt;The trick then is to not need locking in your interrupt handlers. You
&lt;br&gt;shouldn't need locking to schedule NAPI which is all they should do for
&lt;br&gt;normal tx/rx interrupts. For errors, just kick a workqueue.
&lt;br&gt;&lt;br&gt;&amp;gt;From that work queue, you can stop NAPI and stop the TX while you do
&lt;br&gt;your chip reset etc...
&lt;br&gt;&lt;br&gt;Something like what tg3 does:
&lt;br&gt;&lt;br&gt;static inline void tg3_netif_stop(struct tg3 *tp)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tp-&amp;gt;dev-&amp;gt;trans_start = jiffies; /* prevent tx timeout */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tg3_napi_disable(tp);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; netif_tx_disable(tp-&amp;gt;dev);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;You may want to be careful about potential calls to some of your other
&lt;br&gt;network callbacks tho, such as set_multicast.. I don't think the
&lt;br&gt;network stack will shield you there and set_multicast, last I looked,
&lt;br&gt;was called in a context where you can't use a mutex. But that gives you
&lt;br&gt;the basic locking strategy for your driver without adding an unnecessary
&lt;br&gt;spinlock to your fast path.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Ben.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Asier Llano discovered that this occurs when an error IRQ is raised
&lt;br&gt;&amp;gt; in the middle of handling rx irqs which resulted in an sk_buff memory
&lt;br&gt;&amp;gt; leak.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In addition, locking is spotty at best in the driver and inspection
&lt;br&gt;&amp;gt; revealed quite a few places with insufficient locking.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; This patch is based on Asier's initial work, but reworks a number of
&lt;br&gt;&amp;gt; things so that locks are held for as short a time as possible, so
&lt;br&gt;&amp;gt; that spin_lock_irqsave() is used everywhere, and so the locks are
&lt;br&gt;&amp;gt; dropped when calling into the network stack (because the lock only
&lt;br&gt;&amp;gt; protects the hardware interface; not the network stack).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Boot tested on a lite5200 with an NFS root. &amp;nbsp;Has not been performance
&lt;br&gt;&amp;gt; tested.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Signed-off-by: Asier Llano &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26658970&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a.llano@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Signed-off-by: Grant Likely &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26658970&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;grant.likely@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; ---
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Asier, can you please test this? &amp;nbsp;It took me a while to respond to
&lt;br&gt;&amp;gt; your initial post because I was concerned about some of the latency
&lt;br&gt;&amp;gt; issues, and I was concerned about disabling IRQs for long periods in
&lt;br&gt;&amp;gt; the RX handler. &amp;nbsp;I think it should be good now, but it needs testing.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt; g.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp;drivers/net/fec_mpc52xx.c | &amp;nbsp;121 +++++++++++++++++++++++----------------------
&lt;br&gt;&amp;gt; &amp;nbsp;1 files changed, 62 insertions(+), 59 deletions(-)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c
&lt;br&gt;&amp;gt; index 66dace6..4889b4d 100644
&lt;br&gt;&amp;gt; --- a/drivers/net/fec_mpc52xx.c
&lt;br&gt;&amp;gt; +++ b/drivers/net/fec_mpc52xx.c
&lt;br&gt;&amp;gt; @@ -85,11 +85,15 @@ MODULE_PARM_DESC(debug, &amp;quot;debugging messages level&amp;quot;);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;static void mpc52xx_fec_tx_timeout(struct net_device *dev)
&lt;br&gt;&amp;gt; &amp;nbsp;{
&lt;br&gt;&amp;gt; +	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt; +	unsigned long flags;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; &amp;nbsp;	dev_warn(&amp;dev-&amp;gt;dev, &amp;quot;transmit timed out\n&amp;quot;);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; +	spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;	mpc52xx_fec_reset(dev);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; &amp;nbsp;	dev-&amp;gt;stats.tx_errors++;
&lt;br&gt;&amp;gt; +	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;	netif_wake_queue(dev);
&lt;br&gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt; @@ -135,28 +139,32 @@ static void mpc52xx_fec_free_rx_buffers(struct net_device *dev, struct bcom_task
&lt;br&gt;&amp;gt; &amp;nbsp;	}
&lt;br&gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; +static void
&lt;br&gt;&amp;gt; +mpc52xx_fec_rx_submit(struct net_device *dev, struct sk_buff *rskb)
&lt;br&gt;&amp;gt; +{
&lt;br&gt;&amp;gt; +	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt; +	struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +	bd = (struct bcom_fec_bd *) bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;&amp;gt; +	bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;&amp;gt; +	bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, rskb-&amp;gt;data,
&lt;br&gt;&amp;gt; +				 &amp;nbsp; &amp;nbsp;FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; +	bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, rskb);
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; &amp;nbsp;static int mpc52xx_fec_alloc_rx_buffers(struct net_device *dev, struct bcom_task *rxtsk)
&lt;br&gt;&amp;gt; &amp;nbsp;{
&lt;br&gt;&amp;gt; -	while (!bcom_queue_full(rxtsk)) {
&lt;br&gt;&amp;gt; -		struct sk_buff *skb;
&lt;br&gt;&amp;gt; -		struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; +	struct sk_buff *skb;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; +	while (!bcom_queue_full(rxtsk)) {
&lt;br&gt;&amp;gt; &amp;nbsp;		skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
&lt;br&gt;&amp;gt; -		if (skb == NULL)
&lt;br&gt;&amp;gt; +		if (!skb)
&lt;br&gt;&amp;gt; &amp;nbsp;			return -EAGAIN;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;		/* zero out the initial receive buffers to aid debugging */
&lt;br&gt;&amp;gt; &amp;nbsp;		memset(skb-&amp;gt;data, 0, FEC_RX_BUFFER_SIZE);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -		bd = (struct bcom_fec_bd *)bcom_prepare_next_buffer(rxtsk);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -		bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;&amp;gt; -		bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, skb-&amp;gt;data,
&lt;br&gt;&amp;gt; -				FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -		bcom_submit_next_buffer(rxtsk, skb);
&lt;br&gt;&amp;gt; +		mpc52xx_fec_rx_submit(dev, skb);
&lt;br&gt;&amp;gt; &amp;nbsp;	}
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; &amp;nbsp;	return 0;
&lt;br&gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; @@ -328,13 +336,12 @@ static int mpc52xx_fec_start_xmit(struct sk_buff *skb, struct net_device *dev)
&lt;br&gt;&amp;gt; &amp;nbsp;				 &amp;nbsp; &amp;nbsp;DMA_TO_DEVICE);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;	bcom_submit_next_buffer(priv-&amp;gt;tx_dmatsk, skb);
&lt;br&gt;&amp;gt; +	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;	if (bcom_queue_full(priv-&amp;gt;tx_dmatsk)) {
&lt;br&gt;&amp;gt; &amp;nbsp;		netif_stop_queue(dev);
&lt;br&gt;&amp;gt; &amp;nbsp;	}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; -	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; &amp;nbsp;	return NETDEV_TX_OK;
&lt;br&gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; @@ -359,9 +366,9 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt; &amp;nbsp;{
&lt;br&gt;&amp;gt; &amp;nbsp;	struct net_device *dev = dev_id;
&lt;br&gt;&amp;gt; &amp;nbsp;	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt; +	unsigned long flags;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; -	spin_lock(&amp;priv-&amp;gt;lock);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; +	spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;	while (bcom_buffer_done(priv-&amp;gt;tx_dmatsk)) {
&lt;br&gt;&amp;gt; &amp;nbsp;		struct sk_buff *skb;
&lt;br&gt;&amp;gt; &amp;nbsp;		struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; @@ -372,11 +379,10 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;		dev_kfree_skb_irq(skb);
&lt;br&gt;&amp;gt; &amp;nbsp;	}
&lt;br&gt;&amp;gt; +	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;	netif_wake_queue(dev);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; -	spin_unlock(&amp;priv-&amp;gt;lock);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; &amp;nbsp;	return IRQ_HANDLED;
&lt;br&gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; @@ -384,67 +390,60 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt; &amp;nbsp;{
&lt;br&gt;&amp;gt; &amp;nbsp;	struct net_device *dev = dev_id;
&lt;br&gt;&amp;gt; &amp;nbsp;	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt; +	struct sk_buff *rskb; /* received sk_buff */
&lt;br&gt;&amp;gt; +	struct sk_buff *skb; &amp;nbsp;/* new sk_buff to enqueue in its place */
&lt;br&gt;&amp;gt; +	struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; +	u32 status, physaddr;
&lt;br&gt;&amp;gt; +	int length;
&lt;br&gt;&amp;gt; +	unsigned long flags;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +	spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;	while (bcom_buffer_done(priv-&amp;gt;rx_dmatsk)) {
&lt;br&gt;&amp;gt; -		struct sk_buff *skb;
&lt;br&gt;&amp;gt; -		struct sk_buff *rskb;
&lt;br&gt;&amp;gt; -		struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; -		u32 status;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;		rskb = bcom_retrieve_buffer(priv-&amp;gt;rx_dmatsk, &amp;status,
&lt;br&gt;&amp;gt; -				(struct bcom_bd **)&amp;bd);
&lt;br&gt;&amp;gt; -		dma_unmap_single(dev-&amp;gt;dev.parent, bd-&amp;gt;skb_pa, rskb-&amp;gt;len,
&lt;br&gt;&amp;gt; -				 DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; +					 &amp;nbsp; &amp;nbsp;(struct bcom_bd **)&amp;bd);
&lt;br&gt;&amp;gt; +		physaddr = bd-&amp;gt;skb_pa;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;		/* Test for errors in received frame */
&lt;br&gt;&amp;gt; &amp;nbsp;		if (status &amp; BCOM_FEC_RX_BD_ERRORS) {
&lt;br&gt;&amp;gt; &amp;nbsp;			/* Drop packet and reuse the buffer */
&lt;br&gt;&amp;gt; -			bd = (struct bcom_fec_bd *)
&lt;br&gt;&amp;gt; -				bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -			bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;&amp;gt; -			bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent,
&lt;br&gt;&amp;gt; -					rskb-&amp;gt;data,
&lt;br&gt;&amp;gt; -					FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -			bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, rskb);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; +			mpc52xx_fec_rx_submit(dev, rskb);
&lt;br&gt;&amp;gt; &amp;nbsp;			dev-&amp;gt;stats.rx_dropped++;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; &amp;nbsp;			continue;
&lt;br&gt;&amp;gt; &amp;nbsp;		}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;		/* skbs are allocated on open, so now we allocate a new one,
&lt;br&gt;&amp;gt; &amp;nbsp;		 * and remove the old (with the packet) */
&lt;br&gt;&amp;gt; &amp;nbsp;		skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
&lt;br&gt;&amp;gt; -		if (skb) {
&lt;br&gt;&amp;gt; -			/* Process the received skb */
&lt;br&gt;&amp;gt; -			int length = status &amp; BCOM_FEC_RX_BD_LEN_MASK;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -			skb_put(rskb, length - 4);	/* length without CRC32 */
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -			rskb-&amp;gt;dev = dev;
&lt;br&gt;&amp;gt; -			rskb-&amp;gt;protocol = eth_type_trans(rskb, dev);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -			netif_rx(rskb);
&lt;br&gt;&amp;gt; -		} else {
&lt;br&gt;&amp;gt; +		if (!skb) {
&lt;br&gt;&amp;gt; &amp;nbsp;			/* Can't get a new one : reuse the same &amp; drop pkt */
&lt;br&gt;&amp;gt; -			dev_notice(&amp;dev-&amp;gt;dev, &amp;quot;Memory squeeze, dropping packet.\n&amp;quot;);
&lt;br&gt;&amp;gt; +			dev_notice(&amp;dev-&amp;gt;dev, &amp;quot;Low memory - dropped packet.\n&amp;quot;);
&lt;br&gt;&amp;gt; +			mpc52xx_fec_rx_submit(dev, rskb);
&lt;br&gt;&amp;gt; &amp;nbsp;			dev-&amp;gt;stats.rx_dropped++;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -			skb = rskb;
&lt;br&gt;&amp;gt; +			continue;
&lt;br&gt;&amp;gt; &amp;nbsp;		}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; -		bd = (struct bcom_fec_bd *)
&lt;br&gt;&amp;gt; -			bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;&amp;gt; +		/* Enqueue the new sk_buff back on the hardware */
&lt;br&gt;&amp;gt; +		mpc52xx_fec_rx_submit(dev, skb);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; -		bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;&amp;gt; -		bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, skb-&amp;gt;data,
&lt;br&gt;&amp;gt; -				FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; +		/* Process the received skb - Drop the spin lock while
&lt;br&gt;&amp;gt; +		 * calling into the network stack */
&lt;br&gt;&amp;gt; +		spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; -		bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, skb);
&lt;br&gt;&amp;gt; +		dma_unmap_single(dev-&amp;gt;dev.parent, physaddr, rskb-&amp;gt;len,
&lt;br&gt;&amp;gt; +				 DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; +		length = status &amp; BCOM_FEC_RX_BD_LEN_MASK;
&lt;br&gt;&amp;gt; +		skb_put(rskb, length - 4);	/* length without CRC32 */
&lt;br&gt;&amp;gt; +		rskb-&amp;gt;dev = dev;
&lt;br&gt;&amp;gt; +		rskb-&amp;gt;protocol = eth_type_trans(rskb, dev);
&lt;br&gt;&amp;gt; +		netif_rx(rskb);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +		spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;	}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; +	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; &amp;nbsp;	return IRQ_HANDLED;
&lt;br&gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; @@ -454,6 +453,7 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt; &amp;nbsp;	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt; &amp;nbsp;	struct mpc52xx_fec __iomem *fec = priv-&amp;gt;fec;
&lt;br&gt;&amp;gt; &amp;nbsp;	u32 ievent;
&lt;br&gt;&amp;gt; +	unsigned long flags;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;	ievent = in_be32(&amp;fec-&amp;gt;ievent);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; @@ -471,9 +471,10 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt; &amp;nbsp;		if (net_ratelimit() &amp;&amp; (ievent &amp; FEC_IEVENT_XFIFO_ERROR))
&lt;br&gt;&amp;gt; &amp;nbsp;			dev_warn(&amp;dev-&amp;gt;dev, &amp;quot;FEC_IEVENT_XFIFO_ERROR\n&amp;quot;);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; +		spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;		mpc52xx_fec_reset(dev);
&lt;br&gt;&amp;gt; +		spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; -		netif_wake_queue(dev);
&lt;br&gt;&amp;gt; &amp;nbsp;		return IRQ_HANDLED;
&lt;br&gt;&amp;gt; &amp;nbsp;	}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; @@ -768,6 +769,8 @@ static void mpc52xx_fec_reset(struct net_device *dev)
&lt;br&gt;&amp;gt; &amp;nbsp;	bcom_enable(priv-&amp;gt;tx_dmatsk);
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;	mpc52xx_fec_start(dev);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +	netif_wake_queue(dev);
&lt;br&gt;&amp;gt; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Linuxppc-dev mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26658970&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26658970&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--Signed-off-by%3A-Grant-Likely-%3Cgrant.likely%40secretlab.ca%3E-tp26649399p26658970.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26658474</id>
	<title>Re: [PATCH] powerpc: mpc8xxx_gpio: Add ability to mask off unused GPIO pins</title>
	<published>2009-12-05T11:32:32Z</published>
	<updated>2009-12-05T11:32:32Z</updated>
	<author>
		<name>Peter Tyser</name>
	</author>
	<content type="html">Hi Anton,
&lt;br&gt;Thanks for the feedback.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, Dec 04, 2009 at 01:43:40PM -0600, Peter Tyser wrote:
&lt;br&gt;&amp;gt; &amp;gt; This change resolves 2 issues:
&lt;br&gt;&amp;gt; &amp;gt; - Different chips have a different number of GPIO pins per controller.
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; For example, the MPC8347 has 32, the P2020 16, and the mpc8572 8.
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; Previously, the mpc8xxx_gpio driver assumed every chip had 32 GPIO
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; pins which resulted in some processors reporting an incorrect 'ngpio'
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; field in /sys. &amp;nbsp;Additionally, users could export and &amp;quot;use&amp;quot; 32 GPIO
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; pins, although in reality only a subset of the 32 pins had any real
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; functionality.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; - Some boards don't utilize all available GPIO pins. &amp;nbsp;Previously,
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; unused GPIO pins could still be exported and &amp;quot;used&amp;quot;, even though the
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; pins had no real functionality. &amp;nbsp;This is somewhat confusing to a user
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; and also allow a user to do something &amp;quot;bad&amp;quot;, like change an unused
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; floating output into a floating input.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; There are hundreds of other ways to screw things up.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Think of /dev/mem, you still able to change the registers.
&lt;br&gt;&amp;gt; Before changing any GPIO (whether it is a normal or reserved GPIO),
&lt;br&gt;&amp;gt; user has to consult with schematics/docs.
&lt;/div&gt;&lt;br&gt;Agreed. &amp;nbsp;This is an attempt to make it just a little bit harder to
&lt;br&gt;accidentally screw things up and to make the &amp;quot;ngpio&amp;quot; sysfs value
&lt;br&gt;actually contain an accurate value.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; Adding a new &amp;quot;fsl,gpio-mask&amp;quot; device tree property allows a dts file to
&lt;br&gt;&amp;gt; &amp;gt; accurately describe what GPIO pins are available for use on a given
&lt;br&gt;&amp;gt; &amp;gt; board.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I don't see any real usage for this. If device tree specifies a wrong
&lt;br&gt;&amp;gt; gpio in the gpios = &amp;lt;&amp;gt; property, then it's a bug in the device tree
&lt;br&gt;&amp;gt; and should be fixed (or workarounded in the platform code).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; If a user fiddles with unknown gpios via sysfs interface, then it's
&lt;br&gt;&amp;gt; user's problem.
&lt;/div&gt;&lt;br&gt;Its the sysfs case that I'm concerned about. &amp;nbsp;Primarily because:
&lt;br&gt;1. Users scratch their head when they see that the &amp;quot;ngpio&amp;quot; sysfs value
&lt;br&gt;doesn't match their CPU manual or board vendor's manual, and
&lt;br&gt;subsequently ask their board vendor's engineers (ie me:) what's up.
&lt;br&gt;&lt;br&gt;2. Improperly using GPIO pins could damage hardware for some boards.
&lt;br&gt;For example, some of our boards have a voltage regulator controlled via
&lt;br&gt;GPIO pins so that a CPU's core voltage can be changed based on its
&lt;br&gt;frequency, etc. &amp;nbsp;A user could damage their CPU if they aren't careful
&lt;br&gt;with those GPIO pins. &amp;nbsp;For pins like that, it'd be nice to not even let
&lt;br&gt;users play with them.
&lt;br&gt;&lt;br&gt;#2 could be worked around by exporting GPIO pins in platform code so
&lt;br&gt;that they are not available via sysfs. &amp;nbsp;And I agree that if a user is
&lt;br&gt;playing with GPIO pins, they had better know what they are doing, so #1
&lt;br&gt;above is my main issue. &amp;nbsp;Would it be any more acceptable to instead add
&lt;br&gt;a &amp;quot;fsl,num-gpio&amp;quot; property so that &amp;quot;ngpio&amp;quot; actually reported an accurate
&lt;br&gt;value and non-existent GPIO pins couldn't be used/exported?
&lt;br&gt;&lt;br&gt;With the patch as is, if &amp;quot;fsl,gpio-mask&amp;quot; is not given, the driver
&lt;br&gt;defaults to enabling all 32 gpio pins. &amp;nbsp;Would it be any better if I
&lt;br&gt;respun the patch to only add the &amp;quot;fsl,gpio-mask&amp;quot; property for the
&lt;br&gt;mpc8572, p2020, and mpc8379 boards which have less than 32 gpio pins and
&lt;br&gt;document the dts property as optional?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Peter
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26658474&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--powerpc%3A-mpc8xxx_gpio%3A-Add-ability-to-mask-off-unused-GPIO-pins-tp26648130p26658474.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26657768</id>
	<title>Re: [PATCH] powerpc: mpc8xxx_gpio: Add ability to mask off unused GPIO pins</title>
	<published>2009-12-05T09:56:14Z</published>
	<updated>2009-12-05T09:56:14Z</updated>
	<author>
		<name>Anton Vorontsov-2</name>
	</author>
	<content type="html">Hi Peter,
&lt;br&gt;&lt;br&gt;On Fri, Dec 04, 2009 at 01:43:40PM -0600, Peter Tyser wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; This change resolves 2 issues:
&lt;br&gt;&amp;gt; - Different chips have a different number of GPIO pins per controller.
&lt;br&gt;&amp;gt; &amp;nbsp; For example, the MPC8347 has 32, the P2020 16, and the mpc8572 8.
&lt;br&gt;&amp;gt; &amp;nbsp; Previously, the mpc8xxx_gpio driver assumed every chip had 32 GPIO
&lt;br&gt;&amp;gt; &amp;nbsp; pins which resulted in some processors reporting an incorrect 'ngpio'
&lt;br&gt;&amp;gt; &amp;nbsp; field in /sys. &amp;nbsp;Additionally, users could export and &amp;quot;use&amp;quot; 32 GPIO
&lt;br&gt;&amp;gt; &amp;nbsp; pins, although in reality only a subset of the 32 pins had any real
&lt;br&gt;&amp;gt; &amp;nbsp; functionality.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - Some boards don't utilize all available GPIO pins. &amp;nbsp;Previously,
&lt;br&gt;&amp;gt; &amp;nbsp; unused GPIO pins could still be exported and &amp;quot;used&amp;quot;, even though the
&lt;br&gt;&amp;gt; &amp;nbsp; pins had no real functionality. &amp;nbsp;This is somewhat confusing to a user
&lt;br&gt;&amp;gt; &amp;nbsp; and also allow a user to do something &amp;quot;bad&amp;quot;, like change an unused
&lt;br&gt;&amp;gt; &amp;nbsp; floating output into a floating input.
&lt;/div&gt;&lt;br&gt;There are hundreds of other ways to screw things up.
&lt;br&gt;&lt;br&gt;Think of /dev/mem, you still able to change the registers.
&lt;br&gt;Before changing any GPIO (whether it is a normal or reserved GPIO),
&lt;br&gt;user has to consult with schematics/docs.
&lt;br&gt;&lt;br&gt;&amp;gt; Adding a new &amp;quot;fsl,gpio-mask&amp;quot; device tree property allows a dts file to
&lt;br&gt;&amp;gt; accurately describe what GPIO pins are available for use on a given
&lt;br&gt;&amp;gt; board.
&lt;br&gt;&lt;br&gt;I don't see any real usage for this. If device tree specifies a wrong
&lt;br&gt;gpio in the gpios = &amp;lt;&amp;gt; property, then it's a bug in the device tree
&lt;br&gt;and should be fixed (or workarounded in the platform code).
&lt;br&gt;&lt;br&gt;If a user fiddles with unknown gpios via sysfs interface, then it's
&lt;br&gt;user's problem.
&lt;br&gt;&lt;br&gt;FWIW, we don't have any masks for reserved IRQs.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Anton Vorontsov
&lt;br&gt;email: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26657768&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cbouatmailru@...&lt;/a&gt;
&lt;br&gt;irc://irc.freenode.net/bd2
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26657768&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--powerpc%3A-mpc8xxx_gpio%3A-Add-ability-to-mask-off-unused-GPIO-pins-tp26648130p26657768.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26652947</id>
	<title>[PATCH/REPOST] net/mpc5200: Fix locking on fec_mpc52xx driver</title>
	<published>2009-12-04T20:33:13Z</published>
	<updated>2009-12-04T20:33:13Z</updated>
	<author>
		<name>Grant Likely-2</name>
	</author>
	<content type="html">From: Asier Llano Palacios &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652947&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;asierllano@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;Fix the locking scheme on the fec_mpc52xx driver. &amp;nbsp;This device can
&lt;br&gt;receive IRQs from three sources; the FEC itself, the tx DMA, and the
&lt;br&gt;rx DMA. &amp;nbsp;Mutual exclusion was handled by taking a spin_lock() in the
&lt;br&gt;critical regions, but because the handlers are run with IRQs enabled,
&lt;br&gt;spin_lock() is insufficient and the driver can end up interrupting
&lt;br&gt;a critical region anyway from another IRQ.
&lt;br&gt;&lt;br&gt;Asier Llano discovered that this occurs when an error IRQ is raised
&lt;br&gt;in the middle of handling rx irqs which resulted in an sk_buff memory
&lt;br&gt;leak.
&lt;br&gt;&lt;br&gt;In addition, locking is spotty at best in the driver and inspection
&lt;br&gt;revealed quite a few places with insufficient locking.
&lt;br&gt;&lt;br&gt;This patch is based on Asier's initial work, but reworks a number of
&lt;br&gt;things so that locks are held for as short a time as possible, so
&lt;br&gt;that spin_lock_irqsave() is used everywhere, and so the locks are
&lt;br&gt;dropped when calling into the network stack (because the lock only
&lt;br&gt;protects the hardware interface; not the network stack).
&lt;br&gt;&lt;br&gt;Boot tested on a lite5200 with an NFS root. &amp;nbsp;Has not been performance
&lt;br&gt;tested.
&lt;br&gt;&lt;br&gt;Signed-off-by: Asier Llano &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652947&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a.llano@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Signed-off-by: Grant Likely &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652947&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;grant.likely@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&lt;br&gt;Reposting due to messing up both subject line and davem's email addr.
&lt;br&gt;&lt;br&gt;&amp;nbsp;drivers/net/fec_mpc52xx.c | &amp;nbsp;121 +++++++++++++++++++++++----------------------
&lt;br&gt;&amp;nbsp;1 files changed, 62 insertions(+), 59 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c
&lt;br&gt;index 66dace6..4889b4d 100644
&lt;br&gt;--- a/drivers/net/fec_mpc52xx.c
&lt;br&gt;+++ b/drivers/net/fec_mpc52xx.c
&lt;br&gt;@@ -85,11 +85,15 @@ MODULE_PARM_DESC(debug, &amp;quot;debugging messages level&amp;quot;);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;static void mpc52xx_fec_tx_timeout(struct net_device *dev)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;+	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;+	unsigned long flags;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;	dev_warn(&amp;dev-&amp;gt;dev, &amp;quot;transmit timed out\n&amp;quot;);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+	spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;	mpc52xx_fec_reset(dev);
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;	dev-&amp;gt;stats.tx_errors++;
&lt;br&gt;+	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	netif_wake_queue(dev);
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;@@ -135,28 +139,32 @@ static void mpc52xx_fec_free_rx_buffers(struct net_device *dev, struct bcom_task
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+static void
&lt;br&gt;+mpc52xx_fec_rx_submit(struct net_device *dev, struct sk_buff *rskb)
&lt;br&gt;+{
&lt;br&gt;+	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;+	struct bcom_fec_bd *bd;
&lt;br&gt;+
&lt;br&gt;+	bd = (struct bcom_fec_bd *) bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;+	bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;+	bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, rskb-&amp;gt;data,
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;+	bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, rskb);
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;static int mpc52xx_fec_alloc_rx_buffers(struct net_device *dev, struct bcom_task *rxtsk)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;-	while (!bcom_queue_full(rxtsk)) {
&lt;br&gt;-		struct sk_buff *skb;
&lt;br&gt;-		struct bcom_fec_bd *bd;
&lt;br&gt;+	struct sk_buff *skb;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+	while (!bcom_queue_full(rxtsk)) {
&lt;br&gt;&amp;nbsp;		skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
&lt;br&gt;-		if (skb == NULL)
&lt;br&gt;+		if (!skb)
&lt;br&gt;&amp;nbsp;			return -EAGAIN;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		/* zero out the initial receive buffers to aid debugging */
&lt;br&gt;&amp;nbsp;		memset(skb-&amp;gt;data, 0, FEC_RX_BUFFER_SIZE);
&lt;br&gt;-
&lt;br&gt;-		bd = (struct bcom_fec_bd *)bcom_prepare_next_buffer(rxtsk);
&lt;br&gt;-
&lt;br&gt;-		bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;-		bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, skb-&amp;gt;data,
&lt;br&gt;-				FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;-
&lt;br&gt;-		bcom_submit_next_buffer(rxtsk, skb);
&lt;br&gt;+		mpc52xx_fec_rx_submit(dev, skb);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;	return 0;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -328,13 +336,12 @@ static int mpc52xx_fec_start_xmit(struct sk_buff *skb, struct net_device *dev)
&lt;br&gt;&amp;nbsp;				 &amp;nbsp; &amp;nbsp;DMA_TO_DEVICE);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	bcom_submit_next_buffer(priv-&amp;gt;tx_dmatsk, skb);
&lt;br&gt;+	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	if (bcom_queue_full(priv-&amp;gt;tx_dmatsk)) {
&lt;br&gt;&amp;nbsp;		netif_stop_queue(dev);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;	return NETDEV_TX_OK;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -359,9 +366,9 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	struct net_device *dev = dev_id;
&lt;br&gt;&amp;nbsp;	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;+	unsigned long flags;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	spin_lock(&amp;priv-&amp;gt;lock);
&lt;br&gt;-
&lt;br&gt;+	spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;	while (bcom_buffer_done(priv-&amp;gt;tx_dmatsk)) {
&lt;br&gt;&amp;nbsp;		struct sk_buff *skb;
&lt;br&gt;&amp;nbsp;		struct bcom_fec_bd *bd;
&lt;br&gt;@@ -372,11 +379,10 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		dev_kfree_skb_irq(skb);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;+	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	netif_wake_queue(dev);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	spin_unlock(&amp;priv-&amp;gt;lock);
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;	return IRQ_HANDLED;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -384,67 +390,60 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	struct net_device *dev = dev_id;
&lt;br&gt;&amp;nbsp;	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;+	struct sk_buff *rskb; /* received sk_buff */
&lt;br&gt;+	struct sk_buff *skb; &amp;nbsp;/* new sk_buff to enqueue in its place */
&lt;br&gt;+	struct bcom_fec_bd *bd;
&lt;br&gt;+	u32 status, physaddr;
&lt;br&gt;+	int length;
&lt;br&gt;+	unsigned long flags;
&lt;br&gt;+
&lt;br&gt;+	spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	while (bcom_buffer_done(priv-&amp;gt;rx_dmatsk)) {
&lt;br&gt;-		struct sk_buff *skb;
&lt;br&gt;-		struct sk_buff *rskb;
&lt;br&gt;-		struct bcom_fec_bd *bd;
&lt;br&gt;-		u32 status;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		rskb = bcom_retrieve_buffer(priv-&amp;gt;rx_dmatsk, &amp;status,
&lt;br&gt;-				(struct bcom_bd **)&amp;bd);
&lt;br&gt;-		dma_unmap_single(dev-&amp;gt;dev.parent, bd-&amp;gt;skb_pa, rskb-&amp;gt;len,
&lt;br&gt;-				 DMA_FROM_DEVICE);
&lt;br&gt;+					 &amp;nbsp; &amp;nbsp;(struct bcom_bd **)&amp;bd);
&lt;br&gt;+		physaddr = bd-&amp;gt;skb_pa;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		/* Test for errors in received frame */
&lt;br&gt;&amp;nbsp;		if (status &amp; BCOM_FEC_RX_BD_ERRORS) {
&lt;br&gt;&amp;nbsp;			/* Drop packet and reuse the buffer */
&lt;br&gt;-			bd = (struct bcom_fec_bd *)
&lt;br&gt;-				bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;-
&lt;br&gt;-			bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;-			bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent,
&lt;br&gt;-					rskb-&amp;gt;data,
&lt;br&gt;-					FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;-
&lt;br&gt;-			bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, rskb);
&lt;br&gt;-
&lt;br&gt;+			mpc52xx_fec_rx_submit(dev, rskb);
&lt;br&gt;&amp;nbsp;			dev-&amp;gt;stats.rx_dropped++;
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;			continue;
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		/* skbs are allocated on open, so now we allocate a new one,
&lt;br&gt;&amp;nbsp;		 * and remove the old (with the packet) */
&lt;br&gt;&amp;nbsp;		skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
&lt;br&gt;-		if (skb) {
&lt;br&gt;-			/* Process the received skb */
&lt;br&gt;-			int length = status &amp; BCOM_FEC_RX_BD_LEN_MASK;
&lt;br&gt;-
&lt;br&gt;-			skb_put(rskb, length - 4);	/* length without CRC32 */
&lt;br&gt;-
&lt;br&gt;-			rskb-&amp;gt;dev = dev;
&lt;br&gt;-			rskb-&amp;gt;protocol = eth_type_trans(rskb, dev);
&lt;br&gt;-
&lt;br&gt;-			netif_rx(rskb);
&lt;br&gt;-		} else {
&lt;br&gt;+		if (!skb) {
&lt;br&gt;&amp;nbsp;			/* Can't get a new one : reuse the same &amp; drop pkt */
&lt;br&gt;-			dev_notice(&amp;dev-&amp;gt;dev, &amp;quot;Memory squeeze, dropping packet.\n&amp;quot;);
&lt;br&gt;+			dev_notice(&amp;dev-&amp;gt;dev, &amp;quot;Low memory - dropped packet.\n&amp;quot;);
&lt;br&gt;+			mpc52xx_fec_rx_submit(dev, rskb);
&lt;br&gt;&amp;nbsp;			dev-&amp;gt;stats.rx_dropped++;
&lt;br&gt;-
&lt;br&gt;-			skb = rskb;
&lt;br&gt;+			continue;
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		bd = (struct bcom_fec_bd *)
&lt;br&gt;-			bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;+		/* Enqueue the new sk_buff back on the hardware */
&lt;br&gt;+		mpc52xx_fec_rx_submit(dev, skb);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;-		bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, skb-&amp;gt;data,
&lt;br&gt;-				FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;+		/* Process the received skb - Drop the spin lock while
&lt;br&gt;+		 * calling into the network stack */
&lt;br&gt;+		spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, skb);
&lt;br&gt;+		dma_unmap_single(dev-&amp;gt;dev.parent, physaddr, rskb-&amp;gt;len,
&lt;br&gt;+				 DMA_FROM_DEVICE);
&lt;br&gt;+		length = status &amp; BCOM_FEC_RX_BD_LEN_MASK;
&lt;br&gt;+		skb_put(rskb, length - 4);	/* length without CRC32 */
&lt;br&gt;+		rskb-&amp;gt;dev = dev;
&lt;br&gt;+		rskb-&amp;gt;protocol = eth_type_trans(rskb, dev);
&lt;br&gt;+		netif_rx(rskb);
&lt;br&gt;+
&lt;br&gt;+		spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;	return IRQ_HANDLED;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -454,6 +453,7 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;nbsp;	struct mpc52xx_fec __iomem *fec = priv-&amp;gt;fec;
&lt;br&gt;&amp;nbsp;	u32 ievent;
&lt;br&gt;+	unsigned long flags;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	ievent = in_be32(&amp;fec-&amp;gt;ievent);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -471,9 +471,10 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;		if (net_ratelimit() &amp;&amp; (ievent &amp; FEC_IEVENT_XFIFO_ERROR))
&lt;br&gt;&amp;nbsp;			dev_warn(&amp;dev-&amp;gt;dev, &amp;quot;FEC_IEVENT_XFIFO_ERROR\n&amp;quot;);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+		spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;		mpc52xx_fec_reset(dev);
&lt;br&gt;+		spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		netif_wake_queue(dev);
&lt;br&gt;&amp;nbsp;		return IRQ_HANDLED;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -768,6 +769,8 @@ static void mpc52xx_fec_reset(struct net_device *dev)
&lt;br&gt;&amp;nbsp;	bcom_enable(priv-&amp;gt;tx_dmatsk);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	mpc52xx_fec_start(dev);
&lt;br&gt;+
&lt;br&gt;+	netif_wake_queue(dev);
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652947&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH-REPOST--net-mpc5200%3A-Fix-locking-on-fec_mpc52xx-driver-tp26652947p26652947.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26652589</id>
	<title>Re: [PATCH] MAINTAINERS: Add PowerPC patterns</title>
	<published>2009-12-04T18:59:49Z</published>
	<updated>2009-12-04T18:59:49Z</updated>
	<author>
		<name>Olof Johansson-2</name>
	</author>
	<content type="html">On Fri, Dec 04, 2009 at 09:16:59AM -0800, Joe Perches wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, 2009-12-04 at 20:59 +1100, Benjamin Herrenschmidt wrote:
&lt;br&gt;&amp;gt; &amp;gt; On Fri, 2009-12-04 at 10:34 +0100, Jean Delvare wrote:
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; I've sent it to &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652589&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt; on October 14th. This is the
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; address which is listed 22 times in MAINTAINERS. If it isn't correct,
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; then please update MAINTAINERS.
&lt;br&gt;&amp;gt; &amp;gt; No it's fine both shoul work. Your patches are there, just waiting for
&lt;br&gt;&amp;gt; &amp;gt; me to pick them up, I was just firing a reminder to the rest of the CC
&lt;br&gt;&amp;gt; &amp;gt; list :-) (and I do remember fwd'ing a couple of your patches to the
&lt;br&gt;&amp;gt; &amp;gt; list, for some reason they didn't make it to patchwork back then, that
&lt;br&gt;&amp;gt; &amp;gt; was a few month ago).
&lt;br&gt;&amp;gt; &amp;gt; Anyways, I've been stretched thin with all sort of stuff lately, so bear
&lt;br&gt;&amp;gt; &amp;gt; with me if I'm a bit slow at taking or testing stuff, I'm doing my best.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Adding patterns to the PowerPC sections of MAINTAINERS is useful.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Signed-off-by: Joe Perches &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652589&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;joe@...&lt;/a&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;Acked-by: Olof Johansson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652589&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;olof@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;There are a few other files under arch/powerpc that's not under platforms
&lt;br&gt;that belongs to the pasemi code but it's not a big deal to not include
&lt;br&gt;them. This goes most of the way.
&lt;br&gt;&lt;br&gt;&lt;br&gt;-Olof
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652589&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--MAINTAINERS%3A-Add-PowerPC-patterns-tp26645985p26652589.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26652140</id>
	<title>Re: MPC8343EA Linux DTS file</title>
	<published>2009-12-04T17:44:32Z</published>
	<updated>2009-12-04T17:44:32Z</updated>
	<author>
		<name>Kim Phillips</name>
	</author>
	<content type="html">On Fri, 4 Dec 2009 15:43:18 -0800
&lt;br&gt;Junita Ajith &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652140&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ajijuni@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;please keep the list on the cc:, and don't top-post.
&lt;br&gt;&lt;br&gt;&amp;gt; This is the entire DTS file:
&lt;br&gt;&amp;gt; /dts-v1/;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; / {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; model = &amp;quot;SC3000&amp;quot;;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;MPC8349EMDS&amp;quot;, &amp;quot;MPC834xMDS&amp;quot;, &amp;quot;MPC83xxMDS&amp;quot;;
&lt;br&gt;&lt;br&gt;you don't mention the u-boot and kernel version numbers: does your
&lt;br&gt;linux kernel check for these compatibles? &amp;nbsp;If yes, then use a debugger
&lt;br&gt;to find out exactly where else the kernel could be dying.
&lt;br&gt;&lt;br&gt;Kim
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652140&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MPC8343---%22unable-to-handle-paging-request-%40-0%22-tp16510741p26652140.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26651027</id>
	<title>Re: MPC8343EA Linux DTS file</title>
	<published>2009-12-04T15:39:32Z</published>
	<updated>2009-12-04T15:39:32Z</updated>
	<author>
		<name>Kim Phillips</name>
	</author>
	<content type="html">On Fri, 4 Dec 2009 14:56:25 -0800
&lt;br&gt;agnel &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26651027&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ajijuni@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; We have an MPC8343EA based custom board.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am not able to get Linux up and running in this. No serial output to debug
&lt;br&gt;&amp;gt; further.
&lt;br&gt;&amp;gt; &amp;nbsp;U-boot shows correct 'bdinfo' &amp; 'clocks' output.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I doubt the DTS file in Linux. anyone has DTS file for MPC8343??
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; My current DTS file
&lt;br&gt;&lt;br&gt;well, for one, the dts you provide doesn't include a node for the ipic
&lt;br&gt;interrupt controller.
&lt;br&gt;&lt;br&gt;Kim
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26651027&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MPC8343---%22unable-to-handle-paging-request-%40-0%22-tp16510741p26651027.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26645258</id>
	<title>MPC8343EA Linux DTS file</title>
	<published>2009-12-04T14:56:22Z</published>
	<updated>2009-12-04T14:56:22Z</updated>
	<author>
		<name>agnel</name>
	</author>
	<content type="html">&lt;br&gt;Hi
&lt;br&gt;&lt;br&gt;We have an MPC8343EA based custom board.
&lt;br&gt;&lt;br&gt;I am not able to get Linux up and running in this. No serial output to debug further.
&lt;br&gt;&amp;nbsp;U-boot shows correct 'bdinfo' &amp; 'clocks' output.
&lt;br&gt;&lt;br&gt;I doubt the DTS file in Linux. anyone has DTS file for MPC8343??
&lt;br&gt;&lt;br&gt;My current DTS file
&lt;br&gt;/dts-v1/;
&lt;br&gt;&lt;br&gt;/ {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; model = &amp;quot;MPC8343&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;MPC8349EMDS&amp;quot;, &amp;quot;MPC834xMDS&amp;quot;, &amp;quot;MPC83xxMDS&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux,phandle = &amp;lt;0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; aliases {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ethernet0 = &amp;enet0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ethernet1 = &amp;enet1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; serial0 = &amp;serial0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; serial1 = &amp;serial1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pci0 = &amp;pci0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pci1 = &amp;pci1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cpus {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux,phandle = &amp;lt;0x200&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #cpus = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&lt;br&gt;&amp;nbsp;PowerPC,8343EA@0 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;cpu&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d-cache-line-size = &amp;lt;20&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i-cache-line-size = &amp;lt;20&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d-cache-size = &amp;lt;8000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i-cache-size = &amp;lt;8000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timebase-frequency = &amp;lt;0&amp;gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; // from bootloader
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bus-frequency = &amp;lt;0&amp;gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// from bootloader
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clock-frequency = &amp;lt;0&amp;gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// from bootloader
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32-bit;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memory {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;memory&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x00000000 0x10000000&amp;gt;; &amp;nbsp;// 256MB at 0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bcsr@e2400000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;board-control&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0xe2400000 0x8000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; soc8343@e0000000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bus-frequency = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0xe0000000 0x200&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ranges = &amp;lt;0x0 0xe0000000 0x100000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;soc&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #interrupt-cells = &amp;lt;0x2&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wdt@200 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;watchdog&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;mpc83xx_wdt&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x200 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;i2c@3000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl-i2c&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x3000 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;14 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dfsrr;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rtc@68 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;dallas,ds1374&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x68&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i2c@3100 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl-i2c&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x3100 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;15 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dfsrr;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; spi@7000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,spi&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x7000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;16 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mode = &amp;quot;cpu&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;dma@82a8 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma&amp;quot;, &amp;quot;fsl,elo-dma&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x82a8 4&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ranges = &amp;lt;0 0x8100 0x1a8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dma-channel@0 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma-channel&amp;quot;, &amp;quot;fsl,elo-dma-channel&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0 0x80&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dma-channel@80 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma-channel&amp;quot;, &amp;quot;fsl,elo-dma-channel&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x80 0x80&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dma-channel@100 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma-channel&amp;quot;, &amp;quot;fsl,elo-dma-channel&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x100 0x80&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dma-channel@180 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma-channel&amp;quot;, &amp;quot;fsl,elo-dma-channel&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x180 0x28&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;/* phy type (ULPI or SERIAL) are only types supported for MPH */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* port = 0 or 1 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; usb@22000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl-usb2-mph&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x22000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;39 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy_type = &amp;quot;ulpi&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; port1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; usb@23000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl-usb2-dr&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x23000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;38 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dr_mode = &amp;quot;otg&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy_type = &amp;quot;ulpi&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mdio@24520 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,gianfar-mdio&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x24520 0x20&amp;gt;;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy0: ethernet-phy@0 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;17 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;ethernet-phy&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy1: ethernet-phy@1 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;18 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;ethernet-phy&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;enet0: ethernet@24000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;network&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; model = &amp;quot;TSEC&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;gianfar&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x24000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; local-mac-address = [ 00 00 00 00 00 00 ];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;32 0x8 33 0x8 34 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy-handle = &amp;lt;&amp;phy0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux,network-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enet1: ethernet@25000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;network&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; model = &amp;quot;TSEC&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;gianfar&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x25000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; local-mac-address = [ 00 00 00 00 00 00 ];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;35 0x8 36 0x8 37 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy-handle = &amp;lt;&amp;phy1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux,network-index = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;serial0: serial@4500 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;serial&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;ns16550&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x4500 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clock-frequency = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;9 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; serial1: serial@4600 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;serial&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;ns16550&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x4600 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clock-frequency = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;10 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; crypto@30000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,sec2.0&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x30000 0x10000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;11 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,num-channels = &amp;lt;4&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,channel-fifo-len = &amp;lt;24&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,exec-units-mask = &amp;lt;0x7e&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,descriptor-types-mask = &amp;lt;0x01010ebf&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;agnel
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MPC8343---%22unable-to-handle-paging-request-%40-0%22-tp16510741p26645258.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26645256</id>
	<title>MPC8343EA Linux DTS file</title>
	<published>2009-12-04T14:55:39Z</published>
	<updated>2009-12-04T14:55:39Z</updated>
	<author>
		<name>agnel</name>
	</author>
	<content type="html">&lt;br&gt;Hi
&lt;br&gt;&lt;br&gt;We have an MPC8343EA based custom board.
&lt;br&gt;&lt;br&gt;I am not able to get Linux up and running in this. No serial output to debug further.
&lt;br&gt;&amp;nbsp;U-boot shows correct 'bdinfo' &amp; 'clocks' output.
&lt;br&gt;&lt;br&gt;I doubt the DTS file in Linux. anyone has DTS file for MPC8343??
&lt;br&gt;&lt;br&gt;My current DTS file
&lt;br&gt;/dts-v1/;
&lt;br&gt;&lt;br&gt;/ {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; model = &amp;quot;Silvus-SC3000&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;MPC8349EMDS&amp;quot;, &amp;quot;MPC834xMDS&amp;quot;, &amp;quot;MPC83xxMDS&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux,phandle = &amp;lt;0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; aliases {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ethernet0 = &amp;enet0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ethernet1 = &amp;enet1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; serial0 = &amp;serial0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; serial1 = &amp;serial1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pci0 = &amp;pci0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pci1 = &amp;pci1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cpus {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux,phandle = &amp;lt;0x200&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #cpus = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&lt;br&gt;&amp;nbsp;PowerPC,8343EA@0 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;cpu&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d-cache-line-size = &amp;lt;20&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i-cache-line-size = &amp;lt;20&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d-cache-size = &amp;lt;8000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i-cache-size = &amp;lt;8000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timebase-frequency = &amp;lt;0&amp;gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; // from bootloader
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bus-frequency = &amp;lt;0&amp;gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// from bootloader
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clock-frequency = &amp;lt;0&amp;gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// from bootloader
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32-bit;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memory {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;memory&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x00000000 0x10000000&amp;gt;; &amp;nbsp;// 256MB at 0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bcsr@e2400000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;board-control&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0xe2400000 0x8000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; soc8343@e0000000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bus-frequency = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0xe0000000 0x200&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ranges = &amp;lt;0x0 0xe0000000 0x100000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;soc&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #interrupt-cells = &amp;lt;0x2&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wdt@200 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;watchdog&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;mpc83xx_wdt&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x200 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;i2c@3000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl-i2c&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x3000 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;14 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dfsrr;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rtc@68 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;dallas,ds1374&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x68&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i2c@3100 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl-i2c&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x3100 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;15 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dfsrr;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; spi@7000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,spi&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x7000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;16 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mode = &amp;quot;cpu&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;dma@82a8 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma&amp;quot;, &amp;quot;fsl,elo-dma&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x82a8 4&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ranges = &amp;lt;0 0x8100 0x1a8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dma-channel@0 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma-channel&amp;quot;, &amp;quot;fsl,elo-dma-channel&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0 0x80&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dma-channel@80 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma-channel&amp;quot;, &amp;quot;fsl,elo-dma-channel&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x80 0x80&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dma-channel@100 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma-channel&amp;quot;, &amp;quot;fsl,elo-dma-channel&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x100 0x80&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dma-channel@180 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,mpc8349-dma-channel&amp;quot;, &amp;quot;fsl,elo-dma-channel&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x180 0x28&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;71 8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;/* phy type (ULPI or SERIAL) are only types supported for MPH */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* port = 0 or 1 */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; usb@22000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl-usb2-mph&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x22000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;39 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy_type = &amp;quot;ulpi&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; port1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; usb@23000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl-usb2-dr&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x23000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;38 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dr_mode = &amp;quot;otg&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy_type = &amp;quot;ulpi&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mdio@24520 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,gianfar-mdio&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x24520 0x20&amp;gt;;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy0: ethernet-phy@0 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;17 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;ethernet-phy&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy1: ethernet-phy@1 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;18 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;ethernet-phy&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;enet0: ethernet@24000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;network&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; model = &amp;quot;TSEC&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;gianfar&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x24000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; local-mac-address = [ 00 00 00 00 00 00 ];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;32 0x8 33 0x8 34 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy-handle = &amp;lt;&amp;phy0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux,network-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enet1: ethernet@25000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;network&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; model = &amp;quot;TSEC&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;gianfar&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x25000 0x1000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; local-mac-address = [ 00 00 00 00 00 00 ];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;35 0x8 36 0x8 37 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phy-handle = &amp;lt;&amp;phy1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux,network-index = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;serial0: serial@4500 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;serial&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;ns16550&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x4500 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clock-frequency = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;9 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; serial1: serial@4600 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cell-index = &amp;lt;1&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device_type = &amp;quot;serial&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;ns16550&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x4600 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clock-frequency = &amp;lt;0&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;10 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; crypto@30000 {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fsl,sec2.0&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x30000 0x10000&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupts = &amp;lt;11 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,num-channels = &amp;lt;4&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,channel-fifo-len = &amp;lt;24&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,exec-units-mask = &amp;lt;0x7e&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,descriptor-types-mask = &amp;lt;0x01010ebf&amp;gt;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;agnel
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MPC8343---%22unable-to-handle-paging-request-%40-0%22-tp16510741p26645256.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26649474</id>
	<title>Re: using different format for hugetlbfs</title>
	<published>2009-12-04T13:25:42Z</published>
	<updated>2009-12-04T13:25:42Z</updated>
	<author>
		<name>Benjamin Herrenschmidt</name>
	</author>
	<content type="html">On Fri, 2009-12-04 at 08:09 -0600, Kumar Gala wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Dec 4, 2009, at 2:58 AM, Benjamin Herrenschmidt wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; On Fri, 2009-12-04 at 01:18 -0600, Kumar Gala wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Ben, David,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; If we want to support true 4G/4G split on ppc32 using the MSB of the
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; address to determine of the pgd_t is for hugetlbfs isn't going to
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; work. &amp;nbsp;Since every pointer in the pgd_t -&amp;gt; pud_t -&amp;gt; pmd_t is point to
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; at least a 4K page I would think the low order 12-bits should always
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; be 0.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; On 32 bit maybe. On 64, the pg/u/md's can be smaller. I don't really
&lt;br&gt;&amp;gt; &amp;gt; want to have a different encoding for both types though.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What do you mean they can be smaller? &amp;nbsp;We have some scenario when we &amp;nbsp;
&lt;br&gt;&amp;gt; dont allocate a full page? &amp;nbsp;I agree having the encodings be different &amp;nbsp;
&lt;br&gt;&amp;gt; would be bad. &amp;nbsp;I'm trying to avoid having it be different between 32 &amp;nbsp;
&lt;br&gt;&amp;gt; bit and 64 (but maybe that will be impossible).
&lt;/div&gt;&lt;br&gt;Yes. The intermediary levels are smaller on 64-bit. Also, with hugetlbfs
&lt;br&gt;it can create special levels of various sizes depending on the
&lt;br&gt;requirements to fit a given huge page size. And that would be true of
&lt;br&gt;both 32 and 64-bit in fact.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Ben.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649474&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/using-different-format-for-hugetlbfs-tp26638670p26649474.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26649448</id>
	<title>Re: [PATCH] Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;</title>
	<published>2009-12-04T13:24:03Z</published>
	<updated>2009-12-04T13:24:03Z</updated>
	<author>
		<name>Grant Likely-2</name>
	</author>
	<content type="html">Oops, sorry about the messed up subject. &amp;nbsp;that was sloppy. &amp;nbsp;Real
&lt;br&gt;subject should be:
&lt;br&gt;&lt;br&gt;net/mpc5200: Fix locking on fec_mpc52xx driver
&lt;br&gt;&lt;br&gt;On Fri, Dec 4, 2009 at 2:20 PM, Grant Likely &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649448&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;grant.likely@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; From: Asier Llano Palacios &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649448&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;asierllano@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; net/mpc5200: Fix locking on fec_mpc52xx driver
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Fix the locking scheme on the fec_mpc52xx driver.  This device can
&lt;br&gt;&amp;gt; receive IRQs from three sources; the FEC itself, the tx DMA, and the
&lt;br&gt;&amp;gt; rx DMA.  Mutual exclusion was handled by taking a spin_lock() in the
&lt;br&gt;&amp;gt; critical regions, but because the handlers are run with IRQs enabled,
&lt;br&gt;&amp;gt; spin_lock() is insufficient and the driver can end up interrupting
&lt;br&gt;&amp;gt; a critical region anyway from another IRQ.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Asier Llano discovered that this occurs when an error IRQ is raised
&lt;br&gt;&amp;gt; in the middle of handling rx irqs which resulted in an sk_buff memory
&lt;br&gt;&amp;gt; leak.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In addition, locking is spotty at best in the driver and inspection
&lt;br&gt;&amp;gt; revealed quite a few places with insufficient locking.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This patch is based on Asier's initial work, but reworks a number of
&lt;br&gt;&amp;gt; things so that locks are held for as short a time as possible, so
&lt;br&gt;&amp;gt; that spin_lock_irqsave() is used everywhere, and so the locks are
&lt;br&gt;&amp;gt; dropped when calling into the network stack (because the lock only
&lt;br&gt;&amp;gt; protects the hardware interface; not the network stack).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Boot tested on a lite5200 with an NFS root.  Has not been performance
&lt;br&gt;&amp;gt; tested.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Signed-off-by: Asier Llano &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649448&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a.llano@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Signed-off-by: Grant Likely &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649448&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;grant.likely@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; ---
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Asier, can you please test this?  It took me a while to respond to
&lt;br&gt;&amp;gt; your initial post because I was concerned about some of the latency
&lt;br&gt;&amp;gt; issues, and I was concerned about disabling IRQs for long periods in
&lt;br&gt;&amp;gt; the RX handler.  I think it should be good now, but it needs testing.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt; g.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;  drivers/net/fec_mpc52xx.c |  121 +++++++++++++++++++++++----------------------
&lt;br&gt;&amp;gt;  1 files changed, 62 insertions(+), 59 deletions(-)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c
&lt;br&gt;&amp;gt; index 66dace6..4889b4d 100644
&lt;br&gt;&amp;gt; --- a/drivers/net/fec_mpc52xx.c
&lt;br&gt;&amp;gt; +++ b/drivers/net/fec_mpc52xx.c
&lt;br&gt;&amp;gt; @@ -85,11 +85,15 @@ MODULE_PARM_DESC(debug, &amp;quot;debugging messages level&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;  static void mpc52xx_fec_tx_timeout(struct net_device *dev)
&lt;br&gt;&amp;gt;  {
&lt;br&gt;&amp;gt; +       struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt; +       unsigned long flags;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt;        dev_warn(&amp;dev-&amp;gt;dev, &amp;quot;transmit timed out\n&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; +       spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;        mpc52xx_fec_reset(dev);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt;        dev-&amp;gt;stats.tx_errors++;
&lt;br&gt;&amp;gt; +       spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        netif_wake_queue(dev);
&lt;br&gt;&amp;gt;  }
&lt;br&gt;&amp;gt; @@ -135,28 +139,32 @@ static void mpc52xx_fec_free_rx_buffers(struct net_device *dev, struct bcom_task
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;  }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; +static void
&lt;br&gt;&amp;gt; +mpc52xx_fec_rx_submit(struct net_device *dev, struct sk_buff *rskb)
&lt;br&gt;&amp;gt; +{
&lt;br&gt;&amp;gt; +       struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt; +       struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +       bd = (struct bcom_fec_bd *) bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;&amp;gt; +       bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;&amp;gt; +       bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, rskb-&amp;gt;data,
&lt;br&gt;&amp;gt; +                                   FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; +       bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, rskb);
&lt;br&gt;&amp;gt; +}
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt;  static int mpc52xx_fec_alloc_rx_buffers(struct net_device *dev, struct bcom_task *rxtsk)
&lt;br&gt;&amp;gt;  {
&lt;br&gt;&amp;gt; -       while (!bcom_queue_full(rxtsk)) {
&lt;br&gt;&amp;gt; -               struct sk_buff *skb;
&lt;br&gt;&amp;gt; -               struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; +       struct sk_buff *skb;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; +       while (!bcom_queue_full(rxtsk)) {
&lt;br&gt;&amp;gt;                skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
&lt;br&gt;&amp;gt; -               if (skb == NULL)
&lt;br&gt;&amp;gt; +               if (!skb)
&lt;br&gt;&amp;gt;                        return -EAGAIN;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                /* zero out the initial receive buffers to aid debugging */
&lt;br&gt;&amp;gt;                memset(skb-&amp;gt;data, 0, FEC_RX_BUFFER_SIZE);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -               bd = (struct bcom_fec_bd *)bcom_prepare_next_buffer(rxtsk);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -               bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;&amp;gt; -               bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, skb-&amp;gt;data,
&lt;br&gt;&amp;gt; -                               FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -               bcom_submit_next_buffer(rxtsk, skb);
&lt;br&gt;&amp;gt; +               mpc52xx_fec_rx_submit(dev, skb);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt;        return 0;
&lt;br&gt;&amp;gt;  }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; @@ -328,13 +336,12 @@ static int mpc52xx_fec_start_xmit(struct sk_buff *skb, struct net_device *dev)
&lt;br&gt;&amp;gt;                                    DMA_TO_DEVICE);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        bcom_submit_next_buffer(priv-&amp;gt;tx_dmatsk, skb);
&lt;br&gt;&amp;gt; +       spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        if (bcom_queue_full(priv-&amp;gt;tx_dmatsk)) {
&lt;br&gt;&amp;gt;                netif_stop_queue(dev);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -       spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt;        return NETDEV_TX_OK;
&lt;br&gt;&amp;gt;  }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; @@ -359,9 +366,9 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt;  {
&lt;br&gt;&amp;gt;        struct net_device *dev = dev_id;
&lt;br&gt;&amp;gt;        struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt; +       unsigned long flags;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -       spin_lock(&amp;priv-&amp;gt;lock);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; +       spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;        while (bcom_buffer_done(priv-&amp;gt;tx_dmatsk)) {
&lt;br&gt;&amp;gt;                struct sk_buff *skb;
&lt;br&gt;&amp;gt;                struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; @@ -372,11 +379,10 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                dev_kfree_skb_irq(skb);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; +       spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        netif_wake_queue(dev);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -       spin_unlock(&amp;priv-&amp;gt;lock);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt;        return IRQ_HANDLED;
&lt;br&gt;&amp;gt;  }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; @@ -384,67 +390,60 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt;  {
&lt;br&gt;&amp;gt;        struct net_device *dev = dev_id;
&lt;br&gt;&amp;gt;        struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt; +       struct sk_buff *rskb; /* received sk_buff */
&lt;br&gt;&amp;gt; +       struct sk_buff *skb;  /* new sk_buff to enqueue in its place */
&lt;br&gt;&amp;gt; +       struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; +       u32 status, physaddr;
&lt;br&gt;&amp;gt; +       int length;
&lt;br&gt;&amp;gt; +       unsigned long flags;
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +       spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        while (bcom_buffer_done(priv-&amp;gt;rx_dmatsk)) {
&lt;br&gt;&amp;gt; -               struct sk_buff *skb;
&lt;br&gt;&amp;gt; -               struct sk_buff *rskb;
&lt;br&gt;&amp;gt; -               struct bcom_fec_bd *bd;
&lt;br&gt;&amp;gt; -               u32 status;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                rskb = bcom_retrieve_buffer(priv-&amp;gt;rx_dmatsk, &amp;status,
&lt;br&gt;&amp;gt; -                               (struct bcom_bd **)&amp;bd);
&lt;br&gt;&amp;gt; -               dma_unmap_single(dev-&amp;gt;dev.parent, bd-&amp;gt;skb_pa, rskb-&amp;gt;len,
&lt;br&gt;&amp;gt; -                                DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; +                                           (struct bcom_bd **)&amp;bd);
&lt;br&gt;&amp;gt; +               physaddr = bd-&amp;gt;skb_pa;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                /* Test for errors in received frame */
&lt;br&gt;&amp;gt;                if (status &amp; BCOM_FEC_RX_BD_ERRORS) {
&lt;br&gt;&amp;gt;                        /* Drop packet and reuse the buffer */
&lt;br&gt;&amp;gt; -                       bd = (struct bcom_fec_bd *)
&lt;br&gt;&amp;gt; -                               bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -                       bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;&amp;gt; -                       bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent,
&lt;br&gt;&amp;gt; -                                       rskb-&amp;gt;data,
&lt;br&gt;&amp;gt; -                                       FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -                       bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, rskb);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; +                       mpc52xx_fec_rx_submit(dev, rskb);
&lt;br&gt;&amp;gt;                        dev-&amp;gt;stats.rx_dropped++;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt;                        continue;
&lt;br&gt;&amp;gt;                }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                /* skbs are allocated on open, so now we allocate a new one,
&lt;br&gt;&amp;gt;                 * and remove the old (with the packet) */
&lt;br&gt;&amp;gt;                skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
&lt;br&gt;&amp;gt; -               if (skb) {
&lt;br&gt;&amp;gt; -                       /* Process the received skb */
&lt;br&gt;&amp;gt; -                       int length = status &amp; BCOM_FEC_RX_BD_LEN_MASK;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -                       skb_put(rskb, length - 4);      /* length without CRC32 */
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -                       rskb-&amp;gt;dev = dev;
&lt;br&gt;&amp;gt; -                       rskb-&amp;gt;protocol = eth_type_trans(rskb, dev);
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -                       netif_rx(rskb);
&lt;br&gt;&amp;gt; -               } else {
&lt;br&gt;&amp;gt; +               if (!skb) {
&lt;br&gt;&amp;gt;                        /* Can't get a new one : reuse the same &amp; drop pkt */
&lt;br&gt;&amp;gt; -                       dev_notice(&amp;dev-&amp;gt;dev, &amp;quot;Memory squeeze, dropping packet.\n&amp;quot;);
&lt;br&gt;&amp;gt; +                       dev_notice(&amp;dev-&amp;gt;dev, &amp;quot;Low memory - dropped packet.\n&amp;quot;);
&lt;br&gt;&amp;gt; +                       mpc52xx_fec_rx_submit(dev, rskb);
&lt;br&gt;&amp;gt;                        dev-&amp;gt;stats.rx_dropped++;
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -                       skb = rskb;
&lt;br&gt;&amp;gt; +                       continue;
&lt;br&gt;&amp;gt;                }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -               bd = (struct bcom_fec_bd *)
&lt;br&gt;&amp;gt; -                       bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;&amp;gt; +               /* Enqueue the new sk_buff back on the hardware */
&lt;br&gt;&amp;gt; +               mpc52xx_fec_rx_submit(dev, skb);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -               bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;&amp;gt; -               bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, skb-&amp;gt;data,
&lt;br&gt;&amp;gt; -                               FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; +               /* Process the received skb - Drop the spin lock while
&lt;br&gt;&amp;gt; +                * calling into the network stack */
&lt;br&gt;&amp;gt; +               spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -               bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, skb);
&lt;br&gt;&amp;gt; +               dma_unmap_single(dev-&amp;gt;dev.parent, physaddr, rskb-&amp;gt;len,
&lt;br&gt;&amp;gt; +                                DMA_FROM_DEVICE);
&lt;br&gt;&amp;gt; +               length = status &amp; BCOM_FEC_RX_BD_LEN_MASK;
&lt;br&gt;&amp;gt; +               skb_put(rskb, length - 4);      /* length without CRC32 */
&lt;br&gt;&amp;gt; +               rskb-&amp;gt;dev = dev;
&lt;br&gt;&amp;gt; +               rskb-&amp;gt;protocol = eth_type_trans(rskb, dev);
&lt;br&gt;&amp;gt; +               netif_rx(rskb);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +               spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; +       spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt;        return IRQ_HANDLED;
&lt;br&gt;&amp;gt;  }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; @@ -454,6 +453,7 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt;        struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;gt;        struct mpc52xx_fec __iomem *fec = priv-&amp;gt;fec;
&lt;br&gt;&amp;gt;        u32 ievent;
&lt;br&gt;&amp;gt; +       unsigned long flags;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        ievent = in_be32(&amp;fec-&amp;gt;ievent);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; @@ -471,9 +471,10 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;gt;                if (net_ratelimit() &amp;&amp; (ievent &amp; FEC_IEVENT_XFIFO_ERROR))
&lt;br&gt;&amp;gt;                        dev_warn(&amp;dev-&amp;gt;dev, &amp;quot;FEC_IEVENT_XFIFO_ERROR\n&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; +               spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;                mpc52xx_fec_reset(dev);
&lt;br&gt;&amp;gt; +               spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -               netif_wake_queue(dev);
&lt;br&gt;&amp;gt;                return IRQ_HANDLED;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; @@ -768,6 +769,8 @@ static void mpc52xx_fec_reset(struct net_device *dev)
&lt;br&gt;&amp;gt;        bcom_enable(priv-&amp;gt;tx_dmatsk);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        mpc52xx_fec_start(dev);
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; +       netif_wake_queue(dev);
&lt;br&gt;&amp;gt;  }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Grant Likely, B.Sc., P.Eng.
&lt;br&gt;Secret Lab Technologies Ltd.
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649448&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--Signed-off-by%3A-Grant-Likely-%3Cgrant.likely%40secretlab.ca%3E-tp26649399p26649448.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26649399</id>
	<title>[PATCH] Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;</title>
	<published>2009-12-04T13:20:00Z</published>
	<updated>2009-12-04T13:20:00Z</updated>
	<author>
		<name>Grant Likely-2</name>
	</author>
	<content type="html">From: Asier Llano Palacios &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649399&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;asierllano@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;net/mpc5200: Fix locking on fec_mpc52xx driver
&lt;br&gt;&lt;br&gt;Fix the locking scheme on the fec_mpc52xx driver. &amp;nbsp;This device can
&lt;br&gt;receive IRQs from three sources; the FEC itself, the tx DMA, and the
&lt;br&gt;rx DMA. &amp;nbsp;Mutual exclusion was handled by taking a spin_lock() in the
&lt;br&gt;critical regions, but because the handlers are run with IRQs enabled,
&lt;br&gt;spin_lock() is insufficient and the driver can end up interrupting
&lt;br&gt;a critical region anyway from another IRQ.
&lt;br&gt;&lt;br&gt;Asier Llano discovered that this occurs when an error IRQ is raised
&lt;br&gt;in the middle of handling rx irqs which resulted in an sk_buff memory
&lt;br&gt;leak.
&lt;br&gt;&lt;br&gt;In addition, locking is spotty at best in the driver and inspection
&lt;br&gt;revealed quite a few places with insufficient locking.
&lt;br&gt;&lt;br&gt;This patch is based on Asier's initial work, but reworks a number of
&lt;br&gt;things so that locks are held for as short a time as possible, so
&lt;br&gt;that spin_lock_irqsave() is used everywhere, and so the locks are
&lt;br&gt;dropped when calling into the network stack (because the lock only
&lt;br&gt;protects the hardware interface; not the network stack).
&lt;br&gt;&lt;br&gt;Boot tested on a lite5200 with an NFS root. &amp;nbsp;Has not been performance
&lt;br&gt;tested.
&lt;br&gt;&lt;br&gt;Signed-off-by: Asier Llano &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649399&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;a.llano@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Signed-off-by: Grant Likely &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649399&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;grant.likely@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;&lt;br&gt;Asier, can you please test this? &amp;nbsp;It took me a while to respond to
&lt;br&gt;your initial post because I was concerned about some of the latency
&lt;br&gt;issues, and I was concerned about disabling IRQs for long periods in
&lt;br&gt;the RX handler. &amp;nbsp;I think it should be good now, but it needs testing.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;g.
&lt;br&gt;&lt;br&gt;&amp;nbsp;drivers/net/fec_mpc52xx.c | &amp;nbsp;121 +++++++++++++++++++++++----------------------
&lt;br&gt;&amp;nbsp;1 files changed, 62 insertions(+), 59 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c
&lt;br&gt;index 66dace6..4889b4d 100644
&lt;br&gt;--- a/drivers/net/fec_mpc52xx.c
&lt;br&gt;+++ b/drivers/net/fec_mpc52xx.c
&lt;br&gt;@@ -85,11 +85,15 @@ MODULE_PARM_DESC(debug, &amp;quot;debugging messages level&amp;quot;);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;static void mpc52xx_fec_tx_timeout(struct net_device *dev)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;+	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;+	unsigned long flags;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;	dev_warn(&amp;dev-&amp;gt;dev, &amp;quot;transmit timed out\n&amp;quot;);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+	spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;	mpc52xx_fec_reset(dev);
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;	dev-&amp;gt;stats.tx_errors++;
&lt;br&gt;+	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	netif_wake_queue(dev);
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;@@ -135,28 +139,32 @@ static void mpc52xx_fec_free_rx_buffers(struct net_device *dev, struct bcom_task
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+static void
&lt;br&gt;+mpc52xx_fec_rx_submit(struct net_device *dev, struct sk_buff *rskb)
&lt;br&gt;+{
&lt;br&gt;+	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;+	struct bcom_fec_bd *bd;
&lt;br&gt;+
&lt;br&gt;+	bd = (struct bcom_fec_bd *) bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;+	bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;+	bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, rskb-&amp;gt;data,
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;+	bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, rskb);
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;static int mpc52xx_fec_alloc_rx_buffers(struct net_device *dev, struct bcom_task *rxtsk)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;-	while (!bcom_queue_full(rxtsk)) {
&lt;br&gt;-		struct sk_buff *skb;
&lt;br&gt;-		struct bcom_fec_bd *bd;
&lt;br&gt;+	struct sk_buff *skb;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+	while (!bcom_queue_full(rxtsk)) {
&lt;br&gt;&amp;nbsp;		skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
&lt;br&gt;-		if (skb == NULL)
&lt;br&gt;+		if (!skb)
&lt;br&gt;&amp;nbsp;			return -EAGAIN;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		/* zero out the initial receive buffers to aid debugging */
&lt;br&gt;&amp;nbsp;		memset(skb-&amp;gt;data, 0, FEC_RX_BUFFER_SIZE);
&lt;br&gt;-
&lt;br&gt;-		bd = (struct bcom_fec_bd *)bcom_prepare_next_buffer(rxtsk);
&lt;br&gt;-
&lt;br&gt;-		bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;-		bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, skb-&amp;gt;data,
&lt;br&gt;-				FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;-
&lt;br&gt;-		bcom_submit_next_buffer(rxtsk, skb);
&lt;br&gt;+		mpc52xx_fec_rx_submit(dev, skb);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;	return 0;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -328,13 +336,12 @@ static int mpc52xx_fec_start_xmit(struct sk_buff *skb, struct net_device *dev)
&lt;br&gt;&amp;nbsp;				 &amp;nbsp; &amp;nbsp;DMA_TO_DEVICE);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	bcom_submit_next_buffer(priv-&amp;gt;tx_dmatsk, skb);
&lt;br&gt;+	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	if (bcom_queue_full(priv-&amp;gt;tx_dmatsk)) {
&lt;br&gt;&amp;nbsp;		netif_stop_queue(dev);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;	return NETDEV_TX_OK;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -359,9 +366,9 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	struct net_device *dev = dev_id;
&lt;br&gt;&amp;nbsp;	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;+	unsigned long flags;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	spin_lock(&amp;priv-&amp;gt;lock);
&lt;br&gt;-
&lt;br&gt;+	spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;	while (bcom_buffer_done(priv-&amp;gt;tx_dmatsk)) {
&lt;br&gt;&amp;nbsp;		struct sk_buff *skb;
&lt;br&gt;&amp;nbsp;		struct bcom_fec_bd *bd;
&lt;br&gt;@@ -372,11 +379,10 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		dev_kfree_skb_irq(skb);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;+	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	netif_wake_queue(dev);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	spin_unlock(&amp;priv-&amp;gt;lock);
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;	return IRQ_HANDLED;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -384,67 +390,60 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	struct net_device *dev = dev_id;
&lt;br&gt;&amp;nbsp;	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;+	struct sk_buff *rskb; /* received sk_buff */
&lt;br&gt;+	struct sk_buff *skb; &amp;nbsp;/* new sk_buff to enqueue in its place */
&lt;br&gt;+	struct bcom_fec_bd *bd;
&lt;br&gt;+	u32 status, physaddr;
&lt;br&gt;+	int length;
&lt;br&gt;+	unsigned long flags;
&lt;br&gt;+
&lt;br&gt;+	spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	while (bcom_buffer_done(priv-&amp;gt;rx_dmatsk)) {
&lt;br&gt;-		struct sk_buff *skb;
&lt;br&gt;-		struct sk_buff *rskb;
&lt;br&gt;-		struct bcom_fec_bd *bd;
&lt;br&gt;-		u32 status;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		rskb = bcom_retrieve_buffer(priv-&amp;gt;rx_dmatsk, &amp;status,
&lt;br&gt;-				(struct bcom_bd **)&amp;bd);
&lt;br&gt;-		dma_unmap_single(dev-&amp;gt;dev.parent, bd-&amp;gt;skb_pa, rskb-&amp;gt;len,
&lt;br&gt;-				 DMA_FROM_DEVICE);
&lt;br&gt;+					 &amp;nbsp; &amp;nbsp;(struct bcom_bd **)&amp;bd);
&lt;br&gt;+		physaddr = bd-&amp;gt;skb_pa;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		/* Test for errors in received frame */
&lt;br&gt;&amp;nbsp;		if (status &amp; BCOM_FEC_RX_BD_ERRORS) {
&lt;br&gt;&amp;nbsp;			/* Drop packet and reuse the buffer */
&lt;br&gt;-			bd = (struct bcom_fec_bd *)
&lt;br&gt;-				bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;-
&lt;br&gt;-			bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;-			bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent,
&lt;br&gt;-					rskb-&amp;gt;data,
&lt;br&gt;-					FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;-
&lt;br&gt;-			bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, rskb);
&lt;br&gt;-
&lt;br&gt;+			mpc52xx_fec_rx_submit(dev, rskb);
&lt;br&gt;&amp;nbsp;			dev-&amp;gt;stats.rx_dropped++;
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;			continue;
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		/* skbs are allocated on open, so now we allocate a new one,
&lt;br&gt;&amp;nbsp;		 * and remove the old (with the packet) */
&lt;br&gt;&amp;nbsp;		skb = dev_alloc_skb(FEC_RX_BUFFER_SIZE);
&lt;br&gt;-		if (skb) {
&lt;br&gt;-			/* Process the received skb */
&lt;br&gt;-			int length = status &amp; BCOM_FEC_RX_BD_LEN_MASK;
&lt;br&gt;-
&lt;br&gt;-			skb_put(rskb, length - 4);	/* length without CRC32 */
&lt;br&gt;-
&lt;br&gt;-			rskb-&amp;gt;dev = dev;
&lt;br&gt;-			rskb-&amp;gt;protocol = eth_type_trans(rskb, dev);
&lt;br&gt;-
&lt;br&gt;-			netif_rx(rskb);
&lt;br&gt;-		} else {
&lt;br&gt;+		if (!skb) {
&lt;br&gt;&amp;nbsp;			/* Can't get a new one : reuse the same &amp; drop pkt */
&lt;br&gt;-			dev_notice(&amp;dev-&amp;gt;dev, &amp;quot;Memory squeeze, dropping packet.\n&amp;quot;);
&lt;br&gt;+			dev_notice(&amp;dev-&amp;gt;dev, &amp;quot;Low memory - dropped packet.\n&amp;quot;);
&lt;br&gt;+			mpc52xx_fec_rx_submit(dev, rskb);
&lt;br&gt;&amp;nbsp;			dev-&amp;gt;stats.rx_dropped++;
&lt;br&gt;-
&lt;br&gt;-			skb = rskb;
&lt;br&gt;+			continue;
&lt;br&gt;&amp;nbsp;		}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		bd = (struct bcom_fec_bd *)
&lt;br&gt;-			bcom_prepare_next_buffer(priv-&amp;gt;rx_dmatsk);
&lt;br&gt;+		/* Enqueue the new sk_buff back on the hardware */
&lt;br&gt;+		mpc52xx_fec_rx_submit(dev, skb);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		bd-&amp;gt;status = FEC_RX_BUFFER_SIZE;
&lt;br&gt;-		bd-&amp;gt;skb_pa = dma_map_single(dev-&amp;gt;dev.parent, skb-&amp;gt;data,
&lt;br&gt;-				FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
&lt;br&gt;+		/* Process the received skb - Drop the spin lock while
&lt;br&gt;+		 * calling into the network stack */
&lt;br&gt;+		spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		bcom_submit_next_buffer(priv-&amp;gt;rx_dmatsk, skb);
&lt;br&gt;+		dma_unmap_single(dev-&amp;gt;dev.parent, physaddr, rskb-&amp;gt;len,
&lt;br&gt;+				 DMA_FROM_DEVICE);
&lt;br&gt;+		length = status &amp; BCOM_FEC_RX_BD_LEN_MASK;
&lt;br&gt;+		skb_put(rskb, length - 4);	/* length without CRC32 */
&lt;br&gt;+		rskb-&amp;gt;dev = dev;
&lt;br&gt;+		rskb-&amp;gt;protocol = eth_type_trans(rskb, dev);
&lt;br&gt;+		netif_rx(rskb);
&lt;br&gt;+
&lt;br&gt;+		spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+	spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;	return IRQ_HANDLED;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -454,6 +453,7 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;	struct mpc52xx_fec_priv *priv = netdev_priv(dev);
&lt;br&gt;&amp;nbsp;	struct mpc52xx_fec __iomem *fec = priv-&amp;gt;fec;
&lt;br&gt;&amp;nbsp;	u32 ievent;
&lt;br&gt;+	unsigned long flags;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	ievent = in_be32(&amp;fec-&amp;gt;ievent);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -471,9 +471,10 @@ static irqreturn_t mpc52xx_fec_interrupt(int irq, void *dev_id)
&lt;br&gt;&amp;nbsp;		if (net_ratelimit() &amp;&amp; (ievent &amp; FEC_IEVENT_XFIFO_ERROR))
&lt;br&gt;&amp;nbsp;			dev_warn(&amp;dev-&amp;gt;dev, &amp;quot;FEC_IEVENT_XFIFO_ERROR\n&amp;quot;);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+		spin_lock_irqsave(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;		mpc52xx_fec_reset(dev);
&lt;br&gt;+		spin_unlock_irqrestore(&amp;priv-&amp;gt;lock, flags);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-		netif_wake_queue(dev);
&lt;br&gt;&amp;nbsp;		return IRQ_HANDLED;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -768,6 +769,8 @@ static void mpc52xx_fec_reset(struct net_device *dev)
&lt;br&gt;&amp;nbsp;	bcom_enable(priv-&amp;gt;tx_dmatsk);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	mpc52xx_fec_start(dev);
&lt;br&gt;+
&lt;br&gt;+	netif_wake_queue(dev);
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26649399&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--Signed-off-by%3A-Grant-Likely-%3Cgrant.likely%40secretlab.ca%3E-tp26649399p26649399.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26648130</id>
	<title>[PATCH] powerpc: mpc8xxx_gpio: Add ability to mask off unused GPIO pins</title>
	<published>2009-12-04T11:43:40Z</published>
	<updated>2009-12-04T11:43:40Z</updated>
	<author>
		<name>Peter Tyser</name>
	</author>
	<content type="html">This change resolves 2 issues:
&lt;br&gt;- Different chips have a different number of GPIO pins per controller.
&lt;br&gt;&amp;nbsp; For example, the MPC8347 has 32, the P2020 16, and the mpc8572 8.
&lt;br&gt;&amp;nbsp; Previously, the mpc8xxx_gpio driver assumed every chip had 32 GPIO
&lt;br&gt;&amp;nbsp; pins which resulted in some processors reporting an incorrect 'ngpio'
&lt;br&gt;&amp;nbsp; field in /sys. &amp;nbsp;Additionally, users could export and &amp;quot;use&amp;quot; 32 GPIO
&lt;br&gt;&amp;nbsp; pins, although in reality only a subset of the 32 pins had any real
&lt;br&gt;&amp;nbsp; functionality.
&lt;br&gt;&lt;br&gt;- Some boards don't utilize all available GPIO pins. &amp;nbsp;Previously,
&lt;br&gt;&amp;nbsp; unused GPIO pins could still be exported and &amp;quot;used&amp;quot;, even though the
&lt;br&gt;&amp;nbsp; pins had no real functionality. &amp;nbsp;This is somewhat confusing to a user
&lt;br&gt;&amp;nbsp; and also allow a user to do something &amp;quot;bad&amp;quot;, like change an unused
&lt;br&gt;&amp;nbsp; floating output into a floating input.
&lt;br&gt;&lt;br&gt;Adding a new &amp;quot;fsl,gpio-mask&amp;quot; device tree property allows a dts file to
&lt;br&gt;accurately describe what GPIO pins are available for use on a given
&lt;br&gt;board.
&lt;br&gt;&lt;br&gt;Note that the 'ngpio' value reported in /sys will represent the
&lt;br&gt;&amp;quot;highest&amp;quot; gpio pin accessible, not the total number of gpio pins
&lt;br&gt;available. &amp;nbsp;For example, if a device only allowed the use of GPIO pin 3
&lt;br&gt;(fsl,gpio-mask = 0x8), 'ngpio' would be reported as 4, although
&lt;br&gt;only GPIO pin 3 could be exported and used.
&lt;br&gt;&lt;br&gt;Signed-off-by: Peter Tyser &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26648130&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ptyser@...&lt;/a&gt;&amp;gt;
&lt;br&gt;---
&lt;br&gt;I don't know which GPIO pins are usable on Freescale boards. &amp;nbsp;Let me
&lt;br&gt;know if the default mask for the reference boards should change.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Peter
&lt;br&gt;&lt;br&gt;&amp;nbsp;.../powerpc/dts-bindings/fsl/8xxx_gpio.txt &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; 11 ++++++--
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/mpc8377_rdb.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/mpc8377_wlan.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;2 +
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/mpc8378_rdb.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/mpc8379_rdb.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;2 +
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/p2020ds.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/p2020rdb.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/xcalibur1501.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/xpedite5301.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/xpedite5330.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;arch/powerpc/boot/dts/xpedite5370.dts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;1 +
&lt;br&gt;&amp;nbsp;arch/powerpc/sysdev/mpc8xxx_gpio.c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; 24 ++++++++++++++++---
&lt;br&gt;&amp;nbsp;12 files changed, 42 insertions(+), 7 deletions(-)
&lt;br&gt;&lt;br&gt;diff --git a/Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt b/Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt
&lt;br&gt;index d015dce..a8fac7f 100644
&lt;br&gt;--- a/Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt
&lt;br&gt;+++ b/Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt
&lt;br&gt;@@ -11,9 +11,12 @@ Required properties:
&lt;br&gt;&amp;nbsp; &amp;nbsp;83xx, &amp;quot;fsl,mpc8572-gpio&amp;quot; for 85xx and &amp;quot;fsl,mpc8610-gpio&amp;quot; for 86xx.
&lt;br&gt;&amp;nbsp;- #gpio-cells : Should be two. The first cell is the pin number and the
&lt;br&gt;&amp;nbsp; &amp;nbsp;second cell is used to specify optional parameters (currently unused).
&lt;br&gt;- - interrupts : Interrupt mapping for GPIO IRQ (currently unused).
&lt;br&gt;- - interrupt-parent : Phandle for the interrupt controller that
&lt;br&gt;- &amp;nbsp; services interrupts for this device.
&lt;br&gt;+- interrupts : Interrupt mapping for GPIO IRQ (currently unused).
&lt;br&gt;+- interrupt-parent : Phandle for the interrupt controller that
&lt;br&gt;+ &amp;nbsp;services interrupts for this device.
&lt;br&gt;+- fsl,gpio-mask: A bitmask representing which GPIO pins are availabe for
&lt;br&gt;+ &amp;nbsp;use. &amp;nbsp;For example, a value of 0x13 means GPIO pins 0, 1, and 4 are
&lt;br&gt;+ &amp;nbsp;usable.
&lt;br&gt;&amp;nbsp;- gpio-controller : Marks the port as GPIO controller.
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;Example of gpio-controller nodes for a MPC8347 SoC:
&lt;br&gt;@@ -24,6 +27,7 @@ Example of gpio-controller nodes for a MPC8347 SoC:
&lt;br&gt;&amp;nbsp;		reg = &amp;lt;0xc00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;		interrupts = &amp;lt;74 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;		interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+		fsl,gpio-mask = &amp;lt;0xffffffff&amp;gt;;
&lt;br&gt;&amp;nbsp;		gpio-controller;
&lt;br&gt;&amp;nbsp;	};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -33,6 +37,7 @@ Example of gpio-controller nodes for a MPC8347 SoC:
&lt;br&gt;&amp;nbsp;		reg = &amp;lt;0xd00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;		interrupts = &amp;lt;75 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;		interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+		fsl,gpio-mask = &amp;lt;0xffffffff&amp;gt;;
&lt;br&gt;&amp;nbsp;		gpio-controller;
&lt;br&gt;&amp;nbsp;	};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/mpc8377_rdb.dts b/arch/powerpc/boot/dts/mpc8377_rdb.dts
&lt;br&gt;index 9e2264b..6152bfa 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/mpc8377_rdb.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/mpc8377_rdb.dts
&lt;br&gt;@@ -115,6 +115,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xc00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;74 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xffffffff&amp;gt;;
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -124,6 +125,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xd00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;75 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xffffffff&amp;gt;;
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/mpc8377_wlan.dts b/arch/powerpc/boot/dts/mpc8377_wlan.dts
&lt;br&gt;index 9ea7830..a26535c 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/mpc8377_wlan.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/mpc8377_wlan.dts
&lt;br&gt;@@ -105,6 +105,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xc00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;74 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xffffffff&amp;gt;;
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -114,6 +115,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xd00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;75 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xffffffff&amp;gt;;
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/mpc8378_rdb.dts b/arch/powerpc/boot/dts/mpc8378_rdb.dts
&lt;br&gt;index 4e6a1a4..11ba39c 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/mpc8378_rdb.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/mpc8378_rdb.dts
&lt;br&gt;@@ -115,6 +115,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xc00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;74 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xffffffff&amp;gt;;
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -124,6 +125,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xd00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;75 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xffffffff&amp;gt;;
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/mpc8379_rdb.dts b/arch/powerpc/boot/dts/mpc8379_rdb.dts
&lt;br&gt;index 72336d5..975bdd7 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/mpc8379_rdb.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/mpc8379_rdb.dts
&lt;br&gt;@@ -113,6 +113,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xc00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;74 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0x3ffffff&amp;gt;; /* mpc8379 has 26 gpio */
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -122,6 +123,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xd00 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;75 0x8&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;ipic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0x3ffffff&amp;gt;; /* mpc8379 has 26 gpio */
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/p2020ds.dts b/arch/powerpc/boot/dts/p2020ds.dts
&lt;br&gt;index 1101914..e64a936 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/p2020ds.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/p2020ds.dts
&lt;br&gt;@@ -277,6 +277,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xf000 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;47 0x2&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;mpic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xffff&amp;gt;; /* p2020 has 16 gpio*/
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/p2020rdb.dts b/arch/powerpc/boot/dts/p2020rdb.dts
&lt;br&gt;index da4cb0d..53f75ca 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/p2020rdb.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/p2020rdb.dts
&lt;br&gt;@@ -337,6 +337,7 @@
&lt;br&gt;&amp;nbsp;			reg = &amp;lt;0xf000 0x100&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;47 0x2&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;mpic&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xffff&amp;gt;; /* p2020 has 16 gpio*/
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/xcalibur1501.dts b/arch/powerpc/boot/dts/xcalibur1501.dts
&lt;br&gt;index ac0a617..858668c 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/xcalibur1501.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/xcalibur1501.dts
&lt;br&gt;@@ -598,6 +598,7 @@
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;47 2&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;mpic&amp;gt;;
&lt;br&gt;&amp;nbsp;			#gpio-cells = &amp;lt;2&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xf0&amp;gt;; /* 4 LEDs */
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/xpedite5301.dts b/arch/powerpc/boot/dts/xpedite5301.dts
&lt;br&gt;index db7faf5..944f08c 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/xpedite5301.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/xpedite5301.dts
&lt;br&gt;@@ -508,6 +508,7 @@
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;47 2&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;mpic&amp;gt;;
&lt;br&gt;&amp;nbsp;			#gpio-cells = &amp;lt;2&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xf0&amp;gt;; /* 4 LEDs */
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/xpedite5330.dts b/arch/powerpc/boot/dts/xpedite5330.dts
&lt;br&gt;index c364ca6..1dacacd 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/xpedite5330.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/xpedite5330.dts
&lt;br&gt;@@ -544,6 +544,7 @@
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;47 2&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;mpic&amp;gt;;
&lt;br&gt;&amp;nbsp;			#gpio-cells = &amp;lt;2&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xf0&amp;gt;; /* 4 LEDs */
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/boot/dts/xpedite5370.dts b/arch/powerpc/boot/dts/xpedite5370.dts
&lt;br&gt;index 7a8a4af..d783a50 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/xpedite5370.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/xpedite5370.dts
&lt;br&gt;@@ -506,6 +506,7 @@
&lt;br&gt;&amp;nbsp;			interrupts = &amp;lt;47 2&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-parent = &amp;lt;&amp;mpic&amp;gt;;
&lt;br&gt;&amp;nbsp;			#gpio-cells = &amp;lt;2&amp;gt;;
&lt;br&gt;+			fsl,gpio-mask = &amp;lt;0xf0&amp;gt;; /* 4 LEDs */
&lt;br&gt;&amp;nbsp;			gpio-controller;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;diff --git a/arch/powerpc/sysdev/mpc8xxx_gpio.c b/arch/powerpc/sysdev/mpc8xxx_gpio.c
&lt;br&gt;index 103eace..2c07052 100644
&lt;br&gt;--- a/arch/powerpc/sysdev/mpc8xxx_gpio.c
&lt;br&gt;+++ b/arch/powerpc/sysdev/mpc8xxx_gpio.c
&lt;br&gt;@@ -16,8 +16,6 @@
&lt;br&gt;&amp;nbsp;#include &amp;lt;linux/of_gpio.h&amp;gt;
&lt;br&gt;&amp;nbsp;#include &amp;lt;linux/gpio.h&amp;gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-#define MPC8XXX_GPIO_PINS	32
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;#define GPIO_DIR		0x00
&lt;br&gt;&amp;nbsp;#define GPIO_ODR		0x04
&lt;br&gt;&amp;nbsp;#define GPIO_DAT		0x08
&lt;br&gt;@@ -34,11 +32,12 @@ struct mpc8xxx_gpio_chip {
&lt;br&gt;&amp;nbsp;	 * open drain mode safely
&lt;br&gt;&amp;nbsp;	 */
&lt;br&gt;&amp;nbsp;	u32 data;
&lt;br&gt;+	u32 valid_pins; /* Bitmask of valid gpio pins */
&lt;br&gt;&amp;nbsp;};
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;static inline u32 mpc8xxx_gpio2mask(unsigned int gpio)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;-	return 1u &amp;lt;&amp;lt; (MPC8XXX_GPIO_PINS - 1 - gpio);
&lt;br&gt;+	return 0x80000000 &amp;gt;&amp;gt; gpio;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;static inline struct mpc8xxx_gpio_chip *
&lt;br&gt;@@ -111,12 +110,23 @@ static int mpc8xxx_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val
&lt;br&gt;&amp;nbsp;	return 0;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+static int mpc8xxx_gpio_request(struct gpio_chip *gc, unsigned int gpio) {
&lt;br&gt;+	struct of_mm_gpio_chip *mm = to_of_mm_gpio_chip(gc);
&lt;br&gt;+	struct mpc8xxx_gpio_chip *mpc8xxx_gc = to_mpc8xxx_gpio_chip(mm);
&lt;br&gt;+
&lt;br&gt;+	if (mpc8xxx_gc-&amp;gt;valid_pins &amp; (1 &amp;lt;&amp;lt; gpio))
&lt;br&gt;+		return 0;
&lt;br&gt;+
&lt;br&gt;+	return -1;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;static void __init mpc8xxx_add_controller(struct device_node *np)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	struct mpc8xxx_gpio_chip *mpc8xxx_gc;
&lt;br&gt;&amp;nbsp;	struct of_mm_gpio_chip *mm_gc;
&lt;br&gt;&amp;nbsp;	struct of_gpio_chip *of_gc;
&lt;br&gt;&amp;nbsp;	struct gpio_chip *gc;
&lt;br&gt;+	const u32 *prop;
&lt;br&gt;&amp;nbsp;	int ret;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	mpc8xxx_gc = kzalloc(sizeof(*mpc8xxx_gc), GFP_KERNEL);
&lt;br&gt;@@ -133,11 +143,17 @@ static void __init mpc8xxx_add_controller(struct device_node *np)
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	mm_gc-&amp;gt;save_regs = mpc8xxx_gpio_save_regs;
&lt;br&gt;&amp;nbsp;	of_gc-&amp;gt;gpio_cells = 2;
&lt;br&gt;-	gc-&amp;gt;ngpio = MPC8XXX_GPIO_PINS;
&lt;br&gt;+	prop = of_get_property(np, &amp;quot;fsl,gpio-mask&amp;quot;, NULL);
&lt;br&gt;+	if (prop)
&lt;br&gt;+		mpc8xxx_gc-&amp;gt;valid_pins = *prop;
&lt;br&gt;+	else
&lt;br&gt;+		mpc8xxx_gc-&amp;gt;valid_pins = 0xffffffff;
&lt;br&gt;+	gc-&amp;gt;ngpio = fls(mpc8xxx_gc-&amp;gt;valid_pins);
&lt;br&gt;&amp;nbsp;	gc-&amp;gt;direction_input = mpc8xxx_gpio_dir_in;
&lt;br&gt;&amp;nbsp;	gc-&amp;gt;direction_output = mpc8xxx_gpio_dir_out;
&lt;br&gt;&amp;nbsp;	gc-&amp;gt;get = mpc8xxx_gpio_get;
&lt;br&gt;&amp;nbsp;	gc-&amp;gt;set = mpc8xxx_gpio_set;
&lt;br&gt;+	gc-&amp;gt;request = mpc8xxx_gpio_request;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	ret = of_mm_gpiochip_add(np, mm_gc);
&lt;br&gt;&amp;nbsp;	if (ret)
&lt;br&gt;-- 
&lt;br&gt;1.6.2.1
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26648130&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--powerpc%3A-mpc8xxx_gpio%3A-Add-ability-to-mask-off-unused-GPIO-pins-tp26648130p26648130.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26647114</id>
	<title>Re: [PATCH] MAINTAINERS: Add PowerPC patterns</title>
	<published>2009-12-04T10:36:03Z</published>
	<updated>2009-12-04T10:36:03Z</updated>
	<author>
		<name>Grant Likely-2</name>
	</author>
	<content type="html">On Fri, Dec 4, 2009 at 10:39 AM, Josh Boyer &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647114&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jwboyer@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, Dec 04, 2009 at 09:16:59AM -0800, Joe Perches wrote:
&lt;br&gt;&amp;gt;&amp;gt; LINUX FOR POWERPC EMBEDDED PPC4XX
&lt;br&gt;&amp;gt;&amp;gt; M:    Josh Boyer &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647114&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jwboyer@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;@@ -3221,6 +3228,8 @@ W:       &lt;a href=&quot;http://www.penguinppc.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.penguinppc.org/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; L:    &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647114&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx.git
&lt;br&gt;&amp;gt;&amp;gt; S:    Maintained
&lt;br&gt;&amp;gt;&amp;gt;+F:    arch/powerpc/platforms/40x/
&lt;br&gt;&amp;gt;&amp;gt;+F:    arch/powerpc/platforms/44x/
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This is mostly complete.  There are a few files under arch/powerpc/sysdev/, and
&lt;br&gt;&amp;gt; arch/powerpc/boot/ as well, but I don't think they're entirely necessary.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; For the 4xx parts:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Acked-by: Josh Boyer &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647114&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jwboyer@...&lt;/a&gt;&amp;gt;
&lt;/div&gt;Acked-by: Grant Likely &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647114&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;grant.likely@...&lt;/a&gt;&amp;gt;
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647114&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--MAINTAINERS%3A-Add-PowerPC-patterns-tp26645985p26647114.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26646214</id>
	<title>Re: [PATCH] MAINTAINERS: Add PowerPC patterns</title>
	<published>2009-12-04T09:39:02Z</published>
	<updated>2009-12-04T09:39:02Z</updated>
	<author>
		<name>Josh Boyer-4</name>
	</author>
	<content type="html">On Fri, Dec 04, 2009 at 09:16:59AM -0800, Joe Perches wrote:
&lt;br&gt;&amp;gt; LINUX FOR POWERPC EMBEDDED PPC4XX
&lt;br&gt;&amp;gt; M:	Josh Boyer &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26646214&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jwboyer@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;@@ -3221,6 +3228,8 @@ W:	&lt;a href=&quot;http://www.penguinppc.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.penguinppc.org/&lt;/a&gt;&lt;br&gt;&amp;gt; L:	&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26646214&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;gt; T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx.git
&lt;br&gt;&amp;gt; S:	Maintained
&lt;br&gt;&amp;gt;+F:	arch/powerpc/platforms/40x/
&lt;br&gt;&amp;gt;+F:	arch/powerpc/platforms/44x/
&lt;br&gt;&lt;br&gt;This is mostly complete. &amp;nbsp;There are a few files under arch/powerpc/sysdev/, and
&lt;br&gt;arch/powerpc/boot/ as well, but I don't think they're entirely necessary.
&lt;br&gt;&lt;br&gt;For the 4xx parts:
&lt;br&gt;&lt;br&gt;Acked-by: Josh Boyer &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26646214&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jwboyer@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;josh
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26646214&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--MAINTAINERS%3A-Add-PowerPC-patterns-tp26645985p26646214.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26645985</id>
	<title>[PATCH] MAINTAINERS: Add PowerPC patterns</title>
	<published>2009-12-04T09:16:59Z</published>
	<updated>2009-12-04T09:16:59Z</updated>
	<author>
		<name>Joe Perches</name>
	</author>
	<content type="html">On Fri, 2009-12-04 at 20:59 +1100, Benjamin Herrenschmidt wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, 2009-12-04 at 10:34 +0100, Jean Delvare wrote:
&lt;br&gt;&amp;gt; &amp;gt; I've sent it to &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt; on October 14th. This is the
&lt;br&gt;&amp;gt; &amp;gt; address which is listed 22 times in MAINTAINERS. If it isn't correct,
&lt;br&gt;&amp;gt; &amp;gt; then please update MAINTAINERS.
&lt;br&gt;&amp;gt; No it's fine both shoul work. Your patches are there, just waiting for
&lt;br&gt;&amp;gt; me to pick them up, I was just firing a reminder to the rest of the CC
&lt;br&gt;&amp;gt; list :-) (and I do remember fwd'ing a couple of your patches to the
&lt;br&gt;&amp;gt; list, for some reason they didn't make it to patchwork back then, that
&lt;br&gt;&amp;gt; was a few month ago).
&lt;br&gt;&amp;gt; Anyways, I've been stretched thin with all sort of stuff lately, so bear
&lt;br&gt;&amp;gt; with me if I'm a bit slow at taking or testing stuff, I'm doing my best.
&lt;/div&gt;&lt;br&gt;Adding patterns to the PowerPC sections of MAINTAINERS is useful.
&lt;br&gt;&lt;br&gt;Signed-off-by: Joe Perches &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;joe@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;diff --git a/MAINTAINERS b/MAINTAINERS
&lt;br&gt;index 4f96ac8..c7f8e5a 100644
&lt;br&gt;--- a/MAINTAINERS
&lt;br&gt;+++ b/MAINTAINERS
&lt;br&gt;@@ -3193,6 +3193,7 @@ LINUX FOR IBM pSERIES (RS/6000)
&lt;br&gt;&amp;nbsp;M:	Paul Mackerras &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;paulus@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;W:	&lt;a href=&quot;http://www.ibm.com/linux/ltc/projects/ppc&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.ibm.com/linux/ltc/projects/ppc&lt;/a&gt;&lt;br&gt;&amp;nbsp;S:	Supported
&lt;br&gt;+F:	arch/powerpc/boot/rs6000.h
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;LINUX FOR POWERPC (32-BIT AND 64-BIT)
&lt;br&gt;&amp;nbsp;M:	Benjamin Herrenschmidt &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;benh@...&lt;/a&gt;&amp;gt;
&lt;br&gt;@@ -3201,18 +3202,24 @@ W:	&lt;a href=&quot;http://www.penguinppc.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.penguinppc.org/&lt;/a&gt;&lt;br&gt;&amp;nbsp;L:	&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;T:	git git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git
&lt;br&gt;&amp;nbsp;S:	Supported
&lt;br&gt;+F:	Documentation/powerpc/
&lt;br&gt;+F:	arch/powerpc/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;LINUX FOR POWER MACINTOSH
&lt;br&gt;&amp;nbsp;M:	Benjamin Herrenschmidt &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;benh@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;W:	&lt;a href=&quot;http://www.penguinppc.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.penguinppc.org/&lt;/a&gt;&lt;br&gt;&amp;nbsp;L:	&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;S:	Maintained
&lt;br&gt;+F:	arch/powerpc/platforms/powermac/
&lt;br&gt;+F:	drivers/macintosh/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;LINUX FOR POWERPC EMBEDDED MPC5XXX
&lt;br&gt;&amp;nbsp;M:	Grant Likely &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;grant.likely@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;L:	&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;T:	git git://git.secretlab.ca/git/linux-2.6.git
&lt;br&gt;&amp;nbsp;S:	Maintained
&lt;br&gt;+F:	arch/powerpc/platforms/512x/
&lt;br&gt;+F:	arch/powerpc/platforms/52xx/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;LINUX FOR POWERPC EMBEDDED PPC4XX
&lt;br&gt;&amp;nbsp;M:	Josh Boyer &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jwboyer@...&lt;/a&gt;&amp;gt;
&lt;br&gt;@@ -3221,6 +3228,8 @@ W:	&lt;a href=&quot;http://www.penguinppc.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.penguinppc.org/&lt;/a&gt;&lt;br&gt;&amp;nbsp;L:	&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx.git
&lt;br&gt;&amp;nbsp;S:	Maintained
&lt;br&gt;+F:	arch/powerpc/platforms/40x/
&lt;br&gt;+F:	arch/powerpc/platforms/44x/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;LINUX FOR POWERPC EMBEDDED XILINX VIRTEX
&lt;br&gt;&amp;nbsp;M:	Grant Likely &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;grant.likely@...&lt;/a&gt;&amp;gt;
&lt;br&gt;@@ -3228,6 +3237,8 @@ W:	&lt;a href=&quot;http://wiki.secretlab.ca/index.php/Linux_on_Xilinx_Virtex&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wiki.secretlab.ca/index.php/Linux_on_Xilinx_Virtex&lt;/a&gt;&lt;br&gt;&amp;nbsp;L:	&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;T:	git git://git.secretlab.ca/git/linux-2.6.git
&lt;br&gt;&amp;nbsp;S:	Maintained
&lt;br&gt;+F:	arch/powerpc/*/*virtex*
&lt;br&gt;+F:	arch/powerpc/*/*/*virtex*
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;LINUX FOR POWERPC EMBEDDED PPC8XX
&lt;br&gt;&amp;nbsp;M:	Vitaly Bordug &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;vitb@...&lt;/a&gt;&amp;gt;
&lt;br&gt;@@ -3241,12 +3252,16 @@ M:	Kumar Gala &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;galak@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;W:	&lt;a href=&quot;http://www.penguinppc.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.penguinppc.org/&lt;/a&gt;&lt;br&gt;&amp;nbsp;L:	&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;S:	Maintained
&lt;br&gt;+F:	arch/powerpc/platforms/83xx/
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;LINUX FOR POWERPC PA SEMI PWRFICIENT
&lt;br&gt;&amp;nbsp;M:	Olof Johansson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=16&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;olof@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;W:	&lt;a href=&quot;http://www.pasemi.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.pasemi.com/&lt;/a&gt;&lt;br&gt;&amp;nbsp;L:	&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=17&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;S:	Supported
&lt;br&gt;+F:	arch/powerpc/platforms/pasemi/
&lt;br&gt;+F:	drivers/*/*pasemi*
&lt;br&gt;+F:	drivers/*/*/*pasemi*
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;LINUX SECURITY MODULE (LSM) FRAMEWORK
&lt;br&gt;&amp;nbsp;M:	Chris Wright &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=18&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;chrisw@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645985&amp;i=19&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--MAINTAINERS%3A-Add-PowerPC-patterns-tp26645985p26645985.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26645277</id>
	<title>Re: BUG: Bad page map in process</title>
	<published>2009-12-04T08:37:13Z</published>
	<updated>2009-12-04T08:37:13Z</updated>
	<author>
		<name>Sean MacLennan-2</name>
	</author>
	<content type="html">On Fri, 04 Dec 2009 22:18:55 +1100
&lt;br&gt;Benjamin Herrenschmidt &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645277&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;benh@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Ok, I'll have a look next week. In the meantime, Sean, can you give
&lt;br&gt;&amp;gt; me a hint of what you do to trigger it ? Boot time ? specific
&lt;br&gt;&amp;gt; workload ?
&lt;br&gt;&lt;br&gt;It hasn't happened that often, but I have been focusing on 2.6.31.
&lt;br&gt;&lt;br&gt;So far, it has always happened well after the boot, but not hours. I
&lt;br&gt;haven't worked out a specific workload.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&amp;nbsp; &amp;nbsp;Sean
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26645277&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/BUG%3A-Bad-page-map-in-process-tp26631686p26645277.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26643164</id>
	<title>RE: [PATCH] POWERPC 4xx: Fix PCI in AMCC 440EP Yosemite DTS</title>
	<published>2009-12-04T06:19:16Z</published>
	<updated>2009-12-04T06:19:16Z</updated>
	<author>
		<name>_curtis_</name>
	</author>
	<content type="html">Josh,
&lt;br&gt;Yes, the patch you provided below is exactly what is needed for PCI
&lt;br&gt;functionality.
&lt;br&gt;&lt;br&gt;I've verified using a 2 port Silicon Image 3512 PCI to SATA controller
&lt;br&gt;card on Yosemite.
&lt;br&gt;&lt;br&gt;-Curtis
&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: Josh Boyer [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26643164&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jwboyer@...&lt;/a&gt;]
&lt;br&gt;&amp;gt; Sent: Friday, December 04, 2009 6:08 AM
&lt;br&gt;&amp;gt; To: Curtis Wald
&lt;br&gt;&amp;gt; Cc: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26643164&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mporter@...&lt;/a&gt;; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26643164&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: [PATCH] POWERPC 4xx: Fix PCI in AMCC 440EP Yosemite DTS
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; On Mon, Nov 30, 2009 at 09:25:51AM -0600, Curtis Wald wrote:
&lt;br&gt;&amp;gt; &amp;gt;Josh,
&lt;br&gt;&amp;gt; &amp;gt;Here is a resend of the Yosemite.dts patch, deleting tabs and spaces
&lt;br&gt;&amp;gt; in
&lt;br&gt;&amp;gt; &amp;gt;the IDSEL section that should look better when viewing as 80 column.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Something is still eating your patches when you send them out. &amp;nbsp;They
&lt;br&gt;&amp;gt; get
&lt;br&gt;&amp;gt; corrupted to the point of being unusable as you can see here:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://patchwork.ozlabs.org/patch/39810/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://patchwork.ozlabs.org/patch/39810/&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; However, your intentions are pretty clear. &amp;nbsp;Could you look at the
&lt;/div&gt;patch
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; below
&lt;br&gt;&amp;gt; and see if it was what you intended? &amp;nbsp;If so, I'll include it in my
&lt;br&gt;&amp;gt; 'next'
&lt;br&gt;&amp;gt; branch today.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; josh
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ---
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; diff --git a/arch/powerpc/boot/dts/yosemite.dts
&lt;br&gt;&amp;gt; b/arch/powerpc/boot/dts/yosemite.dts
&lt;br&gt;&amp;gt; index 1fa3cb4..6492324 100644
&lt;br&gt;&amp;gt; --- a/arch/powerpc/boot/dts/yosemite.dts
&lt;br&gt;&amp;gt; +++ b/arch/powerpc/boot/dts/yosemite.dts
&lt;br&gt;&amp;gt; @@ -282,20 +282,10 @@
&lt;br&gt;&amp;gt; &amp;nbsp;			/* Inbound 2GB range starting at 0 */
&lt;br&gt;&amp;gt; &amp;nbsp;			dma-ranges = &amp;lt;0x42000000 0x0 0x0 0x0 0x0 0x0
&lt;br&gt;&amp;gt; 0x80000000&amp;gt;;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -			/* Bamboo has all 4 IRQ pins tied together per
&lt;/div&gt;slot
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; */
&lt;br&gt;&amp;gt; &amp;nbsp;			interrupt-map-mask = &amp;lt;0xf800 0x0 0x0 0x0&amp;gt;;
&lt;br&gt;&amp;gt; &amp;nbsp;			interrupt-map = &amp;lt;
&lt;br&gt;&amp;gt; -				/* IDSEL 1 */
&lt;br&gt;&amp;gt; -				0x800 0x0 0x0 0x0 &amp;UIC0 0x1c 0x8
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -				/* IDSEL 2 */
&lt;br&gt;&amp;gt; -				0x1000 0x0 0x0 0x0 &amp;UIC0 0x1b 0x8
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -				/* IDSEL 3 */
&lt;br&gt;&amp;gt; -				0x1800 0x0 0x0 0x0 &amp;UIC0 0x1a 0x8
&lt;br&gt;&amp;gt; -
&lt;br&gt;&amp;gt; -				/* IDSEL 4 */
&lt;br&gt;&amp;gt; -				0x2000 0x0 0x0 0x0 &amp;UIC0 0x19 0x8
&lt;br&gt;&amp;gt; +				/* IDSEL 12 */
&lt;br&gt;&amp;gt; +				0x6000 0x0 0x0 0x0 &amp;UIC0 0x19 0x8
&lt;br&gt;&amp;gt; &amp;nbsp;			&amp;gt;;
&lt;br&gt;&amp;gt; &amp;nbsp;		};
&lt;br&gt;&amp;gt; &amp;nbsp;	};
&lt;/div&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26643164&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--POWERPC-4xx%3A-Fix-PCI-in-AMCC-440EP-Yosemite-DTS-tp26382072p26643164.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26643084</id>
	<title>Re: using different format for hugetlbfs</title>
	<published>2009-12-04T06:09:32Z</published>
	<updated>2009-12-04T06:09:32Z</updated>
	<author>
		<name>Kumar Gala-3</name>
	</author>
	<content type="html">&lt;br&gt;On Dec 4, 2009, at 2:58 AM, Benjamin Herrenschmidt wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, 2009-12-04 at 01:18 -0600, Kumar Gala wrote:
&lt;br&gt;&amp;gt;&amp;gt; Ben, David,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; If we want to support true 4G/4G split on ppc32 using the MSB of the
&lt;br&gt;&amp;gt;&amp;gt; address to determine of the pgd_t is for hugetlbfs isn't going to
&lt;br&gt;&amp;gt;&amp;gt; work. &amp;nbsp;Since every pointer in the pgd_t -&amp;gt; pud_t -&amp;gt; pmd_t is point to
&lt;br&gt;&amp;gt;&amp;gt; at least a 4K page I would think the low order 12-bits should always
&lt;br&gt;&amp;gt;&amp;gt; be 0.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On 32 bit maybe. On 64, the pg/u/md's can be smaller. I don't really
&lt;br&gt;&amp;gt; want to have a different encoding for both types though.
&lt;/div&gt;&lt;br&gt;What do you mean they can be smaller? &amp;nbsp;We have some scenario when we &amp;nbsp;
&lt;br&gt;dont allocate a full page? &amp;nbsp;I agree having the encodings be different &amp;nbsp;
&lt;br&gt;would be bad. &amp;nbsp;I'm trying to avoid having it be different between 32 &amp;nbsp;
&lt;br&gt;bit and 64 (but maybe that will be impossible).
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; Could we use something like:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; addr[0:51] || shift [52:59] || flags [60:63]
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; with the LSB flag being 'normal pointer' vs 'hugetlbfs mangled
&lt;br&gt;&amp;gt;&amp;gt; pointer'. &amp;nbsp;Seems like shift will at most be 64 so 8-bits should cover
&lt;br&gt;&amp;gt;&amp;gt; it.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt; Ben.
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;- k
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26643084&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/using-different-format-for-hugetlbfs-tp26638670p26643084.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26641660</id>
	<title>Re: [PATCH] POWERPC 4xx: Fix PCI in AMCC 440EP Yosemite DTS</title>
	<published>2009-12-04T04:07:44Z</published>
	<updated>2009-12-04T04:07:44Z</updated>
	<author>
		<name>Josh Boyer-4</name>
	</author>
	<content type="html">On Mon, Nov 30, 2009 at 09:25:51AM -0600, Curtis Wald wrote:
&lt;br&gt;&amp;gt;Josh,
&lt;br&gt;&amp;gt;Here is a resend of the Yosemite.dts patch, deleting tabs and spaces in
&lt;br&gt;&amp;gt;the IDSEL section that should look better when viewing as 80 column. 
&lt;br&gt;&lt;br&gt;Something is still eating your patches when you send them out. &amp;nbsp;They get
&lt;br&gt;corrupted to the point of being unusable as you can see here:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://patchwork.ozlabs.org/patch/39810/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://patchwork.ozlabs.org/patch/39810/&lt;/a&gt;&lt;br&gt;&lt;br&gt;However, your intentions are pretty clear. &amp;nbsp;Could you look at the patch below
&lt;br&gt;and see if it was what you intended? &amp;nbsp;If so, I'll include it in my 'next'
&lt;br&gt;branch today.
&lt;br&gt;&lt;br&gt;josh
&lt;br&gt;&lt;br&gt;---
&lt;br&gt;&lt;br&gt;diff --git a/arch/powerpc/boot/dts/yosemite.dts b/arch/powerpc/boot/dts/yosemite.dts
&lt;br&gt;index 1fa3cb4..6492324 100644
&lt;br&gt;--- a/arch/powerpc/boot/dts/yosemite.dts
&lt;br&gt;+++ b/arch/powerpc/boot/dts/yosemite.dts
&lt;br&gt;@@ -282,20 +282,10 @@
&lt;br&gt;&amp;nbsp;			/* Inbound 2GB range starting at 0 */
&lt;br&gt;&amp;nbsp;			dma-ranges = &amp;lt;0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000&amp;gt;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-			/* Bamboo has all 4 IRQ pins tied together per slot */
&lt;br&gt;&amp;nbsp;			interrupt-map-mask = &amp;lt;0xf800 0x0 0x0 0x0&amp;gt;;
&lt;br&gt;&amp;nbsp;			interrupt-map = &amp;lt;
&lt;br&gt;-				/* IDSEL 1 */
&lt;br&gt;-				0x800 0x0 0x0 0x0 &amp;UIC0 0x1c 0x8
&lt;br&gt;-
&lt;br&gt;-				/* IDSEL 2 */
&lt;br&gt;-				0x1000 0x0 0x0 0x0 &amp;UIC0 0x1b 0x8
&lt;br&gt;-
&lt;br&gt;-				/* IDSEL 3 */
&lt;br&gt;-				0x1800 0x0 0x0 0x0 &amp;UIC0 0x1a 0x8
&lt;br&gt;-
&lt;br&gt;-				/* IDSEL 4 */
&lt;br&gt;-				0x2000 0x0 0x0 0x0 &amp;UIC0 0x19 0x8
&lt;br&gt;+				/* IDSEL 12 */
&lt;br&gt;+				0x6000 0x0 0x0 0x0 &amp;UIC0 0x19 0x8
&lt;br&gt;&amp;nbsp;			&amp;gt;;
&lt;br&gt;&amp;nbsp;		};
&lt;br&gt;&amp;nbsp;	};
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26641660&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-PATCH--POWERPC-4xx%3A-Fix-PCI-in-AMCC-440EP-Yosemite-DTS-tp26382072p26641660.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26641586</id>
	<title>Re: Fix bug in pagetable cache cleanup with CONFIG_PPC_SUBPAGE_PROT (v2)</title>
	<published>2009-12-04T04:02:52Z</published>
	<updated>2009-12-04T04:02:52Z</updated>
	<author>
		<name>Sachin Sant</name>
	</author>
	<content type="html">David Gibson wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Oops, stupid compile bug in the !CONFIG_PPC_SUBPAGE_PROT case with the
&lt;br&gt;&amp;gt; last version. &amp;nbsp;Fixed below.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Fix bug in pagetable cache cleanup with CONFIG_PPC_SUBPAGE_PROT
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Commit a0668cdc154e54bf0c85182e0535eea237d53146 cleans up the handling
&lt;br&gt;&amp;gt; of kmem_caches for allocating various levels of pagetables.
&lt;br&gt;&amp;gt; Unfortunately, it conflicts badly with CONFIG_PPC_SUBPAGE_PROT, due to
&lt;br&gt;&amp;gt; the latter's cleverly hidden technique of adding some extra allocation
&lt;br&gt;&amp;gt; space to the top level page directory to store the extra information
&lt;br&gt;&amp;gt; it needs.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Since that extra allocation really doesn't fit into the cleaned up
&lt;br&gt;&amp;gt; page directory allocating scheme, this patch alters
&lt;br&gt;&amp;gt; CONFIG_PPC_SUBPAGE_PROT to instead allocate its struct
&lt;br&gt;&amp;gt; subpage_prot_table as part of the mm_context_t.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Signed-off-by: David Gibson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26641586&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;david@...&lt;/a&gt;&amp;gt;
&lt;/div&gt;Ben,
&lt;br&gt;&lt;br&gt;Ping on this patch. It is still missing from linux-next. 
&lt;br&gt;&lt;br&gt;Thanks
&lt;br&gt;-Sachin
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;br&gt;---------------------------------
&lt;br&gt;Sachin Sant
&lt;br&gt;IBM Linux Technology Center
&lt;br&gt;India Systems and Technology Labs
&lt;br&gt;Bangalore, India
&lt;br&gt;---------------------------------
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26641586&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Fix-bug-in-pagetable-cache-cleanup-with-CONFIG_PPC_SUBPAGE_PROT-tp26490684p26641586.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26641222</id>
	<title>Git tags</title>
	<published>2009-12-04T03:27:03Z</published>
	<updated>2009-12-04T03:27:03Z</updated>
	<author>
		<name>Martyn Welch-3</name>
	</author>
	<content type="html">Hi Ben,
&lt;br&gt;&lt;br&gt;Could you please pull the git tags from Linus' tree when you pull?
&lt;br&gt;&lt;br&gt;It aids a little in quickly seeing how far a tree on kernel has moved
&lt;br&gt;forward, at the moment the last tag on your tree is &amp;quot;v2.6.26-rc9&amp;quot; [1].
&lt;br&gt;&lt;br&gt;Martyn
&lt;br&gt;&lt;br&gt;[1]
&lt;br&gt;&lt;a href=&quot;http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/benh/powerpc.git;a=summary&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/benh/powerpc.git;a=summary&lt;/a&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Martyn Welch MEng MPhil MIET (Principal Software Engineer) &amp;nbsp; T:+44(0)1327322748
&lt;br&gt;GE Fanuc Intelligent Platforms Ltd, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|Registered in England and Wales
&lt;br&gt;Tove Valley Business Park, Towcester, &amp;nbsp; &amp;nbsp; &amp;nbsp;|(3828642) at 100 Barbirolli Square,
&lt;br&gt;Northants, NN12 6PF, UK T:+44(0)1327359444 |Manchester,M2 3AB &amp;nbsp;VAT:GB 927559189
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26641222&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Git-tags-tp26641222p26641222.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26641152</id>
	<title>Re: BUG: Bad page map in process</title>
	<published>2009-12-04T03:18:55Z</published>
	<updated>2009-12-04T03:18:55Z</updated>
	<author>
		<name>Benjamin Herrenschmidt</name>
	</author>
	<content type="html">On Fri, 2009-12-04 at 06:00 -0500, Josh Boyer wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, Dec 04, 2009 at 08:08:27PM +1100, Benjamin Herrenschmidt wrote:
&lt;br&gt;&amp;gt; &amp;gt;On Thu, 2009-12-03 at 14:18 -0500, Sean MacLennan wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; With 2.6.32 I sometimes get lots and lots of &amp;quot;Bad page map&amp;quot; errors as
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; shown below. I believe these started in 2.6.32-rc8 or possibly
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; 2.6.32-rc7. Pika just switched to 2.6.31 so I have been concentrating
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; on that release, and not really testing the 2.6.32 stream.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I wish I could give more info, but I don't really even have the time to
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; write this email :( I am hoping somebody will have a eureka moment.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;That's a concern. Remind me what CPU / MMU type is Pika using ?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 440EP
&lt;/div&gt;&lt;br&gt;Ok, I'll have a look next week. In the meantime, Sean, can you give me a
&lt;br&gt;hint of what you do to trigger it ? Boot time ? specific workload ?
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Ben.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26641152&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/BUG%3A-Bad-page-map-in-process-tp26631686p26641152.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26640972</id>
	<title>Re: BUG: Bad page map in process</title>
	<published>2009-12-04T03:00:56Z</published>
	<updated>2009-12-04T03:00:56Z</updated>
	<author>
		<name>Josh Boyer-3</name>
	</author>
	<content type="html">On Fri, Dec 04, 2009 at 08:08:27PM +1100, Benjamin Herrenschmidt wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;On Thu, 2009-12-03 at 14:18 -0500, Sean MacLennan wrote:
&lt;br&gt;&amp;gt;&amp;gt; With 2.6.32 I sometimes get lots and lots of &amp;quot;Bad page map&amp;quot; errors as
&lt;br&gt;&amp;gt;&amp;gt; shown below. I believe these started in 2.6.32-rc8 or possibly
&lt;br&gt;&amp;gt;&amp;gt; 2.6.32-rc7. Pika just switched to 2.6.31 so I have been concentrating
&lt;br&gt;&amp;gt;&amp;gt; on that release, and not really testing the 2.6.32 stream.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; I wish I could give more info, but I don't really even have the time to
&lt;br&gt;&amp;gt;&amp;gt; write this email :( I am hoping somebody will have a eureka moment.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;That's a concern. Remind me what CPU / MMU type is Pika using ?
&lt;/div&gt;&lt;br&gt;440EP
&lt;br&gt;&lt;br&gt;josh
&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26640972&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/BUG%3A-Bad-page-map-in-process-tp26631686p26640972.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26639626</id>
	<title>Re: BUG: Bad page map in process</title>
	<published>2009-12-04T01:08:27Z</published>
	<updated>2009-12-04T01:08:27Z</updated>
	<author>
		<name>Benjamin Herrenschmidt</name>
	</author>
	<content type="html">On Thu, 2009-12-03 at 14:18 -0500, Sean MacLennan wrote:
&lt;br&gt;&amp;gt; With 2.6.32 I sometimes get lots and lots of &amp;quot;Bad page map&amp;quot; errors as
&lt;br&gt;&amp;gt; shown below. I believe these started in 2.6.32-rc8 or possibly
&lt;br&gt;&amp;gt; 2.6.32-rc7. Pika just switched to 2.6.31 so I have been concentrating
&lt;br&gt;&amp;gt; on that release, and not really testing the 2.6.32 stream.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I wish I could give more info, but I don't really even have the time to
&lt;br&gt;&amp;gt; write this email :( I am hoping somebody will have a eureka moment.
&lt;br&gt;&lt;br&gt;That's a concern. Remind me what CPU / MMU type is Pika using ?
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Ben.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Sean
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.410448] BUG: Bad page map in process udevd &amp;nbsp;pte:ffffffffffffffff pmd:cd883000
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.417989] addr:48003000 vm_flags:08000875 anon_vma:(null) mapping:cf4150ac index:3
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.425837] vma-&amp;gt;vm_ops-&amp;gt;fault: filemap_fault+0x0/0x410
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.431101] vma-&amp;gt;vm_file-&amp;gt;f_op-&amp;gt;mmap: nfs_file_mmap+0x0/0x94
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.436795] Call Trace:
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.439268] [cf2dbd80] [c00065a4] show_stack+0x48/0x168 (unreliable)
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.445708] [cf2dbdb0] [c0064ac8] print_bad_pte+0x14c/0x204
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.451337] [cf2dbde0] [c0064cd4] vm_normal_page+0x90/0x98
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.456875] [cf2dbdf0] [c0064ee8] unmap_vmas+0x20c/0x638
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.462239] [cf2dbe80] [c0069194] exit_mmap+0xc8/0x170
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.467441] [cf2dbea0] [c001caa4] mmput+0x50/0xf4
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.472195] [cf2dbeb0] [c0020808] exit_mm+0x100/0x138
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.477299] [cf2dbee0] [c00211b0] do_exit+0xb0/0x580
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.482315] [cf2dbf20] [c00216c4] do_group_exit+0x44/0x9c
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.487766] [cf2dbf30] [c0021730] sys_exit_group+0x14/0x28
&lt;br&gt;&amp;gt; [ &amp;nbsp;147.493308] [cf2dbf40] [c000dde4] ret_from_syscall+0x0/0x3c
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Linuxppc-dev mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26639626&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26639626&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/BUG%3A-Bad-page-map-in-process-tp26631686p26639626.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26639604</id>
	<title>Re: PCI interrupt question</title>
	<published>2009-12-04T01:05:53Z</published>
	<updated>2009-12-04T01:05:53Z</updated>
	<author>
		<name>Benjamin Herrenschmidt</name>
	</author>
	<content type="html">On Thu, 2009-12-03 at 11:52 -0800, David Hawkins wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Really? I thought the pci_dev structures represent the
&lt;br&gt;&amp;gt; devices found on the PCI bus, and the IRQ line in
&lt;br&gt;&amp;gt; that structure was merely copied from the configuration
&lt;br&gt;&amp;gt; space registers. 
&lt;br&gt;&lt;br&gt;No, it's not. In fact it's mostly irrelevant. It has room for only 8
&lt;br&gt;bits and we commonly manipulate a lot more interrupts on some modern
&lt;br&gt;systems.
&lt;br&gt;&lt;br&gt;Linux will obtain from the device-tree the routing for the interrupt
&lt;br&gt;line(s) of the device. If you don't have a node for the device (which is
&lt;br&gt;allowed for PCI), linux will use the INTERRUPT_PIN register to query
&lt;br&gt;which interrupt line is the device output, and will use the host bridge
&lt;br&gt;device-tree node &amp;quot;interrupt-map&amp;quot; property to find where it's connected
&lt;br&gt;to on the PIC.
&lt;br&gt;&lt;br&gt;It will then map that to a linux virtual IRQ number which is what you
&lt;br&gt;find in pci_dev. At least that's how it works on powerpc :-)
&lt;br&gt;&lt;br&gt;&amp;gt; When you request that interrupt, the
&lt;br&gt;&amp;gt; code would have to remap it to a host IRQ line, which
&lt;br&gt;&amp;gt; it would use the DTS for. (But I'm just speculating).
&lt;br&gt;&lt;br&gt;No, it's already remapped in pci_dev. The mapping happen when the PCI
&lt;br&gt;devices are discovered by the kernel.
&lt;br&gt;&lt;br&gt;&amp;gt; Bottom line is; if the IRQ field of lspci is 0, then you
&lt;br&gt;&amp;gt; need to figure out that problem first :)
&lt;br&gt;&lt;br&gt;I wouldn't trust lspci too much, I'm not sure we bother writing back the
&lt;br&gt;number to the PCI_INTERRUPT_LINE register anymore anyways.
&lt;br&gt;&lt;br&gt;If your pci_dev-&amp;gt;irq is non-0 then Linux found -something- but it might
&lt;br&gt;not be right, it depends on your device-tree.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Ben.
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Linuxppc-dev mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26639604&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Linuxppc-dev@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.ozlabs.org/listinfo/linuxppc-dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.ozlabs.org/listinfo/linuxppc-dev&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/linuxppc-dev-f15995.html&quot; embed=&quot;fixTarget[15995]&quot; target=&quot;_top&quot; &gt;linuxppc-dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/PCI-interrupt-question-tp26621643p26639604.html" />
</entry>

</feed>
