[PATCH 643/643] On some system, reset action duringSo mask corrected error before issue the reset and restore it after reset.Tested working with LSI Logic / Symbios Logic SAS2008 PCI-Expre ss Fusion-MPT SAS-2 [Falcon]and Sun X3-2/2L/2B Servers(SUN FIRE X4170/X4270 M3), Sun X4-2/2L/2B servers

From: ethan . zhao
Date: Fri Nov 16 2012 - 07:14:48 EST



Signed-off-by: ethan.zhao <ethan.kernel@xxxxxxxxx>
---
drivers/scsi/mpt2sas/mpt2sas_base.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c
b/drivers/scsi/mpt2sas/mpt2sas_base.c
index ffd85c5..ee54bb9 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_base.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
@@ -3873,6 +3873,17 @@ _base_diag_reset(struct MPT2SAS_ADAPTER *ioc,
int sleep_flag)
u32 ioc_state;
u32 count;
u32 hcb_size;
+ struct pci_dev *us_dev = ioc->pdev->bus->self;
+ int pos = pci_pcie_cap(us_dev);
+ u16 devctl;
+
+ /* On some system, reset action will trigger corrected AER,
+ * So mask corrected error before issue the reset and enable it
+ * after reset
+ */
+ pci_read_config_word(us_dev, pos + PCI_EXP_DEVCTL, &devctl);
+ pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL,
+ (devctl & ~PCI_EXP_DEVCTL_CERE));

printk(MPT2SAS_INFO_FMT "sending diag reset !!\n", ioc->name);
drsprintk(ioc, printk(MPT2SAS_INFO_FMT "clear interrupts\n",
@@ -3971,6 +3982,7 @@ _base_diag_reset(struct MPT2SAS_ADAPTER *ioc,
int sleep_flag)
}

printk(MPT2SAS_INFO_FMT "diag reset: SUCCESS\n", ioc->name);
+ pci_write_config_word(us_dev, pos + PCI_EXP_DEVCTL, devctl);
return 0;

out:
--
1.7.1

--047d7bacc17096f3df04ce929bc8
Content-Type: application/octet-stream;
name="0643-On-some-system-reset-action-during-initializing-will.patch"
Content-Disposition: attachment;
filename="0643-On-some-system-reset-action-during-initializing-will.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h9km5koj0

RnJvbSA4OGYxYWM2MTI0Njc4YmJlNDUxMTJjZTA3MGI2MmU3MDllN2Q3MmY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBldGhhbi56aGFvIDxldGhhbi5rZXJuZWxAZ21haWwuY29tPgpE
YXRlOiBGcmksIDE2IE5vdiAyMDEyIDA0OjE0OjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSCA2NDMv
NjQzXSBPbiBzb21lIHN5c3RlbSwgcmVzZXQgYWN0aW9uIGR1cmluZyBpbml0aWFsaXppbmcgd2ls
bCB0cmlnZ2VyIG11bHRpcGxlIGNvcnJlY3RlZCBBRVIsCiBTbyBtYXNrIGNvcnJlY3RlZCBlcnJv
ciBiZWZvcmUgaXNzdWUgdGhlIHJlc2V0IGFuZCByZXN0b3JlIGl0IGFmdGVyIHJlc2V0LgogVGVz
dGVkIHdvcmtpbmcgd2l0aAogIExTSSBMb2dpYyAvIFN5bWJpb3MgTG9naWMgU0FTMjAwOCBQQ0kt
RXhwcmUgc3MgRnVzaW9uLU1QVCBTQVMtMiBbRmFsY29uXQogYW5kIFN1biBYMy0yLzJMLzJCIFNl
cnZlcnMoU1VOIEZJUkUgWDQxNzAvWDQyNzAgTTMpLCBTdW4gWDQtMi8yTC8yQiBzZXJ2ZXJzCgoK
U2lnbmVkLW9mZi1ieTogZXRoYW4uemhhbyA8ZXRoYW4ua2VybmVsQGdtYWlsLmNvbT4KLS0tCiBk
cml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2Jhc2UuYyB8ICAgMTIgKysrKysrKysrKysrCiAx
IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19iYXNlLmMgYi9kcml2ZXJzL3Njc2kv
bXB0MnNhcy9tcHQyc2FzX2Jhc2UuYwppbmRleCBmZmQ4NWM1Li5lZTU0YmI5IDEwMDY0NAotLS0g
YS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2Jhc2UuYworKysgYi9kcml2ZXJzL3Njc2kv
bXB0MnNhcy9tcHQyc2FzX2Jhc2UuYwpAQCAtMzg3Myw2ICszODczLDE3IEBAIF9iYXNlX2RpYWdf
cmVzZXQoc3RydWN0IE1QVDJTQVNfQURBUFRFUiAqaW9jLCBpbnQgc2xlZXBfZmxhZykKIAl1MzIg
aW9jX3N0YXRlOwogCXUzMiBjb3VudDsKIAl1MzIgaGNiX3NpemU7CisJc3RydWN0IHBjaV9kZXYg
KnVzX2RldiA9IGlvYy0+cGRldi0+YnVzLT5zZWxmOworCWludCBwb3MgPSBwY2lfcGNpZV9jYXAo
dXNfZGV2KTsKKwl1MTYgZGV2Y3RsOworCQorCS8qIE9uIHNvbWUgc3lzdGVtLCByZXNldCBhY3Rp
b24gd2lsbCB0cmlnZ2VyIGNvcnJlY3RlZCBBRVIsIAorCSAqIFNvIG1hc2sgY29ycmVjdGVkIGVy
cm9yIGJlZm9yZSBpc3N1ZSB0aGUgcmVzZXQgYW5kIGVuYWJsZSBpdCAKKwkgKiBhZnRlciByZXNl
dAorCSAqLworCXBjaV9yZWFkX2NvbmZpZ193b3JkKHVzX2RldiwgcG9zICsgUENJX0VYUF9ERVZD
VEwsICZkZXZjdGwpOworCXBjaV93cml0ZV9jb25maWdfd29yZCh1c19kZXYsIHBvcyArIFBDSV9F
WFBfREVWQ1RMLAorCQkoZGV2Y3RsICYgflBDSV9FWFBfREVWQ1RMX0NFUkUpKTsKIAogCXByaW50
ayhNUFQyU0FTX0lORk9fRk1UICJzZW5kaW5nIGRpYWcgcmVzZXQgISFcbiIsIGlvYy0+bmFtZSk7
CiAJZHJzcHJpbnRrKGlvYywgcHJpbnRrKE1QVDJTQVNfSU5GT19GTVQgImNsZWFyIGludGVycnVw
dHNcbiIsCkBAIC0zOTcxLDYgKzM5ODIsNyBAQCBfYmFzZV9kaWFnX3Jlc2V0KHN0cnVjdCBNUFQy
U0FTX0FEQVBURVIgKmlvYywgaW50IHNsZWVwX2ZsYWcpCiAJfQogCiAJcHJpbnRrKE1QVDJTQVNf
SU5GT19GTVQgImRpYWcgcmVzZXQ6IFNVQ0NFU1NcbiIsIGlvYy0+bmFtZSk7CisJcGNpX3dyaXRl
X2NvbmZpZ193b3JkKHVzX2RldiwgcG9zICsgUENJX0VYUF9ERVZDVEwsIGRldmN0bCk7CiAJcmV0
dXJuIDA7CiAKICBvdXQ6Ci0tIAoxLjcuMQoK
--047d7bacc17096f3df04ce929bc8--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/