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

Bug#688198: megasas: Failed to alloc kernel SGL buffer for IOCTL - Possible regression from 2.6.32.41~3



FWIW - I don't experience the problem/message on a Debian Squeeze box running Linux deb003.pod01 2.6.32-5-xen-amd64 #1 SMP Mon Jan 16 20:48:30 UTC 2012 x86_64 GNU/Linux

I'm not currently able to re-compile my 3.2 ubuntu 12.04 kernel, but will try to find a comparable system to do it on.

On Nov 20, 2012, at 11:20 PM, Bjørn Mork wrote:

> Todd Fleisher <todd@fleetstreetops.com> writes:
> 
>> I get this periodically (seemingly random - but usually once it starts happening it sticks around for a while, then disappears only to return later) when I'm using LSI's MegaCli64 utility. When the kernel logs the error the MegaCli64 command doesn't return any data either.
>> 
>> Ex:
>> root@deb015.pod02:~# MegaCli64 -PDList -aALL
>> 
>> 
>> Exit Code: 0x00
>> 
>> 
>> Which is paired with a kernel message:
>> Nov 20 20:29:50 deb015 kernel: [797020.797811] megasas: Failed to alloc kernel SGL buffer for IOCTL 
>> 
>> Other times that same command (or other MegaCli64 commands) will succeed and return the associated data. When this happens, there is no megasas kernel message.
> 
> 
> Thanks.  I don't know what the MegaCli64 utility does, but I assume it
> use the driver specific ioctls to send passthrough commands like the
> smartmontools do.  That is consistent with your description.
> 
> But I was concluding too fast as usual.  The bug I found needs to be
> fixed, but it cannot be the cause of this problem.  If it were then you
> would most likely see many other effects on your system.  And the same
> bug has been backported to 2.6.32 as well.  And if if had not been, and
> you are in fact hit by it, then your system would have crashed instead.
> 
> So that cannot be the problem.  And then I don't know what could have
> changed between 2.6.32 and 3.2.  Could be something outside this driver.
> 
> It would be interesting to know something about the size of the buffers
> which cannot be allocated.  But running with debug pacthes is maybe out
> of the question? Otherwise you could try running with something like
> this to get a better picture of why this is failing:
> 
> 
> diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
> index f013432..1c0fa1d 100644
> --- a/drivers/scsi/megaraid/megaraid_sas_base.c
> +++ b/drivers/scsi/megaraid/megaraid_sas_base.c
> @@ -4797,6 +4797,7 @@ megasas_mgmt_fw_ioctl(struct megasas_instance *instance,
> 		if (!kbuff_arr[i]) {
> 			printk(KERN_DEBUG "megasas: Failed to alloc "
> 			       "kernel SGL buffer for IOCTL \n");
> +			printk(KERN_DEBUG "megasas: iov_len=%d\n", ioc->sgl[i].iov_len);
> 			error = -ENOMEM;
> 			goto out;
> 		}
> 
> 
> 
> 
> Bjørn


Reply to: