Hi
I was cross-compiling a Linux kernel 2.6.38 for a Gumstix Overo
which is a tiny ARM (TI OMAP 35xx) based single board computer.
I was using Linaro cross compiler (arm-linux-gnueabi-gcc) did not
give an uImage that gets pass the Loading uImage. My console is
ttyO2 and therefore it was not an issue. So I used Code Sourcey
G++ Lite (64 bits version without ia32 library) and the kernel image
uImage.bin built with the same configuration file (.config) but with
different cross compiler can boot up to the stage that the kernel
tries to mount ext3 partition on microSD card. So I suspect the
package gcc-linux-arm-gnueabi has some bugs. I have a working
2.6.35 kernel (although I do not have the .config file with settings
which I have used to build that) that was built with Linaro Gcc 4.3
or 4.4. I suspect the Linaro Gcc 4.5.x and above are giving me a
problem. I used the Linaro media create tool with root file system
and hardware pack but it also could not help me boot nor give me
the right config file which I can use to cross compile a working
kernel (that is booting kernel) for Overo computer.
So I tried also native compilation using Linaro GCC 4.5 but it is
not working. I wonder has anyone face the same issue like me,
I think I am wrong somewhere (the last time I cross compile the
kernel was pretty much straight forward and I dont remember I
had to patch the kernel I fetched from a git repository. But I will
be glad to hear who has faced similar problems like me. Any tips
will be appreciated. Even better, I will be glad to learn where did
you download (git fetch or git clone or wget or just http download),
your tool chain, your workstation (my original laptop was 32 bits
dual core DELL and now I am using a 64 bits Intel i7 so I am not
sure which set up is biting me). Any tip or link will be appreciated.
Sincerely
Aung
Hey Arnd, Rob,
So after Arnd's help sorting a workaround for the mmc driver, I'm
now trying to sort out the following HDMI failure I'm seeing w/ the
current 3.5-rc with my Panda Board.
[ 2.973693] omapdss error: HPD IRQ request failed
[ 2.978759] omapdss HDMI error: failed to power on device
[ 2.982391] smsc95xx 1-1.1:1.0: eth0: register 'smsc95xx' at
usb-ehci-omap.09
[ 2.996459] omapdss error: failed to power on
[ 3.001037] omapfb omapfb: Failed to enable display 'hdmi'
[ 3.006805] omapfb omapfb: failed to initialize default display
[ 3.013183] Console: switching to colour dummy device 80x30
[ 3.022430] omapfb omapfb: failed to setup omapfb
[ 3.027374] omapfb: probe of omapfb failed with error -5
Any guesses on this?
thanks
-john
Hello,
are there any thoughts on how much of the perf.data is portable and how much it should be?
I'm interesting in recording scheduler activity on one machine and then replaying on
another. As I can see, replaying x86 perf.data on ARM doesn't work. At least, should it
work with a small subset of recorded events (for example, sched:sched_switch,
sched:sched_process_exit, sched:sched_process_fork, sched:sched_wakeup
and sched:sched_migrate_task) on the same architecture?
Thanks in advance,
Dmitry
The usual cpuidle initialization routines are to register the
driver, then register a cpuidle device per cpu.
With the device's state count default initialization with the
driver's state count, the code initialization remains mostly the
same in the different drivers.
We can then add a new function 'cpuidle_register' where we register
the driver and the devices. These devices can be defined in a global
static variable in cpuidle.c. We will be able to factor out and
remove a lot of duplicate lines of code.
As we still have some drivers, with different initialization routines,
we keep 'cpuidle_register_driver' and 'cpuidle_register_device' as low
level initialization routines to do some specific operations on the
cpuidle devices.
Signed-off-by: Daniel Lezcano <daniel.lezcano(a)linaro.org>
---
drivers/cpuidle/cpuidle.c | 34 ++++++++++++++++++++++++++++++++++
include/linux/cpuidle.h | 3 +++
2 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index b8a1faf..2a174e8 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -23,6 +23,7 @@
#include "cpuidle.h"
DEFINE_PER_CPU(struct cpuidle_device *, cpuidle_devices);
+DEFINE_PER_CPU(struct cpuidle_device, cpuidle_device);
DEFINE_MUTEX(cpuidle_lock);
LIST_HEAD(cpuidle_detected_devices);
@@ -391,6 +392,39 @@ int cpuidle_register_device(struct cpuidle_device *dev)
EXPORT_SYMBOL_GPL(cpuidle_register_device);
+int cpuidle_register(struct cpuidle_driver *drv)
+{
+ int ret, cpu;
+ struct cpuidle_device *dev;
+
+ ret = cpuidle_register_driver(drv);
+ if (ret)
+ return ret;
+
+ for_each_online_cpu(cpu) {
+ dev = &per_cpu(cpuidle_device, cpu);
+ dev->cpu = cpu;
+
+ ret = cpuidle_register_device(dev);
+ if (ret)
+ goto out_unregister;
+ }
+
+out:
+ return ret;
+
+out_unregister:
+ for_each_online_cpu(cpu) {
+ dev = &per_cpu(cpuidle_device, cpu);
+ cpuidle_unregister_device(dev);
+ }
+
+ cpuidle_unregister_driver(drv);
+
+ goto out;
+}
+EXPORT_SYMBOL_GPL(cpuidle_register);
+
/**
* cpuidle_unregister_device - unregisters a CPU's idle PM feature
* @dev: the cpu
diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
index f3ebbba..17e3d33 100644
--- a/include/linux/cpuidle.h
+++ b/include/linux/cpuidle.h
@@ -133,6 +133,7 @@ struct cpuidle_driver {
#ifdef CONFIG_CPU_IDLE
extern void disable_cpuidle(void);
extern int cpuidle_idle_call(void);
+extern int cpuidle_register(struct cpuidle_driver *drv);
extern int cpuidle_register_driver(struct cpuidle_driver *drv);
struct cpuidle_driver *cpuidle_get_driver(void);
extern void cpuidle_unregister_driver(struct cpuidle_driver *drv);
@@ -150,6 +151,8 @@ extern int cpuidle_wrap_enter(struct cpuidle_device *dev,
#else
static inline void disable_cpuidle(void) { }
static inline int cpuidle_idle_call(void) { return -ENODEV; }
+static inline int cpuidle_register(struct cpuidle_driver *drv)
+{return -ENODEV; }
static inline int cpuidle_register_driver(struct cpuidle_driver *drv)
{return -ENODEV; }
static inline struct cpuidle_driver *cpuidle_get_driver(void) {return NULL; }
--
1.7.5.4