LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] powerpc: fix kernel log of oops/panic instruction dump
From: Ira W. Snyder @ 2012-01-06 23:26 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Paul Mackerras, linuxppc-dev
In-Reply-To: <1325890210.23910.29.camel@pasglop>

On Sat, Jan 07, 2012 at 09:50:10AM +1100, Benjamin Herrenschmidt wrote:
> On Fri, 2012-01-06 at 14:34 -0800, Ira W. Snyder wrote:
> > A kernel oops/panic prints an instruction dump showing several
> > instructions before and after the instruction which caused the
> > oops/panic.
> > 
> > The code intended that the faulting instruction be enclosed in angle
> > brackets, however a bug caused the faulting instruction to be
> > interpreted by printk() as the message log level.
> > 
> > To fix this, the KERN_CONT log level is added before the actualy text of

If you could fix the text above to say 'actual' (instead of 'actualy')
when you commit this, that would be great. Darn typos. :)

> > the printed message.
> 
> Nice one, thanks.
> 
> Cheers,
> Ben.
> 
> > === Before the patch ===
> > 
> > [ 1081.587266] Instruction dump:
> > [ 1081.590236] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
> > [ 1081.598034] 3d20c03a 9009a114 7c0004ac 39200000
> > [ 1081.602500]  4e800020 3803ffd0 2b800009
> > 
> > <4>[ 1081.587266] Instruction dump:
> > <4>[ 1081.590236] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
> > <4>[ 1081.598034] 3d20c03a 9009a114 7c0004ac 39200000
> > <98090000>[ 1081.602500]  4e800020 3803ffd0 2b800009
> > 
> > === After the patch ===
> > 
> > [   51.385216] Instruction dump:
> > [   51.388186] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
> > [   51.395986] 3d20c03a 9009a114 7c0004ac 39200000 <98090000> 4e800020 3803ffd0 2b800009
> > 
> > <4>[   51.385216] Instruction dump:
> > <4>[   51.388186] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
> > <4>[   51.395986] 3d20c03a 9009a114 7c0004ac 39200000 <98090000> 4e800020 3803ffd0 2b800009
> > 
> > Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
> > Cc: Paul Mackerras <paulus@samba.org>
> > Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> > Cc: linuxppc-dev@lists.ozlabs.org
> > ---
> > 
> > In the above examples, the first block is what is shown on the serial
> > console as the machine dies. The second block is the dump as captured by
> > mtdoops.
> > 
> >  arch/powerpc/kernel/process.c |    6 +++---
> >  1 files changed, 3 insertions(+), 3 deletions(-)
> > 
> > diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
> > index 6457574..271f809 100644
> > --- a/arch/powerpc/kernel/process.c
> > +++ b/arch/powerpc/kernel/process.c
> > @@ -566,12 +566,12 @@ static void show_instructions(struct pt_regs *regs)
> >  		 */
> >  		if (!__kernel_text_address(pc) ||
> >  		     __get_user(instr, (unsigned int __user *)pc)) {
> > -			printk("XXXXXXXX ");
> > +			printk(KERN_CONT "XXXXXXXX ");
> >  		} else {
> >  			if (regs->nip == pc)
> > -				printk("<%08x> ", instr);
> > +				printk(KERN_CONT "<%08x> ", instr);
> >  			else
> > -				printk("%08x ", instr);
> > +				printk(KERN_CONT "%08x ", instr);
> >  		}
> >  
> >  		pc += sizeof(int);
> 
> 

^ permalink raw reply

* Re: [PATCH] powerpc: fix kernel log of oops/panic instruction dump
From: Benjamin Herrenschmidt @ 2012-01-06 22:50 UTC (permalink / raw)
  To: Ira W. Snyder; +Cc: Paul Mackerras, linuxppc-dev
In-Reply-To: <1325889247-17205-1-git-send-email-iws@ovro.caltech.edu>

On Fri, 2012-01-06 at 14:34 -0800, Ira W. Snyder wrote:
> A kernel oops/panic prints an instruction dump showing several
> instructions before and after the instruction which caused the
> oops/panic.
> 
> The code intended that the faulting instruction be enclosed in angle
> brackets, however a bug caused the faulting instruction to be
> interpreted by printk() as the message log level.
> 
> To fix this, the KERN_CONT log level is added before the actualy text of
> the printed message.

Nice one, thanks.

Cheers,
Ben.

> === Before the patch ===
> 
> [ 1081.587266] Instruction dump:
> [ 1081.590236] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
> [ 1081.598034] 3d20c03a 9009a114 7c0004ac 39200000
> [ 1081.602500]  4e800020 3803ffd0 2b800009
> 
> <4>[ 1081.587266] Instruction dump:
> <4>[ 1081.590236] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
> <4>[ 1081.598034] 3d20c03a 9009a114 7c0004ac 39200000
> <98090000>[ 1081.602500]  4e800020 3803ffd0 2b800009
> 
> === After the patch ===
> 
> [   51.385216] Instruction dump:
> [   51.388186] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
> [   51.395986] 3d20c03a 9009a114 7c0004ac 39200000 <98090000> 4e800020 3803ffd0 2b800009
> 
> <4>[   51.385216] Instruction dump:
> <4>[   51.388186] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
> <4>[   51.395986] 3d20c03a 9009a114 7c0004ac 39200000 <98090000> 4e800020 3803ffd0 2b800009
> 
> Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: linuxppc-dev@lists.ozlabs.org
> ---
> 
> In the above examples, the first block is what is shown on the serial
> console as the machine dies. The second block is the dump as captured by
> mtdoops.
> 
>  arch/powerpc/kernel/process.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
> index 6457574..271f809 100644
> --- a/arch/powerpc/kernel/process.c
> +++ b/arch/powerpc/kernel/process.c
> @@ -566,12 +566,12 @@ static void show_instructions(struct pt_regs *regs)
>  		 */
>  		if (!__kernel_text_address(pc) ||
>  		     __get_user(instr, (unsigned int __user *)pc)) {
> -			printk("XXXXXXXX ");
> +			printk(KERN_CONT "XXXXXXXX ");
>  		} else {
>  			if (regs->nip == pc)
> -				printk("<%08x> ", instr);
> +				printk(KERN_CONT "<%08x> ", instr);
>  			else
> -				printk("%08x ", instr);
> +				printk(KERN_CONT "%08x ", instr);
>  		}
>  
>  		pc += sizeof(int);

^ permalink raw reply

* [PATCH] powerpc: fix kernel log of oops/panic instruction dump
From: Ira W. Snyder @ 2012-01-06 22:34 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Paul Mackerras

A kernel oops/panic prints an instruction dump showing several
instructions before and after the instruction which caused the
oops/panic.

The code intended that the faulting instruction be enclosed in angle
brackets, however a bug caused the faulting instruction to be
interpreted by printk() as the message log level.

To fix this, the KERN_CONT log level is added before the actualy text of
the printed message.

=== Before the patch ===

[ 1081.587266] Instruction dump:
[ 1081.590236] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
[ 1081.598034] 3d20c03a 9009a114 7c0004ac 39200000
[ 1081.602500]  4e800020 3803ffd0 2b800009

<4>[ 1081.587266] Instruction dump:
<4>[ 1081.590236] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
<4>[ 1081.598034] 3d20c03a 9009a114 7c0004ac 39200000
<98090000>[ 1081.602500]  4e800020 3803ffd0 2b800009

=== After the patch ===

[   51.385216] Instruction dump:
[   51.388186] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
[   51.395986] 3d20c03a 9009a114 7c0004ac 39200000 <98090000> 4e800020 3803ffd0 2b800009

<4>[   51.385216] Instruction dump:
<4>[   51.388186] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001
<4>[   51.395986] 3d20c03a 9009a114 7c0004ac 39200000 <98090000> 4e800020 3803ffd0 2b800009

Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: linuxppc-dev@lists.ozlabs.org
---

In the above examples, the first block is what is shown on the serial
console as the machine dies. The second block is the dump as captured by
mtdoops.

 arch/powerpc/kernel/process.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 6457574..271f809 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -566,12 +566,12 @@ static void show_instructions(struct pt_regs *regs)
 		 */
 		if (!__kernel_text_address(pc) ||
 		     __get_user(instr, (unsigned int __user *)pc)) {
-			printk("XXXXXXXX ");
+			printk(KERN_CONT "XXXXXXXX ");
 		} else {
 			if (regs->nip == pc)
-				printk("<%08x> ", instr);
+				printk(KERN_CONT "<%08x> ", instr);
 			else
-				printk("%08x ", instr);
+				printk(KERN_CONT "%08x ", instr);
 		}
 
 		pc += sizeof(int);
-- 
1.7.3.4

^ permalink raw reply related

* Re: Cannot wake-up from standby with MPC8313
From: Scott Wood @ 2012-01-06 21:03 UTC (permalink / raw)
  To: Norbert van Bolhuis; +Cc: linuxppc-dev@ozlabs.org
In-Reply-To: <4F06FCBC.4090302@aimvalley.nl>

On 01/06/2012 07:53 AM, Norbert van Bolhuis wrote:
> On 01/05/12 19:22, Scott Wood wrote:
>> On 01/05/2012 09:58 AM, Norbert van Bolhuis wrote:
>>> thanks for your response.
>>>
>>> not setting MSR_POW gives same result.
>>
>> OK, so you're not getting an interrupt regardless of low-power state.
>>
>> Check whether the interrupt is getting masked during standby preparation.
>>
>> Does the interrupt handler run when you're not trying to enter standby?
>>
> 
> 
> The GPIO/UART interrupt nor the PMC interrupt are being masked during
> standby
> preperation.
> The GPIO/UART interrupt works fine in "operational" mode.
> The PMC interrupt I do not know, is it possible to to get PMC interrupt
> without going to standby or deep-sleep ?

The PMC interrupt is mainly of interest when running as a PCI agent, to
be notified when the host changed the desired suspend state in config space.

What changes from operational mode to the test where you omit setting
MSR_POW?

Try dumping SIPNR/SIMSR and GPIER/GPIMR/GPDAT at various points.

-Scott

^ permalink raw reply

* [PATCH/RFC] gianfar: Add support for byte queue limits.
From: Paul Gortmaker @ 2012-01-06 20:24 UTC (permalink / raw)
  To: eric.dumazet, therbert; +Cc: netdev, linuxppc-dev, Paul Gortmaker

Add support for byte queue limits (BQL), based on the similar
modifications made to intel/igb/igb_main.c from Eric Dumazet
in commit bdbc063129e811264cd6c311d8c2d9b95de01231.

A local variable for tx_queue->qindex was introduced in
gfar_clean_tx_ring, since it is now used often enough to warrant it,
and it cleans up the readability somewhat as well.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---

[Too late for 3.3, but I figured I might as well get feedback from people
 in the interim.  Passes basic boot test with NFS root on sbc8548 board.]

diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c
index e01cdaa..7d86d38 100644
--- a/drivers/net/ethernet/freescale/gianfar.c
+++ b/drivers/net/ethernet/freescale/gianfar.c
@@ -1755,9 +1755,12 @@ static void free_skb_resources(struct gfar_private *priv)
 
 	/* Go through all the buffer descriptors and free their data buffers */
 	for (i = 0; i < priv->num_tx_queues; i++) {
+		struct netdev_queue *txq;
 		tx_queue = priv->tx_queue[i];
+		txq = netdev_get_tx_queue(tx_queue->dev, tx_queue->qindex);
 		if(tx_queue->tx_skbuff)
 			free_skb_tx_queue(tx_queue);
+		netdev_tx_reset_queue(txq);
 	}
 
 	for (i = 0; i < priv->num_rx_queues; i++) {
@@ -2204,6 +2207,8 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
 		lstatus |= BD_LFLAG(TXBD_CRC | TXBD_READY) | skb_headlen(skb);
 	}
 
+	netdev_tx_sent_queue(txq, skb->len);
+
 	/*
 	 * We can work in parallel with gfar_clean_tx_ring(), except
 	 * when modifying num_txbdfree. Note that we didn't grab the lock
@@ -2447,6 +2452,7 @@ static void gfar_align_skb(struct sk_buff *skb)
 static int gfar_clean_tx_ring(struct gfar_priv_tx_q *tx_queue)
 {
 	struct net_device *dev = tx_queue->dev;
+	struct netdev_queue *txq;
 	struct gfar_private *priv = netdev_priv(dev);
 	struct gfar_priv_rx_q *rx_queue = NULL;
 	struct txbd8 *bdp, *next = NULL;
@@ -2458,10 +2464,13 @@ static int gfar_clean_tx_ring(struct gfar_priv_tx_q *tx_queue)
 	int frags = 0, nr_txbds = 0;
 	int i;
 	int howmany = 0;
+	int tqi = tx_queue->qindex;
+	unsigned int bytes_sent = 0;
 	u32 lstatus;
 	size_t buflen;
 
-	rx_queue = priv->rx_queue[tx_queue->qindex];
+	rx_queue = priv->rx_queue[tqi];
+	txq = netdev_get_tx_queue(dev, tqi);
 	bdp = tx_queue->dirty_tx;
 	skb_dirtytx = tx_queue->skb_dirtytx;
 
@@ -2519,6 +2528,8 @@ static int gfar_clean_tx_ring(struct gfar_priv_tx_q *tx_queue)
 			bdp = next_txbd(bdp, base, tx_ring_size);
 		}
 
+		bytes_sent += skb->len;
+
 		/*
 		 * If there's room in the queue (limit it to rx_buffer_size)
 		 * we add this skb back into the pool, if it's the right size
@@ -2543,13 +2554,15 @@ static int gfar_clean_tx_ring(struct gfar_priv_tx_q *tx_queue)
 	}
 
 	/* If we freed a buffer, we can restart transmission, if necessary */
-	if (__netif_subqueue_stopped(dev, tx_queue->qindex) && tx_queue->num_txbdfree)
-		netif_wake_subqueue(dev, tx_queue->qindex);
+	if (__netif_subqueue_stopped(dev, tqi) && tx_queue->num_txbdfree)
+		netif_wake_subqueue(dev, tqi);
 
 	/* Update dirty indicators */
 	tx_queue->skb_dirtytx = skb_dirtytx;
 	tx_queue->dirty_tx = bdp;
 
+	netdev_tx_completed_queue(txq, howmany, bytes_sent);
+
 	return howmany;
 }
 
-- 
1.7.4.4

^ permalink raw reply related

* Re: Problem with full speed devices on PowerPC MPC5121 host port
From: Alan Stern @ 2012-01-06 18:03 UTC (permalink / raw)
  To: Matthias Fuchs; +Cc: Greg KH, linux-usb, linuxppc-dev
In-Reply-To: <4F06E132.5070905@esd.eu>

On Fri, 6 Jan 2012, Matthias Fuchs wrote:

> For my eyes it does not really look like a general USB issue.
> It looks like a problem with the Freescale EHCI implementation that is
> influenced by high interrupt or internal bus load caused by the flood ping.

Indeed, it might be a problem with the built-in Transaction Translator.  
That would explain why it affect full-speed devices.

However, I would expect the resetting the controller hardware (which 
happens when you reload the ehci-fsl driver) would fix any such issues.  
It's hard to imagine how a problem could survive a reset like that.

Alan Stern

^ permalink raw reply

* Re: Cannot wake-up from standby with MPC8313
From: Norbert van Bolhuis @ 2012-01-06 13:53 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev@ozlabs.org
In-Reply-To: <4F05EA6B.9040902@freescale.com>

On 01/05/12 19:22, Scott Wood wrote:
> On 01/05/2012 09:58 AM, Norbert van Bolhuis wrote:
>> thanks for your response.
>>
>> not setting MSR_POW gives same result.
>
> OK, so you're not getting an interrupt regardless of low-power state.
>
> Check whether the interrupt is getting masked during standby preparation.
>
> Does the interrupt handler run when you're not trying to enter standby?
>


The GPIO/UART interrupt nor the PMC interrupt are being masked during standby
preperation.
The GPIO/UART interrupt works fine in "operational" mode.
The PMC interrupt I do not know, is it possible to to get PMC interrupt
without going to standby or deep-sleep ?
In anyway there is no PMC interrupt for NAP mode (if kernel.powersave-nap=1).


>> if I set kernel.powersave-nap=1 it works fine,
>
> What is "it"?  Do you mean that powersave-nap doesn't break things, or
> that standby works when you specify that?
>


I mean powersave-nap itself seems to work and does not break things.


>> so apparently NAP/DOZE mode does work (if CPU is idle). This saves almost no
>> power though. Standby mode saves about 300-500 mW.
>>
>> The problem could well be our board though, today I learned it does
>> work by connecting an (inactive) JTAG debugger.
>> Also, on another board it always works.
>
> You mean connecting a JTAG but not doing anything with it made
> wake-from-standby work?
>
> There was a bug like that on early revisions of the mpc8313erdb board --
> though in that case if you had a bad board the system would hang
> whenever you access any PMC register.  I'm not sure what the mechanism
> of failure was; IIRC the fix was adding a resistor.
>


yes, connecting a JTAG but not doing anything with it makes
wake-from-standby work.

I don't know what's wrong with (some of) our boards... it looks
like external interrupts are blocked and/or core stays in reset..

I doubt there's a SW PMC race/deadlock that causes this.


---
NvBolhuis

^ permalink raw reply

* Re: [RFC PATCH 0/9] Remove useless on_each_cpu return value
From: Peter Zijlstra @ 2012-01-06 13:03 UTC (permalink / raw)
  To: Gilad Ben-Yossef
  Cc: linux-ia64, David Airlie, Will Deacon, dri-devel, Paul Mackerras,
	H. Peter Anvin, Russell King, x86, Ingo Molnar,
	Arnaldo Carvalho de Melo, Matt Turner, Fenghua Yu,
	devicetree-discuss, Michal Nazarewicz, Ivan Kokshaysky,
	Rob Herring, Thomas Gleixner, linux-arm-kernel, Richard Henderson,
	Tony Luck, linux-kernel, linux-alpha, linuxppc-dev
In-Reply-To: <1325600353-10895-1-git-send-email-gilad@benyossef.com>

On Tue, 2012-01-03 at 16:19 +0200, Gilad Ben-Yossef wrote:
> on_each_cpu() returns as its own return value the return value of=20
> smp_call_function(). smp_call_function() in turn returns a hard=20
> coded value of zero.
>=20
> Some callers to on_each_cpu() waste cycles and bloat code space
> by checking the return value to on_each_cpu(), probably for=20
> historical reasons.

hysterical raisins,, yumm! :-)

> This patch set refactors callers to not test on_each_cpu()
> (fixed) return value and then refactors on_each_cpu to
> return void to avoid confusing future users.
>=20

Seems sane enough, fwiw:

Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>

^ permalink raw reply

* Re: Problem with full speed devices on PowerPC MPC5121 host port
From: Matthias Fuchs @ 2012-01-06 11:55 UTC (permalink / raw)
  To: Greg KH; +Cc: linuxppc-dev, linux-usb
In-Reply-To: <20111222173900.GD28856@kroah.com>

On 22.12.2011 18:39, Greg KH wrote:
> On Thu, Dec 22, 2011 at 12:48:45PM +0100, Matthias Fuchs wrote:
>> Hi,
>>
>> I ran into trouble when using the MPC5121 with full speed
>> USB devices. I've seen the issue with USB serial converters
>> based on FTDI and Prolific chips.
>>
>> After connecting the device they first work fine. But when
>> I stress the converter communications stalls. I can even force
>> this behavior when doing a flood ping against the device.
>> Then it only takes a few seconds until USB gets weird.
>>
>> After some time and several CTRL-C to stop the application
>> that uses the ttyUSBx port I get a kernel message:
>>
>> 	ftdi_sio ttyUSB0: error from flowcontrol urb
>>
>> The only thing that reanimates the USB port is doing a reboot.
> 
> Not removing and inserting the device again?  unloading the ftdi_sio
> driver and reloading it?
Right. First I used a monolithic kernel with ftdi_sio and ehci_hcd build
in. Now I did the test again with fsl_mph_dr_of, ehci_hcd, usbserial and
ftdi_sio loaded as modules. After the error occured, I
removed the device and unloaded the modules. After reloading them
USB is still weird.

usb 1-1: new full-speed USB device number 2 using fsl-ehci
usb 1-1: device descriptor read/64, error -110
usb 1-1: device descriptor read/64, error -110
usb 1-1: new full-speed USB device number 3 using fsl-ehci
usb 1-1: device descriptor read/64, error -110

> If you look at the data using usbmon, does anything look odd?
As long as everything works fine usbmon outputs data like this. It stops
a short time after I started the flood ping to the board.
df9c16c0 697164417 C Bi:1:002:1 0 2 = 0160
df9c16c0 697164436 S Bi:1:002:1 -115 512 <
df9c16c0 697165417 C Bi:1:002:1 0 2 = 0160
df9c16c0 697165441 S Bi:1:002:1 -115 512 <
df9c16c0 697166417 C Bi:1:002:1 0 2 = 0160
df9c16c0 697166435 S Bi:1:002:1 -115 512 <
df9c16c0 697167417 C Bi:1:002:1 0 9 = 01605f54 48452051 55
df9c16c0 697167450 S Bi:1:002:1 -115 512 <
df9c16c0 697168417 C Bi:1:002:1 0 14 = 01604943 4b204252 4f574e20 464f
df9c16c0 697168450 S Bi:1:002:1 -115 512 <
df9c16c0 697169420 C Bi:1:002:1 0 13 = 01605820 4a554d50 53204f56 45
df9c16c0 697169453 S Bi:1:002:1 -115 512 <
df9c16c0 697170418 C Bi:1:002:1 0 14 = 01605220 54484520 4c415a59 2044
df9c16c0 697170451 S Bi:1:002:1 -115 512 <
df9c16c0 697171417 C Bi:1:002:1 0 14 = 01604f47 20313233 34353637 3839
df9c16c0 697171450 S Bi:1:002:1 -115 512 <

Then I try to abort my application. This result in

df9c1340 712766944 S Co:1:002:0 s 40 02 0000 0000 0000 0
df9c1340 717776208 C Co:1:002:0 -2 0
df9c1340 717776503 S Co:1:002:0 s 40 01 0300 0000 0000 0
df9c1340 722786213 C Co:1:002:0 -2 8 >
df9c16c0 722796202 C Bi:1:002:1 -2 0

And finally I try to restart my application:

df9c12c0 791192447 S Co:1:002:0 s 40 00 0000 0000 0000 0
df9c12c0 796202240 C Co:1:002:0 -2 0
df9c12c0 796203289 S Co:1:002:0 s 40 02 0000 0000 0000 0
df9c12c0 801213213 C Co:1:002:0 -2 0
df9c16c0 801213518 S Bi:1:002:1 -115 512 <
df9c12c0 801213560 S Co:1:002:0 s 40 01 0303 0000 0000 0
df9c12c0 806223208 C Co:1:002:0 -2 0
df9c12c0 806223411 S Co:1:002:0 s 40 02 0000 0000 0000 0
df9c12c0 811233210 C Co:1:002:0 -2 0
df9c1440 821344904 S Co:1:002:0 s 40 02 0000 0000 0000 0
df9c1440 826354209 C Co:1:002:0 -2 8 >
df9c1440 826354515 S Co:1:002:0 s 40 01 0300 0000 0000 0
df9c1440 831364204 C Co:1:002:0 -2 0
df9c16c0 831374203 C Bi:1:002:1 -2 0

> And what kernel version are you using here?
Now I switched to 3.2.0 with only minimal changes for our hardware.
But (as expected) I get the same problems.

For my eyes it does not really look like a general USB issue.
It looks like a problem with the Freescale EHCI implementation that is
influenced by high interrupt or internal bus load caused by the flood ping.

I put linuxppc-dev on CC. Perhaps soneone in that community can double
check it on a Freescale evaluation board.

Matthias

^ permalink raw reply

* RE: [PATCH][v2] mmc:sdhci: restore the enabled dma when do reset all
From: Xie Shaohui-B21989 @ 2012-01-06  7:57 UTC (permalink / raw)
  To: cjb@laptop.org, linux-mmc@vger.kernel.org
  Cc: linuxppc-dev@lists.ozlabs.org, Xie Shaohui-B21989
In-Reply-To: <1325147580-31281-1-git-send-email-Shaohui.Xie@freescale.com>

Hello, Chris,

Do you have any concern for this patch?


Best Regards,=20
Shaohui Xie=20

>-----Original Message-----
>From: Xie Shaohui-B21989
>Sent: Thursday, December 29, 2011 4:33 PM
>To: linux-mmc@vger.kernel.org
>Cc: linuxppc-dev@lists.ozlabs.org; Xie Shaohui-B21989
>Subject: [PATCH][v2] mmc:sdhci: restore the enabled dma when do reset all
>
>If dma is enabled, it'll be cleared when reset all is performed, this can
>be observed on some platforms, such as P2041 which has a version 2.3
>controller, but platform like P4080 which has a version 2.2 controller,
>does not suffer this, so we will check if the dma is enabled, we should
>restore it after reset all.
>
>Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
>---
>based on http://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git,
>branch 'for-linus'.
>
>changes for v2:
>call the wrapper API instead of access the register directly.
>
> drivers/mmc/host/sdhci.c |    5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)
>
>diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index
>19ed580..cf6a048 100644
>--- a/drivers/mmc/host/sdhci.c
>+++ b/drivers/mmc/host/sdhci.c
>@@ -214,6 +214,11 @@ static void sdhci_reset(struct sdhci_host *host, u8
>mask)
>
> 	if (host->quirks & SDHCI_QUIRK_RESTORE_IRQS_AFTER_RESET)
> 		sdhci_clear_set_irqs(host, SDHCI_INT_ALL_MASK, ier);
>+
>+	if (host->flags & (SDHCI_USE_SDMA | SDHCI_USE_ADMA)) {
>+		if ((host->ops->enable_dma) && (mask & SDHCI_RESET_ALL))
>+			host->ops->enable_dma(host);
>+	}
> }
>
> static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios);
>--
>1.6.4

^ permalink raw reply

* [git pull] Please pull powerpc.git next branch
From: Benjamin Herrenschmidt @ 2012-01-06  3:42 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linuxppc-dev list, Andrew Morton, Linux Kernel list

Hi Linus !

Here's my powerpc batch for this merge window. In addition to the usual
mixed bag of small fixes & improvements, the bigger highlights are:

 - Reworked the freescale .dts (device-tree) files to use the new
".dtsi" include mechanism so board files just include the SoC definition
rather than duplicating it
 - cpuidle framework support on pseries
 - Various time management fixes & cleanups
 - hugetlb support for FSL BookE embedded chips
 - p7ioc IO chip support for powernv platform
 - Cleanup of MPIC init code

And I'm probably forgetting some...

Cheers,
Ben.


The following changes since commit caca6a03d365883564885f2c1da3e88dcf65d139:

  Linux 3.2-rc3 (2011-11-23 20:20:28 -0800)

are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git next

Alexandre Rusev (1):
      powerpc/fsl-lbc: Fix for fsl_upm

Ananth N Mavinakayanahalli (1):
      powerpc: Export PIR data through sysfs

Andreas Schwab (1):
      powerpc: Fix wrong divisor in usecs_to_cputime

Andy Fleming (1):
      powerpc: Add TBI PHY node to first MDIO bus

Anton Blanchard (22):
      powerpc/time: Handle wrapping of decrementer
      powerpc/time: Use clockevents_calc_mult_shift
      powerpc/time: Use clocksource_register_hz
      powerpc/time: Remove unnecessary sanity check of decrementer expiration
      powerpc/time: Fix some style issues
      powerpc/time: Optimise decrementer_check_overflow
      powerpc: Decode correct MSR bits in oops output
      powerpc/xics: Harden xics hypervisor backend
      powerpc: Give us time to get all oopses out before panicking
      powerpc: Remove broken and complicated kdump system reset code
      powerpc/kdump: Use setjmp/longjmp to handle kdump and system reset recursion
      powerpc: Cleanup crash/kexec code
      powerpc: Rework die()
      powerpc: Reduce pseries panic timeout from 180s to 10s
      powerpc/xics: Reset the CPPR if H_EOI fails
      powerpc/kdump: Delay before sending IPI on a system reset
      powerpc/kdump: Only save CPU state first time through the secondary CPU capture code
      powerpc/pseries: Increase minimum RMO size from 64MB to 256MB
      powerpc/nvram: Add spinlock to oops_to_nvram to prevent oops in compression code.
      powerpc: Enable squashfs as a module
      powerpc: POWER7 optimised copy_to_user/copy_from_user using VMX
      powerpc: Fix comment explaining our VSID layout

Becky Bruce (13):
      powerpc: Only define HAVE_ARCH_HUGETLB_UNMAPPED_AREA if PPC_MM_SLICES
      powerpc: hugetlb: fix huge_ptep_set_access_flags return value
      powerpc: Fix booke hugetlb preload code for PPC_MM_SLICES and 64-bit
      powerpc: Update hugetlb huge_pte_alloc and tablewalk code for FSL BOOKE
      powerpc: hugetlb: modify include usage for FSL BookE code
      powerpc: Whitespace/comment changes to tlb_low_64e.S
      powerpc: Add hugepage support to 64-bit tablewalk code for FSL_BOOK3E
      powerpc: Add gpages reservation code for 64-bit FSL BOOKE
      powerpc: Kconfig updates for FSL BookE HUGETLB 64-bit
      powerpc: Enable Hugetlb by default for 32-bit 85xx/corenet
      powerpc: Enable hugetlb by default for corenet64 platforms
      powerpc/book3e: Change hugetlb preload to take vma argument
      powerpc: Define/use HUGETLB_NEED_PRELOAD insead of complicated #if

Benjamin Herrenschmidt (24):
      powerpc/pci: Add a platform hook after probe and before resource survey
      powerpc/pci: Change how re-assigning resouces work
      powerpc/powernv: Add TCE SW invalidation support
      powerpc/powernv: Fixup p7ioc PCIe root complex class code
      powerpc/powernv: PCI support for p7IOC under OPAL v2
      Merge remote-tracking branch 'kumar/next' into next
      powerpc/powernv: Update OPAL interfaces
      powerpc/powernv: Display diag data on p7ioc EEH errors
      powerpc/powernv: Workaround OFW issues in prom_init.c
      powerpc/pci: Make pci_read_irq_line() static
      Merge branch 'mpic' into next
      Merge branch 'booke-hugetlb' into next
      powerpc: Add support for OpenBlockS 600
      Merge branch 'cpuidle' into next
      Merge branch 'ps3' into next
      Merge branch 'kexec' into next
      tty/serial/pmac_zilog: Fix suspend & resume
      powerpc/pmac: Simplify old pmac PIC interrupt handling
      powerpc/pmac: Fix SMP kernels on pre-core99 UP machines
      Merge remote-tracking branch 'jwb/next' into next
      powerpc: Fix old bug in prom_init setting of the color
      offb: Fix bug in calculating requested vram size
      offb: Add palette hack for qemu "standard vga" framebuffer
      offb: Fix setting of the pseudo-palette for >8bpp
po
Christoph Egger (1):
      powerpc/44x: Removing dead CONFIG_PPC47x

Chuck Meade (1):
      drivers/serial/ucc_uart.c: Add missing call to init UCC UART port timeout

Dan McGee (1):
      powerpc+sparc64/mm: Remove hack in mmap randomize layout

David Rientjes (2):
      powerpc/mm: Fix section mismatch for mark_reserved_regions_for_nid
      powerpc/mm: Fix section mismatch for read_n_cells

Deepthi Dharwar (4):
      powerpc/cpuidle: Add cpu_idle_wait() to allow switching of idle routines
      powerpc/cpuidle: cpuidle driver for pSeries
      powerpc/cpuidle: Enable cpuidle and directly call cpuidle_idle_call() for pSeries
      powerpc/cpuidle: Handle power_save=off

Dmitry Eremin-Solenikov (7):
      powerpc/83xx: consolidate init_IRQ functions
      powerpc/83xx: consolidate of_platform_bus_probe calls
      powerpc/83xx: merge PCI bridge additions
      powerpc/83xx: make mpc830x_rdb use mpc83xx_setup_pci
      powerpc/85xx: separate cpm2 pic init
      powerpc/85xx: consolidate of_platform_bus_probe calls
      powerpc/maple: Enable access to HT Host-Bridge on Maple

Finn Thain (1):
      pmac_zilog: Fix unexpected irq

Florian Fainelli (1):
      perf/powerpc: Fix build for PowerPC with uclibc toolchains

Geoff Levand (8):
      powerpc/ps3: Interrupt code cleanup
      powerpc/ps3: Fix hcall lv1_net_stop_rx_dma
      powerpc/ps3: Fix hcall lv1_get_virtual_address_space_id_of_ppe
      powerpc/ps3: Fix hcall lv1_get_version_info
      powerpc/ps3: Fix hcall lv1_read_repository_node
      powerpc/ps3: Fix PS3 repository build warnings
      powerpc/ps3: Add __init to ps3_smp_probe
      powerpc/ps3: Update ps3_defconfig

Geoff Thorpe (1):
      powerpc: Add pgprot_cached_noncoherent()

Jason Jin (1):
      powerpc/fsl-pci: Don't hide resource for pci/e when configured as Agent/EP

Jia Hongtao (1):
      powerpc/85xx: Add lbc suspend support for PM

Jimi Xenidis (6):
      powerpc: Split ICSWX ACOP and PID processing
      powerpc/book3e: Add ICSWX/ACOP support to Book3e cores like A2
      powerpc/icswx: Simple ACOP fault handler
      powerpc/xmon: Fix the 'u' command description
      powerpc/xmon: Fix #if typo for systems without MSR[RI]
      powerpc/book3e: Add Chroma as a new WSP/PowerEN platform.

Joakim Tjernlund (1):
      powerpc/qe: Fixup QE_General4 errata

Josh Boyer (2):
      MAINTAINERS: Update PowerPC 4xx git tree
      powerpc/44x: Fix build error on currituck platform

Julia Lawall (4):
      arch/powerpc/sysdev/ehv_pic.c: add missing kfree
      powerpc/cell/iommu: Add missing of_node_put
      powerpc/powermac: Add missing of_node_put
      arch/powerpc/sysdev/fsl_rmu.c: introduce missing kfree

Justin P. Mattock (1):
      powerpc/mpic: Remove extra semicolon.

Kai Jiang (1):
      powerpc/8xxx: Update device tree bus probe for new RapidIO node binding

Kumar Gala (36):
      powerpc/85xx: Fix compile error on p3060_qds.c
      powerpc/85xx: Simplify P1020RDB CAMP dts using includes
      powerpc/85xx: Rework PCI nodes on P1020RDB
      powerpc/85xx: Update SPI binding to match binding spec for P1020RDB
      powerpc/85xx: Update P1020 SEC3.3 node to match actual SoC HW
      powerpc/85xx: Add ethernet magic packet property to P1020 device tree
      powerpc/85xx: p1020si.dtsi update interrupt handling
      powerpc/85xx: create dts components to build up an SoC
      powerpc/85xx: Rework MPC8536DS device trees
      powerpc/85xx: Rework MPC8544DS device tree
      powerpc/85xx: Rework MPC8548CDS device trees
      powerpc/85xx: Rework MPC8568MDS device tree
      powerpc/85xx: Rework MPC8569MDS device tree
      powerpc/85xx: Rework MPC8572DS device tree
      powerpc/85xx: Rework P1010RDB and P1010 device tree
      powerpc/85xx: Add RTC to P1010RDB device tree
      powerpc/85xx: Add crypto engine to P1010 SoC device tree
      powerpc/85xx: Add a P1010RDB 36-bit address map device tree
      powerpc/85xx: Rework P1020RDB device tree
      powerpc/85xx: Add P1020RDB 36-bit address map device tree
      powerpc/85xx: Rework P1021MDS device tree
      powerpc/85xx: Rework P1022DS device tree
      powerpc/85xx: Rework P1023RDS device tree
      powerpc/85xx: Rework P2020DS device tree
      powerpc/85xx: Rework P2020RDB device tree
      powerpc/85xx: Rework P2041RDB device tree
      powerpc/85xx: Rework P3041DS device tree
      powerpc/85xx: Rework P3060QDS device tree
      powerpc/85xx: Rework P4080DS device trees
      powerpc/85xx: Rework P5020DS device tree
      powerpc/85xx: Update SRIO device tree nodes
      powerpc/85xx: Additional consolidate of_platform_bus_probe calls
      powerpc/85xx: Renamed mpc85xx_common.c to common.c
      powerpc/fsl-pci: Allow 64-bit PCIe devices to DMA to any memory address
      powerpc/fsl: Update defconfigs to enable some standard FSL HW features
      powerpc/fsl: update compatiable on fsl 16550 uart nodes

Kyle Moffett (10):
      powerpc/85xx: Move mpc85xx_smp_init() decl to a new "smp.h"
      powerpc: Consolidate mpic_alloc() OF address translation
      powerpc/mpic: Assume a device-node was passed in mpic_alloc()
      powerpc/mpic: Save computed phys_addr for board-specific code
      powerpc/mpic: Search for open-pic device-tree node if NULL
      powerpc/mpic: Invert the meaning of MPIC_PRIMARY
      powerpc/mpic: Don't open-code dcr_resource_start
      powerpc/mpic: Put "pic-no-reset" test back into the MPIC code
      powerpc/mpic: Cache the device-tree node in "struct mpic"
      powerpc/mpic: Add in-core support for cascaded MPICs

Li Zhong (1):
      powerpc: Fix unpaired probe_hcall_entry and probe_hcall_exit

Liu Gang (3):
      powerpc/fsl: Document rapidio node binding-information
      fsl-rio: Split rio driver into two parts, RapidIO endpoint and message unit
      fsl-rio: Add two ports and rapidio message units support

Matt Evans (1):
      powerpc: Add __SANE_USERSPACE_TYPES__ to asm/types.h for LL64

Matthew McClintock (1):
      arch/powerpc: Remove duplicate/redundant Altivec entries

Michael Neuling (1):
      powerpc: fix compile error with 85xx/p1023_rds.c

Milton Miller (1):
      powerpc/pseries: Software invalidatation of TCEs

Paul Bolle (1):
      powerpc/p3060qds: Fix select of 'MPC8xxx_GPIO'

Paul Gortmaker (1):
      sbc834x: put full compat string in board match check

Paul Mackerras (3):
      powerpc/powernv: Fix problems in onlining CPUs
      powerpc: Provide a way for KVM to indicate that NV GPR values are lost
      powerpc: Only use initrd_end as the limit for alloc_bottom if it's inside the RMO.

Prabhakar Kushwaha (1):
      powerpc/fsl: Add support for Integrated Flash Controller

Ravi K. Nittala (1):
      powerpc/pseries: Cancel RTAS event scan before firmware flash

Richard Kuo (1):
      powerpc: Use rwsem.h from generic location

Roy Zang (1):
      powerpc/p1023: set IRQ[4:6,11] to active-high level sensitive for PCIe

Shaohui Xie (1):
      drivers/edac/mpc85xx_edac.c: fix memory controller compatible for edac

Suzuki Poulose (8):
      powerpc: Rename mapping based RELOCATABLE to DYNAMIC_MEMSTART for BookE
      powerpc/44x: Enable DYNAMIC_MEMSTART for 440x
      powerpc: Process dynamic relocations for kernel
      powerpc: Define virtual-physical translations for RELOCATABLE
      powerpc/44x: Enable CONFIG_RELOCATABLE for PPC44x
      powerpc/44x: Enable CRASH_DUMP for 440x
      powerpc/boot: Change the load address for the wrapper to fit the kernel
      powerpc/boot: Change the WARN to INFO for boot wrapper overlap message

Tanmay Inamdar (1):
      powerpc/40x: Add APM8018X SOC support

Thomas Gleixner (4):
      powerpc/85xx: Mark cascade irq IRQF_NO_THREAD
      powerpc/wsp: Mark opb cascade handler IRQF_NO_THREAD
      powerpc: Mark IPI interrupts IRQF_NO_THREAD
      powerpc: Allow irq threading

Timur Tabi (5):
      powerpc/85xx: add pixis indirect mode device tree node
      powerpc/fsl_msi: add support for the fsl, msi property in PCI nodes
      powerpc/85xx: re-enable ePAPR byte channel driver in corenet32_smp_defconfig
      powerpc/85xx: fix PCI and localbus properties in p1022ds.dts
      powerpc/fsl: add MSI support for the Freescale hypervisor

Tony Breeds (8):
      powerpc/44x: pci: Use PCI_BASE_ADDRESS_MEM_PREFETCH rather than magic value.
      powerpc/44x: pci: Add a want_sdr flag into ppc4xx_pciex_hwops
      powerpc/44x: pci: Setup the dma_window properties for each pci_controller
      powerpc/boot: Add extended precision shifts to the boot wrapper.
      powerpc/boot: Add mfdcrx
      powerpc/476fpe: Add 476fpe SoC code
      powerpc/47x: Add support for the new IBM currituck platform
      powerpc: fix compile error with 85xx/p1010rdb.c

sukadev@linux.vnet.ibm.com (2):
      powerpc: Implement CONFIG_STRICT_DEVMEM
      powerpc: Punch a hole in /dev/mem for librtas

 .../devicetree/bindings/powerpc/fsl/srio-rmu.txt   |  163 +++
 .../devicetree/bindings/powerpc/fsl/srio.txt       |  103 ++
 MAINTAINERS                                        |    2 +-
 arch/powerpc/Kconfig                               |   54 +-
 arch/powerpc/Kconfig.debug                         |   12 +
 arch/powerpc/Makefile                              |   11 +-
 arch/powerpc/boot/Makefile                         |   12 +-
 arch/powerpc/boot/dcr.h                            |    6 +
 arch/powerpc/boot/div64.S                          |   52 +
 arch/powerpc/boot/dts/asp834x-redboot.dts          |    4 +-
 arch/powerpc/boot/dts/currituck.dts                |  237 +++
 arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi      |  248 ++++
 arch/powerpc/boot/dts/fsl/mpc8536si-pre.dtsi       |   63 +
 arch/powerpc/boot/dts/fsl/mpc8544si-post.dtsi      |  191 +++
 arch/powerpc/boot/dts/fsl/mpc8544si-pre.dtsi       |   63 +
 arch/powerpc/boot/dts/fsl/mpc8548si-post.dtsi      |  143 ++
 arch/powerpc/boot/dts/fsl/mpc8548si-pre.dtsi       |   62 +
 arch/powerpc/boot/dts/fsl/mpc8568si-post.dtsi      |  270 ++++
 arch/powerpc/boot/dts/fsl/mpc8568si-pre.dtsi       |   65 +
 arch/powerpc/boot/dts/fsl/mpc8569si-post.dtsi      |  304 ++++
 arch/powerpc/boot/dts/fsl/mpc8569si-pre.dtsi       |   64 +
 arch/powerpc/boot/dts/fsl/mpc8572si-post.dtsi      |  196 +++
 arch/powerpc/boot/dts/fsl/mpc8572si-pre.dtsi       |   70 +
 arch/powerpc/boot/dts/fsl/p1010si-post.dtsi        |  198 +++
 arch/powerpc/boot/dts/fsl/p1010si-pre.dtsi         |   64 +
 arch/powerpc/boot/dts/fsl/p1020si-post.dtsi        |  174 +++
 arch/powerpc/boot/dts/fsl/p1020si-pre.dtsi         |   68 +
 arch/powerpc/boot/dts/fsl/p1021si-post.dtsi        |  225 +++
 arch/powerpc/boot/dts/fsl/p1021si-pre.dtsi         |   68 +
 arch/powerpc/boot/dts/fsl/p1022si-post.dtsi        |  235 +++
 arch/powerpc/boot/dts/fsl/p1022si-pre.dtsi         |   68 +
 arch/powerpc/boot/dts/fsl/p1023si-post.dtsi        |  224 +++
 arch/powerpc/boot/dts/fsl/p1023si-pre.dtsi         |   76 +
 arch/powerpc/boot/dts/fsl/p2020si-post.dtsi        |  194 +++
 arch/powerpc/boot/dts/fsl/p2020si-pre.dtsi         |   69 +
 arch/powerpc/boot/dts/fsl/p2041si-post.dtsi        |  325 +++++
 arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi         |  111 ++
 arch/powerpc/boot/dts/fsl/p3041si-post.dtsi        |  352 +++++
 arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi         |  112 ++
 arch/powerpc/boot/dts/fsl/p3060si-post.dtsi        |  296 ++++
 arch/powerpc/boot/dts/fsl/p3060si-pre.dtsi         |  125 ++
 arch/powerpc/boot/dts/fsl/p4080si-post.dtsi        |  350 +++++
 arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi         |  143 ++
 arch/powerpc/boot/dts/fsl/p5020si-post.dtsi        |  355 +++++
 arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi         |   96 ++
 arch/powerpc/boot/dts/fsl/pq3-dma-0.dtsi           |   66 +
 arch/powerpc/boot/dts/fsl/pq3-dma-1.dtsi           |   66 +
 arch/powerpc/boot/dts/fsl/pq3-duart-0.dtsi         |   51 +
 arch/powerpc/boot/dts/fsl/pq3-esdhc-0.dtsi         |   41 +
 arch/powerpc/boot/dts/fsl/pq3-espi-0.dtsi          |   41 +
 arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi        |   53 +
 arch/powerpc/boot/dts/fsl/pq3-etsec1-1.dtsi        |   53 +
 arch/powerpc/boot/dts/fsl/pq3-etsec1-2.dtsi        |   53 +
 arch/powerpc/boot/dts/fsl/pq3-etsec1-3.dtsi        |   53 +
 arch/powerpc/boot/dts/fsl/pq3-etsec1-timer-0.dtsi  |   39 +
 arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi        |   60 +
 arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi        |   60 +
 arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi        |   59 +
 arch/powerpc/boot/dts/fsl/pq3-etsec2-grp2-0.dtsi   |   42 +
 arch/powerpc/boot/dts/fsl/pq3-etsec2-grp2-1.dtsi   |   42 +
 arch/powerpc/boot/dts/fsl/pq3-etsec2-grp2-2.dtsi   |   42 +
 arch/powerpc/boot/dts/fsl/pq3-gpio-0.dtsi          |   41 +
 arch/powerpc/boot/dts/fsl/pq3-i2c-0.dtsi           |   43 +
 arch/powerpc/boot/dts/fsl/pq3-i2c-1.dtsi           |   43 +
 arch/powerpc/boot/dts/fsl/pq3-mpic-timer-B.dtsi    |   42 +
 arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi            |   66 +
 arch/powerpc/boot/dts/fsl/pq3-rmu-0.dtsi           |   68 +
 arch/powerpc/boot/dts/fsl/pq3-sata2-0.dtsi         |   40 +
 arch/powerpc/boot/dts/fsl/pq3-sata2-1.dtsi         |   40 +
 arch/powerpc/boot/dts/fsl/pq3-sec2.1-0.dtsi        |   43 +
 arch/powerpc/boot/dts/fsl/pq3-sec3.0-0.dtsi        |   45 +
 arch/powerpc/boot/dts/fsl/pq3-sec3.1-0.dtsi        |   45 +
 arch/powerpc/boot/dts/fsl/pq3-sec3.3-0.dtsi        |   45 +
 arch/powerpc/boot/dts/fsl/pq3-sec4.4-0.dtsi        |   65 +
 arch/powerpc/boot/dts/fsl/pq3-usb2-dr-0.dtsi       |   41 +
 arch/powerpc/boot/dts/fsl/pq3-usb2-dr-1.dtsi       |   41 +
 arch/powerpc/boot/dts/fsl/qoriq-dma-0.dtsi         |   66 +
 arch/powerpc/boot/dts/fsl/qoriq-dma-1.dtsi         |   66 +
 arch/powerpc/boot/dts/fsl/qoriq-duart-0.dtsi       |   51 +
 arch/powerpc/boot/dts/fsl/qoriq-duart-1.dtsi       |   51 +
 arch/powerpc/boot/dts/fsl/qoriq-esdhc-0.dtsi       |   40 +
 arch/powerpc/boot/dts/fsl/qoriq-espi-0.dtsi        |   41 +
 arch/powerpc/boot/dts/fsl/qoriq-gpio-0.dtsi        |   41 +
 arch/powerpc/boot/dts/fsl/qoriq-i2c-0.dtsi         |   53 +
 arch/powerpc/boot/dts/fsl/qoriq-i2c-1.dtsi         |   53 +
 arch/powerpc/boot/dts/fsl/qoriq-mpic.dtsi          |  106 ++
 arch/powerpc/boot/dts/fsl/qoriq-rmu-0.dtsi         |   68 +
 arch/powerpc/boot/dts/fsl/qoriq-sata2-0.dtsi       |   39 +
 arch/powerpc/boot/dts/fsl/qoriq-sata2-1.dtsi       |   39 +
 arch/powerpc/boot/dts/fsl/qoriq-sec4.0-0.dtsi      |  100 ++
 arch/powerpc/boot/dts/fsl/qoriq-sec4.1-0.dtsi      |  109 ++
 arch/powerpc/boot/dts/fsl/qoriq-sec4.2-0.dtsi      |  109 ++
 arch/powerpc/boot/dts/fsl/qoriq-usb2-dr-0.dtsi     |   41 +
 arch/powerpc/boot/dts/fsl/qoriq-usb2-mph-0.dtsi    |   41 +
 arch/powerpc/boot/dts/gef_ppc9a.dts                |    4 +-
 arch/powerpc/boot/dts/gef_sbc310.dts               |    4 +-
 arch/powerpc/boot/dts/gef_sbc610.dts               |    4 +-
 arch/powerpc/boot/dts/klondike.dts                 |  227 +++
 arch/powerpc/boot/dts/kmeter1.dts                  |    2 +-
 arch/powerpc/boot/dts/kuroboxHD.dts                |    4 +-
 arch/powerpc/boot/dts/kuroboxHG.dts                |    4 +-
 arch/powerpc/boot/dts/mpc8308_p1m.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8308rdb.dts               |    4 +-
 arch/powerpc/boot/dts/mpc8313erdb.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8315erdb.dts              |    4 +-
 arch/powerpc/boot/dts/mpc832x_mds.dts              |    4 +-
 arch/powerpc/boot/dts/mpc832x_rdb.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8349emitx.dts             |    4 +-
 arch/powerpc/boot/dts/mpc8349emitxgp.dts           |    4 +-
 arch/powerpc/boot/dts/mpc834x_mds.dts              |    4 +-
 arch/powerpc/boot/dts/mpc836x_mds.dts              |    4 +-
 arch/powerpc/boot/dts/mpc836x_rdk.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8377_mds.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8377_rdb.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8377_wlan.dts             |    4 +-
 arch/powerpc/boot/dts/mpc8378_mds.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8378_rdb.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8379_mds.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8379_rdb.dts              |    4 +-
 arch/powerpc/boot/dts/mpc8536ds.dts                |  456 +------
 arch/powerpc/boot/dts/mpc8536ds.dtsi               |  141 ++
 arch/powerpc/boot/dts/mpc8536ds_36b.dts            |  410 +-----
 arch/powerpc/boot/dts/mpc8540ads.dts               |    4 +-
 arch/powerpc/boot/dts/mpc8541cds.dts               |    4 +-
 arch/powerpc/boot/dts/mpc8544ds.dts                |  473 +------
 arch/powerpc/boot/dts/mpc8544ds.dtsi               |  161 +++
 arch/powerpc/boot/dts/mpc8548cds.dts               |  505 ++-----
 arch/powerpc/boot/dts/mpc8555cds.dts               |    4 +-
 arch/powerpc/boot/dts/mpc8568mds.dts               |  482 +------
 arch/powerpc/boot/dts/mpc8569mds.dts               |  414 +-----
 arch/powerpc/boot/dts/mpc8572ds.dts                |  757 +----------
 arch/powerpc/boot/dts/mpc8572ds.dtsi               |  397 +++++
 arch/powerpc/boot/dts/mpc8572ds_36b.dts            |  746 +----------
 arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts     |  487 +------
 arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts     |  245 +---
 arch/powerpc/boot/dts/mpc8610_hpcd.dts             |    4 +-
 arch/powerpc/boot/dts/mpc8641_hpcn.dts             |   73 +-
 arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts         |    4 +-
 arch/powerpc/boot/dts/obs600.dts                   |  314 ++++
 arch/powerpc/boot/dts/p1010rdb.dts                 |  228 +---
 arch/powerpc/boot/dts/p1010rdb.dtsi                |  234 +++
 arch/powerpc/boot/dts/p1010rdb_36b.dts             |   89 ++
 arch/powerpc/boot/dts/p1010si.dtsi                 |  374 -----
 arch/powerpc/boot/dts/p1020rdb.dts                 |  262 +----
 arch/powerpc/boot/dts/p1020rdb.dtsi                |  247 ++++
 arch/powerpc/boot/dts/p1020rdb_36b.dts             |   66 +
 arch/powerpc/boot/dts/p1020rdb_camp_core0.dts      |  154 +--
 arch/powerpc/boot/dts/p1020rdb_camp_core1.dts      |   11 +-
 arch/powerpc/boot/dts/p1020si.dtsi                 |  377 -----
 arch/powerpc/boot/dts/p1021mds.dts                 |  425 +-----
 arch/powerpc/boot/dts/p1022ds.dts                  |  459 +------
 arch/powerpc/boot/dts/p1023rds.dts                 |  383 +-----
 arch/powerpc/boot/dts/p2020ds.dts                  |  353 +-----
 arch/powerpc/boot/dts/p2020ds.dtsi                 |  316 ++++
 arch/powerpc/boot/dts/p2020rdb.dts                 |   71 +-
 arch/powerpc/boot/dts/p2020rdb_camp_core0.dts      |  141 +--
 arch/powerpc/boot/dts/p2020rdb_camp_core1.dts      |  107 +--
 arch/powerpc/boot/dts/p2020si.dtsi                 |  382 -----
 arch/powerpc/boot/dts/p2041rdb.dts                 |   22 +-
 arch/powerpc/boot/dts/p2041si.dtsi                 |  692 ---------
 arch/powerpc/boot/dts/p3041ds.dts                  |   23 +-
 arch/powerpc/boot/dts/p3041si.dtsi                 |  729 ----------
 arch/powerpc/boot/dts/p3060qds.dts                 |   12 +-
 arch/powerpc/boot/dts/p3060si.dtsi                 |  719 ---------
 arch/powerpc/boot/dts/p4080ds.dts                  |   24 +-
 arch/powerpc/boot/dts/p4080si.dtsi                 |  755 ----------
 arch/powerpc/boot/dts/p5020ds.dts                  |   24 +-
 arch/powerpc/boot/dts/p5020si.dtsi                 |  716 ---------
 arch/powerpc/boot/dts/sbc8349.dts                  |    4 +-
 arch/powerpc/boot/dts/sbc8548.dts                  |    4 +-
 arch/powerpc/boot/dts/sbc8641d.dts                 |    4 +-
 arch/powerpc/boot/dts/socrates.dts                 |    4 +-
 arch/powerpc/boot/dts/storcenter.dts               |    4 +-
 arch/powerpc/boot/dts/stxssa8555.dts               |    4 +-
 arch/powerpc/boot/dts/tqm8540.dts                  |    4 +-
 arch/powerpc/boot/dts/tqm8541.dts                  |    4 +-
 arch/powerpc/boot/dts/tqm8548-bigflash.dts         |    4 +-
 arch/powerpc/boot/dts/tqm8548.dts                  |    4 +-
 arch/powerpc/boot/dts/tqm8555.dts                  |    4 +-
 arch/powerpc/boot/dts/xcalibur1501.dts             |    4 +-
 arch/powerpc/boot/dts/xpedite5200.dts              |    4 +-
 arch/powerpc/boot/dts/xpedite5200_xmon.dts         |    4 +-
 arch/powerpc/boot/dts/xpedite5301.dts              |    4 +-
 arch/powerpc/boot/dts/xpedite5330.dts              |    4 +-
 arch/powerpc/boot/dts/xpedite5370.dts              |    4 +-
 arch/powerpc/boot/treeboot-currituck.c             |  119 ++
 arch/powerpc/boot/wrapper                          |   45 +-
 arch/powerpc/configs/40x/klondike_defconfig        |   55 +
 arch/powerpc/configs/40x/obs600_defconfig          |   83 ++
 arch/powerpc/configs/44x/currituck_defconfig       |  110 ++
 arch/powerpc/configs/44x/iss476-smp_defconfig      |    3 +-
 arch/powerpc/configs/chroma_defconfig              |  307 ++++
 arch/powerpc/configs/corenet32_smp_defconfig       |   11 +-
 arch/powerpc/configs/corenet64_smp_defconfig       |    4 +-
 arch/powerpc/configs/mpc85xx_defconfig             |   17 +-
 arch/powerpc/configs/mpc85xx_smp_defconfig         |   18 +-
 arch/powerpc/configs/ppc64_defconfig               |    5 +
 arch/powerpc/configs/ps3_defconfig                 |   39 +-
 arch/powerpc/configs/pseries_defconfig             |    5 +
 arch/powerpc/include/asm/Kbuild                    |    2 +
 arch/powerpc/include/asm/cputable.h                |    5 +-
 arch/powerpc/include/asm/cputime.h                 |    6 +-
 arch/powerpc/include/asm/fsl_ifc.h                 |  834 +++++++++++
 arch/powerpc/include/asm/fsl_lbc.h                 |    7 +-
 arch/powerpc/include/asm/hugetlb.h                 |   38 +-
 arch/powerpc/include/asm/kdump.h                   |    4 +-
 arch/powerpc/include/asm/kexec.h                   |    7 -
 arch/powerpc/include/asm/lv1call.h                 |   10 +-
 arch/powerpc/include/asm/machdep.h                 |    3 +
 arch/powerpc/include/asm/mmu-book3e.h              |   11 +
 arch/powerpc/include/asm/mmu-hash64.h              |    7 +-
 arch/powerpc/include/asm/mpic.h                    |   14 +-
 arch/powerpc/include/asm/opal.h                    |  131 ++-
 arch/powerpc/include/asm/paca.h                    |    1 +
 arch/powerpc/include/asm/page.h                    |   90 ++-
 arch/powerpc/include/asm/page_64.h                 |    2 +
 arch/powerpc/include/asm/pci-bridge.h              |    6 +-
 arch/powerpc/include/asm/pci.h                     |    2 -
 arch/powerpc/include/asm/pgtable.h                 |    3 +
 arch/powerpc/include/asm/processor.h               |    3 +
 arch/powerpc/include/asm/reg.h                     |    1 +
 arch/powerpc/include/asm/reg_booke.h               |    4 +
 arch/powerpc/include/asm/rtas.h                    |   18 +
 arch/powerpc/include/asm/rwsem.h                   |  132 --
 arch/powerpc/include/asm/system.h                  |   11 +-
 arch/powerpc/include/asm/tce.h                     |   10 +-
 arch/powerpc/include/asm/time.h                    |    2 +
 arch/powerpc/include/asm/types.h                   |    5 +-
 arch/powerpc/kernel/Makefile                       |    2 +
 arch/powerpc/kernel/asm-offsets.c                  |    1 +
 arch/powerpc/kernel/cpu_setup_a2.S                 |   10 +-
 arch/powerpc/kernel/cputable.c                     |   27 +
 arch/powerpc/kernel/crash.c                        |  220 ++--
 arch/powerpc/kernel/crash_dump.c                   |    4 +-
 arch/powerpc/kernel/exceptions-64s.S               |    2 +-
 arch/powerpc/kernel/head_44x.S                     |  107 ++
 arch/powerpc/kernel/head_fsl_booke.S               |    2 +-
 arch/powerpc/kernel/idle.c                         |   27 +
 arch/powerpc/kernel/idle_power7.S                  |    4 +
 arch/powerpc/kernel/irq.c                          |   28 +-
 arch/powerpc/kernel/machine_kexec.c                |    2 +-
 arch/powerpc/kernel/pci-common.c                   |   78 +-
 arch/powerpc/kernel/pci_dn.c                       |    3 +
 arch/powerpc/kernel/process.c                      |   22 +-
 arch/powerpc/kernel/prom_init.c                    |   37 +-
 arch/powerpc/kernel/reloc_32.S                     |  208 +++
 arch/powerpc/kernel/rtas_flash.c                   |    6 +
 arch/powerpc/kernel/rtasd.c                        |    7 +
 arch/powerpc/kernel/setup_64.c                     |   10 +
 arch/powerpc/kernel/smp.c                          |    3 +-
 arch/powerpc/kernel/sysfs.c                        |   10 +
 arch/powerpc/kernel/time.c                         |  105 +-
 arch/powerpc/kernel/traps.c                        |  173 ++-
 arch/powerpc/kernel/vmlinux.lds.S                  |    8 +-
 arch/powerpc/kvm/book3s_hv_rmhandlers.S            |    3 +
 arch/powerpc/lib/Makefile                          |    4 +-
 arch/powerpc/lib/copyuser_64.S                     |    6 +
 arch/powerpc/lib/copyuser_power7.S                 |  683 +++++++++
 arch/powerpc/lib/copyuser_power7_vmx.c             |   50 +
 arch/powerpc/mm/44x_mmu.c                          |    6 +-
 arch/powerpc/mm/Makefile                           |    2 +
 arch/powerpc/mm/fault.c                            |   17 +
 arch/powerpc/mm/hugetlbpage-book3e.c               |   21 +-
 arch/powerpc/mm/hugetlbpage.c                      |  116 +-
 arch/powerpc/mm/icswx.c                            |  273 ++++
 arch/powerpc/mm/icswx.h                            |   62 +
 arch/powerpc/mm/icswx_pid.c                        |   87 ++
 arch/powerpc/mm/init_32.c                          |    7 +
 arch/powerpc/mm/mem.c                              |   23 +-
 arch/powerpc/mm/mmap_64.c                          |   14 +-
 arch/powerpc/mm/mmu_context_hash64.c               |  195 +---
 arch/powerpc/mm/numa.c                             |    4 +-
 arch/powerpc/mm/tlb_low_64e.S                      |   36 +-
 arch/powerpc/mm/tlb_nohash.c                       |    2 +-
 arch/powerpc/platforms/40x/Kconfig                 |   21 +
 arch/powerpc/platforms/40x/ppc40x_simple.c         |    4 +-
 arch/powerpc/platforms/44x/Kconfig                 |   14 +
 arch/powerpc/platforms/44x/Makefile                |    1 +
 arch/powerpc/platforms/44x/currituck.c             |  204 +++
 arch/powerpc/platforms/44x/iss4xx.c                |    2 +-
 arch/powerpc/platforms/83xx/asp834x.c              |   35 +-
 arch/powerpc/platforms/83xx/km83xx.c               |   58 +-
 arch/powerpc/platforms/83xx/misc.c                 |   77 +
 arch/powerpc/platforms/83xx/mpc830x_rdb.c          |   40 +-
 arch/powerpc/platforms/83xx/mpc831x_rdb.c          |   43 +-
 arch/powerpc/platforms/83xx/mpc832x_mds.c          |   53 +-
 arch/powerpc/platforms/83xx/mpc832x_rdb.c          |   56 +-
 arch/powerpc/platforms/83xx/mpc834x_itx.c          |   30 +-
 arch/powerpc/platforms/83xx/mpc834x_mds.c          |   42 +-
 arch/powerpc/platforms/83xx/mpc836x_mds.c          |   53 +-
 arch/powerpc/platforms/83xx/mpc836x_rdk.c          |   48 +-
 arch/powerpc/platforms/83xx/mpc837x_mds.c          |   46 +-
 arch/powerpc/platforms/83xx/mpc837x_rdb.c          |   47 +-
 arch/powerpc/platforms/83xx/mpc83xx.h              |   16 +
 arch/powerpc/platforms/83xx/sbc834x.c              |   49 +-
 arch/powerpc/platforms/85xx/Kconfig                |    2 +-
 arch/powerpc/platforms/85xx/Makefile               |    2 +
 arch/powerpc/platforms/85xx/common.c               |   66 +
 arch/powerpc/platforms/85xx/corenet_ds.c           |   28 +-
 arch/powerpc/platforms/85xx/ksi8560.c              |   69 +-
 arch/powerpc/platforms/85xx/mpc8536_ds.c           |   38 +-
 arch/powerpc/platforms/85xx/mpc85xx.h              |   11 +
 arch/powerpc/platforms/85xx/mpc85xx_ads.c          |   74 +-
 arch/powerpc/platforms/85xx/mpc85xx_cds.c          |   42 +-
 arch/powerpc/platforms/85xx/mpc85xx_ds.c           |   50 +-
 arch/powerpc/platforms/85xx/mpc85xx_mds.c          |   73 +-
 arch/powerpc/platforms/85xx/mpc85xx_rdb.c          |   49 +-
 arch/powerpc/platforms/85xx/p1010rdb.c             |   38 +-
 arch/powerpc/platforms/85xx/p1022_ds.c             |   37 +-
 arch/powerpc/platforms/85xx/p1023_rds.c            |   47 +-
 arch/powerpc/platforms/85xx/p3060_qds.c            |    2 +-
 arch/powerpc/platforms/85xx/sbc8548.c              |   43 +-
 arch/powerpc/platforms/85xx/sbc8560.c              |   74 +-
 arch/powerpc/platforms/85xx/smp.c                  |    1 +
 arch/powerpc/platforms/85xx/smp.h                  |   15 +
 arch/powerpc/platforms/85xx/socrates.c             |   33 +-
 arch/powerpc/platforms/85xx/stx_gp3.c              |   73 +-
 arch/powerpc/platforms/85xx/tqm85xx.c              |   73 +-
 arch/powerpc/platforms/85xx/xes_mpc85xx.c          |   48 +-
 arch/powerpc/platforms/86xx/mpc86xx_hpcn.c         |    2 +-
 arch/powerpc/platforms/86xx/pic.c                  |   18 +-
 arch/powerpc/platforms/Kconfig                     |    6 +
 arch/powerpc/platforms/Kconfig.cputype             |   25 +-
 arch/powerpc/platforms/cell/iommu.c                |    2 +
 arch/powerpc/platforms/cell/setup.c                |   25 +-
 arch/powerpc/platforms/chrp/setup.c                |    3 +-
 arch/powerpc/platforms/embedded6xx/holly.c         |   23 +-
 arch/powerpc/platforms/embedded6xx/linkstation.c   |   20 +-
 arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c  |   24 +-
 arch/powerpc/platforms/embedded6xx/storcenter.c    |   26 +-
 arch/powerpc/platforms/maple/pci.c                 |   55 +
 arch/powerpc/platforms/maple/setup.c               |    2 +-
 arch/powerpc/platforms/pasemi/setup.c              |    4 +-
 arch/powerpc/platforms/powermac/pic.c              |   80 +-
 arch/powerpc/platforms/powermac/setup.c            |    8 +-
 arch/powerpc/platforms/powermac/smp.c              |    6 +-
 arch/powerpc/platforms/powernv/Makefile            |    2 +-
 arch/powerpc/platforms/powernv/opal-wrappers.S     |    8 +
 arch/powerpc/platforms/powernv/pci-ioda.c          | 1330 +++++++++++++++++
 arch/powerpc/platforms/powernv/pci-p5ioc2.c        |    1 +
 arch/powerpc/platforms/powernv/pci.c               |  228 +++-
 arch/powerpc/platforms/powernv/pci.h               |  100 ++
 arch/powerpc/platforms/powernv/smp.c               |    2 +-
 arch/powerpc/platforms/ps3/interrupt.c             |  103 +-
 arch/powerpc/platforms/ps3/repository.c            |  137 +-
 arch/powerpc/platforms/ps3/setup.c                 |    4 +-
 arch/powerpc/platforms/ps3/smp.c                   |    2 +-
 arch/powerpc/platforms/ps3/spu.c                   |    2 +-
 arch/powerpc/platforms/pseries/Kconfig             |    9 +
 arch/powerpc/platforms/pseries/Makefile            |    1 +
 arch/powerpc/platforms/pseries/hvCall_inst.c       |    4 +-
 arch/powerpc/platforms/pseries/iommu.c             |   61 +-
 arch/powerpc/platforms/pseries/lpar.c              |    2 +
 arch/powerpc/platforms/pseries/nvram.c             |    7 +
 arch/powerpc/platforms/pseries/processor_idle.c    |  329 +++++
 arch/powerpc/platforms/pseries/pseries.h           |    3 +
 arch/powerpc/platforms/pseries/setup.c             |  109 +--
 arch/powerpc/platforms/pseries/smp.c               |    1 +
 arch/powerpc/platforms/wsp/Kconfig                 |   12 +-
 arch/powerpc/platforms/wsp/Makefile                |    8 +-
 arch/powerpc/platforms/wsp/chroma.c                |   56 +
 arch/powerpc/platforms/wsp/h8.c                    |  134 ++
 arch/powerpc/platforms/wsp/opb_pic.c               |    3 +-
 arch/powerpc/platforms/wsp/psr2.c                  |   56 +-
 arch/powerpc/platforms/wsp/wsp.c                   |  115 ++
 arch/powerpc/platforms/wsp/wsp.h                   |   16 +-
 arch/powerpc/relocs_check.pl                       |   14 +-
 arch/powerpc/sysdev/Makefile                       |    3 +-
 arch/powerpc/sysdev/ehv_pic.c                      |    1 +
 arch/powerpc/sysdev/fsl_ifc.c                      |  310 ++++
 arch/powerpc/sysdev/fsl_lbc.c                      |   37 +
 arch/powerpc/sysdev/fsl_msi.c                      |   99 ++-
 arch/powerpc/sysdev/fsl_msi.h                      |   10 +-
 arch/powerpc/sysdev/fsl_pci.c                      |   84 ++
 arch/powerpc/sysdev/fsl_rio.c                      | 1519 ++++----------------
 arch/powerpc/sysdev/fsl_rio.h                      |  135 ++
 arch/powerpc/sysdev/fsl_rmu.c                      | 1104 ++++++++++++++
 arch/powerpc/sysdev/mpic.c                         |  201 ++-
 arch/powerpc/sysdev/ppc4xx_pci.c                   |   85 +-
 arch/powerpc/sysdev/ppc4xx_pci.h                   |    7 +
 arch/powerpc/sysdev/qe_lib/qe.c                    |    2 +-
 arch/powerpc/sysdev/xics/icp-hv.c                  |   47 +-
 arch/powerpc/sysdev/xics/xics-common.c             |    2 +-
 arch/powerpc/xmon/xmon.c                           |   16 +-
 arch/sparc/kernel/sys_sparc_64.c                   |    6 +-
 drivers/edac/mpc85xx_edac.c                        |    2 +-
 drivers/net/ethernet/toshiba/ps3_gelic_net.c       |    4 +-
 drivers/tty/serial/pmac_zilog.c                    |  423 ++----
 drivers/tty/serial/pmac_zilog.h                    |   19 +-
 drivers/tty/serial/ucc_uart.c                      |    3 +
 drivers/video/offb.c                               |   71 +-
 include/linux/cpuidle.h                            |    2 -
 tools/perf/arch/powerpc/util/dwarf-regs.c          |    3 +
 393 files changed, 21769 insertions(+), 16279 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/powerpc/fsl/srio-rmu.txt
 create mode 100644 Documentation/devicetree/bindings/powerpc/fsl/srio.txt
 create mode 100644 arch/powerpc/boot/dts/currituck.dts
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8536si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8544si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8544si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8548si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8548si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8568si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8568si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8569si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8569si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8572si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/mpc8572si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1010si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1010si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1020si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1020si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1021si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1021si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1022si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1022si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1023si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p1023si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p2020si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p2020si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p3060si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p3060si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-dma-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-dma-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-duart-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-esdhc-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-espi-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec1-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec1-2.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec1-3.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec1-timer-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec2-grp2-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec2-grp2-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-etsec2-grp2-2.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-gpio-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-i2c-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-i2c-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-mpic-timer-B.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-rmu-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-sata2-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-sata2-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-sec2.1-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-sec3.0-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-sec3.1-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-sec3.3-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-sec4.4-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-usb2-dr-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/pq3-usb2-dr-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-dma-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-dma-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-duart-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-duart-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-esdhc-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-espi-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-gpio-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-i2c-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-i2c-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-mpic.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-rmu-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-sata2-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-sata2-1.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-sec4.0-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-sec4.1-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-sec4.2-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-usb2-dr-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/fsl/qoriq-usb2-mph-0.dtsi
 create mode 100644 arch/powerpc/boot/dts/klondike.dts
 create mode 100644 arch/powerpc/boot/dts/mpc8536ds.dtsi
 create mode 100644 arch/powerpc/boot/dts/mpc8544ds.dtsi
 create mode 100644 arch/powerpc/boot/dts/mpc8572ds.dtsi
 create mode 100644 arch/powerpc/boot/dts/obs600.dts
 create mode 100644 arch/powerpc/boot/dts/p1010rdb.dtsi
 create mode 100644 arch/powerpc/boot/dts/p1010rdb_36b.dts
 delete mode 100644 arch/powerpc/boot/dts/p1010si.dtsi
 create mode 100644 arch/powerpc/boot/dts/p1020rdb.dtsi
 create mode 100644 arch/powerpc/boot/dts/p1020rdb_36b.dts
 delete mode 100644 arch/powerpc/boot/dts/p1020si.dtsi
 create mode 100644 arch/powerpc/boot/dts/p2020ds.dtsi
 delete mode 100644 arch/powerpc/boot/dts/p2020si.dtsi
 delete mode 100644 arch/powerpc/boot/dts/p2041si.dtsi
 delete mode 100644 arch/powerpc/boot/dts/p3041si.dtsi
 delete mode 100644 arch/powerpc/boot/dts/p3060si.dtsi
 delete mode 100644 arch/powerpc/boot/dts/p4080si.dtsi
 delete mode 100644 arch/powerpc/boot/dts/p5020si.dtsi
 create mode 100644 arch/powerpc/boot/treeboot-currituck.c
 create mode 100644 arch/powerpc/configs/40x/klondike_defconfig
 create mode 100644 arch/powerpc/configs/40x/obs600_defconfig
 create mode 100644 arch/powerpc/configs/44x/currituck_defconfig
 create mode 100644 arch/powerpc/configs/chroma_defconfig
 create mode 100644 arch/powerpc/include/asm/fsl_ifc.h
 delete mode 100644 arch/powerpc/include/asm/rwsem.h
 create mode 100644 arch/powerpc/kernel/reloc_32.S
 create mode 100644 arch/powerpc/lib/copyuser_power7.S
 create mode 100644 arch/powerpc/lib/copyuser_power7_vmx.c
 create mode 100644 arch/powerpc/mm/icswx.c
 create mode 100644 arch/powerpc/mm/icswx.h
 create mode 100644 arch/powerpc/mm/icswx_pid.c
 create mode 100644 arch/powerpc/platforms/44x/currituck.c
 create mode 100644 arch/powerpc/platforms/85xx/common.c
 create mode 100644 arch/powerpc/platforms/85xx/mpc85xx.h
 create mode 100644 arch/powerpc/platforms/85xx/smp.h
 create mode 100644 arch/powerpc/platforms/powernv/pci-ioda.c
 create mode 100644 arch/powerpc/platforms/pseries/processor_idle.c
 create mode 100644 arch/powerpc/platforms/wsp/chroma.c
 create mode 100644 arch/powerpc/platforms/wsp/h8.c
 create mode 100644 arch/powerpc/platforms/wsp/wsp.c
 create mode 100644 arch/powerpc/sysdev/fsl_ifc.c
 create mode 100644 arch/powerpc/sysdev/fsl_rio.h
 create mode 100644 arch/powerpc/sysdev/fsl_rmu.c

^ permalink raw reply

* Re: [PATCH] fsl/mpic: Document and use the "big-endian" device-tree flag
From: Kumar Gala @ 2012-01-05 18:35 UTC (permalink / raw)
  To: Kyle Moffett
  Cc: linux-doc, Lucas De Marchi, devicetree-discuss, Stuart Yoder,
	Rob Herring, linux-kernel, Randy Dunlap, Paul Mackerras,
	Josh Boyer, linuxppc-dev
In-Reply-To: <1324571123-11577-1-git-send-email-Kyle.D.Moffett@boeing.com>


On Dec 22, 2011, at 10:25 AM, Kyle Moffett wrote:

> The MPIC code checks for a "big-endian" property and sets the flag
> MPIC_BIG_ENDIAN if one is present.  Unfortunately, the PowerQUICC-III
> compatible device-tree does not specify it, so all of the board ports
> need to manually set that flag when calling mpic_alloc().
> 
> Document the flag and add it to the pq3 device tree.  Existing code
> will still need to pass the MPIC_BIG_ENDIAN flag because their dtb may
> not have this property, but new platforms shouldn't need to do so.
> 
> Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
> ---
> .../devicetree/bindings/powerpc/fsl/mpic.txt       |    9 ++++++++-
> arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi            |    1 +
> 2 files changed, 9 insertions(+), 1 deletions(-)

need to update arch/powerpc/boot/dts/fsl/qoriq-mpic.dtsi

- k

^ permalink raw reply

* Re: Cannot wake-up from standby with MPC8313
From: Scott Wood @ 2012-01-05 18:22 UTC (permalink / raw)
  To: Norbert van Bolhuis; +Cc: linuxppc-dev@ozlabs.org
In-Reply-To: <4F05C8C2.9070401@aimvalley.nl>

On 01/05/2012 09:58 AM, Norbert van Bolhuis wrote:
> thanks for your response.
> 
> not setting MSR_POW gives same result.

OK, so you're not getting an interrupt regardless of low-power state.

Check whether the interrupt is getting masked during standby preparation.

Does the interrupt handler run when you're not trying to enter standby?

> if I set kernel.powersave-nap=1 it works fine,

What is "it"?  Do you mean that powersave-nap doesn't break things, or
that standby works when you specify that?

> so apparently NAP/DOZE mode does work (if CPU is idle). This saves almost no
> power though. Standby mode saves about 300-500 mW.
> 
> The problem could well be our board though, today I learned it does
> work by connecting an (inactive) JTAG debugger.
> Also, on another board it always works.

You mean connecting a JTAG but not doing anything with it made
wake-from-standby work?

There was a bug like that on early revisions of the mpc8313erdb board --
though in that case if you had a bad board the system would hang
whenever you access any PMC register.  I'm not sure what the mechanism
of failure was; IIRC the fix was adding a resistor.

-Scott

^ permalink raw reply

* Re: Cannot wake-up from standby with MPC8313
From: Norbert van Bolhuis @ 2012-01-05 15:58 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev@ozlabs.org
In-Reply-To: <4F04BFEA.1050009@freescale.com>

On 01/04/12 22:08, Scott Wood wrote:

...

> It's been a while since I've touched this, but IIRC the PMC events are
> mainly important for deep sleep, and for normal sleep (standby) you can
> wake from any interrupt other than core interrupts like timebase.  I'm
> not sure to what extent setting PMCCR[SLPEN] affects this -- I don't see
> where the documentation says what "system low power state" means.  I
> would be surprised if GPIO were affected, though, since it's supported
> as a wakeup source even in deep sleep.  I think I was able to wake from
> standby on a UART interrupt even with SLPEN set.
>
> Are you sure the GPIO block is asserting an interrupt, and that it
> hasn't been masked during the preparation for standby?
>
> What happens if you modify mpc6xx_enter_standby() to not actually set
> MSR_POW?
>


thanks for your response.

not setting MSR_POW gives same result.

if I set kernel.powersave-nap=1 it works fine, so apparently
NAP/DOZE mode does work (if CPU is idle). This saves almost no
power though. Standby mode saves about 300-500 mW.

The problem could well be our board though, today I learned it does
work by connecting an (inactive) JTAG debugger.
Also, on another board it always works.

And indeed wake-up occurs through GPIO interrupt or UART interrupt
(key press on console).


---
NvBolhuis

^ permalink raw reply

* [PATCH v2 3/3] KVM: PPC: epapr: install ev_idle hcall for e500 guest
From: Liu Yu @ 2012-01-05  9:06 UTC (permalink / raw)
  To: agraf, kvm-ppc, kvm; +Cc: scottwood, linuxppc-dev, Liu Yu, timur
In-Reply-To: <1325754412-29963-1-git-send-email-yu.liu@freescale.com>

If the guest hypervisor node contains "has-idle" property.

Signed-off-by: Liu Yu <yu.liu@freescale.com>
---
v2:
1. move the idle code into assembly.
2. move the part that check "has-idle" into epapr code.

 arch/powerpc/include/asm/epapr_hcalls.h |    1 +
 arch/powerpc/include/asm/machdep.h      |    5 +++++
 arch/powerpc/kernel/epapr_para.c        |    4 ++++
 arch/powerpc/kernel/idle_e500.S         |   17 +++++++++++++++++
 arch/powerpc/kernel/kvm.c               |   24 ++++++++++++++++++++++++
 5 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/include/asm/epapr_hcalls.h b/arch/powerpc/include/asm/epapr_hcalls.h
index c4b86e4..566805e 100644
--- a/arch/powerpc/include/asm/epapr_hcalls.h
+++ b/arch/powerpc/include/asm/epapr_hcalls.h
@@ -150,6 +150,7 @@
 
 extern u32 *epapr_hcall_insts;
 extern int epapr_hcall_insts_len;
+extern bool epapr_hcall_has_idle;
 
 static inline void epapr_get_hcall_insts(u32 **instp, int *lenp)
 {
diff --git a/arch/powerpc/include/asm/machdep.h b/arch/powerpc/include/asm/machdep.h
index 47cacdd..7e56abf 100644
--- a/arch/powerpc/include/asm/machdep.h
+++ b/arch/powerpc/include/asm/machdep.h
@@ -255,6 +255,11 @@ extern void power4_idle(void);
 extern void power7_idle(void);
 extern void ppc6xx_idle(void);
 extern void book3e_idle(void);
+#ifdef CONFIG_KVM_GUEST
+extern void e500_ev_idle(unsigned long *, unsigned long *, unsigned long,
+                         unsigned long (*)(unsigned long *, unsigned long *,
+                                          unsigned long));
+#endif
 
 /*
  * ppc_md contains a copy of the machine description structure for the
diff --git a/arch/powerpc/kernel/epapr_para.c b/arch/powerpc/kernel/epapr_para.c
index 714dcb3..1f37ddf 100644
--- a/arch/powerpc/kernel/epapr_para.c
+++ b/arch/powerpc/kernel/epapr_para.c
@@ -22,6 +22,7 @@
 
 u32 *epapr_hcall_insts;
 int epapr_hcall_insts_len;
+bool epapr_hcall_has_idle;
 
 static int __init epapr_para_init(void)
 {
@@ -39,6 +40,9 @@ static int __init epapr_para_init(void)
 		epapr_hcall_insts_len = len;
 	}
 
+	if (of_get_property(hyper_node, "has-idle", NULL))
+		epapr_hcall_has_idle = true;
+
 	return 0;
 }
 
diff --git a/arch/powerpc/kernel/idle_e500.S b/arch/powerpc/kernel/idle_e500.S
index 3e2b95c..6ea95f0 100644
--- a/arch/powerpc/kernel/idle_e500.S
+++ b/arch/powerpc/kernel/idle_e500.S
@@ -85,6 +85,23 @@ END_FTR_SECTION_IFSET(CPU_FTR_L2CSR|CPU_FTR_CAN_NAP)
 2:	b	2b
 #endif /* !E500MC */
 
+#ifdef CONFIG_KVM_GUEST
+/*
+ * r3 contains the pointer to in[8]
+ * r4 contains the pointer to out[8]
+ * r5 contains the hcall vendor and nr
+ * r6 contains the handler which send hcall
+ */
+_GLOBAL(e500_ev_idle)
+	rlwinm	r7,r1,0,0,31-THREAD_SHIFT	/* current thread_info */
+	lwz	r8,TI_LOCAL_FLAGS(r7)	/* set napping bit */
+	ori	r8,r8,_TLF_NAPPING	/* so when we take an exception */
+	stw	r8,TI_LOCAL_FLAGS(r7)	/* it will return to our caller */
+	wrteei	1
+	mtctr	r6
+	bctr
+#endif /* KVM_GUEST */
+
 /*
  * Return from NAP/DOZE mode, restore some CPU specific registers,
  * r2 containing physical address of current.
diff --git a/arch/powerpc/kernel/kvm.c b/arch/powerpc/kernel/kvm.c
index 82a9137..8952e12 100644
--- a/arch/powerpc/kernel/kvm.c
+++ b/arch/powerpc/kernel/kvm.c
@@ -29,6 +29,7 @@
 #include <asm/cacheflush.h>
 #include <asm/disassemble.h>
 #include <asm/epapr_hcalls.h>
+#include <asm/machdep.h>
 
 #define KVM_MAGIC_PAGE		(-4096L)
 #define magic_var(x) KVM_MAGIC_PAGE + offsetof(struct kvm_vcpu_arch_shared, x)
@@ -578,6 +579,25 @@ static __init void kvm_free_tmp(void)
 	}
 }
 
+static void kvm_hcall_idle(void)
+{
+#ifdef CONFIG_KVM_E500
+	ulong in[8];
+	ulong out[8];
+
+	e500_ev_idle(in, out, HC_VENDOR_EPAPR | HC_EV_IDLE, kvm_hypercall);
+#endif
+}
+
+static bool kvm_para_has_idle(void)
+{
+#ifdef CONFIG_BOOKE
+	return epapr_hcall_has_idle;
+#else
+	return false;
+#endif
+}
+
 static int __init kvm_guest_init(void)
 {
 	if (!kvm_para_available())
@@ -594,6 +614,10 @@ static int __init kvm_guest_init(void)
 	powersave_nap = 1;
 #endif
 
+	/* Install hcall based power_save for guest kernel */
+	if (kvm_para_has_idle())
+		ppc_md.power_save = kvm_hcall_idle;
+
 free_tmp:
 	kvm_free_tmp();
 
-- 
1.6.4

^ permalink raw reply related

* [PATCH 1/3] KVM: PPC: epapr: Factor out the epapr init
From: Liu Yu @ 2012-01-05  9:06 UTC (permalink / raw)
  To: agraf, kvm-ppc, kvm; +Cc: scottwood, linuxppc-dev, Liu Yu, timur

from the kvm guest paravirt init code.

Signed-off-by: Liu Yu <yu.liu@freescale.com>
---
 arch/powerpc/include/asm/epapr_hcalls.h |    8 +++++
 arch/powerpc/kernel/Makefile            |    1 +
 arch/powerpc/kernel/epapr_para.c        |   45 +++++++++++++++++++++++++++++++
 arch/powerpc/kernel/kvm.c               |    9 +++++-
 4 files changed, 62 insertions(+), 1 deletions(-)
 create mode 100644 arch/powerpc/kernel/epapr_para.c

diff --git a/arch/powerpc/include/asm/epapr_hcalls.h b/arch/powerpc/include/asm/epapr_hcalls.h
index f3b0c2c..c4b86e4 100644
--- a/arch/powerpc/include/asm/epapr_hcalls.h
+++ b/arch/powerpc/include/asm/epapr_hcalls.h
@@ -148,6 +148,14 @@
 #define EV_HCALL_CLOBBERS2 EV_HCALL_CLOBBERS3, "r5"
 #define EV_HCALL_CLOBBERS1 EV_HCALL_CLOBBERS2, "r4"
 
+extern u32 *epapr_hcall_insts;
+extern int epapr_hcall_insts_len;
+
+static inline void epapr_get_hcall_insts(u32 **instp, int *lenp)
+{
+	*instp = epapr_hcall_insts;
+	*lenp = epapr_hcall_insts_len;
+}
 
 /*
  * We use "uintptr_t" to define a register because it's guaranteed to be a
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index ce4f7f1..1052bbc 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -134,6 +134,7 @@ ifneq ($(CONFIG_XMON)$(CONFIG_KEXEC),)
 obj-y				+= ppc_save_regs.o
 endif
 
+obj-$(CONFIG_BOOKE)		+= epapr_para.o
 obj-$(CONFIG_KVM_GUEST)		+= kvm.o kvm_emul.o
 
 # Disable GCOV in odd or sensitive code
diff --git a/arch/powerpc/kernel/epapr_para.c b/arch/powerpc/kernel/epapr_para.c
new file mode 100644
index 0000000..714dcb3
--- /dev/null
+++ b/arch/powerpc/kernel/epapr_para.c
@@ -0,0 +1,45 @@
+/*
+ * ePAPR para-virtualization support.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Copyright (C) 2012 Freescale Semiconductor, Inc.
+ */
+
+#include <linux/of.h>
+#include <asm/epapr_hcalls.h>
+
+u32 *epapr_hcall_insts;
+int epapr_hcall_insts_len;
+
+static int __init epapr_para_init(void)
+{
+	struct device_node *hyper_node;
+	u32 *insts;
+	int len;
+
+	hyper_node = of_find_node_by_path("/hypervisor");
+	if (!hyper_node)
+		return -ENODEV;
+
+	insts = (u32*)of_get_property(hyper_node, "hcall-instructions", &len);
+	if (!(len % 4) && (len >= (4 * 4))) {
+		epapr_hcall_insts = insts;
+		epapr_hcall_insts_len = len;
+	}
+
+	return 0;
+}
+
+early_initcall(epapr_para_init);
diff --git a/arch/powerpc/kernel/kvm.c b/arch/powerpc/kernel/kvm.c
index b06bdae..82a9137 100644
--- a/arch/powerpc/kernel/kvm.c
+++ b/arch/powerpc/kernel/kvm.c
@@ -28,6 +28,7 @@
 #include <asm/sections.h>
 #include <asm/cacheflush.h>
 #include <asm/disassemble.h>
+#include <asm/epapr_hcalls.h>
 
 #define KVM_MAGIC_PAGE		(-4096L)
 #define magic_var(x) KVM_MAGIC_PAGE + offsetof(struct kvm_vcpu_arch_shared, x)
@@ -535,9 +536,10 @@ EXPORT_SYMBOL_GPL(kvm_hypercall);
 static int kvm_para_setup(void)
 {
 	extern u32 kvm_hypercall_start;
-	struct device_node *hyper_node;
 	u32 *insts;
 	int len, i;
+#ifndef CONFIG_BOOKE
+	struct device_node *hyper_node;
 
 	hyper_node = of_find_node_by_path("/hypervisor");
 	if (!hyper_node)
@@ -548,6 +550,11 @@ static int kvm_para_setup(void)
 		return -1;
 	if (len > (4 * 4))
 		return -1;
+#else
+	epapr_get_hcall_insts(&insts, &len);
+	if (insts == NULL)
+		return -1;
+#endif	/* !BOOKE */
 
 	for (i = 0; i < (len / 4); i++)
 		kvm_patch_ins(&(&kvm_hypercall_start)[i], insts[i]);
-- 
1.6.4

^ permalink raw reply related

* RE: Problem in getting shared memory access on P1022RDK
From: Arshad, Farrukh @ 2012-01-05  5:46 UTC (permalink / raw)
  To: tiejun.chen; +Cc: Scott Wood, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <4F050653.6010601@windriver.com>

Pj4gV2FzIHRoZSBrZXJuZWwgb3B0aW9uLCBDT05GSUdfU01QLCBlbmFibGVkIGZvciBib3RoIHR3
byBrZXJuZWxzPw0KWWVzIENPTkZJR19TTVAgaXMgZW5hYmxlZCBmb3IgYm90aCBrZXJuZWxzLiAN
Cg0KPj4gTWF5YmUgeW91IHNob3VsZCBtYWtlIHN1cmUgaWYga2VybmVsIGhhdmUgYSBhcHByb3By
aWF0ZSBtZW1vcnkgYXR0cmlidXRlIGJ5IGR1bXBpbmcgVExCIGVudHJ5Lg0KVGhhbmtzIGZvciB0
aGUgcG9pbnRlci4gSSB3aWxsIHRyeSB0aGlzIG9uZS4NCg0KUmVnYXJkcywNCkZhcnJ1a2ggQXJz
aGFkDQo=

^ permalink raw reply

* [PATCH v2] DTS: fix cmd12 bug and add the chip compatible for eSDHC
From: r66093 @ 2012-01-05  1:40 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Jerry Huang

From: Jerry Huang <Chang-Ming.Huang@freescale.com>

Accordint to latest kernel, the auto-cmd12 property should be
"sdhci,auto-cmd12", and according to the SDHC binding and the workaround for
the special chip, add the chip compatible for eSDHC: "fsl,p1022-esdhc",
"fsl,mpc8536-esdhc", "fsl,p2020-esdhc" and "fsl,p1010-esdhc".

Signed-off-by: Jerry Huang <Chang-Ming.Huang@freescale.com>
---
changes for v2:
	- reverse the special compatible entries

 arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi |    4 ++++
 arch/powerpc/boot/dts/fsl/p1010si-post.dtsi   |    3 ++-
 arch/powerpc/boot/dts/fsl/p1022si-post.dtsi   |    3 ++-
 arch/powerpc/boot/dts/fsl/p2020si-post.dtsi   |    4 ++++
 4 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi b/arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi
index 89af626..44e0ed9 100644
--- a/arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi
@@ -236,6 +236,10 @@
 	};
 
 /include/ "pq3-esdhc-0.dtsi"
+	sdhc@2e000 {
+		compatible = "fsl,mpc8536-esdhc", "fsl,esdhc";
+	};
+
 /include/ "pq3-sec3.0-0.dtsi"
 /include/ "pq3-mpic.dtsi"
 /include/ "pq3-mpic-timer-B.dtsi"
diff --git a/arch/powerpc/boot/dts/fsl/p1010si-post.dtsi b/arch/powerpc/boot/dts/fsl/p1010si-post.dtsi
index bd9e163..8ebe79c 100644
--- a/arch/powerpc/boot/dts/fsl/p1010si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p1010si-post.dtsi
@@ -158,7 +158,8 @@
 /include/ "pq3-usb2-dr-0.dtsi"
 /include/ "pq3-esdhc-0.dtsi"
 	sdhc@2e000 {
-		fsl,sdhci-auto-cmd12;
+		compatible = "fsl,p1010-esdhc", "fsl,esdhc";
+		sdhci,auto-cmd12;
 	};
 
 /include/ "pq3-sec4.4-0.dtsi"
diff --git a/arch/powerpc/boot/dts/fsl/p1022si-post.dtsi b/arch/powerpc/boot/dts/fsl/p1022si-post.dtsi
index 16239b1..9999e56 100644
--- a/arch/powerpc/boot/dts/fsl/p1022si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p1022si-post.dtsi
@@ -203,7 +203,8 @@
 
 /include/ "pq3-esdhc-0.dtsi"
 	sdhc@2e000 {
-		fsl,sdhci-auto-cmd12;
+		compatible = "fsl,p1022-esdhc", "fsl,esdhc";
+		sdhci,auto-cmd12;
 	};
 
 /include/ "pq3-sec3.3-0.dtsi"
diff --git a/arch/powerpc/boot/dts/fsl/p2020si-post.dtsi b/arch/powerpc/boot/dts/fsl/p2020si-post.dtsi
index c041050..8ec1b13 100644
--- a/arch/powerpc/boot/dts/fsl/p2020si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/p2020si-post.dtsi
@@ -182,6 +182,10 @@
 /include/ "pq3-etsec1-1.dtsi"
 /include/ "pq3-etsec1-2.dtsi"
 /include/ "pq3-esdhc-0.dtsi"
+	sdhc@2e000 {
+		compatible = "fsl,p2020-esdhc", "fsl,esdhc";
+	};
+
 /include/ "pq3-sec3.1-0.dtsi"
 /include/ "pq3-mpic.dtsi"
 /include/ "pq3-mpic-timer-B.dtsi"
-- 
1.7.5.4

^ permalink raw reply related

* Re: Problem in getting shared memory access on P1022RDK
From: tiejun.chen @ 2012-01-05  2:09 UTC (permalink / raw)
  To: Arshad, Farrukh; +Cc: Scott Wood, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <93CD5F41FDBC6042A6B449764F3B35CC050CCB2E@EU-MBX-03.mgc.mentorg.com>

Arshad, Farrukh wrote:
> How can I verify if the memory mapped is coherent on both cores. My memory partitioning is given below
> 
> Core		Base Address		Size
> Core 0		0x0000,0000		0x1000,0000	--> CONFIG_PHYSICAL_START = bootm_low = Base Address
> Core 1		0x1000,0000		0x0C00,0000	--> CONFIG_PHYSICAL_START = bootm_low = Base Address
> Shared Mem	0x1C00,0000		0x0400,0000

Was the kernel option, CONFIG_SMP, enabled for both two kernels?

CONFIG_SMP would affect the memory attribute for cache coherency. Maybe you
should make sure if kernel have a appropriate memory attribute by dumping TLB entry.

Tiejun

> 
> Regards,
> Farrukh Arshad
> 
> -----Original Message-----
> From: Scott Wood [mailto:scottwood@freescale.com] 
> Sent: Tuesday, January 03, 2012 10:10 PM
> To: Arshad, Farrukh
> Cc: linuxppc-dev@lists.ozlabs.org
> Subject: Re: Problem in getting shared memory access on P1022RDK
> 
> On 01/03/2012 03:42 AM, Arshad, Farrukh wrote:
>> Adding more to it,
>>
>>  
>>
>> When I write from Core 1 on the shared memory region it is visible at 
>> Core 0 and it can read what I have written from Core 1 but when I 
>> write from Core 0 on this shared memory it is not visible on Core 1.
> 
> Is the memory mapped coherent on both cores?
> 
> -Scott

^ permalink raw reply

* Re: linux-next: manual merge of the driver-core tree with the powerpc tree
From: Greg KH @ 2012-01-04 23:08 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Deepthi Dharwar, Trinabh Gupta, Kay Sievers, linux-kernel,
	linux-next, Paul Mackerras, linuxppc-dev, Arun R Bharadwaj
In-Reply-To: <20111228165102.fbb6433fd94d11240134327e@canb.auug.org.au>

On Wed, Dec 28, 2011 at 04:51:02PM +1100, Stephen Rothwell wrote:
> Hi Greg,
> 
> Today's linux-next merge of the driver-core tree got a conflict in
> arch/powerpc/kernel/sysfs.c between commit 595fe91447b0 ("powerpc: Export
> PIR data through sysfs") from the powerpc tree and commits 8a25a2fd126c
> ("cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular
> subsystem") and 707827f3387d ("powerpc/cpuidle: cpuidle driver for
> pSeries") from the driver-core tree.
> 
> I fixed it up (see below) and can carry the fix as necessary.

Looks good, thanks.

greg k-h

^ permalink raw reply

* Re: [PATCH] fsl/mpic: Document and use the "big-endian" device-tree flag
From: Benjamin Herrenschmidt @ 2012-01-04 23:08 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: linux-doc, Lucas De Marchi, linux-kernel, devicetree-discuss,
	Rob Herring, Stuart Yoder, Paul Mackerras, Kyle Moffett,
	Josh Boyer, linuxppc-dev
In-Reply-To: <4F04DF50.4070201@xenotime.net>

On Wed, 2012-01-04 at 15:22 -0800, Randy Dunlap wrote:
> On 12/22/2011 08:25 AM, Kyle Moffett wrote:
> > The MPIC code checks for a "big-endian" property and sets the flag
> > MPIC_BIG_ENDIAN if one is present.  Unfortunately, the PowerQUICC-III
> > compatible device-tree does not specify it, so all of the board ports
> > need to manually set that flag when calling mpic_alloc().
> > 
> > Document the flag and add it to the pq3 device tree.  Existing code
> > will still need to pass the MPIC_BIG_ENDIAN flag because their dtb may
> > not have this property, but new platforms shouldn't need to do so.
> > 
> > Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
> 
> Grant, are you merging this patch?
> I don't think I should merge the patch to arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi.

Best is to leave the whole lot to me. It's not like mpic is used
anywhere else ...

Cheers,
Ben.

> > --
> >  .../devicetree/bindings/powerpc/fsl/mpic.txt       |    9 ++++++++-
> >  arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi            |    1 +
> >  2 files changed, 9 insertions(+), 1 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt b/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt
> > index 2cf38bd..ebafba2 100644
> > --- a/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt
> > +++ b/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt
> > @@ -56,7 +56,14 @@ PROPERTIES
> >            to the client.  The presence of this property also mandates
> >            that any initialization related to interrupt sources shall
> >            be limited to sources explicitly referenced in the device tree.
> > -       
> > +
> > +  - big-endian
> > +      Usage: optional
> > +      Value type: <empty>
> > +          If present the MPIC will be assumed to be big-endian.  Some
> > +          device-trees omit this property on MPIC nodes even when the MPIC is
> > +          in fact big-endian, so certain boards override this property.
> > +
> >  INTERRUPT SPECIFIER DEFINITION
> >  
> >    Interrupt specifiers consists of 4 cells encoded as
> > diff --git a/arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi b/arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi
> > index 5c80460..47f2b67 100644
> > --- a/arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi
> > +++ b/arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi
> > @@ -39,6 +39,7 @@ mpic: pic@40000 {
> >  	reg = <0x40000 0x40000>;
> >  	compatible = "fsl,mpic";
> >  	device_type = "open-pic";
> > +	big-endian;
> >  };
> >  
> >  timer@41100 {
> 
> 

^ permalink raw reply

* Re: [PATCH] fsl/mpic: Document and use the "big-endian" device-tree flag
From: Randy Dunlap @ 2012-01-04 23:22 UTC (permalink / raw)
  To: Kyle Moffett
  Cc: linux-doc, Lucas De Marchi, devicetree-discuss, Rob Herring,
	Stuart Yoder, Paul Mackerras, Josh Boyer, linuxppc-dev,
	linux-kernel
In-Reply-To: <1324571123-11577-1-git-send-email-Kyle.D.Moffett@boeing.com>

On 12/22/2011 08:25 AM, Kyle Moffett wrote:
> The MPIC code checks for a "big-endian" property and sets the flag
> MPIC_BIG_ENDIAN if one is present.  Unfortunately, the PowerQUICC-III
> compatible device-tree does not specify it, so all of the board ports
> need to manually set that flag when calling mpic_alloc().
> 
> Document the flag and add it to the pq3 device tree.  Existing code
> will still need to pass the MPIC_BIG_ENDIAN flag because their dtb may
> not have this property, but new platforms shouldn't need to do so.
> 
> Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>

Grant, are you merging this patch?
I don't think I should merge the patch to arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi.

> ---
>  .../devicetree/bindings/powerpc/fsl/mpic.txt       |    9 ++++++++-
>  arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi            |    1 +
>  2 files changed, 9 insertions(+), 1 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt b/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt
> index 2cf38bd..ebafba2 100644
> --- a/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt
> +++ b/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt
> @@ -56,7 +56,14 @@ PROPERTIES
>            to the client.  The presence of this property also mandates
>            that any initialization related to interrupt sources shall
>            be limited to sources explicitly referenced in the device tree.
> -       
> +
> +  - big-endian
> +      Usage: optional
> +      Value type: <empty>
> +          If present the MPIC will be assumed to be big-endian.  Some
> +          device-trees omit this property on MPIC nodes even when the MPIC is
> +          in fact big-endian, so certain boards override this property.
> +
>  INTERRUPT SPECIFIER DEFINITION
>  
>    Interrupt specifiers consists of 4 cells encoded as
> diff --git a/arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi b/arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi
> index 5c80460..47f2b67 100644
> --- a/arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi
> @@ -39,6 +39,7 @@ mpic: pic@40000 {
>  	reg = <0x40000 0x40000>;
>  	compatible = "fsl,mpic";
>  	device_type = "open-pic";
> +	big-endian;
>  };
>  
>  timer@41100 {


-- 
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

^ permalink raw reply

* [git pull] Please pull powerpc.git next branch
From: Kumar Gala @ 2012-01-04 22:06 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev

The following changes since commit e4f387d8db3ba3c2dae4d8bdfe7bb5f4fe1bcb0d:

  powerpc: Fix unpaired probe_hcall_entry and probe_hcall_exit (2012-01-03 12:09:27 +1100)

are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc.git next

Andy Fleming (1):
      powerpc: Add TBI PHY node to first MDIO bus

Julia Lawall (1):
      arch/powerpc/sysdev/fsl_rmu.c: introduce missing kfree

Kumar Gala (3):
      powerpc/fsl-pci: Allow 64-bit PCIe devices to DMA to any memory address
      powerpc/fsl: Update defconfigs to enable some standard FSL HW features
      powerpc/fsl: update compatiable on fsl 16550 uart nodes

Michael Neuling (1):
      powerpc: fix compile error with 85xx/p1023_rds.c

Paul Gortmaker (1):
      sbc834x: put full compat string in board match check

Prabhakar Kushwaha (1):
      powerpc/fsl: Add support for Integrated Flash Controller

Timur Tabi (3):
      powerpc/85xx: re-enable ePAPR byte channel driver in corenet32_smp_defconfig
      powerpc/85xx: fix PCI and localbus properties in p1022ds.dts
      powerpc/fsl: add MSI support for the Freescale hypervisor

Tony Breeds (1):
      powerpc: fix compile error with 85xx/p1010rdb.c

 arch/powerpc/Kconfig                         |    4 +
 arch/powerpc/boot/dts/asp834x-redboot.dts    |    4 +-
 arch/powerpc/boot/dts/fsl/pq3-duart-0.dtsi   |    4 +-
 arch/powerpc/boot/dts/fsl/qoriq-duart-0.dtsi |    4 +-
 arch/powerpc/boot/dts/fsl/qoriq-duart-1.dtsi |    4 +-
 arch/powerpc/boot/dts/gef_ppc9a.dts          |    4 +-
 arch/powerpc/boot/dts/gef_sbc310.dts         |    4 +-
 arch/powerpc/boot/dts/gef_sbc610.dts         |    4 +-
 arch/powerpc/boot/dts/kmeter1.dts            |    2 +-
 arch/powerpc/boot/dts/kuroboxHD.dts          |    4 +-
 arch/powerpc/boot/dts/kuroboxHG.dts          |    4 +-
 arch/powerpc/boot/dts/mpc8308_p1m.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8308rdb.dts         |    4 +-
 arch/powerpc/boot/dts/mpc8313erdb.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8315erdb.dts        |    4 +-
 arch/powerpc/boot/dts/mpc832x_mds.dts        |    4 +-
 arch/powerpc/boot/dts/mpc832x_rdb.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8349emitx.dts       |    4 +-
 arch/powerpc/boot/dts/mpc8349emitxgp.dts     |    4 +-
 arch/powerpc/boot/dts/mpc834x_mds.dts        |    4 +-
 arch/powerpc/boot/dts/mpc836x_mds.dts        |    4 +-
 arch/powerpc/boot/dts/mpc836x_rdk.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8377_mds.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8377_rdb.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8377_wlan.dts       |    4 +-
 arch/powerpc/boot/dts/mpc8378_mds.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8378_rdb.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8379_mds.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8379_rdb.dts        |    4 +-
 arch/powerpc/boot/dts/mpc8540ads.dts         |    4 +-
 arch/powerpc/boot/dts/mpc8541cds.dts         |    4 +-
 arch/powerpc/boot/dts/mpc8555cds.dts         |    4 +-
 arch/powerpc/boot/dts/mpc8610_hpcd.dts       |    4 +-
 arch/powerpc/boot/dts/mpc8641_hpcn.dts       |    4 +-
 arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts   |    4 +-
 arch/powerpc/boot/dts/p1010rdb.dtsi          |    5 +
 arch/powerpc/boot/dts/p1020rdb.dtsi          |    5 +
 arch/powerpc/boot/dts/p1021mds.dts           |    4 +
 arch/powerpc/boot/dts/p1022ds.dts            |   12 +-
 arch/powerpc/boot/dts/p2020rdb.dts           |    8 +-
 arch/powerpc/boot/dts/sbc8349.dts            |    4 +-
 arch/powerpc/boot/dts/sbc8548.dts            |    4 +-
 arch/powerpc/boot/dts/sbc8641d.dts           |    4 +-
 arch/powerpc/boot/dts/socrates.dts           |    4 +-
 arch/powerpc/boot/dts/storcenter.dts         |    4 +-
 arch/powerpc/boot/dts/stxssa8555.dts         |    4 +-
 arch/powerpc/boot/dts/tqm8540.dts            |    4 +-
 arch/powerpc/boot/dts/tqm8541.dts            |    4 +-
 arch/powerpc/boot/dts/tqm8548-bigflash.dts   |    4 +-
 arch/powerpc/boot/dts/tqm8548.dts            |    4 +-
 arch/powerpc/boot/dts/tqm8555.dts            |    4 +-
 arch/powerpc/boot/dts/xcalibur1501.dts       |    4 +-
 arch/powerpc/boot/dts/xpedite5200.dts        |    4 +-
 arch/powerpc/boot/dts/xpedite5200_xmon.dts   |    4 +-
 arch/powerpc/boot/dts/xpedite5301.dts        |    4 +-
 arch/powerpc/boot/dts/xpedite5330.dts        |    4 +-
 arch/powerpc/boot/dts/xpedite5370.dts        |    4 +-
 arch/powerpc/configs/corenet32_smp_defconfig |   10 +-
 arch/powerpc/configs/corenet64_smp_defconfig |    3 +-
 arch/powerpc/configs/mpc85xx_defconfig       |   16 +-
 arch/powerpc/configs/mpc85xx_smp_defconfig   |   17 +-
 arch/powerpc/include/asm/fsl_ifc.h           |  834 ++++++++++++++++++++++++++
 arch/powerpc/platforms/83xx/sbc834x.c        |    4 +-
 arch/powerpc/platforms/85xx/p1010rdb.c       |    2 -
 arch/powerpc/platforms/85xx/p1023_rds.c      |    1 -
 arch/powerpc/sysdev/Makefile                 |    1 +
 arch/powerpc/sysdev/fsl_ifc.c                |  310 ++++++++++
 arch/powerpc/sysdev/fsl_msi.c                |   68 ++-
 arch/powerpc/sysdev/fsl_msi.h                |    7 +-
 arch/powerpc/sysdev/fsl_pci.c                |   84 +++
 arch/powerpc/sysdev/fsl_rmu.c                |    1 +
 71 files changed, 1448 insertions(+), 150 deletions(-)
 create mode 100644 arch/powerpc/include/asm/fsl_ifc.h
 create mode 100644 arch/powerpc/sysdev/fsl_ifc.c

^ permalink raw reply

* Re: Cannot wake-up from standby with MPC8313
From: Scott Wood @ 2012-01-04 21:08 UTC (permalink / raw)
  To: Norbert van Bolhuis; +Cc: linuxppc-dev@ozlabs.org
In-Reply-To: <4F047BF8.7090400@aimvalley.nl>

On 01/04/2012 10:19 AM, Norbert van Bolhuis wrote:
> 
> after entering:
> 
> echo standby > /sys/power/state
> 
> I'm unable to wake up the MPC8313 (on our custom designed
> MPC8313 board).
> 
> I need it to wake up through GPIO IRQ.
> I cause multiple GPIO interrupts (all properly handled by an isr),
> but the MPC8313 does not wake up.
> 
> How should one wake up via GPGIO IRQ ?
> 
> I'm using v2.6.29 and I wonder whether this is related to
> our custom 8313 board and/or v2.6.29 and/or missing kernel
> patches or maybe this never worked ?
> 
> Also, I do not understand line 220 of arch/powerpc/platforms/83xx/suspend.c
> 
> 219         } else {
> 220                 out_be32(&pmc_regs->mask, PMCER_PMCI);
> 221
> 222                 mpc6xx_enter_standby();
> 
> How can wake up ever work if TSEC/GPIO/TIMER/etc.. wake up events
> are disabled ?
> 
> changing this into "out_be32(&pmc_regs->mask, PMCER_PMCI|PMCER_GPIO);"
> gives same result.

It's been a while since I've touched this, but IIRC the PMC events are
mainly important for deep sleep, and for normal sleep (standby) you can
wake from any interrupt other than core interrupts like timebase.  I'm
not sure to what extent setting PMCCR[SLPEN] affects this -- I don't see
where the documentation says what "system low power state" means.  I
would be surprised if GPIO were affected, though, since it's supported
as a wakeup source even in deep sleep.  I think I was able to wake from
standby on a UART interrupt even with SLPEN set.

Are you sure the GPIO block is asserting an interrupt, and that it
hasn't been masked during the preparation for standby?

What happens if you modify mpc6xx_enter_standby() to not actually set
MSR_POW?

-Scott

^ permalink raw reply

* Re: [PATCH v3] powerpc/85xx: add support to JOG feature using cpufreq interface
From: Scott Wood @ 2012-01-04 20:41 UTC (permalink / raw)
  To: Zhao Chenhui-B35336
  Cc: Wood Scott-B07421, Huang Changming-R66093, Liu Dave-R63238,
	linuxppc-dev@lists.ozlabs.org, Li Yang-R58472
In-Reply-To: <BD213C8CF658C24091429A9C376C468D0C6268@039-SN1MPN1-005.039d.mgd.msft.net>

On 01/04/2012 03:34 AM, Zhao Chenhui-B35336 wrote:
>> On 12/27/2011 05:25 AM, Zhao Chenhui wrote:
>>>  * The driver doesn't support MPC8536 Rev 1.0 due to a JOG erratum.
>>>    Subsequent revisions of MPC8536 have corrected the erratum.
>>
>> Where do you check for this?
>=20
> Nowhere. I just notify this patch don't support MPC8536 Rev 1.0.

Is mpc8536 rev 1.0 supported by the kernel in general?  If so, and this
code doesn't work with it, it needs to check for that revision and not
register the cpufreq handler if found.

>>> +#define POWMGTCSR_LOSSLESS_MASK	0x00400000
>>> +#define POWMGTCSR_JOG_MASK	0x00200000
>>
>> Are these really masks, or just values to use?
>=20
> They are masks.

They're bits.  Sometimes you use it additively, to set this bit along
with others.  Sometimes you use it subtractively, to test whether the
bit has cleared -- you could argue that it's used as a mask in that
context, but I don't think adding _MASK to the name really adds anything
here (likewise for things like PMJCR_CORE0_SPD_MASK).

>>> +static int p1022_set_pll(unsigned int cpu, unsigned int pll)
>>> +{
>>> +	int index, hw_cpu =3D get_hard_smp_processor_id(cpu);
>>> +	int shift;
>>> +	u32 corefreq, val, mask =3D 0;
>>> +	unsigned int cur_pll =3D get_pll(hw_cpu);
>>> +	unsigned long flags;
>>> +	int ret =3D 0;
>>> +
>>> +	if (pll =3D=3D cur_pll)
>>> +		return 0;
>>> +
>>> +	shift =3D hw_cpu * CORE_RATIO_BITS + CORE0_RATIO_SHIFT;
>>> +	val =3D (pll & CORE_RATIO_MASK) << shift;
>>> +
>>> +	corefreq =3D sysfreq * pll / 2;
>>> +	/*
>>> +	 * Set the COREx_SPD bit if the requested core frequency
>>> +	 * is larger than the threshold frequency.
>>> +	 */
>>> +	if (corefreq > FREQ_533MHz)
>>> +		val |=3D PMJCR_CORE0_SPD_MASK << hw_cpu;
>>
>> P1022 manual says the threshold is 500 MHz (but doesn't say how to set
>> the bit if the frequency is exactly 500 MHz).  Where did 533340000 com=
e
>> from?
>=20
> Please refer to Chapter 25 "25.4.1.11 Power Management Jog Control Regi=
ster (PMJCR)".

You seem to have a different version of the p1022 manual than I (and the
FSL docs website) do.  In my copy 25.4.1 is "Performance Monitor
Interrupt" and it has no subsections.

PMJCR is described in 26.4.1.11 and for CORE0_SPD says:

> 0 Core0 frequency at 400=E2=80=93500 MHz
> 1 Core0 frequency at 500=E2=80=931067 MHz

>>> +	local_irq_save(flags);
>>> +	mb();
>>> +	/* Wait for the other core to wake. */
>>> +	while (in_jog_process !=3D 1)
>>> +		mb();
>>
>> Timeout?  And more unnecessary mb()s.
>>
>> Might be nice to support more than two cores, even if this code isn't
>> currently expected to be used on such hardware (it's just a generic
>> "hold other cpus" loop; might as well make it reusable).  You could do
>> this by using an atomic count for other cores to check in and out of t=
he
>> spin loop.
>=20
> This is just for P1022, a dual-core chip. A separate patch will
> support multi-core chips, such as P4080, etc.

My point was that this specific function isn't really doing anything
p1022-specific, it's just a way to get other CPUs in the system to halt
until signalled to continue.  I thought it would be nice to just write
it generically from the start, but it's up to you.

>>> +	out_be32(guts + POWMGTCSR, POWMGTCSR_JOG_MASK |
>> P1022_POWMGTCSR_MSK);
>>> +
>>> +	if (!spin_event_timeout(((in_be32(guts + POWMGTCSR) &
>>> +	    POWMGTCSR_JOG_MASK) =3D=3D 0), 10000, 10)) {
>>> +		pr_err("%s: Fail to switch the core frequency.\n", __func__);
>>> +		ret =3D -EFAULT;
>>> +	}
>>> +
>>> +	clrbits32(guts + POWMGTCSR, P1022_POWMGTCSR_MSK);
>>> +	in_jog_process =3D 0;
>>> +	mb();
>>
>> This mb() (or better, a readback of POWMGTCSR) should be before you
>> clear in_jog_process.  For clarity of its purpose, the clearing of
>> POWMGTCSR should go in the failure branch of spin_event_timeout().
>=20
> According to the manual, P1022_POWMGTCSR_MSK should be reset
> by software regardless of failure or success.

OK, I missed that you're clearing more bits than you checked in
spin_event_timeout().  Could you rename P1022_POWMGTCSR_MSK to something
more meaningful (especially since you use _MASK all over the place to
mean something else)?

-Scott

^ permalink raw reply


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