On 08/14/2013 05:38 PM, Reddy, Sreekanth wrote: > Hi Tomas, > > The crash happens when the kernel couldn't allocate the DMA'able memory that > the driver requests for Reply Descriptor post queue. The amount of memory > allocated is directly proportional to the HBA queue depth and the number of > MSI-X vectors. > > The indirect fix for this issue is to add a module parameter max_msix_vectors > to the driver. Using this module parameter the max number of MSI-X vectors > could be set. The amount of memory that is allocated could be decreased by > reducing the number of MSI-X vectors. Therefore if a crash is seen on a > system due to the memory allocation failure, then max_queue_depth and the > max_msix_vectors could be set to a lower value during driver load time so > that the memory requested by the driver is less and thereby preventing the > kernel crash.
ok, it fixes a problem and I don't want to stop it. > > So, lower the value of this variable 'max_msix_vectors' only if kernel > couldn't allocate the DMA'able memory that the driver requests for and crash > is observed. > > Regards, > Sreekanth > >> -----Original Message----- >> From: Tomas Henzl [mailto:the...@redhat.com] >> Sent: Wednesday, August 14, 2013 8:48 PM >> To: Reddy, Sreekanth >> Cc: j...@kernel.org; jbottom...@parallels.com; linux-scsi@vger.kernel.org; >> Nandigama, Nagalakshmi >> Subject: Re: [PATCH] [SCSI] mpt3sas: Added a driver module parameter >> max_msix_vectors >> >> On 08/14/2013 02:53 PM, Sreekanth Reddy wrote: >>> Added a driver module parameter max_msix_vectors. Using this module >>> parameter the maximum number of MSI-X vectors could be set. >>> >>> The number of MSI-X vectors used would be the minimum of MSI-X vectors >>> supported by the HBA, the number of CPU cores and the value set to >> max_msix_vectors module parameter. >>> The default value of this module parameter is set to 8. The default >>> value of this parameter is set to 8 inorder to reduce the amount of memory >> required for Reply Descriptor Post queue. >>> This is because with the higher MSI-X vectors, some times kernel is >>> not able to allocate the requested amount of memory and crash is >>> observed. To overcome this problem, the default value is set to 8. >> Hi Sreekanth, >> I don't know exactly which allocation fails, but wouldn't be for the user >> better >> to just try to allocate and only when it fails lower the msi-x vectors count? >> Tomas >> >>> Signed-off-by: Sreekanth Reddy <sreekanth.re...@lsi.com> >>> --- >>> >>> diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c >>> b/drivers/scsi/mpt3sas/mpt3sas_base.c >>> index a32d63b..d40ba0b 100644 >>> --- a/drivers/scsi/mpt3sas/mpt3sas_base.c >>> +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c >>> @@ -82,6 +82,10 @@ static int msix_disable = -1; >>> module_param(msix_disable, int, 0); MODULE_PARM_DESC(msix_disable, >> " >>> disable msix routed interrupts (default=0)"); >>> >>> +static int max_msix_vectors = 8; >>> +module_param(max_msix_vectors, int, 0); >>> +MODULE_PARM_DESC(max_msix_vectors, >>> + " max msix vectors - (default=8)"); >>> >>> static int mpt3sas_fwfault_debug; >>> MODULE_PARM_DESC(mpt3sas_fwfault_debug, >>> @@ -1723,6 +1727,16 @@ _base_enable_msix(struct MPT3SAS_ADAPTER >> *ioc) >>> ioc->reply_queue_count = min_t(int, ioc->cpu_count, >>> ioc->msix_vector_count); >>> >>> + printk(MPT3SAS_FMT "MSI-X vectors supported: %d, no of cores" >>> + ": %d, max_msix_vectors: %d\n", ioc->name, ioc- >>> msix_vector_count, >>> + ioc->cpu_count, max_msix_vectors); >>> + >>> + if (max_msix_vectors > 0) { >>> + ioc->reply_queue_count = min_t(int, max_msix_vectors, >>> + ioc->reply_queue_count); >>> + ioc->msix_vector_count = ioc->reply_queue_count; >>> + } >>> + >>> entries = kcalloc(ioc->reply_queue_count, sizeof(struct msix_entry), >>> GFP_KERNEL); >>> if (!entries) { >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-scsi" >>> in the body of a message to majord...@vger.kernel.org More majordomo >>> info at http://vger.kernel.org/majordomo-info.html > > -- > To unsubscribe from this list: send the line "unsubscribe linux-scsi" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html