[PATCH 0/3] pseries kexec fixes

2011-07-25 Thread Anton Blanchard
Here are a few pseries kexec fixes after testing on a recent version
version.

Anton

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 1/3] powerpc/pseries: Fix kexec on recent firmware versions

2011-07-25 Thread Anton Blanchard
Recent versions of firmware will fail to unmap the virtual processor
area if we have a dispatch trace log registered. This causes kexec
to fail.

If a trace log is registered this patch unregisters it before the
SLB shadow and virtual processor areas, fixing the problem.

The address argument is ignored by firmware on unregister so we
may as well remove it.

Signed-off-by: Anton Blanchard an...@samba.org
Cc: sta...@kernel.org
---

Index: linux-powerpc/arch/powerpc/platforms/pseries/kexec.c
===
--- linux-powerpc.orig/arch/powerpc/platforms/pseries/kexec.c   2011-07-25 
21:06:49.510413446 +1000
+++ linux-powerpc/arch/powerpc/platforms/pseries/kexec.c2011-07-25 
21:06:52.340464687 +1000
@@ -26,6 +26,17 @@ static void pseries_kexec_cpu_down(int c
/* Don't risk a hypervisor call if we're crashing */
if (firmware_has_feature(FW_FEATURE_SPLPAR)  !crash_shutdown) {
unsigned long addr;
+   int ret;
+
+   if (get_lppaca()-dtl_enable_mask) {
+   ret = unregister_dtl(hard_smp_processor_id());
+   if (ret) {
+   pr_err(WARNING: DTL deregistration for cpu 
+  %d (hw %d) failed with %d\n,
+  smp_processor_id(),
+  hard_smp_processor_id(), ret);
+   }
+   }
 
addr = __pa(get_slb_shadow());
if (unregister_slb_shadow(hard_smp_processor_id(), addr))
Index: linux-powerpc/arch/powerpc/platforms/pseries/dtl.c
===
--- linux-powerpc.orig/arch/powerpc/platforms/pseries/dtl.c 2011-07-25 
21:06:49.520413628 +1000
+++ linux-powerpc/arch/powerpc/platforms/pseries/dtl.c  2011-07-25 
21:06:52.340464687 +1000
@@ -181,7 +181,7 @@ static void dtl_stop(struct dtl *dtl)
 
lppaca_of(dtl-cpu).dtl_enable_mask = 0x0;
 
-   unregister_dtl(hwcpu, __pa(dtl-buf));
+   unregister_dtl(hwcpu);
 }
 
 static u64 dtl_current_index(struct dtl *dtl)
Index: linux-powerpc/arch/powerpc/platforms/pseries/plpar_wrappers.h
===
--- linux-powerpc.orig/arch/powerpc/platforms/pseries/plpar_wrappers.h  
2011-07-25 21:06:49.500413264 +1000
+++ linux-powerpc/arch/powerpc/platforms/pseries/plpar_wrappers.h   
2011-07-25 21:06:52.340464687 +1000
@@ -73,9 +73,9 @@ static inline long register_slb_shadow(u
return vpa_call(0x3, cpu, vpa);
 }
 
-static inline long unregister_dtl(unsigned long cpu, unsigned long vpa)
+static inline long unregister_dtl(unsigned long cpu)
 {
-   return vpa_call(0x6, cpu, vpa);
+   return vpa_call(0x6, cpu, 0);
 }
 
 static inline long register_dtl(unsigned long cpu, unsigned long vpa)


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 2/3] powerpc/pseries: Cleanup VPA registration and deregistration errors

2011-07-25 Thread Anton Blanchard
Make the VPA, SLB shadow and DTL registration and deregistration
functions print consistent messages on error. I needed the firmware
error code while chasing a kexec bug but we weren't printing it.

Signed-off-by: Anton Blanchard an...@samba.org
---

Index: linux-powerpc/arch/powerpc/platforms/pseries/kexec.c
===
--- linux-powerpc.orig/arch/powerpc/platforms/pseries/kexec.c   2011-07-25 
21:06:52.340464687 +1000
+++ linux-powerpc/arch/powerpc/platforms/pseries/kexec.c2011-07-25 
21:06:56.260535670 +1000
@@ -39,17 +39,20 @@ static void pseries_kexec_cpu_down(int c
}
 
addr = __pa(get_slb_shadow());
-   if (unregister_slb_shadow(hard_smp_processor_id(), addr))
-   printk(SLB shadow buffer deregistration of 
-  cpu %u (hw_cpu_id %d) failed\n,
+   ret = unregister_slb_shadow(hard_smp_processor_id(), addr);
+   if (ret) {
+   pr_err(WARNING: SLB shadow buffer deregistration 
+  for cpu %d (hw %d) failed with %d\n,
   smp_processor_id(),
-  hard_smp_processor_id());
+  hard_smp_processor_id(), ret);
+   }
 
addr = __pa(get_lppaca());
-   if (unregister_vpa(hard_smp_processor_id(), addr)) {
-   printk(VPA deregistration of cpu %u (hw_cpu_id %d) 
-   failed\n, smp_processor_id(),
-   hard_smp_processor_id());
+   ret = unregister_vpa(hard_smp_processor_id(), addr);
+   if (ret) {
+   pr_err(WARNING: VPA deregistration for cpu %d 
+  (hw %d) failed with %d\n, smp_processor_id(),
+  hard_smp_processor_id(), ret);
}
}
 }
Index: linux-powerpc/arch/powerpc/platforms/pseries/lpar.c
===
--- linux-powerpc.orig/arch/powerpc/platforms/pseries/lpar.c2011-07-25 
21:06:49.440412178 +1000
+++ linux-powerpc/arch/powerpc/platforms/pseries/lpar.c 2011-07-25 
21:06:56.260535670 +1000
@@ -67,9 +67,8 @@ void vpa_init(int cpu)
ret = register_vpa(hwcpu, addr);
 
if (ret) {
-   printk(KERN_ERR WARNING: vpa_init: VPA registration for 
-   cpu %d (hw %d) of area %lx returns %ld\n,
-   cpu, hwcpu, addr, ret);
+   pr_err(WARNING: VPA registration for cpu %d (hw %d) of area 
+  %lx failed with %ld\n, cpu, hwcpu, addr, ret);
return;
}
/*
@@ -80,10 +79,9 @@ void vpa_init(int cpu)
if (firmware_has_feature(FW_FEATURE_SPLPAR)) {
ret = register_slb_shadow(hwcpu, addr);
if (ret)
-   printk(KERN_ERR
-  WARNING: vpa_init: SLB shadow buffer 
-  registration for cpu %d (hw %d) of area %lx 
-  returns %ld\n, cpu, hwcpu, addr, ret);
+   pr_err(WARNING: SLB shadow buffer registration for 
+  cpu %d (hw %d) of area %lx failed with %ld\n,
+  cpu, hwcpu, addr, ret);
}
 
/*
@@ -100,8 +98,9 @@ void vpa_init(int cpu)
dtl-enqueue_to_dispatch_time = DISPATCH_LOG_BYTES;
ret = register_dtl(hwcpu, __pa(dtl));
if (ret)
-   pr_warn(DTL registration failed for cpu %d (%ld)\n,
-   cpu, ret);
+   pr_err(WARNING: DTL registration of cpu %d (hw %d) 
+  failed with %ld\n, smp_processor_id(),
+  hwcpu, ret);
lppaca_of(cpu).dtl_enable_mask = 2;
}
 }
Index: linux-powerpc/arch/powerpc/platforms/pseries/setup.c
===
--- linux-powerpc.orig/arch/powerpc/platforms/pseries/setup.c   2011-07-25 
21:06:49.450412359 +1000
+++ linux-powerpc/arch/powerpc/platforms/pseries/setup.c2011-07-25 
21:06:56.260535670 +1000
@@ -324,8 +324,9 @@ static int alloc_dispatch_logs(void)
dtl-enqueue_to_dispatch_time = DISPATCH_LOG_BYTES;
ret = register_dtl(hard_smp_processor_id(), __pa(dtl));
if (ret)
-   pr_warn(DTL registration failed for boot cpu %d (%d)\n,
-   smp_processor_id(), ret);
+   pr_err(WARNING: DTL registration of cpu %d (hw %d) failed 
+  with %d\n, smp_processor_id(),
+  hard_smp_processor_id(), ret);
get_paca()-lppaca_ptr-dtl_enable_mask = 2;
 
return 0;



[PATCH 3/3] powerpc/pseries: Simplify vpa deregistration functions

2011-07-25 Thread Anton Blanchard
The VPA, SLB shadow and DTL degistration functions do not need an
address, so simplify things and remove it.

Also cleanup pseries_kexec_cpu_down a bit by storing the cpu IDs
in local variables.

Signed-off-by: Anton Blanchard an...@samba.org
---

Index: linux-powerpc/arch/powerpc/platforms/pseries/hotplug-cpu.c
===
--- linux-powerpc.orig/arch/powerpc/platforms/pseries/hotplug-cpu.c 
2011-07-25 21:06:49.390411273 +1000
+++ linux-powerpc/arch/powerpc/platforms/pseries/hotplug-cpu.c  2011-07-25 
21:06:57.380555950 +1000
@@ -135,7 +135,7 @@ static void pseries_mach_cpu_die(void)
get_lppaca()-idle = 0;
 
if (get_preferred_offline_state(cpu) == CPU_STATE_ONLINE) {
-   unregister_slb_shadow(hwcpu, __pa(get_slb_shadow()));
+   unregister_slb_shadow(hwcpu);
 
/*
 * Call to start_secondary_resume() will not return.
@@ -150,7 +150,7 @@ static void pseries_mach_cpu_die(void)
WARN_ON(get_preferred_offline_state(cpu) != CPU_STATE_OFFLINE);
 
set_cpu_current_state(cpu, CPU_STATE_OFFLINE);
-   unregister_slb_shadow(hwcpu, __pa(get_slb_shadow()));
+   unregister_slb_shadow(hwcpu);
rtas_stop_self();
 
/* Should never get here... */
Index: linux-powerpc/arch/powerpc/platforms/pseries/kexec.c
===
--- linux-powerpc.orig/arch/powerpc/platforms/pseries/kexec.c   2011-07-25 
21:06:56.260535670 +1000
+++ linux-powerpc/arch/powerpc/platforms/pseries/kexec.c2011-07-25 
21:09:20.033141478 +1000
@@ -25,34 +25,30 @@ static void pseries_kexec_cpu_down(int c
 {
/* Don't risk a hypervisor call if we're crashing */
if (firmware_has_feature(FW_FEATURE_SPLPAR)  !crash_shutdown) {
-   unsigned long addr;
int ret;
+   int cpu = smp_processor_id();
+   int hwcpu = hard_smp_processor_id();
 
if (get_lppaca()-dtl_enable_mask) {
-   ret = unregister_dtl(hard_smp_processor_id());
+   ret = unregister_dtl(hwcpu);
if (ret) {
pr_err(WARNING: DTL deregistration for cpu 
   %d (hw %d) failed with %d\n,
-  smp_processor_id(),
-  hard_smp_processor_id(), ret);
+  cpu, hwcpu, ret);
}
}
 
-   addr = __pa(get_slb_shadow());
-   ret = unregister_slb_shadow(hard_smp_processor_id(), addr);
+   ret = unregister_slb_shadow(hwcpu);
if (ret) {
pr_err(WARNING: SLB shadow buffer deregistration 
   for cpu %d (hw %d) failed with %d\n,
-  smp_processor_id(),
-  hard_smp_processor_id(), ret);
+  cpu, hwcpu, ret);
}
 
-   addr = __pa(get_lppaca());
-   ret = unregister_vpa(hard_smp_processor_id(), addr);
+   ret = unregister_vpa(hwcpu);
if (ret) {
pr_err(WARNING: VPA deregistration for cpu %d 
-  (hw %d) failed with %d\n, smp_processor_id(),
-  hard_smp_processor_id(), ret);
+  (hw %d) failed with %d\n, cpu, hwcpu, ret);
}
}
 }
Index: linux-powerpc/arch/powerpc/platforms/pseries/plpar_wrappers.h
===
--- linux-powerpc.orig/arch/powerpc/platforms/pseries/plpar_wrappers.h  
2011-07-25 21:06:52.340464687 +1000
+++ linux-powerpc/arch/powerpc/platforms/pseries/plpar_wrappers.h   
2011-07-25 21:06:57.380555950 +1000
@@ -53,9 +53,9 @@ static inline long vpa_call(unsigned lon
return plpar_hcall_norets(H_REGISTER_VPA, flags, cpu, vpa);
 }
 
-static inline long unregister_vpa(unsigned long cpu, unsigned long vpa)
+static inline long unregister_vpa(unsigned long cpu)
 {
-   return vpa_call(0x5, cpu, vpa);
+   return vpa_call(0x5, cpu, 0);
 }
 
 static inline long register_vpa(unsigned long cpu, unsigned long vpa)
@@ -63,9 +63,9 @@ static inline long register_vpa(unsigned
return vpa_call(0x1, cpu, vpa);
 }
 
-static inline long unregister_slb_shadow(unsigned long cpu, unsigned long vpa)
+static inline long unregister_slb_shadow(unsigned long cpu)
 {
-   return vpa_call(0x7, cpu, vpa);
+   return vpa_call(0x7, cpu, 0);
 }
 
 static inline long register_slb_shadow(unsigned long cpu, unsigned long vpa)


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 0/5] ppc64 scheduler fixes

2011-07-25 Thread Anton Blanchard
Here are a set of ppc64 scheduler fixes that help with some
multi node performance issues.

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 1/5] powerpc/numa: Enable SD_WAKE_AFFINE in node definition

2011-07-25 Thread Anton Blanchard
When chasing a performance issue on ppc64, I noticed tasks
communicating via a pipe would often end up on different nodes.

It turns out SD_WAKE_AFFINE is not set in our node defition. Commit
9fcd18c9e63e (sched: re-tune balancing) enabled SD_WAKE_AFFINE
in the node definition for x86 and we need a similar change for
ppc64.

I used lmbench lat_ctx and perf bench pipe to verify this fix. Each
benchmark was run 10 times and the average taken.


lmbench lat_ctx:

before:  66565 ops/sec
after:  204700 ops/sec

3.1x faster


perf bench pipe:

before: 5.6570 usecs
after:  1.3470 usecs

4.2x faster


Signed-off-by: Anton Blanchard an...@samba.org
---

Cc-ing arch maintainers who might need to look at their SD_NODE_INIT
definitions

Index: linux-2.6-work/arch/powerpc/include/asm/topology.h
===
--- linux-2.6-work.orig/arch/powerpc/include/asm/topology.h 2011-07-18 
16:24:55.639949552 +1000
+++ linux-2.6-work/arch/powerpc/include/asm/topology.h  2011-07-18 
16:25:02.630074557 +1000
@@ -73,7 +73,7 @@ static inline int pcibus_to_node(struct
| 1*SD_BALANCE_EXEC \
| 1*SD_BALANCE_FORK \
| 0*SD_BALANCE_WAKE \
-   | 0*SD_WAKE_AFFINE  \
+   | 1*SD_WAKE_AFFINE  \
| 0*SD_PREFER_LOCAL \
| 0*SD_SHARE_CPUPOWER   \
| 0*SD_POWERSAVINGS_BALANCE \


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 2/5] sched: Allow SD_NODES_PER_DOMAIN to be overridden

2011-07-25 Thread Anton Blanchard
We want to override the default value of SD_NODES_PER_DOMAIN on ppc64,
so move it into linux/topology.h.

Signed-off-by: Anton Blanchard an...@samba.org 
---

Index: linux-2.6-work/include/linux/topology.h
===
--- linux-2.6-work.orig/include/linux/topology.h2011-07-25 
11:20:02.588717796 +1000
+++ linux-2.6-work/include/linux/topology.h 2011-07-25 11:26:50.616468376 
+1000
@@ -201,6 +201,10 @@ int arch_update_cpu_topology(void);
.balance_interval   = 64,   \
 }
 
+#ifndef SD_NODES_PER_DOMAIN
+#define SD_NODES_PER_DOMAIN 16
+#endif
+
 #ifdef CONFIG_SCHED_BOOK
 #ifndef SD_BOOK_INIT
 #error Please define an appropriate SD_BOOK_INIT in include/asm/topology.h!!!
Index: linux-2.6-work/kernel/sched.c
===
--- linux-2.6-work.orig/kernel/sched.c  2011-07-25 11:20:09.538850173 +1000
+++ linux-2.6-work/kernel/sched.c   2011-07-25 11:26:50.626468565 +1000
@@ -6938,8 +6938,6 @@ static int __init isolated_cpu_setup(cha
 
 __setup(isolcpus=, isolated_cpu_setup);
 
-#define SD_NODES_PER_DOMAIN 16
-
 #ifdef CONFIG_NUMA
 
 /**


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 3/5] powerpc/numa: Increase SD_NODES_PER_DOMAIN to 32.

2011-07-25 Thread Anton Blanchard
The largest POWER7 boxes have 32 nodes. SD_NODES_PER_DOMAIN groups
nodes into chunks of 16 and adds a global balancing domain
(SD_ALLNODES) above it.

If we bump SD_NODES_PER_DOMAIN to 32, then we avoid this extra
level of balancing on our largest boxes.

Signed-off-by: Anton Blanchard an...@samba.org 
---

Index: linux-2.6-work/arch/powerpc/include/asm/topology.h
===
--- linux-2.6-work.orig/arch/powerpc/include/asm/topology.h 2011-07-25 
11:43:24.954093179 +1000
+++ linux-2.6-work/arch/powerpc/include/asm/topology.h  2011-07-25 
11:43:31.274205122 +1000
@@ -28,6 +28,12 @@ struct device_node;
  */
 #define RECLAIM_DISTANCE 10
 
+/*
+ * Avoid creating an extra level of balancing (SD_ALLNODES) on the largest
+ * POWER7 boxes which have a maximum of 32 nodes.
+ */
+#define SD_NODES_PER_DOMAIN 32
+
 #include asm/mmzone.h
 
 static inline int cpu_to_node(int cpu)


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 4/5] powerpc/numa: Disable NEWIDLE balancing at node level

2011-07-25 Thread Anton Blanchard
On big POWER7 boxes we see large amounts of CPU time in system
processes like workqueue and watchdog kernel threads.

We currently rebalance the entire machine each time a task goes
idle and this is very expensive on large machines. Disable newidle
balancing at the node level and rely on the scheduler tick to
rebalance across nodes.

Signed-off-by: Anton Blanchard an...@samba.org
---

Index: linux-2.6-work/arch/powerpc/include/asm/topology.h
===
--- linux-2.6-work.orig/arch/powerpc/include/asm/topology.h 2011-07-25 
12:14:25.448671947 +1000
+++ linux-2.6-work/arch/powerpc/include/asm/topology.h  2011-07-25 
12:14:26.568692651 +1000
@@ -75,7 +75,7 @@ static inline int pcibus_to_node(struct
.forkexec_idx   = 0,\
\
.flags  = 1*SD_LOAD_BALANCE \
-   | 1*SD_BALANCE_NEWIDLE  \
+   | 0*SD_BALANCE_NEWIDLE  \
| 1*SD_BALANCE_EXEC \
| 1*SD_BALANCE_FORK \
| 0*SD_BALANCE_WAKE \


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH 5/5] powerpc/numa: Remove duplicate RECLAIM_DISTANCE definition

2011-07-25 Thread Anton Blanchard
We have two identical definitions of RECLAIM_DISTANCE, looks like
the patch got applied twice. Remove one.

