Bug 10424

Summary: sata_svw: only 4 ports of 8-port board RAIDCore BCM4852 work. (PCI-ID collision?)
Product: IO/Storage Reporter: Yohei Honda (y_honda_)
Component: Serial ATAAssignee: Tejun Heo (htejun)
Status: CLOSED CODE_FIX    
Severity: normal CC: alan
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.24.4 Subsystem:
Regression: No Bisected commit-id:

Description Yohei Honda 2008-04-08 07:17:28 UTC
Latest working kernel version: None
Earliest failing kernel version: 2.6.18 (or earlier)
Distribution: Gentoo
Hardware Environment: TYAN S3992 + Broadcom RAIDCore BCM4852
Software Environment:
Problem Description:

I am using 8-ports SATA-RAID board Broadcom RAIDCore BCM4852, whose PCI-ID is 1166:0241.
While, PCI-ID 1166:0241 is defined as Serverworks Frodo4 which has 4 ports in sata_svw.c.

driver/ata/sata_svw.c:479 - 493 (linux-2.6.24.4):

/* 0x240 is device ID for Apple K2 device
 * 0x241 is device ID for Serverworks Frodo4
 * 0x242 is device ID for Serverworks Frodo8
 * 0x24a is device ID for BCM5785 (aka HT1000) HT southbridge integrated SATA
 * controller
 * */
static const struct pci_device_id k2_sata_pci_tbl[] = {
	{ PCI_VDEVICE(SERVERWORKS, 0x0240), board_svw4 },
	{ PCI_VDEVICE(SERVERWORKS, 0x0241), board_svw4 }, /* <-- defined as 4-ports board */
	{ PCI_VDEVICE(SERVERWORKS, 0x0242), board_svw8 },
	{ PCI_VDEVICE(SERVERWORKS, 0x024a), board_svw4 },
	{ PCI_VDEVICE(SERVERWORKS, 0x024b), board_svw4 },

	{ }
};


Thus, only 4 ports out of 8 ports work without rewriting the definition.
(rewriting "board_svw4" to "board_svw8" makes the board working all 8 ports.)
I don't know about Frodo4, but I afraid of PCI-ID collision.
If so, I think that it needs a module parameter to specify the number of ports of these devices.

Steps to reproduce:
Comment 1 Yohei Honda 2008-04-08 07:32:51 UTC
kernel version mistake...
2.6.24.9 -> 2.6.24.4
Comment 2 Tejun Heo 2008-04-09 17:43:08 UTC
Will forward patch upstream.  Thanks.