diff options
Diffstat (limited to 'Documentation')
82 files changed, 2907 insertions, 1701 deletions
diff --git a/Documentation/BUG-HUNTING b/Documentation/BUG-HUNTING index ca29242dbc3..65b97e1dbf7 100644 --- a/Documentation/BUG-HUNTING +++ b/Documentation/BUG-HUNTING @@ -1,3 +1,56 @@ +Table of contents +================= + +Last updated: 20 December 2005 + +Contents +======== + +- Introduction +- Devices not appearing +- Finding patch that caused a bug +-- Finding using git-bisect +-- Finding it the old way +- Fixing the bug + +Introduction +============ + +Always try the latest kernel from kernel.org and build from source. If you are +not confident in doing that please report the bug to your distribution vendor +instead of to a kernel developer. + +Finding bugs is not always easy. Have a go though. If you can't find it don't +give up. Report as much as you have found to the relevant maintainer. See +MAINTAINERS for who that is for the subsystem you have worked on. + +Before you submit a bug report read REPORTING-BUGS. + +Devices not appearing +===================== + +Often this is caused by udev. Check that first before blaming it on the +kernel. + +Finding patch that caused a bug +=============================== + + + +Finding using git-bisect +------------------------ + +Using the provided tools with git makes finding bugs easy provided the bug is +reproducible. + +Steps to do it: +- start using git for the kernel source +- read the man page for git-bisect +- have fun + +Finding it the old way +---------------------- + [Sat Mar 2 10:32:33 PST 1996 KERNEL_BUG-HOWTO lm@sgi.com (Larry McVoy)] This is how to track down a bug if you know nothing about kernel hacking. @@ -90,3 +143,63 @@ it does work and it lets non-hackers help fix bugs. And it is cool because Linux snapshots will let you do this - something that you can't do with vendor supplied releases. +Fixing the bug +============== + +Nobody is going to tell you how to fix bugs. Seriously. You need to work it +out. But below are some hints on how to use the tools. + +To debug a kernel, use objdump and look for the hex offset from the crash +output to find the valid line of code/assembler. Without debug symbols, you +will see the assembler code for the routine shown, but if your kernel has +debug symbols the C code will also be available. (Debug symbols can be enabled +in the kernel hacking menu of the menu configuration.) For example: + + objdump -r -S -l --disassemble net/dccp/ipv4.o + +NB.: you need to be at the top level of the kernel tree for this to pick up +your C files. + +If you don't have access to the code you can also debug on some crash dumps +e.g. crash dump output as shown by Dave Miller. + +> EIP is at ip_queue_xmit+0x14/0x4c0 +> ... +> Code: 44 24 04 e8 6f 05 00 00 e9 e8 fe ff ff 8d 76 00 8d bc 27 00 00 +> 00 00 55 57 56 53 81 ec bc 00 00 00 8b ac 24 d0 00 00 00 8b 5d 08 +> <8b> 83 3c 01 00 00 89 44 24 14 8b 45 28 85 c0 89 44 24 18 0f 85 +> +> Put the bytes into a "foo.s" file like this: +> +> .text +> .globl foo +> foo: +> .byte .... /* bytes from Code: part of OOPS dump */ +> +> Compile it with "gcc -c -o foo.o foo.s" then look at the output of +> "objdump --disassemble foo.o". +> +> Output: +> +> ip_queue_xmit: +> push %ebp +> push %edi +> push %esi +> push %ebx +> sub $0xbc, %esp +> mov 0xd0(%esp), %ebp ! %ebp = arg0 (skb) +> mov 0x8(%ebp), %ebx ! %ebx = skb->sk +> mov 0x13c(%ebx), %eax ! %eax = inet_sk(sk)->opt + +Another very useful option of the Kernel Hacking section in menuconfig is +Debug memory allocations. This will help you see whether data has been +initialised and not set before use etc. To see the values that get assigned +with this look at mm/slab.c and search for POISON_INUSE. When using this an +Oops will often show the poisoned data instead of zero which is the default. + +Once you have worked out a fix please submit it upstream. After all open +source is about sharing what you do and don't you want to be recognised for +your genius? + +Please do read Documentation/SubmittingPatches though to help your code get +accepted. diff --git a/Documentation/Changes b/Documentation/Changes index fe5ae0f5502..b02f476c297 100644 --- a/Documentation/Changes +++ b/Documentation/Changes @@ -15,24 +15,6 @@ and therefore owes credit to the same people as that file (Jared Mauch, Axel Boldt, Alessandro Sigala, and countless other users all over the 'net). -The latest revision of this document, in various formats, can always -be found at <http://cyberbuzz.gatech.edu/kaboom/linux/Changes-2.4/>. - -Feel free to translate this document. If you do so, please send me a -URL to your translation for inclusion in future revisions of this -document. - -Smotrite file <http://oblom.rnc.ru/linux/kernel/Changes.ru>, yavlyaushisya -russkim perevodom dannogo documenta. - -Visite <http://www2.adi.uam.es/~ender/tecnico/> para obtener la traducción -al español de este documento en varios formatos. - -Eine deutsche Version dieser Datei finden Sie unter -<http://www.stefan-winter.de/Changes-2.4.0.txt>. - -Chris Ricker (kaboom@gatech.edu or chris.ricker@genetics.utah.edu). - Current Minimal Requirements ============================ diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 2c6f66dea65..7d87dd73cbe 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile @@ -9,7 +9,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ procfs-guide.xml writing_usb_driver.xml \ - sis900.xml kernel-api.xml journal-api.xml lsm.xml usb.xml \ + kernel-api.xml journal-api.xml lsm.xml usb.xml \ gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml ### diff --git a/Documentation/DocBook/deviceiobook.tmpl b/Documentation/DocBook/deviceiobook.tmpl index 6f41f2f5c6f..90ed23df1f6 100644 --- a/Documentation/DocBook/deviceiobook.tmpl +++ b/Documentation/DocBook/deviceiobook.tmpl @@ -270,25 +270,6 @@ CPU B: spin_unlock_irqrestore(&dev_lock, flags) </para> </sect1> - <sect1> - <title>ISA legacy functions</title> - <para> - On older kernels (2.2 and earlier) the ISA bus could be read or - written with these functions and without ioremap being used. This is - no longer true in Linux 2.4. A set of equivalent functions exist for - easy legacy driver porting. The functions available are prefixed - with 'isa_' and are <function>isa_readb</function>, - <function>isa_writeb</function>, <function>isa_readw</function>, - <function>isa_writew</function>, <function>isa_readl</function>, - <function>isa_writel</function>, <function>isa_memcpy_fromio</function> - and <function>isa_memcpy_toio</function> - </para> - <para> - These functions should not be used in new drivers, and will - eventually be going away. - </para> - </sect1> - </chapter> <chapter> diff --git a/Documentation/DocBook/sis900.tmpl b/Documentation/DocBook/sis900.tmpl deleted file mode 100644 index 6c2cbac93c3..00000000000 --- a/Documentation/DocBook/sis900.tmpl +++ /dev/null @@ -1,585 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" - "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> - -<book id="SiS900Guide"> - -<bookinfo> - -<title>SiS 900/7016 Fast Ethernet Device Driver</title> - -<authorgroup> -<author> -<firstname>Ollie</firstname> -<surname>Lho</surname> -</author> - -<author> -<firstname>Lei Chun</firstname> -<surname>Chang</surname> -</author> -</authorgroup> - -<edition>Document Revision: 0.3 for SiS900 driver v1.06 & v1.07</edition> -<pubdate>November 16, 2000</pubdate> - -<copyright> - <year>1999</year> - <holder>Silicon Integrated System Corp.</holder> -</copyright> - -<legalnotice> - <para> - 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. - </para> - - <para> - 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. - </para> - - <para> - 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 - </para> -</legalnotice> - -<abstract> -<para> -This document gives some information on installation and usage of SiS 900/7016 -device driver under Linux. -</para> -</abstract> - -</bookinfo> - -<toc></toc> - -<chapter id="intro"> - <title>Introduction</title> - -<para> -This document describes the revision 1.06 and 1.07 of SiS 900/7016 Fast Ethernet -device driver under Linux. The driver is developed by Silicon Integrated -System Corp. and distributed freely under the GNU General Public License (GPL). -The driver can be compiled as a loadable module and used under Linux kernel -version 2.2.x. (rev. 1.06) -With minimal changes, the driver can also be used under 2.3.x and 2.4.x kernel -(rev. 1.07), please see -<xref linkend="install"/>. If you are intended to -use the driver for earlier kernels, you are on your own. -</para> - -<para> -The driver is tested with usual TCP/IP applications including -FTP, Telnet, Netscape etc. and is used constantly by the developers. -</para> - -<para> -Please send all comments/fixes/questions to -<ulink url="mailto:lcchang@sis.com.tw">Lei-Chun Chang</ulink>. -</para> -</chapter> - -<chapter id="changes"> - <title>Changes</title> - -<para> -Changes made in Revision 1.07 - -<orderedlist> -<listitem> -<para> -Separation of sis900.c and sis900.h in order to move most -constant definition to sis900.h (many of those constants were -corrected) -</para> -</listitem> - -<listitem> -<para> -Clean up PCI detection, the pci-scan from Donald Becker were not used, -just simple pci_find_*. -</para> -</listitem> - -<listitem> -<para> -MII detection is modified to support multiple mii transceiver. -</para> -</listitem> - -<listitem> -<para> -Bugs in read_eeprom, mdio_* were removed. -</para> -</listitem> - -<listitem> -<para> -Lot of sis900 irrelevant comments were removed/changed and -more comments were added to reflect the real situation. -</para> -</listitem> - -<listitem> -<para> -Clean up of physical/virtual address space mess in buffer -descriptors. -</para> -</listitem> - -<listitem> -<para> -Better transmit/receive error handling. -</para> -</listitem> - -<listitem> -<para> -The driver now uses zero-copy |