| From: Dan Williams <dan.j.williams@intel.com> |
| Date: Mon, 30 Apr 2012 11:57:44 -0700 |
| Subject: isci: fix oem parameter validation on single controller skus |
| |
| commit fc25f79af321c01a739150ba2c09435cf977a63d upstream. |
| |
| OEM parameters [1] are parsed from the platform option-rom / efi |
| driver. By default the driver was validating the parameters for the |
| dual-controller case, but in single-controller case only the first set |
| of parameters may be valid. |
| |
| Limit the validation to the number of actual controllers detected |
| otherwise the driver may fail to parse the valid parameters leading to |
| driver-load or runtime failures. |
| |
| [1] the platform specific set of phy address, configuration,and analog |
| tuning values |
| |
| [stable v3.0+] |
| Reported-by: Dave Jiang <dave.jiang@intel.com> |
| Tested-by: Dave Jiang <dave.jiang@intel.com> |
| Signed-off-by: Dan Williams <dan.j.williams@intel.com> |
| [bwh: Backported to 3.2: adjust context] |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/scsi/isci/init.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- linux.orig/drivers/scsi/isci/init.c |
| +++ linux/drivers/scsi/isci/init.c |
| @@ -465,7 +465,7 @@ |
| if (!orom) |
| orom = isci_request_oprom(pdev); |
| |
| - for (i = 0; orom && i < ARRAY_SIZE(orom->ctrl); i++) { |
| + for (i = 0; orom && i < num_controllers(pdev); i++) { |
| if (sci_oem_parameters_validate(&orom->ctrl[i])) { |
| dev_warn(&pdev->dev, |
| "[%d]: invalid oem parameters detected, falling back to firmware\n", i); |