All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] megaraid_sas: Fix probing cards without io port
@ 2016-08-06  6:37 Yinghai Lu
  2016-08-09  2:03 ` Martin K. Petersen
  2016-08-11  2:29 ` Martin K. Petersen
  0 siblings, 2 replies; 4+ messages in thread
From: Yinghai Lu @ 2016-08-06  6:37 UTC (permalink / raw)
  To: Kashyap Desai, Sumit Saxena, Uday Lingala, James E.J. Bottomley,
	Martin K. Petersen
  Cc: megaraidlinux.pdl, linux-scsi, linux-kernel, Yinghai Lu

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.

Fixes: b6d5d8808b4c ("megaraid_sas: Use lowest memory bar for SR-IOV VF support")
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 drivers/scsi/megaraid/megaraid_sas_base.c   |    6 +++---
 drivers/scsi/megaraid/megaraid_sas_fusion.c |    2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

Index: linux-2.6/drivers/scsi/megaraid/megaraid_sas_base.c
===================================================================
--- linux-2.6.orig/drivers/scsi/megaraid/megaraid_sas_base.c
+++ linux-2.6/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -5037,7 +5037,7 @@ static int megasas_init_fw(struct megasa
 	/* Find first memory bar */
 	bar_list = pci_select_bars(instance->pdev, IORESOURCE_MEM);
 	instance->bar = find_first_bit(&bar_list, sizeof(unsigned long));
-	if (pci_request_selected_regions(instance->pdev, instance->bar,
+	if (pci_request_selected_regions(instance->pdev, 1<<instance->bar,
 					 "megasas: LSI")) {
 		dev_printk(KERN_DEBUG, &instance->pdev->dev, "IO memory region busy!\n");
 		return -EBUSY;
@@ -5339,7 +5339,7 @@ fail_ready_state:
 	iounmap(instance->reg_set);
 
       fail_ioremap:
-	pci_release_selected_regions(instance->pdev, instance->bar);
+	pci_release_selected_regions(instance->pdev, 1<<instance->bar);
 
 	return -EINVAL;
 }
@@ -5360,7 +5360,7 @@ static void megasas_release_mfi(struct m
 
 	iounmap(instance->reg_set);
 
-	pci_release_selected_regions(instance->pdev, instance->bar);
+	pci_release_selected_regions(instance->pdev, 1<<instance->bar);
 }
 
 /**
Index: linux-2.6/drivers/scsi/megaraid/megaraid_sas_fusion.c
===================================================================
--- linux-2.6.orig/drivers/scsi/megaraid/megaraid_sas_fusion.c
+++ linux-2.6/drivers/scsi/megaraid/megaraid_sas_fusion.c
@@ -2603,7 +2603,7 @@ megasas_release_fusion(struct megasas_in
 
 	iounmap(instance->reg_set);
 
-	pci_release_selected_regions(instance->pdev, instance->bar);
+	pci_release_selected_regions(instance->pdev, 1<<instance->bar);
 }
 
 /**

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] megaraid_sas: Fix probing cards without io port
  2016-08-06  6:37 [PATCH] megaraid_sas: Fix probing cards without io port Yinghai Lu
@ 2016-08-09  2:03 ` Martin K. Petersen
  2016-08-09 17:52   ` Kashyap Desai
  2016-08-11  2:29 ` Martin K. Petersen
  1 sibling, 1 reply; 4+ messages in thread
From: Martin K. Petersen @ 2016-08-09  2:03 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Kashyap Desai, Sumit Saxena, Uday Lingala, James E.J. Bottomley,
	Martin K. Petersen, megaraidlinux.pdl, linux-scsi, linux-kernel

>>>>> "Yinghai" == Yinghai Lu <yinghai@kernel.org> 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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH] megaraid_sas: Fix probing cards without io port
  2016-08-09  2:03 ` Martin K. Petersen
@ 2016-08-09 17:52   ` Kashyap Desai
  0 siblings, 0 replies; 4+ messages in thread
From: Kashyap Desai @ 2016-08-09 17:52 UTC (permalink / raw)
  To: Martin K. Petersen, Yinghai Lu
  Cc: Kashyap Desai, Sumit Saxena, James E.J. Bottomley,
	megaraidlinux.pdl, linux-scsi, linux-kernel

 > > 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.

Review patch and looks good. Thanks Yinghai for submitting patch.

Acked-by:  Kashyap Desai <kashyap.desai@broadcom.com>

>
> Kashyap? Sumit?
>
> --
> Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] megaraid_sas: Fix probing cards without io port
  2016-08-06  6:37 [PATCH] megaraid_sas: Fix probing cards without io port Yinghai Lu
  2016-08-09  2:03 ` Martin K. Petersen
@ 2016-08-11  2:29 ` Martin K. Petersen
  1 sibling, 0 replies; 4+ messages in thread
From: Martin K. Petersen @ 2016-08-11  2:29 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Kashyap Desai, Sumit Saxena, Uday Lingala, James E.J. Bottomley,
	Martin K. Petersen, megaraidlinux.pdl, linux-scsi, linux-kernel

>>>>> "Yinghai" == Yinghai Lu <yinghai@kernel.org> writes:

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

Applied to 4.8/scsi-fixes.

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-08-11  2:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-06  6:37 [PATCH] megaraid_sas: Fix probing cards without io port Yinghai Lu
2016-08-09  2:03 ` Martin K. Petersen
2016-08-09 17:52   ` Kashyap Desai
2016-08-11  2:29 ` Martin K. Petersen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.