hi,
first of all, this isn't meant to be a distro trolling discussion, there
are better places for that ;-)
several days ago google HO started to fail after updating my debian/sid
setup. as discussed on G+ [1] and on googlegroups [2], that seemed to be
impacting anyone on debian/sid. when i realized that it was working on
debian/testing (Jessie) i decided just use 'testing'... however since last
evening update on 'testing', it started to fail too.. leaving me without
any working HO at all, which is quite inconvenient at Linaro..
after bisecting my system using snapshot.debian.org, i figured out which
package was the culprit:
# apt-cache policy libcairo2
libcairo2:
Installed: 1.12.14-4
Candidate: 1.12.14-4
Package pin: 1.12.14-4
Version table:
1.12.16-2 1001
500 http://ftp.fr.debian.org/debian/ testing/main amd64 Packages
*** 1.12.14-4 1001
500 http://snapshot.debian.org/archive/debian/20130927T214600Z/testing/main
amd64 Packages
100 /var/lib/dpkg/status
Simply downgrading libcairo2 [3] 'fixes' the problem. I know it's not
'fixing' it really, but i hope that this will be enough information so that
the real fix is uploaded.
In the mean time, if any of use use Debian , you can use that as a
workaround..
cheers
nico
[1] https://plus.google.com/u/0/108790110407014289037/posts/5q22d1ReavG
[2] https://productforums.google.com/d/msg/hangouts/vYsaeEnXJXs/hOy2HaW5LKoJ
[3]
http://snapshot.debian.org/archive/debian/20130927T214600Z/pool/main/c/cair…
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
As I've made a fair bit of headway since LinaroConnect, I wanted to
drop a line on my current progress with porting TianoCore to KVM
Summary (tl;dr version):
KVM can start TianoCore, and boot all the way to shell, and access
HDDs via VirtioBlk. We can start grub and successfully retrieve files
from ext partitions, load a device tree, and start the kernel. The
kernel runs through most of the EFI stub, but falls over during
ExitBootServices()
Long Version:
So, after much blood sweat and tears, we're finally at the point of
trying to actually start a kernel, though this (for the moment)
remains an elusive goal. The current problem is that once we call
EBS(), we get an exception from EFI with no Image information, which
means the exception handler doesn't know where it came from. After
several seconds, we get a second exception from within DxeCore, and
then EFI falls over.
Debugging EFI is difficult and error prone, combined with limited
debug facilities from the gdb-stub in QEMU (no breakpoints), and no
decent way to load all of EFI itself (you have to run add-symbol-file
manually with the output of commands printed on the console;
supposedly its possible to generate a giant GdbSyms.dll file to import
in a single go, but I haven't succeeded at this). This is further
complicated that it appears we're asserting somewhere in a driver, and
short of adding printfs to *every* driver, its impossible to know
which is asseting.
Previous attempts to debug assets shows that EFI does "odd" things to
the stack when we hit an exception, making walking it with GDB
impossible. I need to figure out what madness EFI does with my SP so I
can get the entire stack on an explosion, but this remains at best
hopeful thinking.
Further complicating things is that during EBS, my print debugging
goes away. I might just cheat and roll a simple assembly function to
bang out messages through serial without calling anything else. Ugly
as sin, but this should let me get useful debug output through the EBS
framework. Complicating matters is that I need to locate each and all
EBS() event functions, which are spread *everywhere* in TianoCore, and
then debug them each individually.
I'm open to ideas on how best to accomplish this.
On a larger scale, there are a couple of other bugs and odds and ends
which currently affect us:
* wfi doesn't work
THis is probably the biggest w.r.t. to functionality that should work,
but doesn't. The EFI event loop is built on checking the timer, then
calling wfi to check the timer later. The problem here is we call wfi
... and UEFI never comes back despite events firing (I can put print
code in the interrupt handler to confirm this). This may be related to
the VGIC errors I get running kvm under foundation, but haven't taken
the time to properly nail down the bug here.
This was worked around by commenting out the wfi, turning event loop
into a busy loop, but this has to be resolved before we can ever
consider merging it
* No RTC
I looked through virt.c in KVM, and as best I can tell, I've got no
RTC at all (no PL031). It also appears that the kernel can't get RTC
as running a kernel gets me a 1970 clock. I'm not sure if this is by
design or not, but it causes GetTime() to return EFI_ERROR, and I
suspect may be one of the exceptions I'm getting avoid (Shell prints a
ton of warnings that GetTime is busted).
* No terminfo support (not ARM specific)
EFI assumes its working against a real console or terminal. As such,
it doesn't respect anything like termcap or such, and output gets
jumbled due to incorrect escape sequencies and such. This isn't
specific to ARM as I get identical behavior with OVMF running on stdio
or over telnet. Backspace for instance requires me to type ^H into the
console manually
As we expect to have this usable remotely, we need to determine how to
handle the terminal and escape sequences properly so we're not
printing garbage to the screen. A "dumb" mode might just be the best
way to handle this, but something like grub do display fancy graphics.
Ideas welcome.
If anyone wants to play with it, my code is on git, but requires a bit
of setup to get running, and you need a patch to KVM to successfully
start UEFI at the moment.
Michael
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.14 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQEcBAEBAgAGBQJTNTJTAAoJEGKVRgSEnX1Qm2YH/jzWQjB/DPSHdv33hUlxVuIm
j2AGElid7HM+3gp5U/ILdXvCyP9LFg8RATsvUa7bSHdwFZxRdAqYUWzm/Jxg6ZYV
kyTzTDuPhbXp8koVLF14H/oGlpwnEH5rhzNa3UeRZTNYnNp3UMeZ1NXgGu9ziCfk
hMGGteTMfV/6fGD6AETtlpD99KKwFiprD198QAil2rpVRi4WZBcgp7Y9/c/+cLfy
sJD7p+zN8jBh9r9njpxh0o5rrQoG3N1NAemPGbSAc+qMMYCDOmjasGLwYiJuuMDy
apRBM9+pbYsEgBGxM1z3XGywBJWBaLGzizk8vfPN2kN70/F7RW89X1rqG/95Ais=
=OwC0
-----END PGP SIGNATURE-----
From: Daniel Lezcano <daniel.lezcano(a)linaro.org>
Add the support to run a command line with idlestat:
./idlestat -o out.dat -- /bin/sleep 3
Without the '-t' option, idlestat will blindly use the current buffer
size which may not fit with the 'command' duration and lead to a buffer
overflow.
With the example, it would make sense to set the buffer size:
./idlestat -o out.dat -t 3 -- /bin/sleep 3
This is a workaround, until we find a way to set the buffer size automatically.
Signed-off-by: Daniel Lezcano <daniel.lezcano(a)linaro.org>
---
idlestat.c | 49 +++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 43 insertions(+), 6 deletions(-)
diff --git a/idlestat.c b/idlestat.c
index 53ca1c7..f0c6467 100644
--- a/idlestat.c
+++ b/idlestat.c
@@ -36,6 +36,7 @@
#include <sys/time.h>
#include <sys/types.h>
#include <sys/resource.h>
+#include <sys/wait.h>
#include <assert.h>
#include "idlestat.h"
@@ -112,6 +113,7 @@ static int display_states(struct cpuidle_cstates *cstates,
(c->min_time == DBL_MAX ? 0. : c->min_time),
c->max_time);
}
+
if (pstates) {
for (j = 0; j < pstates->max; j++) {
struct cpufreq_pstate *p = &(pstates->pstate[j]);
@@ -1022,7 +1024,7 @@ int getoptions(int argc, char *argv[], struct idledebug_options *options)
return -1;
}
- return 0;
+ return optind;
}
static int idlestat_file_for_each_line(const char *path, void *data,
@@ -1108,14 +1110,47 @@ static int idlestat_wake_all(void)
return 0;
}
-int main(int argc, char *argv[])
+static int execute(int argc, char *argv[], char *const envp[],
+ struct idledebug_options *options)
+{
+ pid_t pid;
+ int status;
+
+ /* Nothing to execute, just wait an amount of time */
+ if (!argc)
+ return sleep(options->duration);
+
+ pid = fork();
+ if (pid < 0) {
+ perror("fork");
+ return -1;
+ }
+
+ if (pid == 0 && execve(argv[0], argv, envp)) {
+ perror("execv");
+ exit(1);
+ }
+
+ if (pid) {
+ waitpid(pid, &status, 0);
+
+ if (WIFEXITED(status) && !WEXITSTATUS(status))
+ return 0;
+ }
+
+ return -1;
+}
+
+int main(int argc, char *argv[], char *const envp[])
{
struct cpuidle_datas *datas;
struct cpuidle_datas *cluster;
struct idledebug_options options;
struct rusage rusage;
+ int args;
- if (getoptions(argc, argv, &options))
+ args = getoptions(argc, argv, &options);
+ if (args <= 0)
return 1;
/* We have to manipulate some files only accessible to root */
@@ -1128,7 +1163,7 @@ int main(int argc, char *argv[])
init_cpu_topo_info();
/* Acquisition time specified means we will get the traces */
- if (options.duration) {
+ if (options.duration || args < argc) {
/* Read cpu topology info from sysfs */
read_sysfs_cpu_topo();
@@ -1151,14 +1186,16 @@ int main(int argc, char *argv[])
/* Start the recording */
if (idlestat_trace_enable(true))
return -1;
+
/* We want to prevent to begin the acquisition with a cpu in
* idle state because we won't be able later to close the
* state and to determine which state it was. */
if (idlestat_wake_all())
return -1;
- /* Do nothing */
- sleep(options.duration);
+ /* Execute the command or wait a specified delay */
+ if (execute(argc - args, &argv[args], envp, &options))
+ return -1;
/* Wake up all cpus again to account for last idle state */
if (idlestat_wake_all())
--
1.7.9.5
Hi. I am interested in participating in Google Summer of Code - 2014 with
Linaro and working on two of the ideas from Ideas page [1]:
AArch64 porting of Free Software Packages - I am amazed going through the
details mentioned at [2] about the use of assembly in packages. I would
like to discover more, and figure out where I could contribute.
Port UEFI to Low-Cost Embedded Platform - Although I have not used a system
with UEFI before, I want to know more about the low level interaction that
occurs between the kernel and the hardware.
Please help me get started and gain a better understanding of what
implementing each of these ideas would involve.
About me:
I can program with C, Perl, Python, Processing and Shell Scripts. I built a
game for the Intel Perceptual Computing Challenge-2013 [3] and have
experience with development for the Beagleboard and Pandaboard. I am
currently reading Greg K-H's Linux Device Drivers to figure out how drivers
work. I am also learning the x86 assembly language. I have been an open source
user for a long time, and have a commit integrated into GNOME's Anjuta IDE
[4]
I recently worked with Red Hat on testing the effectiveness of random
number generators on a virtual machine with qemu.[5]
I also have a fair know-how of git.
[1] https://wiki.linaro.org/SummerOfCode2014/ProjectIdeas
[2] https://wiki.linaro.org/LEG/Engineering/OPTIM/Assembly
[3]
http://varadgautam.wordpress.com/2013/09/26/bender-a-game-using-the-intel-p…
[4]
https://git.gnome.org/browse/anjuta/commit/?id=eb10532632014b59505c788ffad4…
[5]
http://varadgautam.wordpress.com/2013/12/17/dieharder-tests-on-a-qemu-vm-1-…
Thanks.
Varad
Hello,
As final steps of migrating infrastructure/CI projects from bzr to git,
lci-build-tools repository (having a shortcut of lp:linaro-ci) was
migrated to https://git.linaro.org/ci/lci-build-tools.git . All jobs
directly referencing it on https://ci.linaro.org were already updated.
However, according to Fathi, there may be wrapper build scripts, hosted
elsewhere, which may fetch lci-build-tools on their own. So, if you
use/maintain such script, please update it to use git. It should be
something like replacing:
bzr branch lp:linaro-ci lci-build-tools
with:
git clone https://git.linaro.org/ci/lci-build-tools.git
Please kindly update your scripts during next week. On March 21, bzr
repository will be shutdown, in an effort to formally finish
the migration, catch last usages of the old repository, and avoid future
confusion.
Let us know if you have concerns with the plan above.
Thanks,
Linaro Infrastructure team
Linaro.org | Open source software for ARM SoCs
Follow Linaro: http://www.facebook.com/pages/Linarohttp://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog
Hi,
I'm struggling with this problem for days.
I've compiled kernel using yocto for beagleboard xm.
*After kernel is booted, no termial login prompt shows up :/*
I suppose that the problem is related with moving to ttyO2 from ttyS0
u-boot commands:
setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 zImage.bin; bootz
0x80300000'
setenv bootargs 'console=tty0 console=ttyO2,115200n8 root=/dev/mmcblk0p2 rw
rootfstype=ext3 rootwait'
qemu :
/usr/local/bin/qemu-system-arm -M beaglexm -drive
if=sd,cache=writeback,file=/dev/sdb -clock unix -serial stdio
inittab line:
O2:12345:respawn:/sbin/getty 115200 ttyO2
nothing shows up in tty0 or ttyO2 (except kernel info)
Version of qemu: 1.7.0
It could be related to https://bugs.launchpad.net/qemu-linaro/+bug/714600