Re: [PATCH] megaraid_sas: Fix probing cards without io port

From: Martin K. Petersen
Date: Mon Aug 08 2016 - 22:03:26 EST


>>>>> "Yinghai" == Yinghai Lu <yinghai@xxxxxxxxxx> writes:

> Found one megaraid_sas HBA probe fails,
>
> [ 187.235190] scsi host2: Avago SAS based MegaRAID driver
> [ 191.112365] megaraid_sas 0000:89:00.0: BAR 0: can't reserve [io 0x0000-0x00ff]
> [ 191.120548] megaraid_sas 0000:89:00.0: IO memory region busy!

> and the card has resource like,
> [ 125.097714] pci 0000:89:00.0: [1000:005d] type 00 class 0x010400
> [ 125.104446] pci 0000:89:00.0: reg 0x10: [io 0x0000-0x00ff]
> [ 125.110686] pci 0000:89:00.0: reg 0x14: [mem 0xce400000-0xce40ffff 64bit]
> [ 125.118286] pci 0000:89:00.0: reg 0x1c: [mem 0xce300000-0xce3fffff 64bit]
> [ 125.125891] pci 0000:89:00.0: reg 0x30: [mem 0xce200000-0xce2fffff pref]

> that does not io port resource allocated from BIOS, and kernel can not assign
> one as io port shortage.
>
> The driver is only looking for MEM, and should not fail.

> It turns out megasas_init_fw() etc are using bar index as mask.
> index 1 is used as mask 1, so that pci_request_selected_regions()
> is trying to request BAR0 instead of BAR1.

> Fix all related reference.

Kashyap? Sumit?

--
Martin K. Petersen Oracle Linux Engineering