[Devel] Re: [PATCH 1/1] scsi : megaraid_{mm, mbox}: a fix on 64-bit DMA capability check

Vasily Averin vvs at sw.ru
Tue Jun 20 06:53:03 PDT 2006


Hello Seokmann,

I would like to tell you that your patch is wrong, at least for
 MegaRAID SATA 150-4 RAID Controller

06:02.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID (rev 01)
        Subsystem: LSI Logic / Symbios Logic MegaRAID SATA 150-4 RAID Controller
00: 00 10 60 19 16 03 b0 04 01 00 04 01 08 20 00 00
10: 08 00 20 df 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 10 23 45
30: 00 00 00 00 80 00 00 00 00 00 00 00 0a 01 00 00
40: 00 00 ff ff 00 00 00 d0 08 00 00 fc 00 00 00 fc
50: 00 00 00 d0 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 88 1f 00 00 00 00 00 f8 00 00 00 00
70: 00 00 00 00 00 00 ff ff 00 00 f4 fe 00 00 00 00
80: 01 00 02 00 00 00 00 00 06 01 38 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 06 01 00 20 9c 00 00 00
a0: cc cc 00 00 99 02 00 00 00 06 00 80 00 00 00 00
b0: 00 00 00 6e 00 00 00 00 00 00 00 00 fd 01 00 00
c0: fd 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

As far as I see the 64-bit magic is set, pci(0xA4) == 0x0299 and driver tries to
enable 64-bit DMA. However the controller is not supported 64-bit DMA, and I
still have the same error messages.

Could you please check this issue and update your patch properly.

Thank you,
	Vasily Averin

SWsoft Virtuozzo/OpenVZ Linux kernel team

Ju, Seokmann wrote:
> Hi,
> 
> This patch contains a fix for 64-bit DMA capability check in
> megaraid_{mm,mbox} driver. With patch, the driver access PCI
> configuration space with dedicated offset to read a signature. If the
> signature read, it means that the controller has capability to handle
> 64-bit DMA. Before this patch, the driver blindly claimed the capability
> without checking with controller.
> The issue has been reported by Vasily Averin [vvs at sw.ru]. Thank you
> Vasily for the reporting.

> +#define HBA_SIGNATURE_64BIT		0x0299
> +#define PCI_CONF_AMISIG64		0xa4
...
> -	if (pci_set_dma_mask(adapter->pdev, DMA_64BIT_MASK) != 0) {
> +	pci_read_config_dword(adapter->pdev, PCI_CONF_AMISIG64,
> &magic64);
>  
> -		con_log(CL_ANN, (KERN_WARNING
> -			"megaraid: could not set DMA mask for
> 64-bit.\n"));
> +	if ((magic64 == HBA_SIGNATURE_64BIT) || 
> +		(adapter->pdev->vendor == PCI_VENDOR_ID_DELL &&
> +		adapter->pdev->device ==
> PCI_DEVICE_ID_PERC4_DI_EVERGLADES) ||
> +		(adapter->pdev->vendor == PCI_VENDOR_ID_LSI_LOGIC &&
> +		adapter->pdev->device == PCI_DEVICE_ID_VERDE) ||
> +		(adapter->pdev->vendor == PCI_VENDOR_ID_LSI_LOGIC &&
> +		adapter->pdev->device == PCI_DEVICE_ID_DOBSON) ||
> +		(adapter->pdev->vendor == PCI_VENDOR_ID_DELL &&
> +		adapter->pdev->device == PCI_DEVICE_ID_PERC4E_DI_KOBUK)
> ||
> +		(adapter->pdev->vendor == PCI_VENDOR_ID_LSI_LOGIC &&
> +		adapter->pdev->device == PCI_DEVICE_ID_LINDSAY)) {
> +		if (pci_set_dma_mask(adapter->pdev, DMA_64BIT_MASK) !=
> 0) {




More information about the Devel mailing list