Skip to contentSkip to conversation

[Fwd: mvsas determines most often an incorrect phy addr of 0 while attaching phy to port (Was: ERROR: Unidentified device type 0)]

DISCUSSION Reinhard Nissl 1 participant 3 messages Dec 7, 2008 – Dec 12, 2008 SCSI

lore
Share & tools
lore
#0 lore raw

Hi,

sorry for cross posting but it seems to me that this list is more appropriate for my issue.

-------- Original-Nachricht --------
Betreff: mvsas determines most often an incorrect phy addr of 0 while attaching phy to port (Was: ERROR: Unidentified device type 0)
Datum: Sun, 07 Dec 2008 00:01:25 +0100
Von: Reinhard Nissl <[email protected]>
An: [email protected]
CC: [email protected]
Referenzen: <[email protected]>

Hi,

I've meanwhile investigated this issue a little bit further and changed the subject accordingly.

Quoted 8 lines · Reinhard Nissl

I've got the ASUS P6T WS Professional mainboard including Marvell 88SE6320 SAS controller and attached a single Seagate 10k6 SAS harddrive to the first SAS port.

Installation of openSUSE 11.1rc1 went well but after rebooting, the harddrive doesn't get found. When the initrd script loads the mvsas module, the following output appears on screen:

Quoted 6 lines

sas: phy-10:1 added to port-10:0, phy_mask:0x2 ( 0)
ERROR: Unidentified device type 0

I first tried to install openSUSE 11.0 but the installer didn't find the harddrive. If I recall correctly, it was for the same reason as it is now when trying to boot the 11.1rc1 system.

This was not completely correct. I forgot that the 11.0 installer saw the drive at least once. And my investigations today showed that the 11.1rc1 installer / rescue system can run into the same error. But most often they see the drive (sometimes only after a power cycle) while initrd didn't succeed at all (looks like a timing issue).

Quoted 9 lines

So I think, there exists already a fix for this issue, as the 11.1rc1 installer sees the drive, which is still missing in the initrd environment.

I really would like to help solving this issue, but I need a pointer where and how to start digging. I've started a openSUSE bug (https://bugzilla.novell.com/show_bug.cgi?id=450302, Bug 450302 - mvsas doesn't find SAS drive anymore after installation) almost a week ago but didn't get much help there.

Some more findings:
After the rescue system booted successfully and detected the drive, I tried to unload mvsas. modprobe -r mvsas didn't succeed as the module was still in use, but lsmod didn't report any user. So I've unloaded mvsas with rmmod -f mvsas which succeeded. After that, modprobe mvsas was loading the module successfully again but the above error appeared. I've put up a loop with modprobe -r / modprobe but it never succeeded to detect the drive anymore.

My plans for the next days are to attach a SATA drive to one of the south bridge SATA ports, install an openSUSE system there which I will use to investigate this issue further, i. e. setup a build environment to be able to compile the module, activate (and possibly add additional) debug output and load the module without having to reboot.

I really hope that someone will drop me some lines to guide me in investigating this issue. Thanks in advance.

Bye.

Signature · 2 lines
Dipl.-Inform. (FH) Reinhard Nissl
mailto:[email protected]
#1 lore raw

PATCH: mvsas: increase port type detection delay to suit Seagate's 10k6 drive ST3450856SS 0003

I increased the delay step by step until loading of mvsas reliably detected the drive 200 times in sequence. A much better approach would be to monitor the hardware for some flag which indicates that port detection has finished, but I do not have any hardware documentation.

BTW: patch is against
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.27.y.git

drivers/scsi/mvsas.c +1 -1
index 1dd70d7..23e5a87 100644
@@ -2959,7 +2959,7 @@ static int __devinit mvs_hw_init(struct mvs_info *mvi)
 
 	/* enable auto port detection */
 	mw32(GBL_PORT_TYPE, MODE_AUTO_DET_EN);
-	msleep(100);
+	msleep(1100);
 	/* init and reset phys */
 	for (i = 0; i < mvi->chip->n_phy; i++) {
 		u32 lo = be32_to_cpu(*(u32 *)&mvi->sas_addr[4]);
#2 lore raw

Re: PATCH: mvsas: increase port type detection delay to suit Seagate's 15k6 drive ST3450856SS 0003

Hi,

I wonder why no one has dropped me a line so far. I hope you don't mind CCing you directly. I found your email addresses on mailing list entries regarding mvsas. I attach the little patch again for ease of use.

Quoted 10 lines · Reinhard Nissl

I increased the delay step by step until loading of mvsas reliably detected the drive 200 times in sequence. A much better approach would be to monitor the hardware for some flag which indicates that port detection has finished, but I do not have any hardware documentation.

BTW: patch is against
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.27.y.git

Bye.

Signature · 2 lines
Dipl.-Inform. (FH) Reinhard Nissl
mailto:[email protected]
drivers/scsi/mvsas.c +1 -1
index 1dd70d7..23e5a87 100644
@@ -2959,7 +2959,7 @@ static int __devinit mvs_hw_init(struct mvs_info *mvi)
 
 	/* enable auto port detection */
 	mw32(GBL_PORT_TYPE, MODE_AUTO_DET_EN);
-	msleep(100);
+	msleep(1100);
 	/* init and reset phys */
 	for (i = 0; i < mvi->chip->n_phy; i++) {
 		u32 lo = be32_to_cpu(*(u32 *)&mvi->sas_addr[4]);