Posts

Showing posts from 2009

Germany Training confirmed

Anyone in Nuremberg? ;)

Activity : Linux Kernel Internals and Crash Dump Analysis
Activity Code : Linux-IHC-001
Type : Internally Held Classroom
From : 01/26/2010
To : 01/28/2010
Facility: EMEA - Nuernberg, DEU

silent splash progress bar does not progress

I got a laptop from my employer (Novell) nearly 3 months ago. I installed both Gentoo and SLED in it. I didn't setup fbsplash on it when I installed Gentoo. I tried it today.

However, I found the progress bar in silent mode did not progress. It stayed at "Initializing kernel", 0%.

Finally, I found the reason was that I didn't have "/lib/rc/plugins" directory and as a consequence splashutils openrc plugin splash.so can't be installed into this directory. And that's why the progress bar does not progress.

I think maybe it is a bug in openrc. But I am not sure and I can't investigate it further today, it is already 3 pm. :( So I just left a note here. :)

Update on building mips64el cross toolchain

1. git clone git://www.gentoo-cn.org/var/git/loongson.git

2. Don't include loongson overlay's directory directly in your PORTDIR_OVERLAY. But in your own overlay, like /usr/local/portage, create symlinks pointing to sys-devel/ and sys-libs/glibc in loongson overlay. This is because you may not want to install packages from loongson overlay in your host machine. Also you need to make sure your own overlay is the first overlay containing binutils/gcc/glibc in your PORTDIR_OVERLAYS list. You may check the value of this list using command:
portageq envvar PORTDIR_OVERLAY
3. Then, just run crossdev -t mips64el-unknown-linux-gnu. This command installed the following components on my host machine:
linux-headers-2.6.27-r2 from portage.binutils-2.19.1-r1 from loongson overlay.gcc-4.4.2 from portage. The gcc in loongson overlay currently is just a symlink to portage gcc.glibc-2.9_p2009042 from loongson overlay. However if you build the toolchain now, glibc-2.10.1 will be installed instead, …

Setting CFLAGS on a per-package basis

Update: as reported by Fai Wong, -O1 is actually fine. Obviously, it must be some flag(s) which is(are) enabled at -O2 but not at -O1 caused this problem. However, it is not a priority ATM. Anyone who is interested in it is welcome to investigate it further.

As I have mentioned earlier, sqlite compiled with -O2 may cause xulrunner to segfault in N32 userland on Loongson. Well, I almost forget it.

So to remove the -O2 from CFLAGS once and for all, I adopted the technique described here.
zhangle@2f env $ pwd
/etc/portage/env
zhangle@2f env $ find
.
./dev-db
./dev-db/sqlite
./O2-removal
zhangle@2f env $ cat O2-removal
pre_pkg_setup() {
elog "bashrc is removing \"-O2\" from CFLAGS for $PN"
CFLAGS="${CFLAGS/-O2/}"
}
zhangle@2f env $ ls -l dev-db/sqlite
lrwxrwxrwx 1 zhangle zhangle 13 2009-08-01 16:10 dev-db/sqlite -> ../O2-removal

About the kernel of Loongson 2F machine

I just found that, it is actually very easy to trigger the problem that the -mfix-ls2f-kernel as option could fix. Like just emerging glibc could hang the system. So if you are using linux-loongson/2.6.30/stable branch from this git tree http://dev.lemote.com/git?p=rt4ls.git;a=summary, you maybe want to line 129 of arch/mips/Makefile:
$(call cc-option,-march=loongson2f,-march=r4600) $(call cc-optoin,-mtune=loongson2f)to
$(call cc-option,-march=loongson2f,-march=r4600) $(call as-option,-Wa$(comma)-mfix-ls2f-kernel,)Actually, $(call cc-optoin,-mtune=loongson2f) here is not required.

BTW, glibc-2.10.1 is ready in my overlay. This version could solve the gdb issue:
Error while reading shared library symbols:
find_new_threads_callback: cannot get thread info: generic error
find_new_threads_callback: cannot get thread info: generic errorThis happened previously when debugging multithread applications.

More on Yeeloong status

I have not blogged here for some time. But that does not necessarily mean I am slacking, ;). Instead I have been doing things. I should've blogged more.

http://www.gentoo-cn.org/gitweb/?p=loongson.git;a=shortlog

Redhatter posted two blogs related to Yeeloong's status. I guess I should say something too.

First of all, I recommend this mailing list http://groups.google.com/group/loongson-dev to those who want to know the latest news about Loongson. If you want to try Gentoo on Yeeloong, you can take this http://www.gentoo-cn.org/~zhangle/loongson_mips3_n32_mplt_20081231.tar.bz2 The file's sha256sum is c94bcd45e58e5f4b8314942a6b3110a2316fd74adb009c8269d1e8e2077d7c72. Please note the userland is N32 ABI, meaning there may be more problems than in O32. But I should've already solved many of them for you.

I have been working on Fuloong 2E/2F and Yeeloong's support, particularly N32 ABI system. Firefox is just one example.

I have 3 Loongson machines, all donated by lemote:
One …

MIPS N32 firefox 3.5 beta4

Image
It is working too. The xulrunner's ebuild is already in loongson overlay. For the mozilla-firefox ebuild, just use the one from mozilla overlay.

If you experienced segfault, try to re-emerge sqlite with no optimization. Using the bundled sqlite surely is not an optimal solution, ;)

One more thing: Xorg's siliconmotion driver is now working on yeeloong notebook: http://bugs.freedesktop.org/show_bug.cgi?id=21528

MIPS N32 firefox in acid3 test

Image
My quest for MIPS N32 firefox could finally come to an end, since I just got it scores the same as X86 firefox.

Remember I said it would encounter bus error on a few websites in my last related post. But I didn't plan to look into this issue before dealing with cache aliasing problem.

However, since Rayson Ho helped me to locate the exact cause of this issue, I decided to finish it first.

The problem is caused by unaligned access of ldc1/sdc1 instruction. These two instructions' operand must be 8 bytes aligned. But when crashing, the operand is only 4 bytes aligned.

After some discussion and experimenting, I found a workaround for sina.com.cn crashing problem. Yeah, a padding pointer sounds scary and fragile, but it did work. Before posting any comment to this, please make sure you have read all the emails in that thread.

Then Fai Wong reported to me that it still crash in acid3 test. So I took another look. This time the problem happened in a different location, and it is harder t…

Ftrace is working now on my loongson box

http://www.linux-mips.org/archives/linux-mips/2009-04/msg00112.html

So I confirmed that this MIPS ftrace support is really working. Thanks to Wu Zhangjin (吴章金). However, I have no interest in finding out what kind of difference between my loongson2f patch and wu's caused wu's ftrace patch does not work on top of my loongson 2f patch. What I would like to see now is to get loongson2f patch merged into mainline.

Plus, I wish I could make loongson linux to be able to use 4k page(Now, loongson could only use 16k page in order to avoid d-cache aliasing). I have already started working on it now. Even if it turns out that I can't, I could tell others what I have done in order to achieve this goal. And by that time, I would've got a much deeper understanding of Linux's memory management subsystem.

Two more kernel patches

This one is MIPS related, already accepted:
MIPS: Fix TIF_32BIT undefined problem when seccomp is disabled

This one is proc filesystem related:
[PATCH] filp->f_pos not correctly updated in proc_task_readdir

The later one is also MIPS related actually, in a peculiar way:
MIPS N32 does not have getdents64 system call. And because of readdir's implementation in glibc, this bug will be triggered when trying to run pstree or simply 'ls /proc/xxxx/task', where xxxx is the pid of a multithread process.

Firefox for MIPS N32 ABI

Finally, I could announce that it is working (tm).
I just submitted the patches (together with O32 ABI patch) to upstream.
https://bugzilla.mozilla.org/show_bug.cgi?id=482759

This is a big step forward for MIPS N32 GNU/Linux desktop.

One thing to note though: It (the N32 one) would encounter bus error on a few websites, e.g. www.sina.com.cn. I will try to find out why later when I have time.

For those who are into long stories, please read on:

I finally sorted out the font size problem, independently. It turned out that the problem is caused by strict aliasing issue in NSPR (NetScape Portable Runtime). Specifically, when parsing css file, in order to get the font size, PR_strtod() will be used to convert string to floating point value. But because of the strict aliasing issue, certain code in PR_strtod will be optimized out if -fstrict-aliasing is turned on, which is just the case if -O2 is used. And as a result, the floating point value would be wrong, e.g. "1.5" will be converte…

mips64el-unknown-linux-gnu cross toolchain building

NOTE: I just updated the command at the bottom, again. No big change. Now all should be good to go, including building on PS3, which is big endian.

Crossdev is a great tool. Thanks to vapier.
However, it may not work in all circumstances, although the problems may not lie in crossdev itself. For example, when creating mips64el-unknown-linux-gnu cross toolchain.
The problems happen when building glibc headers. Because at that time, we don't have cross gcc yet. So some gcc options only cross gcc supports or some macros only cross gcc defines can't be used.
Also happen when building gcc on big endian machines. Because of the erroneous LD_LIBRARY_PATH setting, cc1 generated in stage 1 will try to load libgcc_s.so.1 generated in stage 1, which is little endian.
So I made some work-arounds. These are the three patches needed:
one patch to src_compile.eblit
a second patch to src_install.eblit
a third patch to gcc ebuild
These are all small changes, but took me a lot of time to investigate.

To …

MIPS N32 patch for xulrunner(firefox)

Finally, I have produced some results. I have watched 6 seasons of 24 and 2 seasons of Friends since late last month. So this is delayed. :P
The patch is here.
I think it still need some tweaks, you can always get the latest patch in my loongson overlay on http://www.gentoo-cn.org/gitweb.

The produced xulrunner could run a little example:
http://dev.gentoo.org/~r0bertz/xulrunner/myapp.tar.bz2
(untar the tarball, cd myapp && xulrunner-1.9 application.ini)

However, I haven't got a fully functioning firefox yet.
Some font size is extremely large. And sometimes bus error.

I have noticed that I have used -O3 to compile it.
I will try -O2/-O1 later and see if it still bus error.