Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757195Ab2HGDEP (ORCPT ); Mon, 6 Aug 2012 23:04:15 -0400 Received: from mail-we0-f174.google.com ([74.125.82.174]:45755 "EHLO mail-we0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752790Ab2HGDEM (ORCPT ); Mon, 6 Aug 2012 23:04:12 -0400 MIME-Version: 1.0 In-Reply-To: <20120806151436.4761cd4d@amdc308.digital.local> References: <20120806101200.GJ17551@arwen.pp.htv.fi> <20120806151436.4761cd4d@amdc308.digital.local> Date: Tue, 7 Aug 2012 11:04:10 +0800 Message-ID: Subject: Re: [BUG] Kernel panic when try s3c-hsotg.c with kernel 3.5 From: Peiyong Feng To: Lukasz Majewski Cc: balbi@ti.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 18714 Lines: 385 2012/8/6 Lukasz Majewski : > Hi, > >> Hi, >> >> On Mon, Aug 06, 2012 at 06:12:05PM +0800, Peiyong Feng wrote: >> > I got a kernel panic when try hsotg of ok6410 which is based on >> > s3c6410: > As you said, you are using the ok6410. And it is "based" on the s3c6410 > CPU. S3C6410 is a single core CPU. I assume that ok6410 is also single > core? yes > >> > >> > >> > cdc_acm: USB Abstract Control Model driver for USB modems and ISDN >> > adapters Unable to handle kernel NULL pointer dereference at >> > virtual address 00000100 > >> > pgd = c0004000 >> > [00000100] *pgd=00000000 >> > Internal error: Oops: 5 [#1] ARM >> > Modules linked in: >> > CPU: 0 Not tainted (3.5.0 #9) >> > PC is at s3c_hsotg_handle_outdone+0x44/0x158 >> > LR is at s3c_hsotg_irq+0x75c/0x804 >> > pc : [] lr : [] psr: 60000193 >> > sp : c782fd20 ip : 00000029 fp : c13a1460 >> > r10: 00000000 r9 : 00000008 r8 : 000000d0 >> > r7 : c13a1400 r6 : 00000002 r5 : 00000000 r4 : 00060002 >> > r3 : 000000d0 r2 : 00000000 r1 : 00080200 r0 : c13a1400 >> > Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel >> > Control: 00c5387d Table: 50004008 DAC: 00000017 >> > Process swapper (pid: 1, stack limit = 0xc782e268) >> > Stack: (0xc782fd20 to 0xc7830000) >> > fd20: c13a1460 c0200f64 00000000 00060002 00000000 00000002 >> > c13a1400 00000010 fd40: 00000000 c024061c 00060002 00000000 >> > 00000002 00000008 c782fda0 c139a5c0 fd60: c139a5c0 00000000 >> > 00000000 0000005a c04cc52c c04cc594 c04ea5fe c00565c0 fd80: >> > 00000000 00000000 00000000 c04cc52c c139a5c0 c04cc57c 00000000 >> > c04eb328 fda0: c04cc55c c04eb324 c04c44c0 c0056768 c04cc52c >> > c04cc57c 00000000 c0058d64 fdc0: 0000005a c04d7dd8 00000000 >> > c005617c 0000005a c000efbc c04eb350 00000001 fde0: c782fe08 >> > c000853c c036c540 60000013 ffffffff c782fe3c c04cc57c c04cc55c >> > fe00: 60000013 c000dd80 c04cc57c c782c000 ffffffff 00000001 >> > 60000013 c04cc52c fe20: c139a5c0 0000005a c04cc57c c04cc55c >> > 60000013 c04c44c0 f6010000 c782fe50 fe40: c036c53c c036c540 >> > 60000013 ffffffff c023fec0 c00574c8 00000000 c008b2dc fe60: >> > c023fec0 00000000 00000000 c13a1400 0000005a c139a5c0 c04cc52c >> > c0057960 fe80: 0000005a c13a1400 c04c44b8 00000000 c051d238 >> > c049b0ec 00000000 c03688fc fea0: c7853e60 c13a1400 c7804f80 >> > 00000000 c04c44f4 60000013 c7855a80 00000000 fec0: c04e1bb4 >> > c04c44c0 c04c44c0 c04e1bb4 c04e1bb4 c051d238 c049b0ec 00000000 >> > fee0: c04eb040 c020588c c04c44c0 c0204524 c04c44c0 c04c44f4 >> > c04e1bb4 c02046ac ff00: c13a01e0 c0204738 00000000 c782ff18 >> > c04e1bb4 c0202e30 c7803878 c7823700 ff20: c04dd1d0 c040b8d4 >> > c04e1bb4 c04e1bb4 c04dd1d0 c0203600 c040b8d4 c01b8568 ff40: >> > 00000000 00000000 c04e1bb4 00000007 c04eb040 c782e000 c04a65e0 >> > c0204ce8 ff60: 00000000 c04a65d4 00000007 c04eb040 c782e000 >> > c0008628 c04c7ea0 00000000 ff80: 0000009c 00000000 c0625cf9 >> > c0037178 00000006 00000006 c0461b84 c042cee8 ffa0: c04c7ea0 >> > c04abdd4 c04a65d4 00000007 c04eb040 0000009c c04841b0 c04a65e0 >> > ffc0: 00000000 c048430c 00000006 00000006 c04841b0 00000000 >> > 00000000 c048421c ffe0: c000f08c 00000013 00000000 00000000 >> > 00000000 c000f08c 00000000 00000000 [] >> > (s3c_hsotg_handle_outdone+0x44/0x158) from [] >> > (s3c_hsotg_irq+0x75c/0x804) [] >> > (s3c_hsotg_irq+0x75c/0x804) from [] >> > (handle_irq_event_percpu+0x50/0x1bc) [] >> > (handle_irq_event_percpu+0x50/0x1bc) from [] >> > (handle_irq_event+0x3c/0x5c) [] >> > (handle_irq_event+0x3c/0x5c) from [] >> > (handle_level_irq+0x8c/0x118) [] >> > (handle_level_irq+0x8c/0x118) from [] >> > (generic_handle_irq+0x38/0x44) [] >> > (generic_handle_irq+0x38/0x44) from [] >> > (handle_IRQ+0x30/0x84) [] (handle_IRQ+0x30/0x84) from >> > [] (vic_handle_irq+0x68/0xa8) [] >> > (vic_handle_irq+0x68/0xa8) from [] (__irq_svc+0x40/0x60) >> > Exception stack(0xc782fe08 to 0xc782fe50) fe00: >> > c04cc57c c782c000 ffffffff 00000001 60000013 c04cc52c fe20: >> > c139a5c0 0000005a c04cc57c c04cc55c 60000013 c04c44c0 f6010000 >> > c782fe50 fe40: c036c53c c036c540 60000013 ffffffff [] >> > (__irq_svc+0x40/0x60) from [] >> > (_raw_spin_unlock_irqrestore+0x10/0x14) [] >> > (_raw_spin_unlock_irqrestore+0x10/0x14) from [] >> > (__setup_irq+0x178/0x3f8) [] (__setup_irq+0x178/0x3f8) >> > from [] (request_threaded_irq+0xc4/0x12c) [] >> > (request_threaded_irq+0xc4/0x12c) from [] >> > (s3c_hsotg_probe+0x14c/0x700) [] >> > (s3c_hsotg_probe+0x14c/0x700) from [] >> > (platform_drv_probe+0x18/0x1c) [] >> > (platform_drv_probe+0x18/0x1c) from [] >> > (driver_probe_device+0x78/0x200) [] >> > (driver_probe_device+0x78/0x200) from [] >> > (__driver_attach+0x8c/0x90) [] >> > (__driver_attach+0x8c/0x90) from [] >> > (bus_for_each_dev+0x60/0x8c) [] >> > (bus_for_each_dev+0x60/0x8c) from [] >> > (bus_add_driver+0xac/0x250) [] >> > (bus_add_driver+0xac/0x250) from [] >> > (driver_register+0x58/0x130) [] >> > (driver_register+0x58/0x130) from [] >> > (do_one_initcall+0x34/0x17c) [] >> > (do_one_initcall+0x34/0x17c) from [] >> > (kernel_init+0xf0/0x1bc) [] (kernel_init+0xf0/0x1bc) from >> > [] (kernel_thread_exit+0x0/0x8) Code: e0433106 e0833006 >> > e1a03183 e0828003 (e5984030) ---[ end trace 2ea4e574318ecf99 ]--- >> > Kernel panic - not syncing: Fatal exception in interrupt >> > ----------------------------------------------------------------------------------- >> > >> > >> > When I try locate the source using arm-linux-gdb, I got this: >> > ------------------------------------------------------------- >> > GNU gdb (Sourcery G++ Lite 2008q3-72) 6.8.50.20080821-cvs >> > Copyright (C) 2008 Free Software Foundation, Inc. >> > License GPLv3+: GNU GPL version 3 or later >> > This is free software: you are >> > free to change and redistribute it. There is NO WARRANTY, to the >> > extent permitted by law. Type "show copying" and "show warranty" >> > for details. This GDB was configured as "--host=i686-pc-linux-gnu >> > --target=arm-none-linux-gnueabi". >> > For bug reporting instructions, please see: >> > ... >> > (gdb) l *(s3c_hsotg_handle_outdone+0x44) >> > 0xc023e7fc is in s3c_hsotg_handle_outdone >> > (drivers/usb/gadget/s3c-hsotg.c:1553). 1548 static void >> > s3c_hsotg_handle_outdone(struct s3c_hsotg *hsotg, >> > 1549 int epnum, bool >> > was_setup) 1550 { 1551 u32 epsize = >> > readl(hsotg->regs + DOEPTSIZ(epnum)); 1552 struct >> > s3c_hsotg_ep *hs_ep = &hsotg->eps[epnum]; 1553 >> > struct s3c_hsotg_req *hs_req = hs_ep->req; 1554 >> > struct usb_request *req = &hs_req->req; 1555 >> > unsigned size_left = DxEPTSIZ_XferSize_GET(epsize); >> > 1556 int result = 0; 1557 >> > (gdb) >> > >> > >> > >> > I also try the old linux like 2.6.36, I works fine. >> >> Lukasz, any ideas ? >> > > I see, that you are using 3.5.0 kernel. > During the 3.5 kernel development cycle, I've discovered very nasty SMP > related bug. It is fixed at 3.6-rc1 code. > > Relevant commits are: > 22258f4 usb: hsotg: samsung: Replace endpoint specific locks with a > global lock > 2b19a52 usb: hsotg: samsung: Protect the udc_stop routine with spinlock > 5ad1d31 usb: hsotg: samsung: smp Provide *_lock functions abstraction > layer for SMP SoCs > > Above commits are already available at 3.6-rc1. > > Would it be possible to cross compile 3.6-rc1 kernel for your platform > and test the USB? > > > > I'd like to ask you for #define DEBUG above includes (to enable > dev_dbg()) calls at ./drivers/usb/gadget/s3c-hsotg.c file. > > Afterwards please, paste the log (dmesg) from booting your target > device. Still canot work, log: Starting kernel ... Uncompressing Linux... done, booting the kernel. Booting Linux on physical CPU 0 Linux version 3.6.0-rc1-00133-g42a579a-dirty (root@xxxx) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) 2 CPU: ARMv6-compatible processor [410fb766] revision 6 (ARMv7), cr=00c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache Machine: SMDK6410 Memory policy: ECC disabled, Data cache writeback CPU S3C6410 (id 0x36410101) S3C24XX Clocks, Copyright 2004 Simtec Electronics camera: no parent clock specified S3C64XX: PLL settings, A=532000000, M=532000000, E=24000000 S3C64XX: HCLK2=266000000, HCLK=133000000, PCLK=66500000 mout_apll: source is fout_apll (1), rate is 532000000 mout_epll: source is epll (1), rate is 24000000 mout_mpll: source is mpll (1), rate is 532000000 usb-bus-host: source is clk_48m (0), rate is 48000000 audio-bus: source is mout_epll (0), rate is 24000000 audio-bus: source is mout_epll (0), rate is 24000000 audio-bus: source is mout_epll (0), rate is 24000000 irda-bus: source is mout_epll (0), rate is 24000000 camera: no parent clock specified CPU: found DTCM0 8k @ 00000000, not enabled CPU: moved DTCM0 8k to fffe8000, enabled CPU: found DTCM1 8k @ 00000000, not enabled CPU: moved DTCM1 8k to fffea000, enabled CPU: found ITCM0 8k @ 00000000, not enabled CPU: moved ITCM0 8k to fffe0000, enabled CPU: found ITCM1 8k @ 00000000, not enabled CPU: moved ITCM1 8k to fffe2000, enabled Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 Kernel command line: console=ttySAC0,115200 root=/dev/ram init=/linuxrc initrd=0x51000000,6M ramdisk_size=6144 PID hash table entries: 512 (order: -1, 2048 bytes) Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) Memory: 128MB = 128MB total Memory: 120316k/120316k available, 10756k reserved, 0K highmem Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) DTCM : 0xfffe8000 - 0xfffec000 ( 16 kB) ITCM : 0xfffe0000 - 0xfffe4000 ( 16 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) vmalloc : 0xc8800000 - 0xff000000 ( 872 MB) lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) modules : 0xbf000000 - 0xc0000000 ( 16 MB) .text : 0xc0008000 - 0xc02d7a64 (2879 kB) .init : 0xc02d8000 - 0xc02f662c ( 122 kB) .data : 0xc02f8000 - 0xc0326420 ( 186 kB) .bss : 0xc0327024 - 0xc0358858 ( 199 kB) SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 NR_IRQS:246 VIC @f6000000: id 0x00041192, vendor 0x41 VIC @f6010000: id 0x00041192, vendor 0x41 sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286ms Console: colour dummy device 80x30 Calibrating delay loop... 353.89 BogoMIPS (lpj=1769472) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok Setting up static identity map for 0x5021c868 - 0x5021c8c4 NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations s3c64xx_dma_init: Registering DMA channels PL080: IRQ 73, at c8846000, channels 0..8 PL080: IRQ 74, at c8848000, channels 8..16 S3C6410: Initialising architecture bio: create slab at 0 usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb s3c-i2c s3c2440-i2c.0: slave address 0x10 s3c-i2c s3c2440-i2c.0: bus frequency set to 64 KHz s3c-i2c s3c2440-i2c.0: i2c-0: S3C I2C adapter s3c-i2c s3c2440-i2c.1: slave address 0x10 s3c-i2c s3c2440-i2c.1: bus frequency set to 64 KHz s3c-i2c s3c2440-i2c.1: i2c-1: S3C I2C adapter Trying to unpack rootfs image as initramfs... rootfs image is not initramfs (junk in compressed archive); looks like an initrd Freeing initrd memory: 6144K ROMFS MTD (C) 2007 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) start plist test end plist test s3c-fb s3c-fb: window 0: fb Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled s3c6400-uart.0: ttySAC0 at MMIO 0x7f005000 (irq = 69) is a S3C6400/10 console [ttySAC0] enabled s3c6400-uart.1: ttySAC1 at MMIO 0x7f005400 (irq = 70) is a S3C6400/10 s3c6400-uart.2: ttySAC2 at MMIO 0x7f005800 (irq = 71) is a S3C6400/10 s3c6400-uart.3: ttySAC3 at MMIO 0x7f005c00 (irq = 72) is a S3C6400/10 brd: module loaded loop: module loaded at24 0-0050: 1024 byte 24c08 EEPROM, writable, 1 bytes/write at24 1-0057: 16384 byte 24c128 EEPROM, writable, 1 bytes/write S3C24XX NAND Driver, (c) 2004 Simtec Electronics ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver s3c2410-ohci s3c2410-ohci: S3C24XX OHCI s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1 s3c2410-ohci s3c2410-ohci: irq 79, io mem 0x74300000 usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: S3C24XX OHCI usb usb1: Manufacturer: Linux 3.6.0-rc1-00133-g42a579a-dirty ohci_hcd usb usb1: SerialNumber: s3c24xx hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected Unable to handle kernel NULL pointer dereference at virtual address 000000e0 pgd = c0004000 [000000e0] *pgd=00000000 Internal error: Oops: 5 [#1] ARM Modules linked in: CPU: 0 Not tainted (3.6.0-rc1-00133-g42a579a-dirty #19) PC is at s3c_hsotg_handle_outdone+0x40/0xdc LR is at s3c_hsotg_irq+0x5a0/0x5fc pc : [] lr : [] psr: 80000193 sp : c782fd18 ip : 00000000 fp : c139301c r10: 00000000 r9 : 00000008 r8 : 00000000 r7 : c1393010 r6 : 000000b0 r5 : 00000002 r4 : c1392300 r3 : 000000b0 r2 : 00000000 r1 : 00080200 r0 : c1393010 Flags: Nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 00c5387d Table: 50004008 DAC: 00000017 Process swapper (pid: 1, stack limit = 0xc782e268) Stack: (0xc782fd18 to 0xc7830000) fd00: c1392300 c1392300 fd20: 00000000 c1393010 00000010 c01a4eb8 c782fd84 c1393078 000012d0 c1392300 fd40: c1392300 00000000 00000000 0000005a c0310aec c0310b54 c03263c1 c0056e44 fd60: c0325c8c 00000000 22222222 c0310aec c1392300 c0310b3c 00000000 c0327328 fd80: c0310b1c c0327324 c0327040 c0056fe4 c0310aec c0310b3c 00000000 c00595e8 fda0: 0000005a c0318d68 00000000 c0056a00 0000005a c000efdc c0327350 00000001 fdc0: c782fde8 c0008508 c021c7c0 60000013 ffffffff c782fe1c c0310b3c c0310b1c fde0: 60000013 c000dd80 c0310b3c c782c000 ffffffff 00000001 60000013 c0310aec fe00: c1392300 0000005a c0310b3c c0310b1c 60000013 c0327040 f6010000 c782fe30 fe20: c021c7bc c021c7c0 60000013 ffffffff c01a4918 c0057d48 c138bc90 c008c344 fe40: c01a4918 00000000 00000000 c1393010 0000005a c1392300 c0310aec c00581e4 fe60: c138bcd0 00000000 c01a4918 0000005a c1393010 c02ede10 c0308998 c0059e00 fe80: c784fe60 c1393010 c784fe60 0000005a c1393010 c0308990 c03229e8 c0308998 fea0: c02f1818 c0218c7c 00000000 c784fe60 c1393010 00000000 c03089cc 60000013 fec0: c7851940 00000000 c03229e8 c0308998 c0308998 c03229e8 c03229e8 c0357938 fee0: c02ede10 c02f1818 c0327040 c016ba7c c0308998 c016a6f0 c0308998 c03089cc ff00: c03229e8 c016a880 c782e000 c016a90c 00000000 c782ff20 c03229e8 c0168fe8 ff20: c7803878 c7823ac0 c031e0c8 c02875cc c138c480 c03229e8 c031e0c8 c01697b8 ff40: c02875cc c03229e8 00000007 00000000 c03229e8 00000007 c0327040 c016aebc ff60: 00000000 c02f180c 00000007 c0327040 c782e000 c00085f0 c030c378 00000000 ff80: 00000053 00000000 c0459cf9 c00377dc 00000006 00000006 c02c1380 c02a0130 ffa0: c030c378 c02f6380 c02f180c 00000007 c0327040 00000053 c02d81b0 c02f1818 ffc0: 00000000 c02d830c 00000006 00000006 c02d81b0 00000000 00000000 c02d821c ffe0: c000f0ac 00000013 00000000 00000000 00000000 c000f0ac 0002fbf7 00007fff [] (s3c_hsotg_handle_outdone+0x40/0xdc) from [] (s3c_hsotg_irq+0x5a0/0x5fc) [] (s3c_hsotg_irq+0x5a0/0x5fc) from [] (handle_irq_event_percpu+0x50/0x1b4) [] (handle_irq_event_percpu+0x50/0x1b4) from [] (handle_irq_event+0x3c/0x5c) [] (handle_irq_event+0x3c/0x5c) from [] (handle_level_irq+0x8c/0x118) [] (handle_level_irq+0x8c/0x118) from [] (generic_handle_irq+0x38/0x44) [] (generic_handle_irq+0x38/0x44) from [] (handle_IRQ+0x30/0x84) [] (handle_IRQ+0x30/0x84) from [] (vic_handle_irq+0x68/0xa8) [] (vic_handle_irq+0x68/0xa8) from [] (__irq_svc+0x40/0x54) Exception stack(0xc782fde8 to 0xc782fe30) fde0: c0310b3c c782c000 ffffffff 00000001 60000013 c0310aec fe00: c1392300 0000005a c0310b3c c0310b1c 60000013 c0327040 f6010000 c782fe30 fe20: c021c7bc c021c7c0 60000013 ffffffff [] (__irq_svc+0x40/0x54) from [] (_raw_spin_unlock_irqrestore+0x10/0x14) [] (_raw_spin_unlock_irqrestore+0x10/0x14) from [] (__setup_irq+0x184/0x408) [] (__setup_irq+0x184/0x408) from [] (request_threaded_irq+0xc4/0x12c) [] (request_threaded_irq+0xc4/0x12c) from [] (devm_request_threaded_irq+0x58/0x8c) [] (devm_request_threaded_irq+0x58/0x8c) from [] (s3c_hsotg_probe+0xdc/0x5c0) [] (s3c_hsotg_probe+0xdc/0x5c0) from [] (platform_drv_probe+0x18/0x1c) [] (platform_drv_probe+0x18/0x1c) from [] (driver_probe_device+0x78/0x208) [] (driver_probe_device+0x78/0x208) from [] (__driver_attach+0x8c/0x90) [] (__driver_attach+0x8c/0x90) from [] (bus_for_each_dev+0x60/0x8c) [] (bus_for_each_dev+0x60/0x8c) from [] (bus_add_driver+0xac/0x248) [] (bus_add_driver+0xac/0x248) from [] (driver_register+0x58/0x14c) [] (driver_register+0x58/0x14c) from [] (do_one_initcall+0x34/0x17c) [] (do_one_initcall+0x34/0x17c) from [] (kernel_init+0xf0/0x1bc) [] (kernel_init+0xf0/0x1bc) from [] (kernel_thread_exit+0x0/0x8) Code: e0433105 e0653003 e1a03183 e0826003 (e5964030) ---[ end trace 91f15b573a676870 ]--- Kernel panic - not syncing: Fatal exception in interrupt > > Thanks in advance. > > -- > Best regards, > > Lukasz Majewski > > Samsung Poland R&D Center | Linux Platform Group -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/