diff options
author | James Bottomley <JBottomley@Parallels.com> | 2012-09-13 04:26:10 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-09-13 04:26:10 -0400 |
commit | 1c4cf1d5845b59cdcbfad8e67272cf5b219ab062 (patch) | |
tree | c4ecdf7a4199bc20adcef950e9d5a38b9a6dc392 /drivers/scsi/isci | |
parent | 0bd1189e239c76eb3a50e458548fbe7e4a5dfff1 (diff) | |
parent | 6734092e66011def7875bd67beef889d0fee1cc9 (diff) |
Merge tag 'isci-for-3.6' into for-next
isci update for 3.6
1/ Fix the workaround for drives that have a slow response to COMSAS.
Drives with this problem intermittently take a long time to be
identified, or fail to be identified altogether.
2/ A minor fix for the efi variable code failure path
3/ A handful of smatch fixups from Dan Carpenter
Diffstat (limited to 'drivers/scsi/isci')
-rw-r--r-- | drivers/scsi/isci/host.c | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/init.c | 1 | ||||
-rw-r--r-- | drivers/scsi/isci/phy.c | 4 | ||||
-rw-r--r-- | drivers/scsi/isci/probe_roms.c | 1 | ||||
-rw-r--r-- | drivers/scsi/isci/remote_node_context.h | 2 |
5 files changed, 5 insertions, 5 deletions
diff --git a/drivers/scsi/isci/host.c b/drivers/scsi/isci/host.c index 45385f53164..b425ed523cc 100644 --- a/drivers/scsi/isci/host.c +++ b/drivers/scsi/isci/host.c | |||
@@ -1973,7 +1973,7 @@ static void sci_controller_afe_initialization(struct isci_host *ihost) | |||
1973 | } | 1973 | } |
1974 | 1974 | ||
1975 | for (phy_id = 0; phy_id < SCI_MAX_PHYS; phy_id++) { | 1975 | for (phy_id = 0; phy_id < SCI_MAX_PHYS; phy_id++) { |
1976 | struct scu_afe_transceiver *xcvr = &afe->scu_afe_xcvr[phy_id]; | 1976 | struct scu_afe_transceiver __iomem *xcvr = &afe->scu_afe_xcvr[phy_id]; |
1977 | const struct sci_phy_oem_params *oem_phy = &oem->phys[phy_id]; | 1977 | const struct sci_phy_oem_params *oem_phy = &oem->phys[phy_id]; |
1978 | int cable_length_long = | 1978 | int cable_length_long = |
1979 | is_long_cable(phy_id, cable_selection_mask); | 1979 | is_long_cable(phy_id, cable_selection_mask); |
diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c index 92c1d86d1fc..1286a8a787e 100644 --- a/drivers/scsi/isci/init.c +++ b/drivers/scsi/isci/init.c | |||
@@ -644,7 +644,6 @@ static int __devinit isci_pci_probe(struct pci_dev *pdev, const struct pci_devic | |||
644 | orom->hdr.version)) { | 644 | orom->hdr.version)) { |
645 | dev_warn(&pdev->dev, | 645 | dev_warn(&pdev->dev, |
646 | "[%d]: invalid oem parameters detected, falling back to firmware\n", i); | 646 | "[%d]: invalid oem parameters detected, falling back to firmware\n", i); |
647 | devm_kfree(&pdev->dev, orom); | ||
648 | orom = NULL; | 647 | orom = NULL; |
649 | break; | 648 | break; |
650 | } | 649 | } |
diff --git a/drivers/scsi/isci/phy.c b/drivers/scsi/isci/phy.c index 18f43d4c30b..cb87b2ef7c9 100644 --- a/drivers/scsi/isci/phy.c +++ b/drivers/scsi/isci/phy.c | |||
@@ -169,7 +169,7 @@ sci_phy_link_layer_initialization(struct isci_phy *iphy, | |||
169 | phy_cap.gen1_no_ssc = 1; | 169 | phy_cap.gen1_no_ssc = 1; |
170 | if (ihost->oem_parameters.controller.do_enable_ssc) { | 170 | if (ihost->oem_parameters.controller.do_enable_ssc) { |
171 | struct scu_afe_registers __iomem *afe = &ihost->scu_registers->afe; | 171 | struct scu_afe_registers __iomem *afe = &ihost->scu_registers->afe; |
172 | struct scu_afe_transceiver *xcvr = &afe->scu_afe_xcvr[phy_idx]; | 172 | struct scu_afe_transceiver __iomem *xcvr = &afe->scu_afe_xcvr[phy_idx]; |
173 | struct isci_pci_info *pci_info = to_pci_info(ihost->pdev); | 173 | struct isci_pci_info *pci_info = to_pci_info(ihost->pdev); |
174 | bool en_sas = false; | 174 | bool en_sas = false; |
175 | bool en_sata = false; | 175 | bool en_sata = false; |
@@ -1205,6 +1205,7 @@ static void scu_link_layer_start_oob(struct isci_phy *iphy) | |||
1205 | /** Reset OOB sequence - start */ | 1205 | /** Reset OOB sequence - start */ |
1206 | val = readl(&ll->phy_configuration); | 1206 | val = readl(&ll->phy_configuration); |
1207 | val &= ~(SCU_SAS_PCFG_GEN_BIT(OOB_RESET) | | 1207 | val &= ~(SCU_SAS_PCFG_GEN_BIT(OOB_RESET) | |
1208 | SCU_SAS_PCFG_GEN_BIT(OOB_ENABLE) | | ||
1208 | SCU_SAS_PCFG_GEN_BIT(HARD_RESET)); | 1209 | SCU_SAS_PCFG_GEN_BIT(HARD_RESET)); |
1209 | writel(val, &ll->phy_configuration); | 1210 | writel(val, &ll->phy_configuration); |
1210 | readl(&ll->phy_configuration); /* flush */ | 1211 | readl(&ll->phy_configuration); /* flush */ |
@@ -1236,6 +1237,7 @@ static void scu_link_layer_tx_hard_reset( | |||
1236 | * to the starting state. */ | 1237 | * to the starting state. */ |
1237 | phy_configuration_value = | 1238 | phy_configuration_value = |
1238 | readl(&iphy->link_layer_registers->phy_configuration); | 1239 | readl(&iphy->link_layer_registers->phy_configuration); |
1240 | phy_configuration_value &= ~(SCU_SAS_PCFG_GEN_BIT(OOB_ENABLE)); | ||
1239 | phy_configuration_value |= | 1241 | phy_configuration_value |= |
1240 | (SCU_SAS_PCFG_GEN_BIT(HARD_RESET) | | 1242 | (SCU_SAS_PCFG_GEN_BIT(HARD_RESET) | |
1241 | SCU_SAS_PCFG_GEN_BIT(OOB_RESET)); | 1243 | SCU_SAS_PCFG_GEN_BIT(OOB_RESET)); |
diff --git a/drivers/scsi/isci/probe_roms.c b/drivers/scsi/isci/probe_roms.c index 4d95654c3fd..8ac646e5edd 100644 --- a/drivers/scsi/isci/probe_roms.c +++ b/drivers/scsi/isci/probe_roms.c | |||
@@ -104,7 +104,6 @@ struct isci_orom *isci_request_oprom(struct pci_dev *pdev) | |||
104 | 104 | ||
105 | if (i >= len) { | 105 | if (i >= len) { |
106 | dev_err(&pdev->dev, "oprom parse error\n"); | 106 | dev_err(&pdev->dev, "oprom parse error\n"); |
107 | devm_kfree(&pdev->dev, rom); | ||
108 | rom = NULL; | 107 | rom = NULL; |
109 | } | 108 | } |
110 | pci_unmap_biosrom(oprom); | 109 | pci_unmap_biosrom(oprom); |
diff --git a/drivers/scsi/isci/remote_node_context.h b/drivers/scsi/isci/remote_node_context.h index a703b9ce0c2..c7ee81d0112 100644 --- a/drivers/scsi/isci/remote_node_context.h +++ b/drivers/scsi/isci/remote_node_context.h | |||
@@ -212,7 +212,7 @@ enum sci_status sci_remote_node_context_destruct(struct sci_remote_node_context | |||
212 | scics_sds_remote_node_context_callback callback, | 212 | scics_sds_remote_node_context_callback callback, |
213 | void *callback_parameter); | 213 | void *callback_parameter); |
214 | enum sci_status sci_remote_node_context_suspend(struct sci_remote_node_context *sci_rnc, | 214 | enum sci_status sci_remote_node_context_suspend(struct sci_remote_node_context *sci_rnc, |
215 | u32 suspend_type, | 215 | enum sci_remote_node_suspension_reasons reason, |
216 | u32 suspension_code); | 216 | u32 suspension_code); |
217 | enum sci_status sci_remote_node_context_resume(struct sci_remote_node_context *sci_rnc, | 217 | enum sci_status sci_remote_node_context_resume(struct sci_remote_node_context *sci_rnc, |
218 | scics_sds_remote_node_context_callback cb_fn, | 218 | scics_sds_remote_node_context_callback cb_fn, |