Signed-off-by: Anton Blanchard an...@samba.org 
---

Index: linux-2.6-work/arch/powerpc/include/asm/topology.h
===
--- linux-2.6-work.orig/arch/powerpc/include/asm/topology.h 2011-07-25 
12:15:33.059921510 +1000
+++ linux-2.6-work/arch/powerpc/include/asm/topology.h  2011-07-25 
12:15:46.750174446 +1000
@@ -19,16 +19,6 @@ struct device_node;
 #define RECLAIM_DISTANCE 10
 
 /*
- * Before going off node we want the VM to try and reclaim from the local
- * node. It does this if the remote distance is larger than RECLAIM_DISTANCE.
- * With the default REMOTE_DISTANCE of 20 and the default RECLAIM_DISTANCE of
- * 20, we never reclaim and go off node straight away.
- *
- * To fix this we choose a smaller value of RECLAIM_DISTANCE.
- */
-#define RECLAIM_DISTANCE 10
-
-/*
  * Avoid creating an extra level of balancing (SD_ALLNODES) on the largest
  * POWER7 boxes which have a maximum of 32 nodes.
  */


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [PATCH 0/5] ppc64 scheduler fixes

2011-07-25 Thread Peter Zijlstra
On Mon, 2011-07-25 at 12:33 +1000, Anton Blanchard wrote:
 Here are a set of ppc64 scheduler fixes that help with some
 multi node performance issues.

They look fine to me. I'll probably ping you when I'll rip out all that
SD_NODES_PER_DOMAIN crap for good, but until then I'm fine with you
fiddling it for ppc64.

Acked-by: Peter Zijlstra a.p.zijls...@chello.nl
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: Linux 3.0 boot failure on the Powerbook G4

2011-07-25 Thread Michael Büsch
On Mon, 25 Jul 2011 09:23:38 +1000
Benjamin Herrenschmidt b...@kernel.crashing.org wrote:
 Hrm.. the faulting address is outside of the zImage. Odd.
 
 Can you try loading a plain vmlinux instead ? (feel free to strip it).

The plain unstripped vmlinux boots fine:

mb@maggie:~$ uname -a
Linux maggie 3.0.0 #3 PREEMPT Sun Jul 24 11:51:30 CEST 2011 ppc GNU/Linux

Is there something going wrong in the uncompress trampoline?

-- 
Greetings, Michael.
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


mtu issue with gianfar driver

2011-07-25 Thread Kumar Reddy Suresh-B22303
Hi All,

A problem was observed in gianfar driver when the interface MTU was modified to 
a small value.

FYI Kernel Version : 2.6.32 on PPC.


Like if we change the interface mtu to say 100, ping traffic with size greater 
than 450 is failing.
It was observed that packets ( ping requests) going out of that interface are 
getting properly fragmented, but the return packets ( ping replies ) are 
getting dropped by the interface.

To fix this issue the function gfar_change_mtu() in gianfar.c was modified as 
below:

rx_buffer_size is restored to DEFAULT_RX_BUFFER_SIZE as indicated in RED in the 
code snippet below

- CODE SNIPPET BEGIN --
tempsize =
(frame_size  ~(INCREMENTAL_BUFFER_SIZE - 1)) +
INCREMENTAL_BUFFER_SIZE;

if (tempsize  DEFAULT_RX_BUFFER_SIZE )
   tempsize = DEFAULT_RX_BUFFER_SIZE;

/* Only stop and start the controller if it isn't already
* stopped, and we changed something */
if ((oldsize != tempsize)  (dev-flags  IFF_UP))
stop_gfar(dev);

priv-rx_buffer_size = tempsize;

dev-mtu = new_mtu;
- CODE SNIPPET END--

If this fix OK? What is the impact of this change on overall behavior?

Best Regards,
- Suresh



___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[GIT PULL] Please pull powerpc.git next branch

2011-07-25 Thread Kumar Gala
[ a few minor fixes ]

The following changes since commit 50d2a4223bb875d1e3a7ee97d40dd03bf31ce1b7:

  powerpc: Copy back TIF flags on return from softirq stack (2011-07-22 
13:38:58 +1000)

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

Fabio Baltieri (1):
  powerpc/85xx: fix mpic configuration in CAMP mode

Timur Tabi (1):
  drivers/virt: add missing linux/interrupt.h to fsl_hypervisor.c

 arch/powerpc/platforms/85xx/mpc85xx_ds.c  |3 ++-
 arch/powerpc/platforms/85xx/mpc85xx_rdb.c |5 +++--
 drivers/virt/fsl_hypervisor.c |1 +
 3 files changed, 6 insertions(+), 3 deletions(-)
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: perf PPC: kernel panic with callchains and context switch events

2011-07-25 Thread David Ahern
Hi Ben:

On 07/24/2011 07:55 PM, Benjamin Herrenschmidt wrote:
 On Sun, 2011-07-24 at 11:18 -0600, David Ahern wrote:
 On 07/20/2011 03:57 PM, David Ahern wrote:
 I am hoping someone familiar with PPC can help understand a panic that
 is generated when capturing callchains with context switch events.

 Call trace is below. The short of it is that walking the callchain
 generates a page fault. To handle the page fault the mmap_sem is needed,
 but it is currently held by setup_arg_pages. setup_arg_pages calls
 shift_arg_pages with the mmap_sem held. shift_arg_pages then calls
 move_page_tables which has a cond_resched at the top of its for loop. If
 the cond_resched() is removed from move_page_tables everything works
 beautifully - no panics.

 So, the question: is it normal for walking the stack to trigger a page
 fault on PPC? The panic is not seen on x86 based systems.

 Can anyone confirm whether page faults while walking the stack are
 normal for PPC? We really want to use the context switch event with
 callchains and need to understand whether this behavior is normal. Of
 course if it is normal, a way to address the problem without a panic
 will be needed.
 
 Now that leads to interesting discoveries :-) Becky, can you read all
 the way and let me know what you think ?
 
 So, trying to walk the user stack directly will potentially cause page
 faults if it's done by direct access. So if you're going to do it in a
 spot where you can't afford it, you need to pagefault_disable() I
 suppose. I think the problem with our existing code is that it's missing
 those around __get_user_inatomic().
 
 In fact, arguably, we don't want the hash code from modifying the hash
 either (or even hashing things in). Our 64-bit code handles it today in
 perf_callchain.c in a way that involves pretty much duplicating the
 functionality of __get_user_pages_fast() as used by x86 (see below), but
 as a fallback from a direct access which misses the pagefault_disable()
 as well.
 
 I think it comes from an old assumption that this would always be called
 from an nmi, and the explicit tracepoints broke that assumption.
 
 In fact we probably want to bump the NMI count, not just the IRQ count
 as pagefault_disable() does, to make sure we prevent hashing. 
 
 x86 does things differently, using __get_user_pages_fast() (a variant of
 get_user_page_fast() that doesn't fallback to normal get_user_pages()).
 
 Now, we could do the same (use __gup_fast too), but I can see a
 potential issue with ppc 32-bit platforms that have 64-bit PTEs, since
 we could end up GUP'ing in the middle of the two accesses.
 
 Becky: I think gup_fast is generally broken on 32-bit with 64-bit PTE
 because of that, the problem isn't specific to perf backtraces, I'll
 propose a solution further down.
 
 Now, on x86, there is a similar problem with PAE, which is handled by
 
  - having gup disable IRQs
  - rely on the fact that to change from a valid value to another valid
value, the PTE will first get invalidated, which requires an IPI
and thus will be blocked by our interrupts being off
 
 We do the first part, but the second part will break if we use HW TLB
 invalidation broadcast (yet another reason why those are bad, I think I
 will write a blog entry about it one of these days).
 
 I think we can work around this while keeping our broadcast TLB
 invalidations by having the invalidation code also increment a global
 generation count (using the existing lock used by the invalidation code,
 all 32-bit platforms have such a lock).
 
 From there, gup_fast can be changed to, with proper ordering, check the
 generation count around the loading of the PTE and loop if it has
 changed, kind-of a seqlock.
 
 We also need the NMI count bump if we are going to try to keep the
 attempt at doing a direct access first for perfs.
 
 Becky, do you feel like giving that a shot or should I find another
 victim ? (Or even do it myself ... ) :-)

