|
|
- Mailing list questions:
- How do I unsubscribe from the mailing lists.
- General questions:
- How do I compile a kernel for ARM?
- Can I use Intel IXP425 AccessLibrary with 2.6 kernels?
- What are the available solutions for floating point
support?
- Can I use the both hard & soft float at the same time
or only choose one of them?
- When I compile my 2.6.x kernel for ARM I get a
compiler/assembler error. Any idea ?
- When I trace kernel in head.S I found problems that may
be caused by __turn_mmu_on. Any idea ?
- I'm working on a bootloader, where can I find ARM Linux
kernel booting requirements ?
- How can I access /dev/mem ? - How can I map memory in
user space ?
- I see '$a', '$d' and '$t' symbols in the
backtrace/ksymoops output/System.map/linker error messages.
What are they and how can I get rid of them ?
- Where can I find -rmk -pxa -* patches for the 2.6 kernel ?
- I'm using this 2.4 kernel, and ...
- I'm using this 2.6 kernel, and ...
- Why does my debugger trap in __arch_clear_user?
- Known toochain issues.
- Patch Submission (via git/patches etc)
- Where should patches be reviewed?
- What does rmk's "ok" mean?
- Which git commit should I base my tree on?
- How should commits in my git tree be reviewed?
- What format should I use for the git pull request?
- I have one patch. How should I submit it?
1. Mailing list questions:
- 1.1. How do I subscribe or unsubscribe from the mailing lists.
- The mailing list software appends a footer to every message sent
via the mailing lists:
-------------------------------------------------------------------
List admin: http://lists.armlinux.org.uk/mailman/listinfo/linux-arm
FAQ: http://www.armlinux.org.uk/mailinglists/faq.php
Etiquette: http://www.armlinux.org.uk/mailinglists/etiquette.php
If you point your web browser to the "list admin" address and scroll
to the bottom, where you can enter your subscribed email address.
Once this is done, you will be given instructions on how to
unsubscribe or change your options.
2. General questions:
- 2.1. How do I compile a kernel for ARM?
- [rmk]
Please see the kernel compilation
instructions.
- 2.2. I am trying to run a Linux kernel 2.6 on my Intel
IXP42x. I am using the kernel 2.6.x. This kernel does not include support
for the integrated ethernet controllers of the IXP425. I have downloaded
the AccessLibrary 1.x from Intel, but i have seen it only supports kernel
2.4. Is there any news about a new version of the AccessLibrary for 2.6
kernel?
- [19 March 2004 - ds]
Unfortunately, the only people who can help you are Intel b/c they need to
port the access library to 2.6 since the code is under a closed license and
even if someone outside Intel ported it to 2.6, they could not share the
code due to the propietary license.
- [14 December 2004 - rmk]
When we say "the only people who can help you are Intel" we mean it.
Please do not post questions about this to the ARM Linux mailing lists
on the off chance. It just winds certain people up. We can't
help you. We can't even suggest where you might get help from,
other than Intel directly. Talk to your Intel representative, or if
you don't know who that is, your manager. The best information we
have is in the above FAQ entry.
The linux-arm* lists are for supporting Open Source only and
not for random proprietary closed source products.
- [10 September 2008 - rwhitby]
As of 2.6.26, the kernel includes support for the integrated ethernet
controllers of the IXP42x (see drivers/net/arm/ixp4xx_eth.c,
arch/arm/mach-ixp4xx/ixp4xx_npe.c and arch/arm/mach-ixp4xx/ixp4xx_qmgr.c).
You are still required to download the proprietary firmware microcode from
Intel, which is loaded via hotplug.
- 2.3. I feel really confused about what's the difference
with gcc soft-float support and the kernel NWFPE/FastFPE support?
- [31 January 2004 - np]
Scenario 1 (hard-float): The compiler emits opcodes designed to be used
with a hardware floating point coprocessor (FPU). The FPU usually has a
set of extra registers for its use, and the compiler may as well pass
floating point argument to functions through those registers. This is
of course the best performing solution when a real hardware FPU is used.
Scenario 2 (soft-float): the compiler converts floating point operations
into function calls and a special library is used to provide all functions
performing the required operations, all in software with no FPU instructions
at all. There is obviously no extra floating point registers available in
this case, therefore all FP arguments to functions have to be passed through
standard registers or on the stack. This is of course the best performing
solution when no hardware FPU is available, given that the library
implementing the FP operations is optimally coded.
Now, unfortunately, the default on ARM Linux has traditionally been set to
have the compiler use hard-float, even if ARM Linux never ran on any ARM CPU
with a real hardware FPU. The CPU is therefore raising the invalid
instruction exception each time some FPU opcode is encountered. Then the
kernel traps that exception, looks at the given FPU instruction and emulates
it in software. But here not only the kernel must perform the FP operation,
it must emulates the whole hardware FPU as well. That's what NWFPE or
FastFPE are doing. This is obviously the worst performing arrangement that
can be due to the exception trap and emulation overhead
- 2.4. Can I use the both hard & soft float at the same
time or only choose one of them?
- [31 January 2004 - np]
Depends. You can use both at the same time, but not in the same application.
The problem as to do with the ABI incompatibility between soft-float and
hard-float due to the different floating point argument passing conventions.
So, if you decide to switch to using soft-float for some application, you
MUST recompile ALL the libraries that application is going to use, including
system libraries like the C library. If those libraries are dynamically
linked libraries, you then must also recompile all the applications that
share those same libraries. And then your application will run correctly
only on systems with soft-float environments, unless you link it statically
in which case it will run anywhere (even on a kernel with NWFPE configured
in -- it will simply not be invoked). That's the main reason why mainstream
ARM distributions are still reluctant to switch to soft-float because of the
associated compatibility pain.
- 2.5. When I compile my 2.6.x kernel for ARM I get a
compiler/assembler error. Any idea ?
- [2 April 2004 - rmk]
When reporting these problems, always show the full build line. This can
be obtained by re-running the make with an additional argument: V=1
- 2.6. When I trace kernel in head.S I found problems
that may be caused by __turn_mmu_on. Any idea ?
- [5 April 2004 - rmk]
Please read the comment in head.S:
/*
* Enable the MMU. This completely changes the structure of the visible
* memory space. You will not be able to trace execution through this.
* If you have an enquiry about this, *please* check the linux-arm-kernel
* mailing list archives BEFORE sending another post to the list.
*/
It's been asked soo many times that it really is a frequently asked
question. The above comment is supposed to head off further questions,
but alas... Hopefully this FAQ entry will do the job.
- [11 January 2002 - rmk]
The number 1 problem is that people just do not realise what "enabling
the MMU" means. It means that _all_ of the addressable memory _will_
change, and this normally means various regions you'd like to write to
no longer exist - in other words, if you have debugging code present
that doesn't cater for a complete change in the memory structure, then
your debugging code is buggy.
(Side note: I've even had people insist that their debugging code is
perfect, even after mentioning the above, and then we've gone through
several mails, ended up having the debugging code posted, and it turns
out to buggy, assuming that the LEDs at some random address are still
accessible.)
The best advice is if you're using your own debugging code, remove it.
Use the debugging printascii() stuff for your platform in
arch/arm/kernel/debug-armv.S (enabled by CONFIG_DEBUG_LL) and drop a
printascii() into printk() (kernel/printk.c) just after the vsprintf()
call, and monitor the relevant serial port.
- 2.7. I'm working on a bootloader, where can I find ARM
Linux kernel booting requirements ?
- [7 June 2004 - rmk]
First of all, we don't need another boot loader. If you're planning on
writing one from scratch, please don't. Use one of the existing boot
loaders, such as blob or uboot.
For kernel booting requirements, please see the website:
- 2.8. How can I access /dev/mem ? - How can I map memory
in user space ?
- [10 July 2004 - rmk]
No need to reinvent the wheel, you will find a sample implementation of this
type of thing in devmem2. See
http://www.lartmaker.nl/lartware/port/devmem2.c
for the source.
- 2.9. I see '$a', '$d' and '$t' symbols in the
backtrace/ksymoops output/System.map/linker error messages.
What are they and how can I get rid of them ?
- [12 July 2004 - rmk]
These are "mapping symbols", which are used in the generation of some
binary formats, added by binutils 2.15. Unfortunately, they leak into
the symbol table, and as such interfere with the linkers ability to
find the correct symbol to report for error messages. They also appear
in the objdump --syms and nm outputs, and affect the
operation of the kernel backtrace and ksymoops outputs.
In order to work around this problem, I recommend not using binutils 2.15
for the time being. Please use an earlier binutils version like 2.14
instead. However, please ensure that you have applied this
fix.
- 2.10. Where can I find -rmk -pxa -* patches for the
2.6 kernel ?
- [21 December 2005 - eb]
Since 2.6, all the ARM support is directly pushed in the mainstream kernel,
so you shouldn't need any patch. Just get the official 2.6.x stable kernel
from http://www.kernel.org/ or the
latest development version from the git tree at
http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary.
Russell King's development git tree is synced every two days with Linus'
tree so you only need to keep synced with Linus' one. As usual, you will
find patches awaiting review in Russell King's patch system
here: http://www.armlinux.org.uk/developer/patches/
- 2.11. I'm using this 2.4 kernel, and...
- [27 July 2006 - erikm]
2.4 support has been abandoned. Don't ask questions about 2.4 on these
lists, use the latest 2.6 kernel, and try to recreate the problem. If it
still persists, then ask on the list.
- 2.12. I'm using this 2.6 kernel, and...
- [27 July 2006 - erikm]
First make sure that you are running the latest stable kernel. Bugs in
older kernels are a waste of everyone's time. Try to recreate your
problem with the latest stable kernel and if it persists, ask on the
list. The latest stable kernel releases can be found at
http://www.kernel.org/kdist/finger_banner
- 2.13. Why does my debugger trap in __arch_clear_user?
- [24 August 2006 - rmk]
This is normal. As the kernel operates a demand paged memory system, pages
are faulted in via data aborts and prefetch aborts. However, some debuggers
assume that data or prefetch aborts means that your program did something
wrong, and halt program execution on these events. Therefore, you need to
disable this behaviour in your debugger.
- 2.14. Known toochain issues.
- [14 July 2009]
The CodeSourcery Sourcery G++ Lite 2007q3-51 toolchain (gcc version 4.2.1) is
broken with -fomit-frame-pointer. Without frame pointer, gcc tries to be smart
and optimise the tail call. However, it gets it terribly wrong.
3. General questions:
- 3.1. Where should patches be reviewed?
- [rmk]
Patches should be reviewed on the mailing list prior to submission. This
forfills two aspects - allowing people on the mailing list to review your
work, and letting others know of your work.
- 3.2. What does rmk's "ok" mean?
- [rmk]
It means that rmk is happy with the patch for it to be submitted. It
does not mean you can add an 'Acked-by' tag for rmk to a patch going to
the patch system. 'Signed-off-by' should also not be used - when patches
are merged from the patch system, rmk's sign-off will be automatically
added.
- 3.3. Which git commit should I base my tree on?
- [rmk]
Linus' tree, or some previously submitted point. Never on rmk's
constantly regenerated devel branch - because it is constantly
regenerated.
- 3.4. How should commits in my git tree be reviewed?
- [rmk]
A possible way to export patches for mailing list review is using
git-format-patch. This generates a set of patch files, one per
commit, which can then be emailed as separate attachments (one per
email message).
Alternatively, git-send-email will send a set of emails for you, but
requires some configuration. Historically, git-send-email hasn't set
proper email headers resulting in some mail servers rejecting the
generated messages for various reasons.
- 3.5. What format should I use for the git pull request?
- [rmk]
git pull requests should be formatted so that they contain the following
information:
- The commit ID which the patches are based upon
- The URL and branch name (on the same line) to be pulled
- The diffstat for the changes being submitted
- A list of the changes contained within the pull
The 'git-request-pull' command generates a suitable pull message.
- 3.6. I have one patch. How should I submit it?
- [rmk]
git can be problematical for submission of one patch - if the parent
git commit is mischosen, or the pull request is of the wrong format,
it takes time to resolve. A patch sent to the patch system is much
more flexible - it doesn't have those issues. So, in some ways, having
the patch outside of 'git' makes it quicker and easier to merge into git.
People listed above:
- ds - Deepak Saxena
- eb - Eric Benard
- erikm - Erik Mouw
- np - Nicolas Pitre
- rfs - Ralph Siemsen
- rmk - Russell King
- rwhitby - Rod Whitby
Special thanks to Eric Bénard for volunteering to look after this FAQ.
|
|