* [PATCH 1/3] powerpc: Instrument Hypervisor Calls: merge headers
From: Mike Kravetz @ 2006-07-14 23:39 UTC (permalink / raw)
To: Paul Mackerras
Cc: Arnd Bergmann, Bryan Rosenburg, linuxppc-dev, Nathan Lynch,
Christopher Yeoh
In-Reply-To: <20060714233739.GA11487@monkey.ibm.com>
Move all the Hypervisor call definitions to to a single header file.
--
Signed-off-by: Mike Kravetz <kravetz@us.ibm.com>
diff -Naupr linux-2.6.17.4/drivers/net/ibmveth.h linux-2.6.17.4.work/drivers/net/ibmveth.h
--- linux-2.6.17.4/drivers/net/ibmveth.h 2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/drivers/net/ibmveth.h 2006-07-14 23:05:37.000000000 +0000
@@ -41,16 +41,6 @@
#define IbmVethMcastRemoveFilter 0x2UL
#define IbmVethMcastClearFilterTable 0x3UL
-/* hcall numbers */
-#define H_VIO_SIGNAL 0x104
-#define H_REGISTER_LOGICAL_LAN 0x114
-#define H_FREE_LOGICAL_LAN 0x118
-#define H_ADD_LOGICAL_LAN_BUFFER 0x11C
-#define H_SEND_LOGICAL_LAN 0x120
-#define H_MULTICAST_CTRL 0x130
-#define H_CHANGE_LOGICAL_LAN_MAC 0x14C
-#define H_FREE_LOGICAL_LAN_BUFFER 0x1D4
-
/* hcall macros */
#define h_register_logical_lan(ua, buflst, rxq, fltlst, mac) \
plpar_hcall_norets(H_REGISTER_LOGICAL_LAN, ua, buflst, rxq, fltlst, mac)
diff -Naupr linux-2.6.17.4/include/asm-powerpc/hvcall.h linux-2.6.17.4.work/include/asm-powerpc/hvcall.h
--- linux-2.6.17.4/include/asm-powerpc/hvcall.h 2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/include/asm-powerpc/hvcall.h 2006-07-14 23:05:37.000000000 +0000
@@ -155,9 +155,15 @@
#define H_VIO_SIGNAL 0x104
#define H_SEND_CRQ 0x108
#define H_COPY_RDMA 0x110
+#define H_REGISTER_LOGICAL_LAN 0x114
+#define H_FREE_LOGICAL_LAN 0x118
+#define H_ADD_LOGICAL_LAN_BUFFER 0x11C
+#define H_SEND_LOGICAL_LAN 0x120
+#define H_MULTICAST_CTRL 0x130
#define H_SET_XDABR 0x134
#define H_STUFF_TCE 0x138
#define H_PUT_TCE_INDIRECT 0x13C
+#define H_CHANGE_LOGICAL_LAN_MAC 0x14C
#define H_VTERM_PARTNER_INFO 0x150
#define H_REGISTER_VTERM 0x154
#define H_FREE_VTERM 0x158
@@ -187,11 +193,14 @@
#define H_GET_HCA_INFO 0x1B8
#define H_GET_PERF_COUNT 0x1BC
#define H_MANAGE_TRACE 0x1C0
+#define H_FREE_LOGICAL_LAN_BUFFER 0x1D4
#define H_QUERY_INT_STATE 0x1E4
#define H_POLL_PENDING 0x1D8
#define H_JOIN 0x298
#define H_ENABLE_CRQ 0x2B0
+#define MAX_HCALL_OPCODES (H_ENABLE_CRQ >> 2)
+
#ifndef __ASSEMBLY__
/* plpar_hcall() -- Generic call interface using above opcodes
^ permalink raw reply
* [PATCH 2/3] powerpc: Instrument Hypervisor Calls: add wrappers
From: Mike Kravetz @ 2006-07-14 23:40 UTC (permalink / raw)
To: Paul Mackerras
Cc: Arnd Bergmann, Bryan Rosenburg, linuxppc-dev, Nathan Lynch,
Christopher Yeoh
In-Reply-To: <20060714233739.GA11487@monkey.ibm.com>
Add wrappers which perform the actual hypervisor call instrumentation.
--
Signed-off-by: Mike Kravetz <kravetz@us.ibm.com>
diff -Naupr linux-2.6.17.4/arch/powerpc/Kconfig.debug linux-2.6.17.4.work/arch/powerpc/Kconfig.debug
--- linux-2.6.17.4/arch/powerpc/Kconfig.debug 2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/Kconfig.debug 2006-07-14 23:28:20.000000000 +0000
@@ -18,6 +18,19 @@ config DEBUG_STACK_USAGE
This option will slow down process creation somewhat.
+config HCALL_STATS
+ bool "Hypervisor call instrumentation"
+ depends on PPC_PSERIES && DEBUG_FS
+ help
+ Adds code to keep track of the number of hypervisor calls made and
+ the amount of time spent in hypervisor calls. A directory named
+ hcall_inst is added at the root of the debugfs filesystem. Within
+ the hcall_inst directory are files that contain CPU specific call
+ statistics.
+
+ This option will add a small amount of overhead to all hypervisor
+ calls.
+
config DEBUGGER
bool "Enable debugger hooks"
depends on DEBUG_KERNEL
diff -Naupr linux-2.6.17.4/arch/powerpc/platforms/pseries/Makefile linux-2.6.17.4.work/arch/powerpc/platforms/pseries/Makefile
--- linux-2.6.17.4/arch/powerpc/platforms/pseries/Makefile 2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/platforms/pseries/Makefile 2006-07-14 23:28:20.000000000 +0000
@@ -9,3 +9,4 @@ obj-$(CONFIG_EEH) += eeh.o eeh_cache.o e
obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o
obj-$(CONFIG_HVCS) += hvcserver.o
+obj-$(CONFIG_HCALL_STATS) += hvCall_inst.o
diff -Naupr linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall.S linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall.S
--- linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall.S 2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall.S 2006-07-14 23:28:20.000000000 +0000
@@ -11,7 +11,35 @@
#include <asm/hvcall.h>
#include <asm/processor.h>
#include <asm/ppc_asm.h>
-
+
+/*
+ * If hcall statistics are desired, all routines are wrapped with code
+ * that does the statistic gathering.
+ */
+#ifndef CONFIG_HCALL_STATS
+#define PLPAR_HCALL plpar_hcall
+#define PLPAR_HCALL_NORETS plpar_hcall_norets
+#define PLPAR_HCALL_8ARG_2RET plpar_hcall_8arg_2ret
+#define PLPAR_HCALL_4OUT plpar_hcall_4out
+#define PLPAR_HCALL_7ARG_7RET plpar_hcall_7arg_7ret
+#define PLPAR_HCALL_9ARG_9RET plpar_hcall_9arg_9ret
+#else
+#define PLPAR_HCALL plpar_hcall_base
+#define PLPAR_HCALL_NORETS plpar_hcall_norets_base
+#define PLPAR_HCALL_8ARG_2RET plpar_hcall_8arg_2ret_base
+#define PLPAR_HCALL_4OUT plpar_hcall_4out_base
+#define PLPAR_HCALL_7ARG_7RET plpar_hcall_7arg_7ret_base
+#define PLPAR_HCALL_9ARG_9RET plpar_hcall_9arg_9ret_base
+
+/*
+ * A special 'indirect' call to a C based wrapper if statistics are desired.
+ * See plpar_hcall_norets_C function header for more details.
+ */
+_GLOBAL(plpar_hcall_norets)
+ b plpar_hcall_norets_C
+
+#endif
+
#define STK_PARM(i) (48 + ((i)-3)*8)
.text
@@ -25,7 +53,7 @@
unsigned long *out2, R9
unsigned long *out3); R10
*/
-_GLOBAL(plpar_hcall)
+_GLOBAL(PLPAR_HCALL)
HMT_MEDIUM
mfcr r0
@@ -52,7 +80,7 @@ _GLOBAL(plpar_hcall)
/* Simple interface with no output values (other than status) */
-_GLOBAL(plpar_hcall_norets)
+_GLOBAL(PLPAR_HCALL_NORETS)
HMT_MEDIUM
mfcr r0
@@ -76,7 +104,7 @@ _GLOBAL(plpar_hcall_norets)
unsigned long arg8, 112(R1)
unsigned long *out1); 120(R1)
*/
-_GLOBAL(plpar_hcall_8arg_2ret)
+_GLOBAL(PLPAR_HCALL_8ARG_2RET)
HMT_MEDIUM
mfcr r0
@@ -102,7 +130,7 @@ _GLOBAL(plpar_hcall_8arg_2ret)
unsigned long *out3, R10
unsigned long *out4); 112(R1)
*/
-_GLOBAL(plpar_hcall_4out)
+_GLOBAL(PLPAR_HCALL_4OUT)
HMT_MEDIUM
mfcr r0
@@ -144,7 +172,7 @@ _GLOBAL(plpar_hcall_4out)
unsigned long *out6, 102(R1)
unsigned long *out7); 100(R1)
*/
-_GLOBAL(plpar_hcall_7arg_7ret)
+_GLOBAL(PLPAR_HCALL_7ARG_7RET)
HMT_MEDIUM
mfcr r0
@@ -193,7 +221,7 @@ _GLOBAL(plpar_hcall_7arg_7ret)
unsigned long *out8, 94(R1)
unsigned long *out9, 92(R1)
*/
-_GLOBAL(plpar_hcall_9arg_9ret)
+_GLOBAL(PLPAR_HCALL_9ARG_9RET)
HMT_MEDIUM
mfcr r0
diff -Naupr linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall_inst.c linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall_inst.c
--- linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall_inst.c 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall_inst.c 2006-07-14 23:28:44.000000000 +0000
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2006 Mike Kravetz IBM Corporation
+ *
+ * Hypervisor Call Instrumentation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <linux/kernel.h>
+#include <linux/percpu.h>
+#include <linux/debugfs.h>
+#include <linux/seq_file.h>
+#include <linux/cpumask.h>
+#include <asm/hvcall.h>
+#include <asm/firmware.h>
+
+DEFINE_PER_CPU(struct hcall_stats[MAX_HCALL_OPCODES+1], hcall_stats);
+
+/*
+ * Common update of the per-CPU/per-hcall statistics
+ */
+static inline void update_stats(unsigned long opcode, unsigned long t_before)
+{
+ unsigned long op_index = opcode >> 2;
+ struct hcall_stats *hs = &__get_cpu_var(hcall_stats[op_index]);
+
+ hs->total_time += (mftb() - t_before);
+ hs->num_calls++;
+}
+
+/*
+ * plpar_hcall wrapper
+ */
+long plpar_hcall(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long *out1,
+ unsigned long *out2,
+ unsigned long *out3)
+{
+ long rc;
+ unsigned long t_before;
+
+ t_before = mftb();
+ rc = plpar_hcall_base(opcode, arg1, arg2, arg3, arg4, out1, out2, out3);
+
+ update_stats(opcode, t_before);
+ return rc;
+}
+
+/*
+ * A C based wrapper for plpar_hcall_norets
+ * The wrapper for plpar_hcall_norets is a special case because the function
+ * takes a variable number of arguments. It is almost impossible to write a
+ * wrapper for a function that takes a variable number of arguments in C.
+ * Therefore, there is an assembly routine in hvCall.S that simply branches
+ * to this C wrapper. This 'indirection' takes care of the variable arguments
+ * issue. This C wrapper has a fixed maximum number of arguments.
+ */
+long plpar_hcall_norets_C(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long arg5,
+ unsigned long arg6)
+{
+ long rc;
+ unsigned long t_before;
+
+ t_before = mftb();
+ rc = plpar_hcall_norets_base(opcode, arg1, arg2, arg3, arg4, arg5,
+ arg6);
+
+ update_stats(opcode, t_before);
+ return rc;
+}
+
+/*
+ * plpar_hcall_8arg_2ret wrapper
+ */
+long plpar_hcall_8arg_2ret(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long arg5,
+ unsigned long arg6,
+ unsigned long arg7,
+ unsigned long arg8,
+ unsigned long *out1)
+{
+ long rc;
+ unsigned long t_before;
+
+ t_before = mftb();
+ rc = plpar_hcall_8arg_2ret_base(opcode, arg1, arg2, arg3, arg4, arg5,
+ arg6, arg7, arg8, out1);
+
+ update_stats(opcode, t_before);
+ return rc;
+}
+
+/*
+ * plpar_hcall_4out wrapper
+ */
+long plpar_hcall_4out(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long *out1,
+ unsigned long *out2,
+ unsigned long *out3,
+ unsigned long *out4)
+{
+ long rc;
+ unsigned long t_before;
+
+ t_before = mftb();
+ rc = plpar_hcall_4out_base(opcode, arg1, arg2, arg3, arg4, out1,
+ out2, out3, out4);
+
+ update_stats(opcode, t_before);
+ return rc;
+}
+
+/*
+ * plpar_hcall_7arg_7ret wrapper
+ */
+long plpar_hcall_7arg_7ret(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long arg5,
+ unsigned long arg6,
+ unsigned long arg7,
+ unsigned long *out1,
+ unsigned long *out2,
+ unsigned long *out3,
+ unsigned long *out4,
+ unsigned long *out5,
+ unsigned long *out6,
+ unsigned long *out7)
+{
+ long rc;
+ unsigned long t_before;
+
+ t_before = mftb();
+ rc = plpar_hcall_7arg_7ret_base(opcode, arg1, arg2, arg3, arg4, arg5,
+ arg6, arg7, out1, out2, out3, out4,
+ out5, out6, out7);
+
+ update_stats(opcode, t_before);
+ return rc;
+}
+
+/*
+ * plpar_hcall_9arg_9ret wrapper
+ */
+long plpar_hcall_9arg_9ret(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long arg5,
+ unsigned long arg6,
+ unsigned long arg7,
+ unsigned long arg8,
+ unsigned long arg9,
+ unsigned long *out1,
+ unsigned long *out2,
+ unsigned long *out3,
+ unsigned long *out4,
+ unsigned long *out5,
+ unsigned long *out6,
+ unsigned long *out7,
+ unsigned long *out8,
+ unsigned long *out9)
+{
+ long rc;
+ unsigned long t_before;
+
+ t_before = mftb();
+ rc = plpar_hcall_9arg_9ret_base(opcode, arg1, arg2, arg3, arg4, arg5,
+ arg6, arg7, arg8, arg9, out1, out2,
+ out3, out4, out5, out6, out7, out8,
+ out9);
+
+ update_stats(opcode, t_before);
+ return rc;
+}
diff -Naupr linux-2.6.17.4/include/asm-powerpc/hvcall.h linux-2.6.17.4.work/include/asm-powerpc/hvcall.h
--- linux-2.6.17.4/include/asm-powerpc/hvcall.h 2006-07-14 23:27:52.000000000 +0000
+++ linux-2.6.17.4.work/include/asm-powerpc/hvcall.h 2006-07-14 23:28:20.000000000 +0000
@@ -292,6 +292,86 @@ long plpar_hcall_9arg_9ret(unsigned long
unsigned long *out8,
unsigned long *out9);
+
+/* For hcall instrumentation. One structure per-hcall, per-CPU */
+struct hcall_stats {
+ unsigned long num_calls; /* number of calls (on this CPU) */
+ unsigned long total_time; /* total cputime (PURR) of calls. */
+};
+
+/* If Hypervisor call instrumentation is enabled, the assembly routine
+ * names are changed from 'plpar_hcall*' to 'plpar_hcall*_base' and
+ * 'plpar_hcall*' routines become instrumented wrappers. The following
+ * are declarations for the renamed 'plpar_hcall*_base' routines.
+ */
+long plpar_hcall_base (unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long *out1,
+ unsigned long *out2,
+ unsigned long *out3);
+
+long plpar_hcall_norets_base(unsigned long opcode, ...);
+
+long plpar_hcall_8arg_2ret_base(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long arg5,
+ unsigned long arg6,
+ unsigned long arg7,
+ unsigned long arg8,
+ unsigned long *out1);
+
+long plpar_hcall_4out_base(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long *out1,
+ unsigned long *out2,
+ unsigned long *out3,
+ unsigned long *out4);
+
+long plpar_hcall_7arg_7ret_base(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long arg5,
+ unsigned long arg6,
+ unsigned long arg7,
+ unsigned long *out1,
+ unsigned long *out2,
+ unsigned long *out3,
+ unsigned long *out4,
+ unsigned long *out5,
+ unsigned long *out6,
+ unsigned long *out7);
+
+long plpar_hcall_9arg_9ret_base(unsigned long opcode,
+ unsigned long arg1,
+ unsigned long arg2,
+ unsigned long arg3,
+ unsigned long arg4,
+ unsigned long arg5,
+ unsigned long arg6,
+ unsigned long arg7,
+ unsigned long arg8,
+ unsigned long arg9,
+ unsigned long *out1,
+ unsigned long *out2,
+ unsigned long *out3,
+ unsigned long *out4,
+ unsigned long *out5,
+ unsigned long *out6,
+ unsigned long *out7,
+ unsigned long *out8,
+ unsigned long *out9);
+
#endif /* __ASSEMBLY__ */
#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_HVCALL_H */
^ permalink raw reply
* [PATCH 3/3] powerpc: Instrument Hypervisor Calls: add debugfs files
From: Mike Kravetz @ 2006-07-14 23:41 UTC (permalink / raw)
To: Paul Mackerras
Cc: Arnd Bergmann, Bryan Rosenburg, linuxppc-dev, Nathan Lynch,
Christopher Yeoh
In-Reply-To: <20060714233739.GA11487@monkey.ibm.com>
Make statistics available via files in debugfs.
--
Signed-off-by: Mike Kravetz <kravetz@us.ibm.com>
diff -Naupr linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall_inst.c linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall_inst.c
--- linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall_inst.c 2006-07-14 23:32:01.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall_inst.c 2006-07-14 23:32:54.000000000 +0000
@@ -205,3 +205,94 @@ long plpar_hcall_9arg_9ret(unsigned long
update_stats(opcode, t_before);
return rc;
}
+
+/*
+ * Routines for displaying the statistics in debugfs
+ */
+static void *hc_start(struct seq_file *m, loff_t *pos)
+{
+ if ((int)*pos < MAX_HCALL_OPCODES)
+ return (void *)(unsigned long)(*pos + 1);
+
+ return NULL;
+}
+
+static void *hc_next(struct seq_file *m, void *p, loff_t * pos)
+{
+ ++*pos;
+
+ return hc_start(m, pos);
+}
+
+static void hc_stop(struct seq_file *m, void *p)
+{
+}
+
+static int hc_show(struct seq_file *m, void *p)
+{
+ unsigned long h_num = (unsigned long)p;
+ struct hcall_stats *hs = (struct hcall_stats *)m->private;
+
+ if (hs[h_num].num_calls)
+ seq_printf(m, "%lu %lu %lu\n", h_num<<2, hs[h_num].num_calls,
+ hs[h_num].total_time);
+
+ return 0;
+}
+
+static struct seq_operations hcall_inst_seq_ops = {
+ .start = hc_start,
+ .next = hc_next,
+ .stop = hc_stop,
+ .show = hc_show
+};
+
+static int hcall_inst_seq_open(struct inode *inode, struct file *file)
+{
+ int rc;
+ struct seq_file *seq;
+
+ rc = seq_open(file, &hcall_inst_seq_ops);
+ seq = file->private_data;
+ seq->private = file->f_dentry->d_inode->u.generic_ip;
+
+ return rc;
+}
+
+static struct file_operations hcall_inst_seq_fops = {
+ .open = hcall_inst_seq_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = seq_release,
+};
+
+#define HCALL_ROOT_DIR "hcall_inst"
+#define CPU_NAME_BUF_SIZE 32
+
+static int __init hcall_inst_init(void)
+{
+ struct dentry *hcall_root;
+ struct dentry *hcall_file;
+ char cpu_name_buf[CPU_NAME_BUF_SIZE];
+ int cpu;
+
+ if (!firmware_has_feature(FW_FEATURE_LPAR))
+ return 0;
+
+ hcall_root = debugfs_create_dir(HCALL_ROOT_DIR, NULL);
+ if (!hcall_root)
+ return -ENOMEM;
+
+ for_each_cpu(cpu) {
+ snprintf(cpu_name_buf, CPU_NAME_BUF_SIZE, "cpu%d", cpu);
+ hcall_file = debugfs_create_file(cpu_name_buf, S_IRUGO,
+ hcall_root,
+ per_cpu(hcall_stats, cpu),
+ &hcall_inst_seq_fops);
+ if (!hcall_file)
+ return -ENOMEM;
+ }
+
+ return 0;
+}
+__initcall(hcall_inst_init);
^ permalink raw reply
* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Arnd Bergmann @ 2006-07-15 0:00 UTC (permalink / raw)
To: linuxppc-dev
Cc: Bryan Rosenburg, Nathan Lynch, Paul Mackerras, Christopher Yeoh
In-Reply-To: <20060714233739.GA11487@monkey.ibm.com>
On Saturday 15 July 2006 01:37, Mike Kravetz wrote:
> In addition, there has been some discussion of these patches on IRC.
> Some remaining issues/questions are:
> - Exactly how much overhead does the statistic gathering introduce?
> - What would be the cost of disabling preemption for more accurate statistics?
> - What would be the cost of disabling interrupts for more accurate statistics?
> - Should we extend this statistic gathering to RTAS calls?
What happened to the question whether to use PURR values for also measuring
cycles spent executing the hcall as opposed to cycles that passed before
the hcall returns. Did that turn out not giving extra information after all
or was there a different reason to drop that idea?
Arnd <><
^ permalink raw reply
* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Mike Kravetz @ 2006-07-15 0:06 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
Christopher Yeoh
In-Reply-To: <200607150200.03494.arnd@arndb.de>
On Sat, Jul 15, 2006 at 02:00:02AM +0200, Arnd Bergmann wrote:
> What happened to the question whether to use PURR values for also measuring
> cycles spent executing the hcall as opposed to cycles that passed before
> the hcall returns. Did that turn out not giving extra information after all
> or was there a different reason to drop that idea?
Oops, forgot that as an additional issue/question. In this patch, I went
back to mftb() as 'wall time' made more sense for the group wanting this
functionality. It is easy to switch, or collect both (I think). Since I
started with mftb went to PURR and then back to mftb, it certainly does
look like an agument to try and collect both. :)
--
Mike
^ permalink raw reply
* Re: [PATCH 2/3] powerpc: Instrument Hypervisor Calls: add wrappers
From: Nathan Lynch @ 2006-07-15 0:15 UTC (permalink / raw)
To: Mike Kravetz
Cc: Bryan Rosenburg, linuxppc-dev, Paul Mackerras, Arnd Bergmann,
Christopher Yeoh
In-Reply-To: <20060714234034.GC11487@monkey.ibm.com>
Mike Kravetz wrote:
> +static inline void update_stats(unsigned long opcode, unsigned long t_before)
> +{
> + unsigned long op_index = opcode >> 2;
> + struct hcall_stats *hs = &__get_cpu_var(hcall_stats[op_index]);
> +
> + hs->total_time += (mftb() - t_before);
> + hs->num_calls++;
> +}
> +
> +/*
> + * plpar_hcall wrapper
> + */
> +long plpar_hcall(unsigned long opcode,
> + unsigned long arg1,
> + unsigned long arg2,
> + unsigned long arg3,
> + unsigned long arg4,
> + unsigned long *out1,
> + unsigned long *out2,
> + unsigned long *out3)
> +{
> + long rc;
> + unsigned long t_before;
> +
> + t_before = mftb();
> + rc = plpar_hcall_base(opcode, arg1, arg2, arg3, arg4, out1, out2, out3);
> +
> + update_stats(opcode, t_before);
> + return rc;
> +}
Hmm, isn't it possible that the stats could be corrupted if we process
an interrupt/softirq which does an hcall while the stats are being
updated? Maybe it's not a show-stopper, but it seems to me that
accuracy could suffer under some workloads.
^ permalink raw reply
* Re: [PATCH 2/3] powerpc: Instrument Hypervisor Calls: add wrappers
From: Mike Kravetz @ 2006-07-15 0:41 UTC (permalink / raw)
To: Nathan Lynch
Cc: Bryan Rosenburg, linuxppc-dev, Paul Mackerras, Arnd Bergmann,
Christopher Yeoh
In-Reply-To: <20060715001545.GK19076@localdomain>
On Fri, Jul 14, 2006 at 07:15:45PM -0500, Nathan Lynch wrote:
> Hmm, isn't it possible that the stats could be corrupted if we process
> an interrupt/softirq which does an hcall while the stats are being
> updated? Maybe it's not a show-stopper, but it seems to me that
> accuracy could suffer under some workloads.
Yes, they can become inaccurate. Is this what you mean by 'corrupted' or
you thinking of something worse?
There is going to be a trade off between accuracy and the overhead of the
data gathering. What really needs to happen is some good benchmarking to
measure the costs of different approaches. I'm pretty sure I can get
someone to provide such data.
In this patch, I have minimized the overhead in data collection at the
cost of accuracy.
--
Mike
^ permalink raw reply
* Re: [JOB] Senior Embedded Linux Video Engineer
From: David H. Lynch Jr. @ 2006-07-15 3:23 UTC (permalink / raw)
To: linuxppc-embedded
In-Reply-To: <44B7ECD7.3080807@am.sony.com>
[-- Attachment #1: Type: text/plain, Size: 2645 bytes --]
Tim Bird wrote:
> Olof Johansson wrote:
>
>> Ick. Why not just create a linuxppc-jobs@ozlabs org instead of hiding it
>> somewhere in the CELF organization...?
>>
>
> Well, it would be either a public list or on CELF's public wiki.
> I'm not sure how this would be "hiding it".
> -- Tim
>
Aparently there are people that do not want job related postings of
any kind on this list.
I can respect that. To the same extent there are those of us who are
looking for work and appreciate means to get the work we love instead of
having to take the work we can get.
I have my own personal worries about even a job list. There are a
plethora of jobsites. And I can trivially do a search for Embedded Linux
and get a plethora of job oportunities.
But they are all employment - primarily contract employment. There
seem to be no resources available for those of us looking for actual
consulting work.
I mean you would think this would be the ultimate consulting task -
give me a board and a few weeks without sleep and I will bring forth
Linux for you.
Anyway, we all have our preferences. I would love to see an embedded
Linux Consultants list that was chock full of consulting oportunities.
I would bring it up myself - but my ISP basically sucks, and I can
not even host a decent web site for my own consulting business.
I would even be willing to risk its being overrun with employment,
and contract for hire, and contract employment gigs that have zero
appeal to me - but may be of
interest to others here.
I would NOT restrict it to PPC's. I come to linuxppc-embedded to
look for ppc information. But I will do embedded linux work of any kind
that will pay the mortgage - heck, I would do web programming rather
than rejoin the rat race.
Unfortunately the rats are looming.
> =============================
> Tim Bird
> Architecture Group Chair, CE Linux Forum
> Senior Staff Engineer, Sony Electronics
> =============================
>
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>
--
Dave Lynch DLA Systems
Software Development: Embedded Linux
717.627.3770 dhlii@dlasys.net http://www.dlasys.net
fax: 1.253.369.9244 Cell: 1.717.587.7774
Over 25 years' experience in platforms, languages, and technologies too numerous to list.
"Any intelligent fool can make things bigger and more complex... It takes a touch of genius - and a lot of courage to move in the opposite direction."
Albert Einstein
[-- Attachment #2: Type: text/html, Size: 3750 bytes --]
^ permalink raw reply
* Re: [PATCH 2/3] powerpc: Instrument Hypervisor Calls: add wrappers
From: Nathan Lynch @ 2006-07-15 8:03 UTC (permalink / raw)
To: Mike Kravetz
Cc: Bryan Rosenburg, linuxppc-dev, Paul Mackerras, Arnd Bergmann,
Christopher Yeoh
In-Reply-To: <20060715004156.GJ6824@monkey.ibm.com>
Mike Kravetz wrote:
> On Fri, Jul 14, 2006 at 07:15:45PM -0500, Nathan Lynch wrote:
> > Hmm, isn't it possible that the stats could be corrupted if we process
> > an interrupt/softirq which does an hcall while the stats are being
> > updated? Maybe it's not a show-stopper, but it seems to me that
> > accuracy could suffer under some workloads.
>
> Yes, they can become inaccurate. Is this what you mean by 'corrupted' or
> you thinking of something worse?
Yes, "corrupted" was perhaps too strong, but we could lose the
accounting for hcalls from interrupts that we take at exactly the
wrong time. I guess it's a pretty tiny risk.
I just wanted to make sure this had been considered, but if you're
comfortable with the overhead/accuracy tradeoff, then okay.
^ permalink raw reply
* powermac: More powermac backlight fixes
From: Michael Hanselmann @ 2006-07-15 13:09 UTC (permalink / raw)
To: akpm; +Cc: linuxppc-dev, johannes, aris, linux-kernel
This patch fixes several problems:
- The legacy backlight value might be set at interrupt time. Introduced
a worker to prevent it from directly calling the backlight code.
- via-pmu allows the backlight to be grabbed, in which case we need to
prevent other kernel code from changing the brightness.
- Don't send PMU requests in via-pmu-backlight when the machine is about
to sleep or waking up.
- More Kconfig fixes.
Signed-off-by: Michael Hanselmann <linux-kernel@hansmi.ch>
---
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/arch/powerpc/platforms/powermac/backlight.c linux-2.6.18-rc1-git8/arch/powerpc/platforms/powermac/backlight.c
--- linux-2.6.18-rc1-git8.orig/arch/powerpc/platforms/powermac/backlight.c 2006-07-14 22:24:02.000000000 +0200
+++ linux-2.6.18-rc1-git8/arch/powerpc/platforms/powermac/backlight.c 2006-07-14 22:41:39.000000000 +0200
@@ -10,19 +10,32 @@
#include <linux/kernel.h>
#include <linux/fb.h>
#include <linux/backlight.h>
+#include <linux/adb.h>
+#include <linux/pmu.h>
+#include <asm/atomic.h>
#include <asm/prom.h>
#include <asm/backlight.h>
#define OLD_BACKLIGHT_MAX 15
static void pmac_backlight_key_worker(void *data);
+static void pmac_backlight_set_legacy_worker(void *data);
+
static DECLARE_WORK(pmac_backlight_key_work, pmac_backlight_key_worker, NULL);
+static DECLARE_WORK(pmac_backlight_set_legacy_work, pmac_backlight_set_legacy_worker, NULL);
-/* Although this variable is used in interrupt context, it makes no sense to
- * protect it. No user is able to produce enough key events per second and
+/* Although these variables are used in interrupt context, it makes no sense to
+ * protect them. No user is able to produce enough key events per second and
* notice the errors that might happen.
*/
static int pmac_backlight_key_queued;
+static int pmac_backlight_set_legacy_queued;
+
+/* The via-pmu code allows the backlight to be grabbed, in which case the
+ * in-kernel control of the brightness needs to be disabled. This should
+ * only be used by really old PowerBooks.
+ */
+static atomic_t kernel_backlight_disabled = ATOMIC_INIT(0);
/* Protect the pmac_backlight variable */
DEFINE_MUTEX(pmac_backlight_mutex);
@@ -82,6 +95,9 @@ int pmac_backlight_curve_lookup(struct f
static void pmac_backlight_key_worker(void *data)
{
+ if (atomic_read(&kernel_backlight_disabled))
+ return;
+
mutex_lock(&pmac_backlight_mutex);
if (pmac_backlight) {
struct backlight_properties *props;
@@ -107,8 +123,12 @@ static void pmac_backlight_key_worker(vo
mutex_unlock(&pmac_backlight_mutex);
}
+/* This function is called in interrupt context */
void pmac_backlight_key(int direction)
{
+ if (atomic_read(&kernel_backlight_disabled))
+ return;
+
/* we can receive multiple interrupts here, but the scheduled work
* will run only once, with the last value
*/
@@ -116,10 +136,13 @@ void pmac_backlight_key(int direction)
schedule_work(&pmac_backlight_key_work);
}
-int pmac_backlight_set_legacy_brightness(int brightness)
+static int __pmac_backlight_set_legacy_brightness(int brightness)
{
int error = -ENXIO;
+ if (atomic_read(&kernel_backlight_disabled))
+ return -EBUSY;
+
mutex_lock(&pmac_backlight_mutex);
if (pmac_backlight) {
struct backlight_properties *props;
@@ -145,6 +168,22 @@ int pmac_backlight_set_legacy_brightness
return error;
}
+static void pmac_backlight_set_legacy_worker(void *data)
+{
+ __pmac_backlight_set_legacy_brightness(pmac_backlight_set_legacy_queued);
+}
+
+/* This function is called in interrupt context */
+void pmac_backlight_set_legacy_brightness_pmu(int brightness) {
+ pmac_backlight_set_legacy_queued = brightness;
+ schedule_work(&pmac_backlight_set_legacy_work);
+}
+
+int pmac_backlight_set_legacy_brightness(int brightness)
+{
+ return __pmac_backlight_set_legacy_brightness(brightness);
+}
+
int pmac_backlight_get_legacy_brightness()
{
int result = -ENXIO;
@@ -167,6 +206,16 @@ int pmac_backlight_get_legacy_brightness
return result;
}
+void pmac_backlight_disable()
+{
+ atomic_inc(&kernel_backlight_disabled);
+}
+
+void pmac_backlight_enable()
+{
+ atomic_dec(&kernel_backlight_disabled);
+}
+
EXPORT_SYMBOL_GPL(pmac_backlight);
EXPORT_SYMBOL_GPL(pmac_backlight_mutex);
EXPORT_SYMBOL_GPL(pmac_has_backlight_type);
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/macintosh/adbhid.c linux-2.6.18-rc1-git8/drivers/macintosh/adbhid.c
--- linux-2.6.18-rc1-git8.orig/drivers/macintosh/adbhid.c 2006-07-14 22:24:11.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/macintosh/adbhid.c 2006-07-14 22:41:10.000000000 +0200
@@ -45,14 +45,11 @@
#include <linux/pmu.h>
#include <asm/machdep.h>
+#include <asm/backlight.h>
#ifdef CONFIG_PPC_PMAC
#include <asm/pmac_feature.h>
#endif
-#ifdef CONFIG_PMAC_BACKLIGHT
-#include <asm/backlight.h>
-#endif
-
MODULE_AUTHOR("Franz Sirl <Franz.Sirl-kernel@lauterbach.com>");
#define KEYB_KEYREG 0 /* register # for key up/down data */
@@ -237,11 +234,6 @@ static struct adb_ids keyboard_ids;
static struct adb_ids mouse_ids;
static struct adb_ids buttons_ids;
-#ifdef CONFIG_PMAC_BACKLIGHT
-/* Exported to via-pmu.c */
-int disable_kernel_backlight = 0;
-#endif /* CONFIG_PMAC_BACKLIGHT */
-
/* Kind of keyboard, see Apple technote 1152 */
#define ADB_KEYBOARD_UNKNOWN 0
#define ADB_KEYBOARD_ANSI 0x0100
@@ -527,7 +519,7 @@ adbhid_buttons_input(unsigned char *data
case 0xa: /* brightness decrease */
#ifdef CONFIG_PMAC_BACKLIGHT
- if (!disable_kernel_backlight && down)
+ if (down)
pmac_backlight_key_down();
#endif
input_report_key(adbhid[id]->input, KEY_BRIGHTNESSDOWN, down);
@@ -535,7 +527,7 @@ adbhid_buttons_input(unsigned char *data
case 0x9: /* brightness increase */
#ifdef CONFIG_PMAC_BACKLIGHT
- if (!disable_kernel_backlight && down)
+ if (down)
pmac_backlight_key_up();
#endif
input_report_key(adbhid[id]->input, KEY_BRIGHTNESSUP, down);
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/macintosh/Kconfig linux-2.6.18-rc1-git8/drivers/macintosh/Kconfig
--- linux-2.6.18-rc1-git8.orig/drivers/macintosh/Kconfig 2006-07-14 22:24:11.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/macintosh/Kconfig 2006-07-14 22:41:10.000000000 +0200
@@ -115,8 +115,6 @@ config PMAC_BACKLIGHT
bool "Backlight control for LCD screens"
depends on ADB_PMU && FB = y && (BROKEN || !PPC64)
select FB_BACKLIGHT
- select BACKLIGHT_CLASS_DEVICE
- select BACKLIGHT_LCD_SUPPORT
help
Say Y here to enable Macintosh specific extensions of the generic
backlight code. With this enabled, the brightness keys on older
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/macintosh/via-pmu-backlight.c linux-2.6.18-rc1-git8/drivers/macintosh/via-pmu-backlight.c
--- linux-2.6.18-rc1-git8.orig/drivers/macintosh/via-pmu-backlight.c 2006-07-14 22:24:11.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/macintosh/via-pmu-backlight.c 2006-07-14 22:41:10.000000000 +0200
@@ -15,8 +15,9 @@
#define MAX_PMU_LEVEL 0xFF
-static struct device_node *vias;
static struct backlight_properties pmu_backlight_data;
+static spinlock_t pmu_backlight_lock;
+static int sleeping;
static int pmu_backlight_get_level_brightness(struct fb_info *info,
int level)
@@ -40,23 +41,36 @@ static int pmu_backlight_update_status(s
{
struct fb_info *info = class_get_devdata(&bd->class_dev);
struct adb_request req;
- int pmulevel, level = bd->props->brightness;
+ unsigned long flags;
+ int level = bd->props->brightness;
- if (vias == NULL)
- return -ENODEV;
+ spin_lock_irqsave(&pmu_backlight_lock, flags);
+
+ /* Don't update brightness when sleeping */
+ if (sleeping)
+ goto out;
if (bd->props->power != FB_BLANK_UNBLANK ||
bd->props->fb_blank != FB_BLANK_UNBLANK)
level = 0;
- pmulevel = pmu_backlight_get_level_brightness(info, level);
+ if (level > 0) {
+ int pmulevel = pmu_backlight_get_level_brightness(info, level);
- pmu_request(&req, NULL, 2, PMU_BACKLIGHT_BRIGHT, pmulevel);
- pmu_wait_complete(&req);
+ pmu_request(&req, NULL, 2, PMU_BACKLIGHT_BRIGHT, pmulevel);
+ pmu_wait_complete(&req);
- pmu_request(&req, NULL, 2, PMU_POWER_CTRL,
- PMU_POW_BACKLIGHT | (level > 0 ? PMU_POW_ON : PMU_POW_OFF));
- pmu_wait_complete(&req);
+ pmu_request(&req, NULL, 2, PMU_POWER_CTRL,
+ PMU_POW_BACKLIGHT | PMU_POW_ON);
+ pmu_wait_complete(&req);
+ } else {
+ pmu_request(&req, NULL, 2, PMU_POWER_CTRL,
+ PMU_POW_BACKLIGHT | PMU_POW_OFF);
+ pmu_wait_complete(&req);
+ }
+
+out:
+ spin_unlock_irqrestore(&pmu_backlight_lock, flags);
return 0;
}
@@ -73,15 +87,39 @@ static struct backlight_properties pmu_b
.max_brightness = (FB_BACKLIGHT_LEVELS - 1),
};
-void __init pmu_backlight_init(struct device_node *in_vias)
+#ifdef CONFIG_PM
+static int pmu_backlight_sleep_call(struct pmu_sleep_notifier *self, int when)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&pmu_backlight_lock, flags);
+
+ switch (when) {
+ case PBOOK_SLEEP_REQUEST:
+ sleeping = 1;
+ break;
+ case PBOOK_WAKE:
+ sleeping = 0;
+ break;
+ }
+
+ spin_unlock_irqrestore(&pmu_backlight_lock, flags);
+
+ return PBOOK_SLEEP_OK;
+}
+
+static struct pmu_sleep_notifier pmu_backlight_sleep_notif = {
+ .notifier_call = pmu_backlight_sleep_call,
+};
+#endif
+
+void __init pmu_backlight_init()
{
struct backlight_device *bd;
struct fb_info *info;
char name[10];
int level, autosave;
- vias = in_vias;
-
/* Special case for the old PowerBook since I can't test on it */
autosave =
machine_is_compatible("AAPL,3400/2400") ||
@@ -141,6 +179,10 @@ void __init pmu_backlight_init(struct de
pmac_backlight = bd;
mutex_unlock(&pmac_backlight_mutex);
+#ifdef CONFIG_PM
+ pmu_register_sleep_notifier(&pmu_backlight_sleep_notif);
+#endif
+
printk("pmubl: Backlight initialized (%s)\n", name);
return;
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/macintosh/via-pmu.c linux-2.6.18-rc1-git8/drivers/macintosh/via-pmu.c
--- linux-2.6.18-rc1-git8.orig/drivers/macintosh/via-pmu.c 2006-07-14 22:24:11.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/macintosh/via-pmu.c 2006-07-14 22:41:10.000000000 +0200
@@ -16,7 +16,6 @@
* a sleep or a freq. switch
* - Move sleep code out of here to pmac_pm, merge into new
* common PM infrastructure
- * - Move backlight code out as well
* - Save/Restore PCI space properly
*
*/
@@ -60,9 +59,7 @@
#include <asm/mmu_context.h>
#include <asm/cputable.h>
#include <asm/time.h>
-#ifdef CONFIG_PMAC_BACKLIGHT
#include <asm/backlight.h>
-#endif
#include "via-pmu-event.h"
@@ -177,10 +174,6 @@ static int query_batt_timer = BATTERY_PO
static struct adb_request batt_req;
static struct proc_dir_entry *proc_pmu_batt[PMU_MAX_BATTERIES];
-#if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT)
-extern int disable_kernel_backlight;
-#endif /* defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) */
-
int __fake_sleep;
int asleep;
BLOCKING_NOTIFIER_HEAD(sleep_notifier_list);
@@ -466,7 +459,7 @@ static int __init via_pmu_dev_init(void)
#ifdef CONFIG_PMAC_BACKLIGHT
/* Initialize backlight */
- pmu_backlight_init(vias);
+ pmu_backlight_init();
#endif
#ifdef CONFIG_PPC32
@@ -1403,11 +1396,8 @@ next:
else if ((1 << pirq) & PMU_INT_SNDBRT) {
#ifdef CONFIG_PMAC_BACKLIGHT
if (len == 3)
-#ifdef CONFIG_INPUT_ADBHID
- if (!disable_kernel_backlight)
-#endif /* CONFIG_INPUT_ADBHID */
- pmac_backlight_set_legacy_brightness(data[1] >> 4);
-#endif /* CONFIG_PMAC_BACKLIGHT */
+ pmac_backlight_set_legacy_brightness_pmu(data[1] >> 4);
+#endif
}
/* Tick interrupt */
else if ((1 << pirq) & PMU_INT_TICK) {
@@ -2414,7 +2404,7 @@ struct pmu_private {
spinlock_t lock;
#if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT)
int backlight_locker;
-#endif /* defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) */
+#endif
};
static LIST_HEAD(all_pmu_pvt);
@@ -2464,7 +2454,7 @@ pmu_open(struct inode *inode, struct fil
spin_lock_irqsave(&all_pvt_lock, flags);
#if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT)
pp->backlight_locker = 0;
-#endif /* defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) */
+#endif
list_add(&pp->list, &all_pmu_pvt);
spin_unlock_irqrestore(&all_pvt_lock, flags);
file->private_data = pp;
@@ -2559,13 +2549,12 @@ pmu_release(struct inode *inode, struct
spin_lock_irqsave(&all_pvt_lock, flags);
list_del(&pp->list);
spin_unlock_irqrestore(&all_pvt_lock, flags);
+
#if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT)
- if (pp->backlight_locker) {
- spin_lock_irqsave(&pmu_lock, flags);
- disable_kernel_backlight--;
- spin_unlock_irqrestore(&pmu_lock, flags);
- }
-#endif /* defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) */
+ if (pp->backlight_locker)
+ pmac_backlight_enable();
+#endif
+
kfree(pp);
}
unlock_kernel();
@@ -2642,18 +2631,18 @@ pmu_ioctl(struct inode * inode, struct f
#ifdef CONFIG_INPUT_ADBHID
case PMU_IOC_GRAB_BACKLIGHT: {
struct pmu_private *pp = filp->private_data;
- unsigned long flags;
if (pp->backlight_locker)
return 0;
+
pp->backlight_locker = 1;
- spin_lock_irqsave(&pmu_lock, flags);
- disable_kernel_backlight++;
- spin_unlock_irqrestore(&pmu_lock, flags);
+ pmac_backlight_disable();
+
return 0;
}
#endif /* CONFIG_INPUT_ADBHID */
#endif /* CONFIG_PMAC_BACKLIGHT_LEGACY */
+
case PMU_IOC_GET_MODEL:
return put_user(pmu_kind, argp);
case PMU_IOC_HAS_ADB:
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/video/aty/aty128fb.c linux-2.6.18-rc1-git8/drivers/video/aty/aty128fb.c
--- linux-2.6.18-rc1-git8.orig/drivers/video/aty/aty128fb.c 2006-07-14 22:24:07.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/video/aty/aty128fb.c 2006-07-14 22:41:10.000000000 +0200
@@ -455,7 +455,10 @@ static void do_wait_for_fifo(u16 entries
static void wait_for_fifo(u16 entries, struct aty128fb_par *par);
static void wait_for_idle(struct aty128fb_par *par);
static u32 depth_to_dst(u32 depth);
+
+#ifdef CONFIG_FB_ATY128_BACKLIGHT
static void aty128_bl_set_power(struct fb_info *info, int power);
+#endif
#define BIOS_IN8(v) (readb(bios + (v)))
#define BIOS_IN16(v) (readb(bios + (v)) | \
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/video/aty/atyfb_base.c linux-2.6.18-rc1-git8/drivers/video/aty/atyfb_base.c
--- linux-2.6.18-rc1-git8.orig/drivers/video/aty/atyfb_base.c 2006-07-14 22:24:07.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/video/aty/atyfb_base.c 2006-07-14 22:41:10.000000000 +0200
@@ -2812,7 +2812,7 @@ static int atyfb_blank(int blank, struct
if (par->lock_blank || par->asleep)
return 0;
-#ifdef CONFIG_PMAC_BACKLIGHT
+#ifdef CONFIG_FB_ATY_BACKLIGHT
if (machine_is(powermac) && blank > FB_BLANK_NORMAL)
aty_bl_set_power(info, FB_BLANK_POWERDOWN);
#elif defined(CONFIG_FB_ATY_GENERIC_LCD)
@@ -2844,7 +2844,7 @@ static int atyfb_blank(int blank, struct
}
aty_st_le32(CRTC_GEN_CNTL, gen_cntl, par);
-#ifdef CONFIG_PMAC_BACKLIGHT
+#ifdef CONFIG_FB_ATY_BACKLIGHT
if (machine_is(powermac) && blank <= FB_BLANK_NORMAL)
aty_bl_set_power(info, FB_BLANK_UNBLANK);
#elif defined(CONFIG_FB_ATY_GENERIC_LCD)
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/video/Kconfig linux-2.6.18-rc1-git8/drivers/video/Kconfig
--- linux-2.6.18-rc1-git8.orig/drivers/video/Kconfig 2006-07-14 22:24:07.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/video/Kconfig 2006-07-14 22:41:10.000000000 +0200
@@ -86,9 +86,11 @@ config FB_MACMODES
default n
config FB_BACKLIGHT
- bool
- depends on FB
- default n
+ bool
+ depends on FB
+ select BACKLIGHT_LCD_SUPPORT
+ select BACKLIGHT_CLASS_DEVICE
+ default n
config FB_MODE_HELPERS
bool "Enable Video Mode Handling Helpers"
@@ -721,10 +723,8 @@ config FB_NVIDIA_I2C
config FB_NVIDIA_BACKLIGHT
bool "Support for backlight control"
- depends on FB_NVIDIA && PPC_PMAC
+ depends on FB_NVIDIA && PMAC_BACKLIGHT
select FB_BACKLIGHT
- select BACKLIGHT_LCD_SUPPORT
- select BACKLIGHT_CLASS_DEVICE
default y
help
Say Y here if you want to control the backlight of your display.
@@ -769,10 +769,8 @@ config FB_RIVA_DEBUG
config FB_RIVA_BACKLIGHT
bool "Support for backlight control"
- depends on FB_RIVA && PPC_PMAC
+ depends on FB_RIVA && PMAC_BACKLIGHT
select FB_BACKLIGHT
- select BACKLIGHT_LCD_SUPPORT
- select BACKLIGHT_CLASS_DEVICE
default y
help
Say Y here if you want to control the backlight of your display.
@@ -1025,10 +1023,8 @@ config FB_RADEON_I2C
config FB_RADEON_BACKLIGHT
bool "Support for backlight control"
- depends on FB_RADEON && PPC_PMAC
+ depends on FB_RADEON && PMAC_BACKLIGHT
select FB_BACKLIGHT
- select BACKLIGHT_LCD_SUPPORT
- select BACKLIGHT_CLASS_DEVICE
default y
help
Say Y here if you want to control the backlight of your display.
@@ -1059,10 +1055,8 @@ config FB_ATY128
config FB_ATY128_BACKLIGHT
bool "Support for backlight control"
- depends on FB_ATY128 && PPC_PMAC
+ depends on FB_ATY128 && PMAC_BACKLIGHT
select FB_BACKLIGHT
- select BACKLIGHT_LCD_SUPPORT
- select BACKLIGHT_CLASS_DEVICE
default y
help
Say Y here if you want to control the backlight of your display.
@@ -1111,10 +1105,8 @@ config FB_ATY_GX
config FB_ATY_BACKLIGHT
bool "Support for backlight control"
- depends on FB_ATY && PPC_PMAC
+ depends on FB_ATY && PMAC_BACKLIGHT
select FB_BACKLIGHT
- select BACKLIGHT_LCD_SUPPORT
- select BACKLIGHT_CLASS_DEVICE
default y
help
Say Y here if you want to control the backlight of your display.
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/include/asm-powerpc/backlight.h linux-2.6.18-rc1-git8/include/asm-powerpc/backlight.h
--- linux-2.6.18-rc1-git8.orig/include/asm-powerpc/backlight.h 2006-07-14 22:24:29.000000000 +0200
+++ linux-2.6.18-rc1-git8/include/asm-powerpc/backlight.h 2006-07-14 22:41:10.000000000 +0200
@@ -30,8 +30,12 @@ static inline void pmac_backlight_key_do
pmac_backlight_key(1);
}
+extern void pmac_backlight_set_legacy_brightness_pmu(int brightness);
extern int pmac_backlight_set_legacy_brightness(int brightness);
extern int pmac_backlight_get_legacy_brightness(void);
+extern void pmac_backlight_enable(void);
+extern void pmac_backlight_disable(void);
+
#endif /* __KERNEL__ */
#endif
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/include/linux/pmu.h linux-2.6.18-rc1-git8/include/linux/pmu.h
--- linux-2.6.18-rc1-git8.orig/include/linux/pmu.h 2006-07-14 22:24:25.000000000 +0200
+++ linux-2.6.18-rc1-git8/include/linux/pmu.h 2006-07-14 22:41:10.000000000 +0200
@@ -231,7 +231,6 @@ extern struct pmu_battery_info pmu_batte
extern unsigned int pmu_power_flags;
/* Backlight */
-extern int disable_kernel_backlight;
-extern void pmu_backlight_init(struct device_node*);
+extern void pmu_backlight_init(void);
#endif /* __KERNEL__ */
^ permalink raw reply
* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Anton Blanchard @ 2006-07-15 15:30 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
Christopher Yeoh
In-Reply-To: <200607150200.03494.arnd@arndb.de>
> What happened to the question whether to use PURR values for also measuring
> cycles spent executing the hcall as opposed to cycles that passed before
> the hcall returns. Did that turn out not giving extra information after all
> or was there a different reason to drop that idea?
You have to be careful with PURR since it may be context switched
between partitions.
Anton
^ permalink raw reply
* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Arnd Bergmann @ 2006-07-15 16:42 UTC (permalink / raw)
To: Anton Blanchard
Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
Christopher Yeoh
In-Reply-To: <20060715153053.GK31081@krispykreme>
On Saturday 15 July 2006 17:30, Anton Blanchard wrote:
> > What happened to the question whether to use PURR values for also measuring
> > cycles spent executing the hcall as opposed to cycles that passed before
> > the hcall returns. Did that turn out not giving extra information after all
> > or was there a different reason to drop that idea?
>
> You have to be careful with PURR since it may be context switched
> between partitions.
>
Not sure I follow you. I would expect the PURR value to be restored after
a context switch, even if we continue on a different physical CPU.
The idea behind monitoring both PURR and timebase is that the difference
between the two tells you how long the partition was suspended during
the hcall.
Arnd <><
^ permalink raw reply
* Re: [PATCH 06/12] aoa: pmf gpio: report if function calling fails
From: Andreas Schwab @ 2006-07-15 17:12 UTC (permalink / raw)
To: Johannes Berg; +Cc: linuxppc-dev
In-Reply-To: <20060707165531.206137000@sipsolutions.net>
Johannes Berg <johannes@sipsolutions.net> writes:
> This patch makes the pmf GPIO layer in aoa report if calling
> a platform function failed.
This will always fire when a switch like lineout-mute does not exist,
apparently because layout_notify does not check for that.
pmf_gpio_set_lineout failed, rc: -19
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply
* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Anton Blanchard @ 2006-07-15 22:07 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
Christopher Yeoh
In-Reply-To: <200607151842.27568.arnd@arndb.de>
> Not sure I follow you. I would expect the PURR value to be restored after
> a context switch, even if we continue on a different physical CPU.
>
> The idea behind monitoring both PURR and timebase is that the difference
> between the two tells you how long the partition was suspended during
> the hcall.
Sounds good, last time I looked at the patch I thought it was gathering
the PURR only. That on its own would make for some confusing results.
Anton
^ permalink raw reply
* Re: Kexec initial registers
From: Jimi Xenidis @ 2006-07-16 2:10 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
In-Reply-To: <1152911297.23037.109.camel@localhost.localdomain>
On Jul 14, 2006, at 5:08 PM, Benjamin Herrenschmidt wrote:
> On Fri, 2006-07-14 at 12:02 -0400, Jimi Xenidis wrote:
>> This is what I have so far:
>>
>> r3: address of device tree blob
>> r4: address that kernel was loaded
>> r5: not OF (=0)
>
> Correct and that's all that should be needed
>
>> r13: local_paca address (0?)
>
> You shouldn't have to care about r13 at all, it should be set by the
> kernel before it's used. If not, please let us know as that means
> there
> is a bug :)
Not! 99.99% :)
When loading a kernel under Xen using kexec we set r1-r5 and set all
other GPRS to all 5's (cuz we can) with CONFIG_PPC_EARLY_DEBUG=y and
all hell breaks loose in the first printk()/DBG() from early_setup()
for:
kernel/printk.c:506
506 spin_lock_irqsave(&logbuf_lock, flags);
where is access local_paca.
I think everyone else (ot just the sane ones) just sets all GPRS to 0
-JX
^ permalink raw reply
* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Olof Johansson @ 2006-07-16 3:53 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
Christopher Yeoh
In-Reply-To: <200607150200.03494.arnd@arndb.de>
On Sat, Jul 15, 2006 at 02:00:02AM +0200, Arnd Bergmann wrote:
> What happened to the question whether to use PURR values for also measuring
> cycles spent executing the hcall as opposed to cycles that passed before
> the hcall returns. Did that turn out not giving extra information after all
> or was there a different reason to drop that idea?
Just so people don't forget: this can't be done on all processors. For
example, PPC970 and POWER4 don't implement the PURR SPR. And it doesn't
make sense to use H_PURR to get the software emulated ones there. Not
really an issue on POWER4 since they don't do shared processor LPAR, but
on JS21 I think they might do?
-Olof
^ permalink raw reply
* Re: [PATCH 06/12] aoa: pmf gpio: report if function calling fails
From: Johannes Berg @ 2006-07-16 8:43 UTC (permalink / raw)
To: Andreas Schwab; +Cc: linuxppc-dev
In-Reply-To: <jebqrqbxne.fsf@sykes.suse.de>
Andreas Schwab wrote:
> This will always fire when a switch like lineout-mute does not exist,
> apparently because layout_notify does not check for that.
>
> pmf_gpio_set_lineout failed, rc: -19
Yeah, I know, I need to fix that. Unfortunately I've had corruption on my
/ and ~ filesystems so I'm a bit impaired right now, I'll send a patch to
make sure we don't touch knobs we don't have after I can fix up my
filesystem issues.
johannes
^ permalink raw reply
* Re: some problems on the SystemACE driver.
From: Ameet Patil @ 2006-07-16 9:40 UTC (permalink / raw)
To: Ming Liu; +Cc: linuxppc-embedded
In-Reply-To: <BAY110-F25F8A5EDC3636ADA072960B26F0@phx.gbl>
Hi Ming,
I know this might be very tedious for you. But its the same for me
especially when there is no need for me to do it. Anyway, could please
do a fresh start: untar linux kernel, apply all the TEMAC patches and
then apply my only 1 xx-after-TEMAC.patch
I have updated the patch. Make sure you download the new one.
The key is: When you compile this time the file xbasic_types.c in
drivers/bloxk/xilinx_sysace/ should not be compiled.
i.e.
> CC drivers/block/xilinx_sysace/xbasic_types.o
should not be shown!
Send a fresh log if this doesnot work!
-Ameet
Ming Liu wrote:
> Dear Ameet,
> Here is the normal log without -d when make zImage. Please check it.
> Waiting for your result. Have fun in the weekend. :)
>
>> I appreciate you testing the patch. Don't worry... we will solve it. And
>> I am not an expert either... you probably know more than me!
>
> Thanks for your encouraging. Let's do it! Hopefully we can finish it
> a.s.a.p. Good luck for us!
> Regards
> Ming
>
> _________________________________________________________________
> 享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com
> CHK include/linux/version.h
> HOSTCC scripts/basic/fixdep
> HOSTCC scripts/basic/split-include
> HOSTCC scripts/basic/docproc
> HOSTCC scripts/kconfig/conf.o
> HOSTCC scripts/kconfig/kxgettext.o
> HOSTCC scripts/kconfig/mconf.o
> HOSTCC scripts/kconfig/zconf.tab.o
> HOSTLD scripts/kconfig/conf
> scripts/kconfig/conf -s arch/ppc/Kconfig
> #
> # using defaults found in .config
> #
> SPLIT include/linux/autoconf.h -> include/config/*
> CC arch/ppc/kernel/asm-offsets.s
> GEN include/asm-ppc/asm-offsets.h
> HOSTCC scripts/kallsyms
> HOSTCC scripts/conmakehash
> CC init/main.o
> CHK include/linux/compile.h
> UPD include/linux/compile.h
> CC init/version.o
> CC init/do_mounts.o
> LD init/mounts.o
> CC init/initramfs.o
> CC init/calibrate.o
> LD init/built-in.o
> HOSTCC usr/gen_init_cpio
> GEN usr/initramfs_data.cpio.gz
> AS usr/initramfs_data.o
> LD usr/built-in.o
> AS arch/ppc/kernel/entry.o
> CC arch/ppc/kernel/traps.o
> CC arch/ppc/kernel/time.o
> AS arch/ppc/kernel/misc.o
> CC arch/ppc/kernel/setup.o
> CC arch/ppc/kernel/ppc_htab.o
> CC arch/ppc/kernel/dma-mapping.o
> LD arch/ppc/kernel/built-in.o
> AS arch/ppc/kernel/head_4xx.o
> LDS arch/ppc/kernel/vmlinux.lds
> CC arch/powerpc/kernel/semaphore.o
> CC arch/powerpc/kernel/cputable.o
> CC arch/powerpc/kernel/ptrace.o
> CC arch/powerpc/kernel/syscalls.o
> CC arch/powerpc/kernel/irq.o
> CC arch/powerpc/kernel/align.o
> CC arch/powerpc/kernel/signal_32.o
> CC arch/powerpc/kernel/pmc.o
> CC arch/powerpc/kernel/vdso.o
> CC arch/powerpc/kernel/init_task.o
> CC arch/powerpc/kernel/process.o
> AS arch/powerpc/kernel/systbl.o
> CC arch/powerpc/kernel/idle.o
> LDS arch/powerpc/kernel/vdso32/vdso32.lds
> VDSO32A arch/powerpc/kernel/vdso32/sigtramp.o
> VDSO32A arch/powerpc/kernel/vdso32/gettimeofday.o
> VDSO32A arch/powerpc/kernel/vdso32/datapage.o
> VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o
> VDSO32A arch/powerpc/kernel/vdso32/note.o
> VDSO32L arch/powerpc/kernel/vdso32/vdso32.so
> AS arch/powerpc/kernel/vdso32/vdso32_wrapper.o
> LD arch/powerpc/kernel/vdso32/built-in.o
> LD arch/powerpc/kernel/built-in.o
> LD arch/ppc/platforms/built-in.o
> CC arch/ppc/mm/fault.o
> CC arch/ppc/mm/init.o
> CC arch/ppc/mm/mem_pieces.o
> CC arch/ppc/mm/mmu_context.o
> CC arch/ppc/mm/pgtable.o
> CC arch/ppc/mm/4xx_mmu.o
> LD arch/ppc/mm/built-in.o
> AS arch/ppc/lib/checksum.o
> AS arch/ppc/lib/string.o
> CC arch/ppc/lib/strcase.o
> AS arch/ppc/lib/div64.o
> LD arch/ppc/lib/built-in.o
> CC arch/ppc/syslib/xilinx_pic.o
> CC arch/ppc/syslib/ppc_sys.o
> CC arch/ppc/syslib/ppc4xx_setup.o
> LD arch/ppc/syslib/built-in.o
> AS arch/powerpc/sysdev/dcr.o
> LD arch/powerpc/sysdev/built-in.o
> CC arch/powerpc/lib/bitops.o
> LD arch/powerpc/lib/built-in.o
> CC arch/ppc/platforms/4xx/xilinx_ml403.o
> CC arch/ppc/platforms/4xx/virtex.o
> LD arch/ppc/platforms/4xx/built-in.o
> CC arch/powerpc/math-emu/math.o
> arch/powerpc/math-emu/math.c:56: warning: conflicting types for built-in
> function 'fabs'
> CC arch/powerpc/math-emu/fmr.o
> CC arch/powerpc/math-emu/lfd.o
> CC arch/powerpc/math-emu/stfd.o
> CC arch/powerpc/math-emu/fabs.o
> arch/powerpc/math-emu/fabs.c:7: warning: conflicting types for built-in
> function 'fabs'
> CC arch/powerpc/math-emu/fadd.o
> arch/powerpc/math-emu/fadd.c: In function `fadd':
> arch/powerpc/math-emu/fadd.c:31: warning: right shift count is negative
> arch/powerpc/math-emu/fadd.c:31: warning: left shift count >= width of type
> arch/powerpc/math-emu/fadd.c:13: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fadd.c:13: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fadd.c:13: warning: 'R_f1' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fadds.o
> arch/powerpc/math-emu/fadds.c: In function `fadds':
> arch/powerpc/math-emu/fadds.c:32: warning: right shift count is negative
> arch/powerpc/math-emu/fadds.c:32: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fadds.c:14: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fadds.c:14: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fadds.c:14: warning: 'R_f1' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fcmpo.o
> CC arch/powerpc/math-emu/fcmpu.o
> CC arch/powerpc/math-emu/fctiw.o
> arch/powerpc/math-emu/fctiw.c: In function `fctiw':
> arch/powerpc/math-emu/fctiw.c:15: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fctiw.c:15: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fctiw.c:12: warning: 'r' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fctiwz.o
> arch/powerpc/math-emu/fctiwz.c: In function `fctiwz':
> arch/powerpc/math-emu/fctiwz.c:20: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fctiwz.c:20: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fctiwz.c:13: warning: 'r' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fdiv.o
> arch/powerpc/math-emu/fdiv.c: In function `fdiv':
> arch/powerpc/math-emu/fdiv.c:46: warning: left shift count is negative
> arch/powerpc/math-emu/fdiv.c:13: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fdiv.c:13: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fdiv.c:13: warning: 'R_f1' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fdivs.o
> arch/powerpc/math-emu/fdivs.c: In function `fdivs':
> arch/powerpc/math-emu/fdivs.c:48: warning: left shift count is negative
> arch/powerpc/math-emu/fdivs.c:14: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fdivs.c:14: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fdivs.c:14: warning: 'R_f1' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fmadd.o
> arch/powerpc/math-emu/fmadd.c: In function `fmadd':
> arch/powerpc/math-emu/fmadd.c:36: warning: right shift count is negative
> arch/powerpc/math-emu/fmadd.c:36: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fmadd.c:41: warning: right shift count is negative
> arch/powerpc/math-emu/fmadd.c:41: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fmadd.c:11: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmadd.c:11: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmadd.c:11: warning: 'R_f1' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmadd.c:15: warning: 'T_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fmadds.o
> arch/powerpc/math-emu/fmadds.c: In function `fmadds':
> arch/powerpc/math-emu/fmadds.c:37: warning: right shift count is negative
> arch/powerpc/math-emu/fmadds.c:37: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fmadds.c:42: warning: right shift count is negative
> arch/powerpc/math-emu/fmadds.c:42: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fmadds.c:12: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmadds.c:12: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmadds.c:12: warning: 'R_f1' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmadds.c:16: warning: 'T_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fmsub.o
> arch/powerpc/math-emu/fmsub.c: In function `fmsub':
> arch/powerpc/math-emu/fmsub.c:36: warning: right shift count is negative
> arch/powerpc/math-emu/fmsub.c:36: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fmsub.c:44: warning: right shift count is negative
> arch/powerpc/math-emu/fmsub.c:44: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fmsub.c:11: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmsub.c:11: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmsub.c:11: warning: 'R_f1' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmsub.c:15: warning: 'T_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fmsubs.o
> arch/powerpc/math-emu/fmsubs.c: In function `fmsubs':
> arch/powerpc/math-emu/fmsubs.c:37: warning: right shift count is negative
> arch/powerpc/math-emu/fmsubs.c:37: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fmsubs.c:45: warning: right shift count is negative
> arch/powerpc/math-emu/fmsubs.c:45: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fmsubs.c:12: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmsubs.c:12: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmsubs.c:12: warning: 'R_f1' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fmsubs.c:16: warning: 'T_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fmul.o
> arch/powerpc/math-emu/fmul.c: In function `fmul':
> arch/powerpc/math-emu/fmul.c:34: warning: right shift count is negative
> arch/powerpc/math-emu/fmul.c:34: warning: left shift count >= width of type
> arch/powerpc/math-emu/fmul.c:13: warning: 'R_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fmuls.o
> arch/powerpc/math-emu/fmuls.c: In function `fmuls':
> arch/powerpc/math-emu/fmuls.c:35: warning: right shift count is negative
> arch/powerpc/math-emu/fmuls.c:35: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fmuls.c:14: warning: 'R_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fnabs.o
> CC arch/powerpc/math-emu/fneg.o
> CC arch/powerpc/math-emu/types.o
> arch/powerpc/math-emu/types.c: In function `fp_unpack_d':
> arch/powerpc/math-emu/types.c:13: warning: left shift count is negative
> arch/powerpc/math-emu/types.c: In function `fp_pack_d':
> arch/powerpc/math-emu/types.c:28: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:28: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:28: warning: left shift count is negative
> arch/powerpc/math-emu/types.c:28: warning: right shift count is negative
> arch/powerpc/math-emu/types.c: In function `fp_pack_ds':
> arch/powerpc/math-emu/types.c:41: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:45: warning: left shift count is negative
> arch/powerpc/math-emu/types.c:46: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:46: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:46: warning: left shift count is negative
> arch/powerpc/math-emu/types.c:46: warning: right shift count is negative
> CC arch/powerpc/math-emu/fnmadd.o
> arch/powerpc/math-emu/fnmadd.c: In function `fnmadd':
> arch/powerpc/math-emu/fnmadd.c:36: warning: right shift count is negative
> arch/powerpc/math-emu/fnmadd.c:36: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fnmadd.c:41: warning: right shift count is negative
> arch/powerpc/math-emu/fnmadd.c:41: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fnmadd.c:11: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmadd.c:11: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmadd.c:11: warning: 'R_f1' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmadd.c:15: warning: 'T_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fnmadds.o
> arch/powerpc/math-emu/fnmadds.c: In function `fnmadds':
> arch/powerpc/math-emu/fnmadds.c:37: warning: right shift count is negative
> arch/powerpc/math-emu/fnmadds.c:37: warning: left shift count >= width
> of type
> arch/powerpc/math-emu/fnmadds.c:42: warning: right shift count is negative
> arch/powerpc/math-emu/fnmadds.c:42: warning: left shift count >= width
> of type
> arch/powerpc/math-emu/fnmadds.c:12: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmadds.c:12: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmadds.c:12: warning: 'R_f1' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmadds.c:16: warning: 'T_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fnmsub.o
> arch/powerpc/math-emu/fnmsub.c: In function `fnmsub':
> arch/powerpc/math-emu/fnmsub.c:36: warning: right shift count is negative
> arch/powerpc/math-emu/fnmsub.c:36: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fnmsub.c:44: warning: right shift count is negative
> arch/powerpc/math-emu/fnmsub.c:44: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fnmsub.c:11: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmsub.c:11: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmsub.c:11: warning: 'R_f1' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmsub.c:15: warning: 'T_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fnmsubs.o
> arch/powerpc/math-emu/fnmsubs.c: In function `fnmsubs':
> arch/powerpc/math-emu/fnmsubs.c:37: warning: right shift count is negative
> arch/powerpc/math-emu/fnmsubs.c:37: warning: left shift count >= width
> of type
> arch/powerpc/math-emu/fnmsubs.c:45: warning: right shift count is negative
> arch/powerpc/math-emu/fnmsubs.c:45: warning: left shift count >= width
> of type
> arch/powerpc/math-emu/fnmsubs.c:12: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmsubs.c:12: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmsubs.c:12: warning: 'R_f1' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fnmsubs.c:16: warning: 'T_e' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fres.o
> CC arch/powerpc/math-emu/frsp.o
> CC arch/powerpc/math-emu/frsqrte.o
> CC arch/powerpc/math-emu/fsel.o
> CC arch/powerpc/math-emu/lfs.o
> arch/powerpc/math-emu/lfs.c: In function `lfs':
> arch/powerpc/math-emu/lfs.c:30: warning: left shift count is negative
> CC arch/powerpc/math-emu/fsqrt.o
> arch/powerpc/math-emu/fsqrt.c: In function `fsqrt':
> arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrt.c:30: warning: right shift count is negative
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_c' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_s' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_f1' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fsqrts.o
> arch/powerpc/math-emu/fsqrts.c: In function `fsqrts':
> arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrts.c:31: warning: right shift count is negative
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_c' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_s' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_f1' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fsub.o
> arch/powerpc/math-emu/fsub.c: In function `fsub':
> arch/powerpc/math-emu/fsub.c:34: warning: right shift count is negative
> arch/powerpc/math-emu/fsub.c:34: warning: left shift count >= width of type
> arch/powerpc/math-emu/fsub.c:13: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsub.c:13: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsub.c:13: warning: 'R_f1' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/fsubs.o
> arch/powerpc/math-emu/fsubs.c: In function `fsubs':
> arch/powerpc/math-emu/fsubs.c:35: warning: right shift count is negative
> arch/powerpc/math-emu/fsubs.c:35: warning: left shift count >= width of
> type
> arch/powerpc/math-emu/fsubs.c:14: warning: 'R_e' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsubs.c:14: warning: 'R_f0' might be used
> uninitialized in this function
> arch/powerpc/math-emu/fsubs.c:14: warning: 'R_f1' might be used
> uninitialized in this function
> CC arch/powerpc/math-emu/mcrfs.o
> CC arch/powerpc/math-emu/mffs.o
> CC arch/powerpc/math-emu/mtfsb0.o
> CC arch/powerpc/math-emu/mtfsb1.o
> CC arch/powerpc/math-emu/mtfsf.o
> CC arch/powerpc/math-emu/mtfsfi.o
> CC arch/powerpc/math-emu/stfiwx.o
> CC arch/powerpc/math-emu/stfs.o
> arch/powerpc/math-emu/stfs.c: In function `stfs':
> arch/powerpc/math-emu/stfs.c:27: warning: right shift count is negative
> CC arch/powerpc/math-emu/udivmodti4.o
> LD arch/powerpc/math-emu/built-in.o
> CC kernel/sched.o
> CC kernel/fork.o
> CC kernel/exec_domain.o
> CC kernel/panic.o
> CC kernel/printk.o
> CC kernel/profile.o
> CC kernel/exit.o
> CC kernel/itimer.o
> CC kernel/time.o
> CC kernel/softirq.o
> CC kernel/resource.o
> CC kernel/sysctl.o
> CC kernel/capability.o
> CC kernel/ptrace.o
> CC kernel/timer.o
> CC kernel/user.o
> CC kernel/signal.o
> CC kernel/sys.o
> CC kernel/kmod.o
> CC kernel/workqueue.o
> CC kernel/pid.o
> CC kernel/rcupdate.o
> CC kernel/extable.o
> CC kernel/params.o
> CC kernel/posix-timers.o
> CC kernel/kthread.o
> CC kernel/wait.o
> CC kernel/kfifo.o
> CC kernel/sys_ni.o
> CC kernel/posix-cpu-timers.o
> CC kernel/mutex.o
> CC kernel/hrtimer.o
> CC kernel/futex.o
> CC kernel/intermodule.o
> CC kernel/kallsyms.o
> CC kernel/ksysfs.o
> CC kernel/softlockup.o
> CC kernel/irq/handle.o
> CC kernel/irq/manage.o
> CC kernel/irq/spurious.o
> CC kernel/irq/proc.o
> LD kernel/irq/built-in.o
> CC kernel/seccomp.o
> LD kernel/built-in.o
> CC mm/bootmem.o
> CC mm/filemap.o
> CC mm/mempool.o
> CC mm/oom_kill.o
> CC mm/fadvise.o
> CC mm/page_alloc.o
> CC mm/page-writeback.o
> CC mm/pdflush.o
> CC mm/readahead.o
> CC mm/swap.o
> CC mm/truncate.o
> CC mm/vmscan.o
> CC mm/prio_tree.o
> CC mm/util.o
> CC mm/mmzone.o
> CC mm/fremap.o
> CC mm/highmem.o
> CC mm/madvise.o
> CC mm/memory.o
> CC mm/mincore.o
> CC mm/mlock.o
> CC mm/mmap.o
> CC mm/mprotect.o
> CC mm/mremap.o
> CC mm/msync.o
> CC mm/rmap.o
> CC mm/vmalloc.o
> CC mm/page_io.o
> CC mm/swap_state.o
> CC mm/swapfile.o
> CC mm/thrash.o
> CC mm/shmem.o
> CC mm/slab.o
> CC mm/filemap_xip.o
> LD mm/built-in.o
> CC fs/open.o
> CC fs/read_write.o
> CC fs/file_table.o
> CC fs/buffer.o
> CC fs/bio.o
> CC fs/super.o
> CC fs/block_dev.o
> CC fs/char_dev.o
> CC fs/stat.o
> CC fs/exec.o
> CC fs/pipe.o
> CC fs/namei.o
> CC fs/fcntl.o
> CC fs/ioctl.o
> CC fs/readdir.o
> CC fs/select.o
> CC fs/fifo.o
> CC fs/locks.o
> CC fs/dcache.o
> CC fs/inode.o
> CC fs/attr.o
> CC fs/bad_inode.o
> CC fs/file.o
> CC fs/filesystems.o
> CC fs/namespace.o
> CC fs/aio.o
> CC fs/seq_file.o
> CC fs/xattr.o
> CC fs/libfs.o
> CC fs/fs-writeback.o
> CC fs/mpage.o
> CC fs/direct-io.o
> CC fs/ioprio.o
> CC fs/pnode.o
> CC fs/drop_caches.o
> CC fs/splice.o
> CC fs/sync.o
> CC fs/inotify.o
> CC fs/eventpoll.o
> CC fs/binfmt_script.o
> CC fs/binfmt_elf.o
> CC fs/mbcache.o
> CC fs/posix_acl.o
> CC fs/xattr_acl.o
> CC fs/dnotify.o
> CC fs/autofs/dirhash.o
> CC fs/autofs/init.o
> CC fs/autofs/inode.o
> CC fs/autofs/root.o
> CC fs/autofs/symlink.o
> CC fs/autofs/waitq.o
> LD fs/autofs/autofs.o
> LD fs/autofs/built-in.o
> CC fs/autofs4/init.o
> CC fs/autofs4/inode.o
> CC fs/autofs4/root.o
> CC fs/autofs4/symlink.o
> CC fs/autofs4/waitq.o
> CC fs/autofs4/expire.o
> LD fs/autofs4/autofs4.o
> LD fs/autofs4/built-in.o
> CC fs/devpts/inode.o
> LD fs/devpts/devpts.o
> LD fs/devpts/built-in.o
> CC fs/ext2/balloc.o
> CC fs/ext2/bitmap.o
> CC fs/ext2/dir.o
> CC fs/ext2/file.o
> CC fs/ext2/fsync.o
> CC fs/ext2/ialloc.o
> CC fs/ext2/inode.o
> CC fs/ext2/ioctl.o
> CC fs/ext2/namei.o
> CC fs/ext2/super.o
> CC fs/ext2/symlink.o
> CC fs/ext2/xattr.o
> CC fs/ext2/xattr_user.o
> CC fs/ext2/xattr_trusted.o
> CC fs/ext2/acl.o
> CC fs/ext2/xattr_security.o
> CC fs/ext2/xip.o
> LD fs/ext2/ext2.o
> LD fs/ext2/built-in.o
> CC fs/nls/nls_base.o
> LD fs/nls/built-in.o
> CC fs/partitions/check.o
> CC fs/partitions/msdos.o
> LD fs/partitions/built-in.o
> CC fs/proc/mmu.o
> CC fs/proc/task_mmu.o
> CC fs/proc/inode.o
> CC fs/proc/root.o
> CC fs/proc/base.o
> CC fs/proc/generic.o
> CC fs/proc/array.o
> CC fs/proc/kmsg.o
> CC fs/proc/proc_tty.o
> CC fs/proc/proc_misc.o
> CC fs/proc/kcore.o
> LD fs/proc/proc.o
> LD fs/proc/built-in.o
> CC fs/ramfs/inode.o
> CC fs/ramfs/file-mmu.o
> LD fs/ramfs/ramfs.o
> LD fs/ramfs/built-in.o
> CC fs/sysfs/inode.o
> CC fs/sysfs/file.o
> CC fs/sysfs/dir.o
> CC fs/sysfs/symlink.o
> CC fs/sysfs/mount.o
> CC fs/sysfs/bin.o
> CC fs/sysfs/group.o
> LD fs/sysfs/built-in.o
> LD fs/built-in.o
> CC ipc/util.o
> CC ipc/msgutil.o
> CC ipc/msg.o
> CC ipc/sem.o
> CC ipc/shm.o
> LD ipc/built-in.o
> CC security/commoncap.o
> LD security/built-in.o
> LD crypto/built-in.o
> CC block/elevator.o
> CC block/ll_rw_blk.o
> CC block/ioctl.o
> CC block/genhd.o
> CC block/scsi_ioctl.o
> CC block/noop-iosched.o
> CC block/as-iosched.o
> CC block/deadline-iosched.o
> CC block/cfq-iosched.o
> LD block/built-in.o
> CC drivers/base/core.o
> CC drivers/base/sys.o
> CC drivers/base/bus.o
> CC drivers/base/dd.o
> CC drivers/base/driver.o
> CC drivers/base/class.o
> CC drivers/base/platform.o
> CC drivers/base/cpu.o
> CC drivers/base/firmware.o
> CC drivers/base/init.o
> CC drivers/base/map.o
> CC drivers/base/dmapool.o
> CC drivers/base/attribute_container.o
> CC drivers/base/transport_class.o
> CC drivers/base/power/shutdown.o
> LD drivers/base/power/built-in.o
> LD drivers/base/built-in.o
> CC drivers/block/loop.o
> CC drivers/block/xilinx_sysace/adapter.o
> drivers/block/xilinx_sysace/adapter.c:221: warning: 'xsysace_restart'
> defined but not used
> CC drivers/block/xilinx_sysace/xbasic_types.o
> CC drivers/block/xilinx_sysace/xsysace.o
> CC drivers/block/xilinx_sysace/xsysace_g.o
> CC drivers/block/xilinx_sysace/xsysace_intr.o
> CC drivers/block/xilinx_sysace/xsysace_l.o
> CC drivers/block/xilinx_sysace/xsysace_compactflash.o
> CC drivers/block/xilinx_sysace/xsysace_jtagcfg.o
> LD drivers/block/xilinx_sysace/xilinx_sysace.o
> LD drivers/block/xilinx_sysace/built-in.o
> LD drivers/block/built-in.o
> LD drivers/cdrom/built-in.o
> CC drivers/char/mem.o
> CC drivers/char/random.o
> CC drivers/char/tty_io.o
> CC drivers/char/n_tty.o
> CC drivers/char/tty_ioctl.o
> CC drivers/char/pty.o
> CC drivers/char/misc.o
> CC drivers/char/vt_ioctl.o
> CC drivers/char/vc_screen.o
> CC drivers/char/consolemap.o
> CONMK drivers/char/consolemap_deftbl.c
> CC drivers/char/consolemap_deftbl.o
> CC drivers/char/selection.o
> CC drivers/char/keyboard.o
> CC drivers/char/vt.o
> SHIPPED drivers/char/defkeymap.c
> CC drivers/char/defkeymap.o
> LD drivers/char/built-in.o
> LD drivers/firmware/built-in.o
> CC drivers/hwmon/hwmon.o
> LD drivers/hwmon/built-in.o
> CC drivers/input/input.o
> CC drivers/input/mousedev.o
> LD drivers/input/built-in.o
> CC drivers/input/serio/serio.o
> CC drivers/input/serio/i8042.o
> CC drivers/input/serio/serport.o
> LD drivers/input/serio/built-in.o
> LD drivers/media/common/built-in.o
> LD drivers/media/built-in.o
> LD drivers/mfd/built-in.o
> LD drivers/misc/built-in.o
> CC drivers/mtd/mtdcore.o
> CC drivers/mtd/mtdpart.o
> CC drivers/mtd/redboot.o
> drivers/mtd/redboot.c: In function `parse_redboot_partitions':
> drivers/mtd/redboot.c:103: warning: passing arg 1 of `__swab32s' from
> incompatible pointer type
> drivers/mtd/redboot.c:104: warning: passing arg 1 of `__swab32s' from
> incompatible pointer type
> drivers/mtd/redboot.c:105: warning: passing arg 1 of `__swab32s' from
> incompatible pointer type
> drivers/mtd/redboot.c:106: warning: passing arg 1 of `__swab32s' from
> incompatible pointer type
> drivers/mtd/redboot.c:107: warning: passing arg 1 of `__swab32s' from
> incompatible pointer type
> drivers/mtd/redboot.c:108: warning: passing arg 1 of `__swab32s' from
> incompatible pointer type
> drivers/mtd/redboot.c:109: warning: passing arg 1 of `__swab32s' from
> incompatible pointer type
> CC drivers/mtd/mtdchar.o
> CC drivers/mtd/mtdblock.o
> CC drivers/mtd/mtd_blkdevs.o
> CC drivers/mtd/chips/chipreg.o
> CC drivers/mtd/chips/cfi_probe.o
> CC drivers/mtd/chips/cfi_util.o
> CC drivers/mtd/chips/cfi_cmdset_0002.o
> drivers/mtd/chips/cfi_cmdset_0002.c: In function `cfi_amdstd_init':
> drivers/mtd/chips/cfi_cmdset_0002.c:1766: warning:
> `inter_module_register' is deprecated (declared at
> include/linux/module.h:563)
> drivers/mtd/chips/cfi_cmdset_0002.c: In function `cfi_amdstd_exit':
> drivers/mtd/chips/cfi_cmdset_0002.c:1773: warning:
> `inter_module_unregister' is deprecated (declared at
> include/linux/module.h:564)
> CC drivers/mtd/chips/gen_probe.o
> LD drivers/mtd/chips/built-in.o
> LD drivers/mtd/devices/built-in.o
> LD drivers/mtd/maps/built-in.o
> LD drivers/mtd/nand/built-in.o
> LD drivers/mtd/onenand/built-in.o
> LD drivers/mtd/built-in.o
> CC drivers/net/Space.o
> CC drivers/net/loopback.o
> CC drivers/net/xilinx_temac/adapter.o
> CC drivers/net/xilinx_temac/xtemac.o
> CC drivers/net/xilinx_temac/xtemac_intr.o
> CC drivers/net/xilinx_temac/xtemac_intr_sgdma.o
> CC drivers/net/xilinx_temac/xtemac_sgdma.o
> CC drivers/net/xilinx_temac/xtemac_intr_fifo.o
> CC drivers/net/xilinx_temac/xtemac_fifo.o
> CC drivers/net/xilinx_temac/xtemac_l.o
> CC drivers/net/xilinx_temac/xtemac_control.o
> LD drivers/net/xilinx_temac/xilinx_temac.o
> LD drivers/net/xilinx_temac/built-in.o
> LD drivers/net/built-in.o
> CC drivers/serial/serial_core.o
> CC drivers/serial/8250.o
> CC drivers/serial/8250_early.o
> LD drivers/serial/built-in.o
> LD drivers/video/backlight/built-in.o
> CC drivers/video/console/dummycon.o
> LD drivers/video/console/built-in.o
> LD drivers/video/built-in.o
> CC drivers/xilinx_edk/xilinx_syms.o
> CC drivers/xilinx_edk/xbasic_types.o
> CC drivers/xilinx_edk/xpacket_fifo_v2_00_a.o
> CC drivers/xilinx_edk/xpacket_fifo_l_v2_00_a.o
> CC drivers/xilinx_edk/xdmav2.o
> CC drivers/xilinx_edk/xdmav2_intr.o
> CC drivers/xilinx_edk/xdmav2_sg.o
> CC drivers/xilinx_edk/xdmav2_simple.o
> LD drivers/xilinx_edk/built-in.o
> LD drivers/built-in.o
> drivers/xilinx_edk/built-in.o(.sdata+0x0): In function `XAssert':
> drivers/xilinx_edk/xbasic_types.c:105: multiple definition of
> `XWaitInAssert'
> drivers/block/built-in.o(.sdata+0x0):drivers/block/loop.c:91: first
> defined here
> drivers/xilinx_edk/built-in.o(.sbss+0x4): In function `XAssert':
> drivers/xilinx_edk/xbasic_types.c:105: multiple definition of
> `XAssertStatus'
> drivers/block/built-in.o(.sbss+0x38):drivers/block/loop.c:98: first
> defined here
> drivers/xilinx_edk/built-in.o(.text+0x44): In function
> `XAssertSetCallback':
> drivers/xilinx_edk/xbasic_types.c:134: multiple definition of
> `XAssertSetCallback'
> drivers/block/built-in.o(.text+0x24bc):drivers/block/xilinx_sysace/xbasic_types.c:134:
> first defined here
> drivers/xilinx_edk/built-in.o(.text+0x0): In function `XAssert':
> drivers/xilinx_edk/xbasic_types.c:105: multiple definition of `XAssert'
> drivers/block/built-in.o(.text+0x2478):drivers/block/xilinx_sysace/xbasic_types.c:105:
> first defined here
> drivers/xilinx_edk/built-in.o(.text+0x50): In function `XNullHandler':
> drivers/xilinx_edk/xbasic_types.c:153: multiple definition of
> `XNullHandler'
> drivers/block/built-in.o(.text+0x24c8):drivers/block/xilinx_sysace/xbasic_types.c:153:
> first defined here
> make[1]: *** [drivers/built-in.o] Error 1
> make: *** [drivers] Error 2
>
^ permalink raw reply
* Re: some problems on the SystemACE driver.
From: Ming Liu @ 2006-07-16 13:17 UTC (permalink / raw)
To: ammubhai; +Cc: linuxppc-embedded
In-Reply-To: <44BA09A1.50908@gmail.com>
Dear Ameet,
Good news! This time, it works well and no error during the compilation
process. Finally we solved this sucking problem! Congratulations to us!
I have tried the kernel. It works well for the SystemACE driver, although I
have not successfully made Temac work well. It shows that the network is
disconnected and there is no device symbol in /dev directory. I think I
should make this device in /dev manually and make it recognizable for
Linux, right? If any guidance, please feel free to tell me. Thanks in
advance.
> I know this might be very tedious for you. But its the same for me
>especially when there is no need for me to do it.
I will not feel it tedious because 1. in this process I can learn a lot; 2.
it's really useful for me. :-) So I would like to consume time on that.
Also, you are really helpful for my project. So if possible, I would like
to cooperate with you and do something meanningful together.
Thanks again for all your help and hard work recently.
Regards
Ming
_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com
^ permalink raw reply
* Re: [JOB] Senior Embedded Linux Video Engineer
From: Wolfgang Denk @ 2006-07-16 15:12 UTC (permalink / raw)
To: Geoff Thorpe
Cc: Olof Johansson, linuxppc-dev, Stephen Rothwell, linuxppc-embedded
In-Reply-To: <44B7E508.7020700@freescale.com>
In message <44B7E508.7020700@freescale.com> you wrote:
>
> otherwise unnoticed). Hell, if the subject header was appropriately
> keyworded - Wolfgang could even procmail it to /dev/null ;-)
Please don't try to reinvent Usenet netiquette, poorly. Commercial
ads, job ofers and the like have always been banned. It's just lately
that nobody remembers the good old days any more and everybody thinks
he can force his ideas over everybody else.
If there is demand for job offer postings, then these should be
handled on a separate mailing list.
Best regards,
Wolfgang Denk
--
You young'uns. That was *long* before AltaVista, DejaNews, or even
(gasp) the *Web*! In fact, we typed that thread on steam-powered card
punchers, and shipped it around via Pony Express.
-- Randal Schwartz in <8cwww1cd0d.fsf@gadget.cscaper.com>
^ permalink raw reply
* Re: Kexec initial registers
From: Benjamin Herrenschmidt @ 2006-07-16 15:59 UTC (permalink / raw)
To: Jimi Xenidis; +Cc: linuxppc-dev
In-Reply-To: <28C15305-BE9F-4EE7-93A2-437EAEA7B886@watson.ibm.com>
On Sat, 2006-07-15 at 22:10 -0400, Jimi Xenidis wrote:
> On Jul 14, 2006, at 5:08 PM, Benjamin Herrenschmidt wrote:
>
> > On Fri, 2006-07-14 at 12:02 -0400, Jimi Xenidis wrote:
> >> This is what I have so far:
> >>
> >> r3: address of device tree blob
> >> r4: address that kernel was loaded
> >> r5: not OF (=0)
> >
> > Correct and that's all that should be needed
> >
> >> r13: local_paca address (0?)
> >
> > You shouldn't have to care about r13 at all, it should be set by the
> > kernel before it's used. If not, please let us know as that means
> > there
> > is a bug :)
>
> Not! 99.99% :)
> When loading a kernel under Xen using kexec we set r1-r5 and set all
> other GPRS to all 5's (cuz we can) with CONFIG_PPC_EARLY_DEBUG=y and
> all hell breaks loose in the first printk()/DBG() from early_setup()
> for:
> kernel/printk.c:506
> 506 spin_lock_irqsave(&logbuf_lock, flags);
>
> where is access local_paca.
>
> I think everyone else (ot just the sane ones) just sets all GPRS to 0
Then we have a bug and we need to initialize local_paca before we call
early_setup...
Ben.
^ permalink raw reply
* Re: Kexec initial registers
From: Benjamin Herrenschmidt @ 2006-07-16 16:18 UTC (permalink / raw)
To: Jimi Xenidis; +Cc: linuxppc-dev
In-Reply-To: <1153065556.5905.4.camel@localhost.localdomain>
> > I think everyone else (ot just the sane ones) just sets all GPRS to 0
>
> Then we have a bug and we need to initialize local_paca before we call
> early_setup...
Ah ok, I see that things have changed a bit there ... well, we do have a
setup_paca(0) after the first DBG() so that should work.
Really, it's the kernel job to setup r13 before it has any use for it.
The kexec interface only specifies what is in r3..r5, everything else
can be 0xDEADBEEF as far as I'm concerned
Ben.
^ permalink raw reply
* crash in aty128_set_lcd_enable on PowerBook
From: Olaf Hering @ 2006-07-16 16:37 UTC (permalink / raw)
To: linux-kernel, linuxppc-dev
Current Linus tree crashes in aty128_set_lcd_enable() because par->pdev
is NULL. This happens since at least a week. Call trace is:
aty128_set_lcd_enable
aty128fb_set_par
fbcon_init
visual_init
take_over_console
fbcon_takeover
notifier_call_chain
blocking_notifier_call_chain
register_framebuffer
aty128fb_probe
pci_device_probe
bus_for_each_dev
driver_attach
bus_add_driver
driver_register
__pci_register_driver
aty128fb_init
init
kernel_thread
This happens on a PowerBook pismo.
^ permalink raw reply
* Re: crash in aty128_set_lcd_enable on PowerBook
From: Olaf Hering @ 2006-07-16 16:50 UTC (permalink / raw)
To: linux-kernel, linuxppc-dev
In-Reply-To: <20060716163728.GA16228@suse.de>
On Sun, Jul 16, Olaf Hering wrote:
>
> Current Linus tree crashes in aty128_set_lcd_enable() because par->pdev
> is NULL. This happens since at least a week. Call trace is:
>
> aty128_set_lcd_enable
> aty128fb_set_par
> fbcon_init
> visual_init
> take_over_console
> fbcon_takeover
> notifier_call_chain
> blocking_notifier_call_chain
> register_framebuffer
> aty128fb_probe
aty128_init calls register_framebuffer() before it assigns pdev.
2028 if (register_framebuffer(info) < 0)
2029 return 0;
2030
2031 par->pm_reg = pci_find_capability(pdev, PCI_CAP_ID_PM);
2032 par->pdev = pdev;
2033 par->asleep = 0;
2034 par->lock_blank = 0;
^ permalink raw reply
* Re: crash in aty128_set_lcd_enable on PowerBook
From: Benjamin Herrenschmidt @ 2006-07-16 19:19 UTC (permalink / raw)
To: Olaf Hering; +Cc: linuxppc-dev, linux-kernel
In-Reply-To: <20060716165004.GA16369@suse.de>
On Sun, 2006-07-16 at 18:50 +0200, Olaf Hering wrote:
> On Sun, Jul 16, Olaf Hering wrote:
>
> >
> > Current Linus tree crashes in aty128_set_lcd_enable() because par->pdev
> > is NULL. This happens since at least a week. Call trace is:
> >
> > aty128_set_lcd_enable
> > aty128fb_set_par
> > fbcon_init
> > visual_init
> > take_over_console
> > fbcon_takeover
> > notifier_call_chain
> > blocking_notifier_call_chain
> > register_framebuffer
> > aty128fb_probe
>
> aty128_init calls register_framebuffer() before it assigns pdev.
Yeah, that looks like some serious bogosity in that code. Care to send a
patch ?
> 2028 if (register_framebuffer(info) < 0)
> 2029 return 0;
> 2030
> 2031 par->pm_reg = pci_find_capability(pdev, PCI_CAP_ID_PM);
> 2032 par->pdev = pdev;
> 2033 par->asleep = 0;
> 2034 par->lock_blank = 0;
>
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox