Re: the patch "alpha/PCI: Replace pci_fixup_irqs()" breaks networking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Tue, 9 Jan 2018, Lorenzo Pieralisi wrote:

> On Mon, Jan 08, 2018 at 01:35:27PM -0500, Mikulas Patocka wrote:
> > 
> > 
> > On Mon, 8 Jan 2018, Lorenzo Pieralisi wrote:
> > 
> > > On Fri, Jan 05, 2018 at 01:49:58PM -0500, Mikulas Patocka wrote:
> > > > 
> > > > 
> > > > On Fri, 5 Jan 2018, Lorenzo Pieralisi wrote:
> > > > 
> > > > > On Tue, Jan 02, 2018 at 04:32:45PM -0500, Mikulas Patocka wrote:
> > > > > > Hi
> > > > > > 
> > > > > > The patch 0e4c2eeb758a91e68b9eaf7a4bee9bd5ed97ff2b ("alpha/PCI: Replace 
> > > > > > pci_fixup_irqs() call with host bridge IRQ mapping hooks") breaks 
> > > > > > networking on Alpha for me. I have an Alpha Avanti server with tulip 
> > > > > > network card.
> > > > > > 
> > > > > > The patch 0e4c2eeb breaks it so that I get MCE when the network card 
> > > > > > driver is loaded. The patch 814eae59 fixes the MCE, the system boot 
> > > > > > completes, but the network card doesn't receive any interrupts (and soon 
> > > > > > it reports warning about timeout on tx queue). All kernels in the 4.14 
> > > > > > branch have this bug.
> > > > > 
> > > > > I reworked the patch, please let me know if it does fix the issue.
> > > > > 
> > > > > Thanks,
> > > > > Lorenzo
> > > > 
> > > > Networking doesn't work, other interrupts work.
> > > > 
> > > > With this patch, /proc/interrupts shows one interrupt for the network card 
> > > > (it used to be zero without this patch).
> > > 
> > > It is getting harder to understand what's going on, here's an
> > > incremental patch with some logging, it would be ideal to add
> > > a similar logging with a working kernel so that we can actually
> > > compare the IRQ level registers programming, please test it
> > > when you have time.
> > 
> > This patch works. The patch contains some small changes in the function 
> > noname_map_irq compared to your previous patch and these changes make it 
> > work. If I revert these changes, networking doesn't work.
> 
> Yes - I am slowly understanding how this Alpha platform deals with IRQs,
> thank you for your help and apologies for the drawn-out fix, I just
> can't test on this platform.
> 
> Patch below (minus pr_info that I will remove) should be the final one,
> please test it and provide me with logs so that I can check.
> 
> Thank you very much.

This patch works - dmesg output is attached.

Mikulas

> -- >8 --
> diff --git a/arch/alpha/kernel/sys_sio.c b/arch/alpha/kernel/sys_sio.c
> index 37bd6d9b8eb9..754a890c8403 100644
> --- a/arch/alpha/kernel/sys_sio.c
> +++ b/arch/alpha/kernel/sys_sio.c
> @@ -102,6 +102,15 @@ sio_pci_route(void)
>  				   alpha_mv.sys.sio.route_tab);
>  }
>  
> +static bool sio_pci_dev_irq_needs_level(const struct pci_dev *dev)
> +{
> +	if ((dev->class >> 16 == PCI_BASE_CLASS_BRIDGE) &&
> +	    (dev->class >> 8 != PCI_CLASS_BRIDGE_PCMCIA))
> +		return false;
> +
> +	return true;
> +}
> +
>  static unsigned int __init
>  sio_collect_irq_levels(void)
>  {
> @@ -110,8 +119,7 @@ sio_collect_irq_levels(void)
>  
>  	/* Iterate through the devices, collecting IRQ levels.  */
>  	for_each_pci_dev(dev) {
> -		if ((dev->class >> 16 == PCI_BASE_CLASS_BRIDGE) &&
> -		    (dev->class >> 8 != PCI_CLASS_BRIDGE_PCMCIA))
> +		if (!sio_pci_dev_irq_needs_level(dev))
>  			continue;
>  
>  		if (dev->irq)
> @@ -120,8 +128,7 @@ sio_collect_irq_levels(void)
>  	return level_bits;
>  }
>  
> -static void __init
> -sio_fixup_irq_levels(unsigned int level_bits)
> +static void __sio_fixup_irq_levels(unsigned int level_bits, bool reset)
>  {
>  	unsigned int old_level_bits;
>  
> @@ -139,10 +146,21 @@ sio_fixup_irq_levels(unsigned int level_bits)
>  	 */
>  	old_level_bits = inb(0x4d0) | (inb(0x4d1) << 8);
>  
> -	level_bits |= (old_level_bits & 0x71ff);
> +	if (reset)
> +		old_level_bits &= 0x71ff;
> +
> +	level_bits |= old_level_bits;
>  
>  	outb((level_bits >> 0) & 0xff, 0x4d0);
>  	outb((level_bits >> 8) & 0xff, 0x4d1);
> +
> +	pr_info("%s: level bits %x\n", __func__, level_bits);
> +}
> +
> +static inline void
> +sio_fixup_irq_levels(unsigned int level_bits)
> +{
> +	__sio_fixup_irq_levels(level_bits, true);
>  }
>  
>  static inline int
> @@ -181,7 +199,14 @@ noname_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
>  	const long min_idsel = 6, max_idsel = 14, irqs_per_slot = 5;
>  	int irq = COMMON_TABLE_LOOKUP, tmp;
>  	tmp = __kernel_extbl(alpha_mv.sys.sio.route_tab, irq);
> -	return irq >= 0 ? tmp : -1;
> +
> +	irq = irq >= 0 ? tmp : -1;
> +
> +	/* Fixup IRQ level if an actual IRQ mapping is detected */
> +	if (sio_pci_dev_irq_needs_level(dev) && irq >= 0)
> +		__sio_fixup_irq_levels(1 << irq, false);
> +
> +	return irq;
>  }
>  
>  static inline int
> -- 
> 2.15.0
> 
[    0.000000] Linux version 4.14.12 (mikulas@hydra) (gcc version 6.3.0 20170516 (Debian 6.3.0-18)) #4 Tue Jan 9 20:03:22 CET 2018
[    0.000000] Booting on Avanti using machine vector Avanti from SRM
[    0.000000] Major Options: LEGACY_START VERBOSE_MCHECK MAGIC_SYSRQ 
[    0.000000] Command line: ro root=/dev/hda1 console=ttyS0,115200
[    0.000000] memcluster 0, usage 1, start        0, end      249
[    0.000000] memcluster 1, usage 0, start      249, end    81919
[    0.000000] memcluster 2, usage 1, start    81919, end    81920
[    0.000000] freeing pages 249:384
[    0.000000] freeing pages 1353:81919
[    0.000000] reserving pages 1353:1355
[    0.000000] 512K Bcache detected; load hit latency 17 cycles, load miss latency 113 cycles
[    0.000000] On node 0 totalpages: 81919
[    0.000000] free_area_init_node: node 0, pgdat fffffc0000849470, node_mem_map fffffc0000a96000
[    0.000000]   DMA zone: 560 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 81919 pages, LIFO batch:15
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 81359
[    0.000000] Kernel command line: ro root=/dev/hda1 console=ttyS0,115200
[    0.000000] PID hash table entries: 4096 (order: 2, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 1048576 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 524288 bytes)
[    0.000000] Sorting __ex_table...
[    0.000000] Memory: 639488K/655352K available (3905K kernel code, 292K rwdata, 1160K rodata, 136K init, 2156K bss, 15864K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS: 16
[    0.000000] HWRPB cycle frequency bogus.  Estimated 233363557 Hz
[    0.000000] Setting RTC_FREQ to 128 Hz (29)
[    0.000000] Console: colour dummy device 80x25
[    0.140625] console [ttyS0] enabled
[    0.140625] Calibrating delay loop... 462.16 BogoMIPS (lpj=1806336)
[    0.187500] pid_max: default: 32768 minimum: 301
[    0.195312] Mount-cache hash table entries: 2048 (order: 1, 16384 bytes)
[    0.203125] Mountpoint-cache hash table entries: 2048 (order: 1, 16384 bytes)
[    0.218750] devtmpfs: initialized
[    0.226562] random: get_random_u32 called from bucket_table_alloc+0x124/0x310 with crng_init=0
[    0.234375] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 14931722236523437 ns
[    0.242187] futex hash table entries: 256 (order: -1, 6144 bytes)
[    0.250000] NET: Registered protocol family 16
[    0.257812] PCI host bridge to bus 0000:00
[    0.257812] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.265625] pci_bus 0000:00: root bus resource [mem 0x00000000-0x3fffffff]
[    0.273437] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    0.281250] pci 0000:00:06.0: [1000:0001] type 00 class 0x000000
[    0.281250] pci 0000:00:06.0: reg 0x10: [io  0x10000-0x100ff]
[    0.281250] pci 0000:00:06.0: reg 0x14: [mem 0x82100100-0x821001ff]
[    0.281250] pci 0000:00:06.0: NCR 53c810 rev 1 PCI class overridden (0x000000 -> 0x010000)
[    0.289062] pci 0000:00:07.0: [8086:0484] type 00 class 0x000000
[    0.296875] pci 0000:00:0b.0: [1011:0009] type 00 class 0x020000
[    0.296875] pci 0000:00:0b.0: reg 0x10: [io  0x10100-0x1017f]
[    0.296875] pci 0000:00:0b.0: reg 0x14: [mem 0x82100200-0x8210027f]
[    0.296875] pci 0000:00:0b.0: reg 0x30: [mem 0x820c0000-0x820fffff pref]
[    0.296875] pci 0000:00:0c.0: [1011:0004] type 00 class 0x038000
[    0.296875] pci 0000:00:0c.0: reg 0x10: [mem 0x88000000-0x89ffffff pref]
[    0.296875] pci 0000:00:0c.0: reg 0x30: [mem 0x82080000-0x820bffff pref]
[    0.296875] pci 0000:00:0d.0: [1095:0680] type 00 class 0x010400
[    0.296875] pci 0000:00:0d.0: reg 0x10: [io  0x101c0-0x101c7]
[    0.296875] pci 0000:00:0d.0: reg 0x14: [io  0x101b0-0x101b3]
[    0.296875] pci 0000:00:0d.0: reg 0x18: [io  0x101a0-0x101a7]
[    0.296875] pci 0000:00:0d.0: reg 0x1c: [io  0x10190-0x10193]
[    0.296875] pci 0000:00:0d.0: reg 0x20: [io  0x10180-0x1018f]
[    0.296875] pci 0000:00:0d.0: reg 0x24: [mem 0x82100000-0x821000ff]
[    0.296875] pci 0000:00:0d.0: reg 0x30: [mem 0x82000000-0x8207ffff pref]
[    0.296875] pci 0000:00:0d.0: supports D1 D2
[    0.296875] pci: enabling save/restore of SRM state
[    0.304687] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
[    0.304687] pci 0000:00:0c.0: BAR 0: assigned [mem 0x02000000-0x03ffffff pref]
[    0.312500] pci 0000:00:0d.0: BAR 6: assigned [mem 0x01200000-0x0127ffff pref]
[    0.320312] pci 0000:00:0b.0: BAR 6: assigned [mem 0x01280000-0x012bffff pref]
[    0.328125] pci 0000:00:0c.0: BAR 6: assigned [mem 0x012c0000-0x012fffff pref]
[    0.335937] pci 0000:00:06.0: BAR 0: assigned [io  0x8000-0x80ff]
[    0.343750] pci 0000:00:06.0: BAR 1: assigned [mem 0x01300000-0x013000ff]
[    0.343750] pci 0000:00:0d.0: BAR 5: assigned [mem 0x01301000-0x013010ff]
[    0.351562] pci 0000:00:0b.0: BAR 0: assigned [io  0x8400-0x847f]
[    0.359375] pci 0000:00:0b.0: BAR 1: assigned [mem 0x01302000-0x0130207f]
[    0.367187] pci 0000:00:0d.0: BAR 4: assigned [io  0x8480-0x848f]
[    0.375000] pci 0000:00:0d.0: BAR 0: assigned [io  0x8490-0x8497]
[    0.382812] pci 0000:00:0d.0: BAR 2: assigned [io  0x8498-0x849f]
[    0.382812] pci 0000:00:0d.0: BAR 1: assigned [io  0x84a0-0x84a3]
[    0.390625] pci 0000:00:0d.0: BAR 3: assigned [io  0x84a4-0x84a7]
[    0.398437] pci_bus 0000:00: resource 4 [io  0x0000-0xffff]
[    0.398437] pci_bus 0000:00: resource 5 [mem 0x00000000-0x3fffffff]
[    0.398437] sio_pci_route: PIRQ original 0xb0a0905 new 0xb0a050f
[    0.406250] __sio_fixup_irq_levels: level bits e20
[    0.414062] Found PC87332 Super IO chip at 0x26e
[    0.414062] PC873xx enabling EPP v1.9
[    0.437500] vgaarb: loaded
[    0.492187] NET: Registered protocol family 2
[    0.500000] TCP established hash table entries: 8192 (order: 3, 65536 bytes)
[    0.507812] TCP bind hash table entries: 8192 (order: 3, 65536 bytes)
[    0.515625] TCP: Hash tables configured (established 8192 bind 8192)
[    0.523437] UDP hash table entries: 512 (order: 1, 16384 bytes)
[    0.531250] UDP-Lite hash table entries: 512 (order: 1, 16384 bytes)
[    0.539062] PCI: CLS 64 bytes, default 32
[    0.546875] Using epoch 2000 for rtc year 18
[    0.546875] platform rtc-alpha: rtc core: registered rtc-alpha as rtc0
[    0.562500] workingset: timestamp_bits=62 max_order=17 bucket_order=0
[    0.625000] random: fast init done
[    0.632812] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    0.640625] io scheduler noop registered
[    0.640625] io scheduler cfq registered (default)
[    0.648437] __sio_fixup_irq_levels: level bits e20
[    0.664062] Console: switching to colour frame buffer device 80x30
[    0.679687] tgafb: DC21030 [TGA] detected, rev=0x02
[    0.687500] tgafb: at PCI bus 0, device 12, function 0
[    0.687500] fb0: Digital ZLXp-E1 frame buffer device at 0x2000000
[    0.695312] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.710937] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.726562] serial8250: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
[    0.734375] Uniform Multi-Platform E-IDE driver
[    0.742187] __sio_fixup_irq_levels: level bits e20
[    0.742187] siimage 0000:00:0d.0: IDE controller (0x1095:0x0680 rev 0x02)
[    0.750000] siimage 0000:00:0d.0: BASE CLOCK == 133
[    0.757812] siimage 0000:00:0d.0: 100% native mode on irq 10
[    0.765625]     ide0: MMIO-DMA
[    0.765625]     ide1: MMIO-DMA
[    0.765625] Probing IDE interface ide0...
[    1.132812] hda: WDC WD400BB-00DEA0, ATA DISK drive
[    1.976562] hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
[    1.976562] hda: UDMA/100 mode selected
[    1.976562] Probing IDE interface ide1...
[    2.687500] ide0 at 0xfffffc0301301080-0xfffffc0301301087,0xfffffc030130108a on irq 10
[    2.695312] ide1 at 0xfffffc03013010c0-0xfffffc03013010c7,0xfffffc03013010ca on irq 10
[    2.703125] ide-gd driver 1.18
[    2.703125] hda: max request size: 64KiB
[    2.773437] hda: 78165360 sectors (40020 MB) w/2048KiB Cache, CHS=65535/16/63
[    2.781250] hda: cache flushes not supported
[    2.789062]  hda: hda1 hda2
[    2.804687] serio: i8042 KBD port at 0x60,0x64 irq 1
[    2.812500] serio: i8042 AUX port at 0x60,0x64 irq 12
[    2.820312] mousedev: PS/2 mouse device common for all mice
[    2.828125] platform rtc-alpha: setting system clock to 2018-01-09 20:08:12 UTC (1515528492)
[    2.843750] atkbd serio0: keyboard reset failed on isa0060/serio0
[    2.898437] atkbd serio1: keyboard reset failed on isa0060/serio1
[    3.195312] VFS: Mounted root (spadfs filesystem) readonly on device 3:1.
[    3.203125] devtmpfs: mounted
[    3.210937] Freeing unused kernel memory: 136K
[    3.210937] This architecture does not have kernel memory protection.
[    5.203125] NET: Registered protocol family 1
[   10.914062] tulip: Linux Tulip driver version 1.1.15-NAPI (Feb 27, 2007)
[   10.921875] __sio_fixup_irq_levels: level bits 8e20
[   10.929687] tulip0: EEPROM default media type Autosense
[   10.937500] tulip0: Index #0 - Media MII (#11) described by a 21140 MII PHY (1) block
[   10.953125] tulip0:  MII transceiver #5 config 2100 status 780f advertising 01e1
[   10.968750] net eth0: Digital DS21140 Tulip rev 34 at MMIO 0x1302000, 00:00:f8:10:0b:42, IRQ 15
[   11.109375] input: PC Speaker as /devices/platform/pcspkr/input/input2
[   11.148437] SCSI subsystem initialized
[   11.335937] random: crng init done
[   11.531250] __sio_fixup_irq_levels: level bits 8e20
[   11.539062] sym0: <810> rev 0x1 at pci 0000:00:06.0 irq 11
[   11.750000] sym0: No NVRAM, ID 7, Fast-10, SE, parity checking
[   11.750000] sym0: SCSI BUS has been reset.
[   11.757812] scsi host0: sym-2.2.3
[   13.796875] hda: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
[   13.804687] hda: task_no_data_intr: error=0x04 { DriveStatusError }
[   13.812500] hda: possibly failed opcode: 0xef
[   15.140625] scsi 0:0:0:0: Direct-Access     DEC      RZ28M    (C) DEC 0616 PQ: 0 ANSI: 2
[   15.148437] scsi target0:0:0: tagged command queuing enabled, command queue depth 16.
[   15.156250] scsi target0:0:0: Beginning Domain Validation
[   15.203125] scsi target0:0:0: FAST-10 SCSI 10.0 MB/s ST (100 ns, offset 8)
[   15.242187] scsi target0:0:0: Domain Validation skipping write tests
[   15.242187] scsi target0:0:0: Ending Domain Validation
[   15.265625] scsi 0:0:1:0: Direct-Access     SEAGATE  ST39216N         0005 PQ: 0 ANSI: 3
[   15.273437] scsi target0:0:1: tagged command queuing enabled, command queue depth 16.
[   15.281250] scsi target0:0:1: Beginning Domain Validation
[   15.328125] scsi target0:0:1: FAST-10 SCSI 10.0 MB/s ST (100 ns, offset 8)
[   15.343750] scsi target0:0:1: Domain Validation skipping write tests
[   15.351562] scsi target0:0:1: Ending Domain Validation
[   15.375000] scsi 0:0:2:0: Direct-Access     DEC      RZ28M    (C) DEC 0616 PQ: 0 ANSI: 2
[   15.382812] scsi target0:0:2: tagged command queuing enabled, command queue depth 16.
[   15.390625] scsi target0:0:2: Beginning Domain Validation
[   15.570312] scsi target0:0:2: FAST-10 SCSI 10.0 MB/s ST (100 ns, offset 8)
[   15.585937] scsi target0:0:2: Domain Validation skipping write tests
[   15.593750] scsi target0:0:2: Ending Domain Validation
[   15.921875] scsi 0:0:4:0: CD-ROM            DEC      RRD45   (C) DEC  0436 PQ: 0 ANSI: 2
[   15.929687] scsi target0:0:4: Beginning Domain Validation
[   16.031250] scsi target0:0:4: FAST-5 SCSI 4.2 MB/s ST (236 ns, offset 8)
[   16.054687] scsi target0:0:4: Domain Validation skipping write tests
[   16.062500] scsi target0:0:4: Ending Domain Validation
[   16.921875] scsi 0:0:0:0: Attached scsi generic sg0 type 0
[   16.945312] scsi 0:0:1:0: Attached scsi generic sg1 type 0
[   16.960937] scsi 0:0:2:0: Attached scsi generic sg2 type 0
[   16.968750] scsi 0:0:4:0: Attached scsi generic sg3 type 5
[   17.031250] sd 0:0:0:0: [sda] 4110480 512-byte logical blocks: (2.10 GB/1.96 GiB)
[   17.039062] sd 0:0:1:0: [sdb] 17942584 512-byte logical blocks: (9.19 GB/8.56 GiB)
[   17.062500] sd 0:0:2:0: [sdc] 4110480 512-byte logical blocks: (2.10 GB/1.96 GiB)
[   17.093750] sd 0:0:0:0: [sda] Write Protect is off
[   17.093750] sd 0:0:0:0: [sda] Mode Sense: 7b 00 10 08
[   17.093750] sd 0:0:1:0: [sdb] Write Protect is off
[   17.101562] sd 0:0:1:0: [sdb] Mode Sense: 9f 00 10 08
[   17.101562] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, supports DPO and FUA
[   17.117187] sd 0:0:2:0: [sdc] Write Protect is off
[   17.125000] sd 0:0:2:0: [sdc] Mode Sense: 7b 00 10 08
[   17.164062] sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, supports DPO and FUA
[   17.195312] sd 0:0:2:0: [sdc] Write cache: disabled, read cache: enabled, supports DPO and FUA
[   17.335937] sr 0:0:4:0: [sr0] scsi-1 drive
[   17.343750] cdrom: Uniform CD-ROM driver Revision: 3.20
[   17.359375]  sda: sda1 sda2 sda3
[   17.398437]  sdc: sdc1 sdc2
[   17.421875] sd 0:0:1:0: [sdb] Attached SCSI disk
[   17.437500] sd 0:0:0:0: [sda] Attached SCSI disk
[   17.445312] sr 0:0:4:0: Attached scsi CD-ROM sr0
[   17.476562] sd 0:0:2:0: [sdc] Attached SCSI disk
[   18.187500] NET: Registered protocol family 17
[   19.531250] sd 0:0:0:0: phase change 2-7 16@65b36360 resid=10.
[   19.546875] sd 0:0:0:0: phase change 2-7 16@65b36360 resid=10.
[   19.562500] sd 0:0:2:0: phase change 2-7 16@65b36360 resid=10.
[   19.578125] sd 0:0:2:0: phase change 2-7 16@65b36360 resid=10.
[   23.937500] tulip 0000:00:0b.0 eth0: tulip_stop_rxtx() failed (CSR5 0xfc660000 CSR6 0x320e2202)
[   23.937500] net eth0: Setting full-duplex based on MII#5 link partner capability of 85e1
[   39.023437] Adding 4177912k swap on /swap.  Priority:-2 extents:1 across:4177912k 
[   41.609375] Adding 4177912k swap on /swap2.  Priority:-3 extents:1 across:4177912k 
[   43.984375] loop: module loaded
[   65.578125] NET: Registered protocol family 10
[   65.625000] Segment Routing with IPv6

[Index of Archives]     [Netdev]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux