VMware Communities
Silke
Contributor
Contributor

VMware 5.5.4 + Kernel 2.6.21.3: LSI SCSI Problem

Hi,

I run vmware workstation 5.5.4 on Windows XP and try to run Gentoo Linux 2007.0 using Kernel 2.6.21.3 as guest. This does not work!

During kernel-initialization (LSI SCSI Driver initialization), the last "valid" line I see is:

scsi0_ ioc0: LSI53C1030, FwRev=00000000h, Ports=1, MaxQ=128, IRQ=17

And usually after that line one should see the installed SCSI Drives, but they do not appear as if no drives were connected. But kernel-initialization continues, it does not freeze.

But finally I get a Kernel Panic: "/dev/sda3" not found! (Obvious, when no drives are found!)

As last Idea I installed kernel 2.6.20 and it works (with same Kernel .config-file).

The LSI Driver Version of the non-workin Kernel 2.6.21.3 is

Fusion MPT SPI Host driver 3.04.04

Best regards,

Silke

Reply
0 Kudos
14 Replies
jsg1
Contributor
Contributor

We have the same problem and I've found a post refering to a bug in the LSI emulation in VMWare 5 which is suposedly fixed in VMware 6.

Here's the patch, but it didn't work for us. We still can't reboot a box after upgrading the kernel from 2.6.18.3 to 2.6.21.3.

diff -uNr linux-2.6.21.3/drivers/message/fusion/mptbase.c linux-2.6.21.3-patched/drivers/message/fusion/mptbase.c

\--- linux-2.6.21.3/drivers/message/fusion/mptbase.c 2007-05-24 18:22:47.000000000 -0300

\+++ linux-2.6.21.3-patched/drivers/message/fusion/mptbase.c 2007-05-30 15:46:49.000000000 -0300

@@ -2564,6 +2564,16 @@

pfacts->IOCStatus = le16_to_cpu(pfacts->IOCStatus);

pfacts->IOCLogInfo = le32_to_cpu(pfacts->IOCLogInfo);

pfacts->MaxDevices = le16_to_cpu(pfacts->MaxDevices);

+ /*

+ * VMware emulation is broken, its PortFact's MaxDevices reports value

+ * programmed by IOC Init, so if you program IOC Init to 256 (which is 0,

+ * as that field is only 8 bit), it reports back 0 in port facts, instead

+ * of 256... And unfortunately using 256 triggers another bug in the

+ * code (parallel SCSI can have only 16 devices).

+ */

+ if (pfacts->MaxDevices == 0) {

+ pfacts->MaxDevices = 16;

+ }

pfacts->PortSCSIID = le16_to_cpu(pfacts->PortSCSIID);

pfacts->ProtocolFlags = le16_to_cpu(pfacts->ProtocolFlags);

pfacts->MaxPostedCmdBuffers = le16_to_cpu(pfacts->MaxPostedCmdBuffers);

Reply
0 Kudos
Silke
Contributor
Contributor

Thank you for this information!!!

What a pity! I wanted to use the latest kernel...

Reply
0 Kudos
Silke
Contributor
Contributor

Hi,

today I tested the patch mentioned above.

And it works!

Silke

Reply
0 Kudos
jsg1
Contributor
Contributor

This is weird... I still can't get the patch to work with 2.6.21.5 kernel either.

Anybody have any ideas?

Reply
0 Kudos
nick_couchman
Immortal
Immortal

Switch to buslogic in VMware, instead??

Reply
0 Kudos
KevinG
Immortal
Immortal

Or create a new VM selecting the "Custom" option to configure the VM to use virtual IDE.

Reply
0 Kudos
jsg1
Contributor
Contributor

Yes, of course, I can switch... it's a pain though because I have to add BusLogic to the initrd image, shutdown the box, edit the vmx file and power it back up.

Besides, I'm not sure that all is good since VMWare pops up a warning about changing the disk information and that it might not be supported properly.

We have about 20 machines on which I'll have to do that. We also can't stay with the old kernel because our application needs the new kernel and vmware is our test and build environment and it needs to match.

Reply
0 Kudos
nick_couchman
Immortal
Immortal

Oh, the mkinitrd doesn't take that long :-).

Which is less of a pain - backing out to a earlier kernel version or remaking initrd? If you find backing out to an earlier kernel easier, that's great - go with it. If I'm stuck using 2.6.21, though, I just go ahead and convert to BusLogic.

Reply
0 Kudos
CoolHandLuke
Contributor
Contributor

I hand-edited-in the patch contents to the 2.6.20-gentoo-r8 kernel with success. It seems the gentoo kernels have the same issue running in VMWare-Workstation6. Thank you!

Reply
0 Kudos
jsg1
Contributor
Contributor

I found out why it wasn't working for me... silly, but it's because the SCSI driver can't be a module. If I build it in the kernel, and apply the patch, it works in WS5.

Reply
0 Kudos
The_Ether
Enthusiast
Enthusiast

The SCSI driver can be a module if it's in the initial ram drive. There is a bug in the LSI driver/VMware emulation in kernel 2.6.21 & 2.6.22. You can use the BusLogic driver, but you need to update the OS to load the kernel module.

VMware Linux guest kernel panics on boot with LSI Logic HBA and kernel 2.6.21-2.6.22

http://theether.net/kb/100038

Cheers.

Reply
0 Kudos
Olaf_van_der_Sp
Enthusiast
Enthusiast

Are there any plans to fix VMware 5.5 too (6 requires a new license)?

Reply
0 Kudos
KevinG
Immortal
Immortal

There is a Workstation 5.5.5, but not sure if this fix made it into the build. You may want to give it a try.

I believe it did make it into VMware Server 1.0.4

Reply
0 Kudos
Olaf_van_der_Sp
Enthusiast
Enthusiast

I've just installed 5.5.5 but it does not appear to be fixed. Smiley Sad

Reply
0 Kudos