Did you have something in mind besides the patch Anton sent? We'll give
that one a try and see how it works. (Thanks, Anton!)

David

 
 Cheers,
 Ben.
 
 Thanks,
 David


  [b0180e00]rb_erase+0x1b4/0x3e8
  [b00430f4]__dequeue_entity+0x50/0xe8
  [b0043304]set_next_entity+0x178/0x1bc
  [b0043440]pick_next_task_fair+0xb0/0x118
  [b02ada80]schedule+0x500/0x614
  [b02afaa8]rwsem_down_failed_common+0xf0/0x264
  [b02afca0]rwsem_down_read_failed+0x34/0x54
  [b02aed4c]down_read+0x3c/0x54
  [b0023b58]do_page_fault+0x114/0x5e8
  [b001e350]handle_page_fault+0xc/0x80
  [b0022dec]perf_callchain+0x224/0x31c
  [b009ba70]perf_prepare_sample+0x240/0x2fc
  [b009d760]__perf_event_overflow+0x280/0x398
  [b009d914]perf_swevent_overflow+0x9c/0x10c
  [b009db54]perf_swevent_ctx_event+0x1d0/0x230
  [b009dc38]do_perf_sw_event+0x84/0xe4
  [b009dde8]perf_sw_event_context_switch+0x150/0x1b4
  [b009de90]perf_event_task_sched_out+0x44/0x2d4
  [b02ad840]schedule+0x2c0/0x614
  [b0047dc0]__cond_resched+0x34/0x90
  [b02adcc8]_cond_resched+0x4c/0x68
  

Re: [PATCH 13/14] 85xx: consolidate of_platform_bus_probe calls

2011-07-25 Thread Scott Wood
On Sat, 23 Jul 2011 01:45:53 +0400
Dmitry Eremin-Solenikov dbarysh...@gmail.com wrote:

 I see your point. I just wasn't thinking too much about ot-of-tree trees.
 My thought was that if someone updates the kernel, he can also update the dtb.

Sometimes there are firmware dependencies that make that difficult.  And
even if it's just user laziness/forgetfulness, that still translates to
extra support requests.

 Could you please update the lbc.txt suggesting the compatibility
 with simple-bus for lbc? Or you thing that it would be wrong?

 I think we should define compatibility list as fsl,mpc-localbus,
 fsl,pqX-localbus, simple-bus, noting that by default new
 platforms/boards should only use simple-bus internally. Does this
 look reasonable for you? I can then try to provide a patch.

I'm OK with saying that localbus nodes should have simple-bus in new trees,
and defining canonical compatible values (chips with eLBC should be
fsl,-elbc, fsl,elbc, simple-bus).  I'm not sure what you mean by
should only use simple-bus internally, especially in the context of the
binding.

 What do you suggest/prefer? To add .name=localbus to generic code
 or to have board-specific hooks (like one for mpc834xemitx)?

Just add localbus to the generic table.

-Scott

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH] powerpc/nvram: Add compression to fit more oops output into NVRAM

2011-07-25 Thread Jim Keniston
Capture more than twice as much text from the printk buffer, and
compress it to fit it in the lnx,oops-log NVRAM partition.  You
can view the compressed text using the new (as of July 20) --unzip
option of the nvram command in the powerpc-utils package.

Signed-off-by: Jim Keniston jkeni...@us.ibm.com
---

 arch/powerpc/include/asm/rtas.h|6 +
 arch/powerpc/platforms/pseries/nvram.c |  171 +++-
 2 files changed, 168 insertions(+), 9 deletions(-)

diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h
index 58625d1..41f69ae 100644
--- a/arch/powerpc/include/asm/rtas.h
+++ b/arch/powerpc/include/asm/rtas.h
@@ -249,10 +249,12 @@ extern void pSeries_log_error(char *buf, unsigned int 
err_type, int fatal);
 #define ERR_FLAG_ALREADY_LOGGED0x0
 #define ERR_FLAG_BOOT  0x1 /* log was pulled from NVRAM on boot */
 #define ERR_TYPE_RTAS_LOG  0x2 /* from rtas event-scan */
-#define ERR_TYPE_KERNEL_PANIC  0x4 /* from panic() */
+#define ERR_TYPE_KERNEL_PANIC  0x4 /* from die()/panic() */
+#define ERR_TYPE_KERNEL_PANIC_GZ 0x8   /* ditto, compressed */
 
 /* All the types and not flags */
-#define ERR_TYPE_MASK  (ERR_TYPE_RTAS_LOG | ERR_TYPE_KERNEL_PANIC)
+#define ERR_TYPE_MASK \
+   (ERR_TYPE_RTAS_LOG | ERR_TYPE_KERNEL_PANIC | ERR_TYPE_KERNEL_PANIC_GZ)
 
 #define RTAS_DEBUG KERN_DEBUG RTAS: 
  
diff --git a/arch/powerpc/platforms/pseries/nvram.c 
b/arch/powerpc/platforms/pseries/nvram.c
index 00cc3a0..a76b228 100644
--- a/arch/powerpc/platforms/pseries/nvram.c
+++ b/arch/powerpc/platforms/pseries/nvram.c
@@ -18,6 +18,8 @@
 #include linux/spinlock.h
 #include linux/slab.h
 #include linux/kmsg_dump.h
+#include linux/ctype.h
+#include linux/zlib.h
 #include asm/uaccess.h
 #include asm/nvram.h
 #include asm/rtas.h
@@ -78,8 +80,41 @@ static struct kmsg_dumper nvram_kmsg_dumper = {
 #define NVRAM_RTAS_READ_TIMEOUT 5  /* seconds */
 static unsigned long last_unread_rtas_event;   /* timestamp */
 
-/* We preallocate oops_buf during init to avoid kmalloc during oops/panic. */
-static char *oops_buf;
+/*
+ * For capturing and compressing an oops or panic report...
+
+ * big_oops_buf[] holds the uncompressed text we're capturing.
+ *
+ * oops_buf[] holds the compressed text, preceded by a prefix.
+ * The prefix is just a u16 holding the length of the compressed* text.
+ * (*Or uncompressed, if compression fails.)  oops_buf[] gets written
+ * to NVRAM.
+ *
+ * oops_len points to the prefix.  oops_data points to the compressed text.
+ *
+ * +- oops_buf
+ * |   +- oops_data
+ * v   v
+ * ++---+
+ * | length| text  |
+ * | (2 bytes) | (oops_data_sz bytes)  |
+ * ++---+
+ * ^
+ * +- oops_len
+ *
+ * We preallocate these buffers during init to avoid kmalloc during oops/panic.
+ */
+static size_t big_oops_buf_sz;
+static char *big_oops_buf, *oops_buf;
+static u16 *oops_len;
+static char *oops_data;
+static size_t oops_data_sz;
+
+/* Compression parameters */
+#define COMPR_LEVEL 6
+#define WINDOW_BITS 12
+#define MEM_LEVEL 4
+static struct z_stream_s stream;
 
 static ssize_t pSeries_nvram_read(char *buf, size_t count, loff_t *index)
 {
@@ -387,11 +422,44 @@ static void __init nvram_init_oops_partition(int 
rtas_partition_exists)
sizeof(rtas_log_partition));
}
oops_buf = kmalloc(oops_log_partition.size, GFP_KERNEL);
+   if (!oops_buf) {
+   pr_err(nvram: No memory for %s partition\n,
+   oops_log_partition.name);
+   return;
+   }
+   oops_len = (u16*) oops_buf;
+   oops_data = oops_buf + sizeof(u16);
+   oops_data_sz = oops_log_partition.size - sizeof(u16);
+
+   /*
+* Figure compression (preceded by elimination of each line's n
+* severity prefix) will reduce the oops/panic report to at most
+* 45% of its original size.
+*/
+   big_oops_buf_sz = (oops_data_sz * 100) / 45;
+   big_oops_buf = kmalloc(big_oops_buf_sz, GFP_KERNEL);
+   if (big_oops_buf) {
+   stream.workspace = kmalloc(zlib_deflate_workspacesize(
+   WINDOW_BITS, MEM_LEVEL), GFP_KERNEL);
+   if (!stream.workspace) {
+   pr_err(nvram: No memory for compression workspace; 
+   skipping compression of %s partition data\n,
+   oops_log_partition.name);
+   kfree(big_oops_buf);
+   big_oops_buf = NULL;
+   }
+   } else {
+   pr_err(No memory for uncompressed %s data; 
+   skipping compression\n, oops_log_partition.name);
+   stream.workspace = NULL;
+  

[PATCH] powerpc: mtspr/mtmsr should take an unsigned long

2011-07-25 Thread Scott Wood
Add a cast in case the caller passes in a different type, as it would
if mtspr/mtmsr were functions.

Previously, if a 64-bit type was passed in on 32-bit, GCC would bind the
constraint to a pair of registers, and would substitute the first register
in the pair in the asm code.  This corresponds to the upper half of the
64-bit register, which is generally not the desired behavior.

Signed-off-by: Scott Wood scottw...@freescale.com
---
If you're wondering why you'd pass a 64-bit value to one of these macros
on 32-bit, it came up when trying to load an SPR from kvm_vcpu_arch_shared.

 arch/powerpc/include/asm/reg.h |7 +--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
index 213d1d7..1b45133 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -1007,13 +1007,16 @@
 #define mtmsrd(v)  __mtmsrd((v), 0)
 #define mtmsr(v)   mtmsrd(v)
 #else
-#define mtmsr(v)   asm volatile(mtmsr %0 : : r (v) : memory)
+#define mtmsr(v)   asm volatile(mtmsr %0 : \
+: r ((unsigned long)(v)) \
+: memory)
 #endif
 
 #define mfspr(rn)  ({unsigned long rval; \
asm volatile(mfspr %0, __stringify(rn) \
: =r (rval)); rval;})
-#define mtspr(rn, v)   asm volatile(mtspr  __stringify(rn) ,%0 : : r (v)\
+#define mtspr(rn, v)   asm volatile(mtspr  __stringify(rn) ,%0 : \
+: r ((unsigned long)(v)) \
 : memory)
 
 #ifdef __powerpc64__
-- 
1.7.4.1

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH] powerpc: return the_cpu_ spec from identify_cpu

2011-07-25 Thread Scott Wood
Commit af9eef3c7b1ed004c378c89b87642f4937337d50 caused cpu_setup to see
the_cpu_spec, rather than the source struct.  However, on 32-bit, the
return value of identify_cpu was being used for feature fixups, and
identify_cpu was returning the source struct.  So if cpu_setup patches
the feature bits, the update won't affect the fixups.

Signed-off-by: Scott Wood scottw...@freescale.com
---
 arch/powerpc/kernel/cputable.c |   11 ++-
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index 9fb9332..fa44ff5 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -2051,7 +2051,8 @@ static struct cpu_spec __initdata cpu_specs[] = {
 
 static struct cpu_spec the_cpu_spec;
 
-static void __init setup_cpu_spec(unsigned long offset, struct cpu_spec *s)
+static struct cpu_spec * __init setup_cpu_spec(unsigned long offset,
+  struct cpu_spec *s)
 {
struct cpu_spec *t = the_cpu_spec;
struct cpu_spec old;
@@ -2114,6 +2115,8 @@ static void __init setup_cpu_spec(unsigned long offset, 
struct cpu_spec *s)
t-cpu_setup(offset, t);
}
 #endif /* CONFIG_PPC64 || CONFIG_BOOKE */
+
+   return t;
 }
 
 struct cpu_spec * __init identify_cpu(unsigned long offset, unsigned int pvr)
@@ -2124,10 +2127,8 @@ struct cpu_spec * __init identify_cpu(unsigned long 
offset, unsigned int pvr)
s = PTRRELOC(s);
 
for (i = 0; i  ARRAY_SIZE(cpu_specs); i++,s++) {
-   if ((pvr  s-pvr_mask) == s-pvr_value) {
-   setup_cpu_spec(offset, s);
-   return s;
-   }
+   if ((pvr  s-pvr_mask) == s-pvr_value)
+   return setup_cpu_spec(offset, s);
}
 
BUG();
-- 
1.7.4.1

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH] powerpc/32: pass device tree address as u64 to machine_init

2011-07-25 Thread Scott Wood
u64 is used rather than phys_addr_t to keep things simple, as
this is called from assembly code.

Update callers to pass a 64-bit address in r3/r4.  Other unused
register assignments that were once parameters to machine_init
are dropped.

For FSL BookE, look up the physical address of the device tree from the
effective address passed in r3 by the loader.  This is required for
situations where memory does not start at zero (due to AMP or IOMMU-less
virtualization), and thus the IMA doesn't start at zero, and thus the
device tree effective address does not equal the physical address.

Signed-off-by: Scott Wood scottw...@freescale.com
---
Tested on fsl booke and 83xx.

 arch/powerpc/kernel/head_32.S|7 ++---
 arch/powerpc/kernel/head_40x.S   |   15 ++-
 arch/powerpc/kernel/head_44x.S   |   16 ++--
 arch/powerpc/kernel/head_8xx.S   |   13 ++
 arch/powerpc/kernel/head_fsl_booke.S |   42 +-
 arch/powerpc/kernel/setup_32.c   |2 +-
 6 files changed, 39 insertions(+), 56 deletions(-)

diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
index ba250d5..0654dba 100644
--- a/arch/powerpc/kernel/head_32.S
+++ b/arch/powerpc/kernel/head_32.S
@@ -139,8 +139,7 @@ __start:
trap
 #endif /* CONFIG_PPC_PMAC */
 
-1: mr  r31,r3  /* save parameters */
-   mr  r30,r4
+1: mr  r31,r3  /* save device tree ptr */
li  r24,0   /* cpu # */
 
 /*
@@ -964,8 +963,8 @@ start_here:
  * Do early platform-specific initialization,
  * and set up the MMU.
  */
-   mr  r3,r31
-   mr  r4,r30
+   li  r3,0
+   mr  r4,r31
bl  machine_init
bl  __save_cpu_setup
bl  MMU_init
diff --git a/arch/powerpc/kernel/head_40x.S b/arch/powerpc/kernel/head_40x.S
index a91626d..872a6af 100644
--- a/arch/powerpc/kernel/head_40x.S
+++ b/arch/powerpc/kernel/head_40x.S
@@ -58,13 +58,7 @@
 _ENTRY(_stext);
 _ENTRY(_start);
 
-   /* Save parameters we are passed.
-   */
-   mr  r31,r3
-   mr  r30,r4
-   mr  r29,r5
-   mr  r28,r6
-   mr  r27,r7
+   mr  r31,r3  /* save device tree ptr */
 
/* We have to turn on the MMU right away so we get cache modes
 * set correctly.
@@ -849,11 +843,8 @@ start_here:
 /*
  * Decide what sort of machine this is and initialize the MMU.
  */
-   mr  r3,r31
-   mr  r4,r30
-   mr  r5,r29
-   mr  r6,r28
-   mr  r7,r27
+   li  r3,0
+   mr  r4,r31
bl  machine_init
bl  MMU_init
 
diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S
index f8e971b..b725dab 100644
--- a/arch/powerpc/kernel/head_44x.S
+++ b/arch/powerpc/kernel/head_44x.S
@@ -61,14 +61,7 @@ _ENTRY(_start);
 * of abatron_pteptrs
 */
nop
-/*
- * Save parameters we are passed
- */
-   mr  r31,r3
-   mr  r30,r4
-   mr  r29,r5
-   mr  r28,r6
-   mr  r27,r7
+   mr  r31,r3  /* save device tree ptr */
li  r24,0   /* CPU number */
 
bl  init_cpu_state
@@ -120,11 +113,8 @@ _ENTRY(_start);
 /*
  * Decide what sort of machine this is and initialize the MMU.
  */
-   mr  r3,r31
-   mr  r4,r30
-   mr  r5,r29
-   mr  r6,r28
-   mr  r7,r27
+   li  r3,0
+   mr  r4,r31
bl  machine_init
bl  MMU_init
 
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index 1cbf64e..b68cb17 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -76,11 +76,7 @@ _ENTRY(_start);
  */
.globl  __start
 __start:
-   mr  r31,r3  /* save parameters */
-   mr  r30,r4
-   mr  r29,r5
-   mr  r28,r6
-   mr  r27,r7
+   mr  r31,r3  /* save device tree ptr */
 
/* We have to turn on the MMU right away so we get cache modes
 * set correctly.
@@ -723,11 +719,8 @@ start_here:
 /*
  * Decide what sort of machine this is and initialize the MMU.
  */
-   mr  r3,r31
-   mr  r4,r30
-   mr  r5,r29
-   mr  r6,r28
-   mr  r7,r27
+   li  r3,0
+   mr  r4,r31
bl  machine_init
bl  MMU_init
 
diff --git a/arch/powerpc/kernel/head_fsl_booke.S 
b/arch/powerpc/kernel/head_fsl_booke.S
index 985638d..c86f0eb 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -63,17 +63,30 @@ _ENTRY(_start);
 * of abatron_pteptrs
 */
nop
-/*
- * Save parameters we are passed
- */
-   mr  r31,r3
-   mr  r30,r4
-   mr  r29,r5
-   mr  r28,r6
-   mr  r27,r7
-   li  r25,0   /* phys 

[git pull] Please pull powerpc.git next branch

2011-07-25 Thread Benjamin Herrenschmidt
Hi Linus !

Here's the powerpc batch for this merge window (there might still be a
handful of small fixes coming later this week depending on my mood but
here's the bulk at least). There's a couple of trivial merge conflicts
with your tree, let me know if you prefer that I fix them myself.

No big highlights, mostly a random collection of bug fixes and
improvements (the big highlight is the base KVM support for P7 and
970 which has been merged via Avi's tree).

Cheers,
Ben.


The following changes since commit 750e06992d49666a7589aac555eb3bb68e4dbb88:

  Merge branch 'hwmon-for-linus' of 
git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging (2011-07-25 
14:10:34 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git next

Akinobu Mita (2):
  powerpc/pseries: Introduce pSeries_reconfig_notify()
  powerpc/pseries: Improve error code on reconfiguration notifier failure

Andrew Gabbasov (1):
  powerpc: Exporting boot_cpuid_phys

Anton Blanchard (9):
  powerpc: Use -mtraceback=no
  powerpc/pseries/hvconsole: Fix dropped console output
  powerpc: Sync pseries and ppc64 defconfigs
  powerpc: Disable IRQs off tracer in ppc64 defconfig
  powerpc: Add mpt2sas driver to pseries and ppc64 defconfig
  powerpc: Enable lockup and hung task detectors in pseries and ppc64 
defeconfigs
  powerpc/irq: Quieten irq mapping printks
  powerpc/pseries: Fix hvterm_raw_get_chars to accept  16 chars, fixing 
xmon
  hvc_console: Add kdb support

Ashish Kalra (2):
  powerpc/85xx: Save scratch registers to thread info instead of using 
SPRGs.
  powerpc: introduce the ePAPR embedded hypervisor vmpic driver

Baruch Siach (1):
  MAINTAINERS: add arch/powerpc/platforms/85xx/ to the 85xx entry

Becky Bruce (3):
  powerpc: Whitespace fix to include/asm/pgtable-ppc64.h
  powerpc: mem_init should call memblock_is_reserved with phys_addr_t
  powerpc: Create next_tlbcam_idx percpu variable for FSL_BOOKE

Benjamin Herrenschmidt (12):
  Merge remote branch 'jwb/next' into next
  powerpc/hvsi: Move HVSI protocol definitions to a header file
  powerpc/pseries: Factor HVSI header struct in packet definitions
  powerpc/udbg: Register udbg console generically
  powerpc/pseries: Re-implement HVSI as part of hvc_vio
  powerpc/pseries: Move hvsi support into a library
  Merge remote branch 'origin/master' into next
  powerpc: Fix build problem with default ppc_md.progress commit
  powerpc/hvsi: Fix conflict with old HVSI driver
  powerpc/pseries: Fix hvc_vio.c build due to recent changes
  Merge remote-tracking branch 'jwb/next' into next
  powerpc: Copy back TIF flags on return from softirq stack

Christian Kujau (1):
  Document powerpc udbg-immortal

Dave Carroll (2):
  powerpc: Move free_initmem to common code
  powerpc: Add printk companion for ppc_md.progress

Dave Kleikamp (3):
  powerpc/44x: don't use tlbivax on AMP systems
  powerpc/44x: boot wrapper: allow kernel to load into non-zero address
  powerpc/47x: allow kernel to be loaded in higher physical memory

Dmitry Eremin-Solenikov (7):
  powerpc/mpic: Support compiling with DEBUG enabled
  powerpc/85xx: tqm8540 - add description for onboard flash
  powerpc/85xx: specify interrupt for pq3-localbus devices
  powerpc/maple: Enable scom access functions on Maple
  powerpc/maple: Register CPC925 EDAC device on all boards with CPC925
  powerpc: Correct annotations of pmu registration functions
  powerpc/cpufreq: Add cpufreq driver for Momentum Maple boards

Fabio Baltieri (1):
  powerpc/85xx: fix mpic configuration in CAMP mode

Felix Radensky (1):
  powerpc/p1022ds: Remove fixed-link property from ethernet nodes.

Hendrik Brueckner (1):
  hvc_console: Improve tty/console put_chars handling

Josh Boyer (3):
  ppc4xx: Add crypto and RNG entries to Sequoia DTS
  MAINTAINERS: Update PowerPC 4xx entry
  powerpc/4xx: Move PCIE printk to proper function

Kumar Gala (18):
  powerpc/book3e: Clarify HW table walk enable/disable message
  powerpc: Rename e55xx_smp_defconfig to corenet64_smp_defconfig
  powerpc: Add a defconfig for 'corenet' 32-bit platforms
  powerpc/85xx: Add P5020DS device tree
  powerpc/85xx: Add P3041DS device tree
  powerpc/85xx: Updates to P4080DS device tree
  powerpc/85xx: Cleanup PCIe support on corenet_ds boards
  powerpc/fsl_pci: Simplify matching logic for PCI_FIXUP_HEADER
  powerpc/pci: Move FSL fixup from 32-bit to common
  powerpc/85xx: Add PCI support in 64-bit mode on P5020DS
  powerpc/qe: Limit QE support to ppc32
  powerpc/85xx: Add P4080 SoC device tree include stub
  powerpc/85xx: Add P3041 SoC device tree include stub
  powerpc/85xx: Add P5020 SoC device tree include stub
  driver core: Add ability for arch code to setup pdev_archdata
  powerpc: 

Re: [PATCH v2 2/4] powerpc, mpc52xx: add a4m072 board support

2011-07-25 Thread Heiko Schocher
Hello,

Heiko Schocher wrote:
 Signed-off-by: Heiko Schocher h...@denx.de
 cc: Grant Likely grant.lik...@secretlab.ca
 cc: devicetree-disc...@ozlabs.org
 cc: Wolfgang Denk w...@denx.de
 cc: Wolfram Sang w.s...@pengutronix.de
 ---
 For this patchseries following patch is needed:
 
 http://patchwork.ozlabs.org/patch/91919/
 
 Grant? Do you have some comments on that patch?
 
 changes for v2:
   add comment from Wolfram Sang:
   use mpc5200.dtsi
 
  arch/powerpc/boot/dts/a4m072.dts |  172 
 ++
  arch/powerpc/platforms/52xx/mpc5200_simple.c |1 +
  2 files changed, 173 insertions(+), 0 deletions(-)
  create mode 100644 arch/powerpc/boot/dts/a4m072.dts

Are there some more comments or is this ready for going
to mainline?

bye,
Heiko
-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [PATCH 1/4] net, phy: am79c874 support

2011-07-25 Thread Heiko Schocher
Hello,

Heiko Schocher wrote:
 Signed-off-by: Heiko Schocher h...@denx.de
 cc: linux-net...@vger.kernel.org
 cc: Wolfgang Denk w...@denx.de
 ---
  drivers/net/phy/Kconfig  |5 ++
  drivers/net/phy/Makefile |1 +
  drivers/net/phy/amd79.c  |  109 
 ++
  3 files changed, 115 insertions(+), 0 deletions(-)
  create mode 100644 drivers/net/phy/amd79.c

Are there some more comments or is this patch ready for going
to mainline?

bye,
Heiko
-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev