From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/2] EDAC, altera: Less Intrusive Error Injection From: thor.thayer@linux.intel.com Message-Id: <1553635771-32693-1-git-send-email-thor.thayer@linux.intel.com> Date: Tue, 26 Mar 2019 16:29:30 -0500 To: bp@alien8.de, mchehab@kernel.org, james.morse@arm.com Cc: linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Thor Thayer List-ID: RnJvbTogVGhvciBUaGF5ZXIgPHRob3IudGhheWVyQGxpbnV4LmludGVsLmNvbT4KCkltcHJvdmUg dGhlIEFycmlhMTAgYW5kIFN0cmF0aXgxMCBlcnJvciBpbmplY3Rpb24gcm91dGluZQpieSByZWFk aW5nIHRoZSBkYXRhIGFuZCBjaGFuZ2luZyBqdXN0IDEgYml0IGJlZm9yZSB3cml0aW5nCmJhY2sg b3V0LiBQcmV2aW91cyByb3V0aW5lIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZmlyc3QgYnl0ZXMKdG8g MCB0aGVuIGNoYW5nZSAxIGJpdCBidXQgdGhpcyBtZXRob2QgaXMgbGVzcyBpbnRydXNpdmUuCgpT aWduZWQtb2ZmLWJ5OiBUaG9yIFRoYXllciA8dGhvci50aGF5ZXJAbGludXguaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jIHwgMzAgKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tCiBkcml2ZXJzL2VkYWMvYWx0ZXJhX2VkYWMuaCB8ICAyICstCiAyIGZpbGVzIGNo YW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jIGIvZHJpdmVycy9lZGFjL2FsdGVyYV9lZGFjLmMKaW5k ZXggNWZmMjYzODUwY2M3Li5hY2IzMDA2ZGY2MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9h bHRlcmFfZWRhYy5jCisrKyBiL2RyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5jCkBAIC0xNzYyLDI4 ICsxNzYyLDI0IEBAIHN0YXRpYyBzc2l6ZV90IGFsdHJfZWRhY19hMTBfZGV2aWNlX3RyaWcyKHN0 cnVjdCBmaWxlICpmaWxlLAogCWlmICh0cmlnX3R5cGUgPT0gQUxUUl9VRV9UUklHR0VSX0NIQVIp IHsKIAkJd3JpdGVsKHByaXYtPnVlX3NldF9tYXNrLCBzZXRfYWRkcik7CiAJfSBlbHNlIHsKLQkJ LyogU2V0dXAgd3JpdGUgb2YgMCB0byBmaXJzdCA0IGJ5dGVzICovCi0JCXdyaXRlbCgweDAsIGRy dmRhdGEtPmJhc2UgKyBFQ0NfQkxLX1dEQVRBMF9PRlNUKTsKLQkJd3JpdGVsKDB4MCwgZHJ2ZGF0 YS0+YmFzZSArIEVDQ19CTEtfV0RBVEExX09GU1QpOwotCQl3cml0ZWwoMHgwLCBkcnZkYXRhLT5i YXNlICsgRUNDX0JMS19XREFUQTJfT0ZTVCk7Ci0JCXdyaXRlbCgweDAsIGRydmRhdGEtPmJhc2Ug KyBFQ0NfQkxLX1dEQVRBM19PRlNUKTsKLQkJLyogU2V0dXAgd3JpdGUgb2YgNCBieXRlcyAqLwor CQkvKiBTZXR1cCByZWFkL3dyaXRlIG9mIDQgYnl0ZXMgKi8KIAkJd3JpdGVsKEVDQ19XT1JEX1dS SVRFLCBkcnZkYXRhLT5iYXNlICsgRUNDX0JMS19EQllURUNUUkxfT0ZTVCk7CiAJCS8qIFNldHVw IEFkZHJlc3MgdG8gMCAqLwotCQl3cml0ZWwoMHgwLCBkcnZkYXRhLT5iYXNlICsgRUNDX0JMS19B RERSRVNTX09GU1QpOwotCQkvKiBTZXR1cCBhY2NjdHJsIHRvIHdyaXRlICYgZGF0YSBvdmVycmlk ZSAqLwotCQl3cml0ZWwoRUNDX1dSSVRFX0RPVlIsIGRydmRhdGEtPmJhc2UgKyBFQ0NfQkxLX0FD Q0NUUkxfT0ZTVCk7Ci0JCS8qIEtpY2sgaXQuICovCi0JCXdyaXRlbChFQ0NfWEFDVF9LSUNLLCBk cnZkYXRhLT5iYXNlICsgRUNDX0JMS19TVEFSVEFDQ19PRlNUKTsKLQkJLyogU2V0dXAgYWNjY3Ry bCB0byByZWFkICYgZWNjIG92ZXJyaWRlICovCi0JCXdyaXRlbChFQ0NfUkVBRF9FT1ZSLCBkcnZk YXRhLT5iYXNlICsgRUNDX0JMS19BQ0NDVFJMX09GU1QpOworCQl3cml0ZWwoMCwgZHJ2ZGF0YS0+ YmFzZSArIEVDQ19CTEtfQUREUkVTU19PRlNUKTsKKwkJLyogU2V0dXAgYWNjY3RybCB0byByZWFk ICYgZWNjICYgZGF0YSBvdmVycmlkZSAqLworCQl3cml0ZWwoRUNDX1JFQURfRURPVlIsIGRydmRh dGEtPmJhc2UgKyBFQ0NfQkxLX0FDQ0NUUkxfT0ZTVCk7CiAJCS8qIEtpY2sgaXQuICovCiAJCXdy aXRlbChFQ0NfWEFDVF9LSUNLLCBkcnZkYXRhLT5iYXNlICsgRUNDX0JMS19TVEFSVEFDQ19PRlNU KTsKIAkJLyogU2V0dXAgd3JpdGUgZm9yIHNpbmdsZSBiaXQgY2hhbmdlICovCi0JCXdyaXRlbCgw eDEsIGRydmRhdGEtPmJhc2UgKyBFQ0NfQkxLX1dEQVRBMF9PRlNUKTsKLQkJd3JpdGVsKDB4MCwg ZHJ2ZGF0YS0+YmFzZSArIEVDQ19CTEtfV0RBVEExX09GU1QpOwotCQl3cml0ZWwoMHgwLCBkcnZk YXRhLT5iYXNlICsgRUNDX0JMS19XREFUQTJfT0ZTVCk7Ci0JCXdyaXRlbCgweDAsIGRydmRhdGEt PmJhc2UgKyBFQ0NfQkxLX1dEQVRBM19PRlNUKTsKKwkJd3JpdGVsKHJlYWRsKGRydmRhdGEtPmJh c2UgKyBFQ0NfQkxLX1JEQVRBMF9PRlNUKSBeIDB4MSwKKwkJICAgICAgIGRydmRhdGEtPmJhc2Ug KyBFQ0NfQkxLX1dEQVRBMF9PRlNUKTsKKwkJd3JpdGVsKHJlYWRsKGRydmRhdGEtPmJhc2UgKyBF Q0NfQkxLX1JEQVRBMV9PRlNUKSwKKwkJICAgICAgIGRydmRhdGEtPmJhc2UgKyBFQ0NfQkxLX1dE QVRBMV9PRlNUKTsKKwkJd3JpdGVsKHJlYWRsKGRydmRhdGEtPmJhc2UgKyBFQ0NfQkxLX1JEQVRB Ml9PRlNUKSwKKwkJICAgICAgIGRydmRhdGEtPmJhc2UgKyBFQ0NfQkxLX1dEQVRBMl9PRlNUKTsK KwkJd3JpdGVsKHJlYWRsKGRydmRhdGEtPmJhc2UgKyBFQ0NfQkxLX1JEQVRBM19PRlNUKSwKKwkJ ICAgICAgIGRydmRhdGEtPmJhc2UgKyBFQ0NfQkxLX1dEQVRBM19PRlNUKTsKKwogCQkvKiBDb3B5 IFJlYWQgRUNDIHRvIFdyaXRlIEVDQyAqLwogCQl3cml0ZWwocmVhZGwoZHJ2ZGF0YS0+YmFzZSAr IEVDQ19CTEtfUkVDQzBfT0ZTVCksCiAJCSAgICAgICBkcnZkYXRhLT5iYXNlICsgRUNDX0JMS19X RUNDMF9PRlNUKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5oIGIvZHJp dmVycy9lZGFjL2FsdGVyYV9lZGFjLmgKaW5kZXggNjA1MTNmMjAxZmZiLi4xNTMyZWM5YzM1MTAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5oCisrKyBiL2RyaXZlcnMvZWRh Yy9hbHRlcmFfZWRhYy5oCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RydWN0IGFsdHJfc2RyYW1fbWNf ZGF0YSB7CiAjZGVmaW5lIEVDQ19CTEtfU1RBUlRBQ0NfT0ZTVCAgICAgICAgICAgICAweDdDCiAK ICNkZWZpbmUgRUNDX1hBQ1RfS0lDSyAgICAgICAgICAgICAgICAgICAgIDB4MTAwMDAKLSNkZWZp bmUgRUNDX1dPUkRfV1JJVEUgICAgICAgICAgICAgICAgICAgIDB4RgorI2RlZmluZSBFQ0NfV09S RF9XUklURSAgICAgICAgICAgICAgICAgICAgMHhGRgogI2RlZmluZSBFQ0NfV1JJVEVfRE9WUiAg ICAgICAgICAgICAgICAgICAgMHgxMDEKICNkZWZpbmUgRUNDX1dSSVRFX0VET1ZSICAgICAgICAg ICAgICAgICAgIDB4MTAzCiAjZGVmaW5lIEVDQ19SRUFEX0VPVlIgICAgICAgICAgICAgICAgICAg ICAweDIK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4DCBBC43381 for ; Tue, 26 Mar 2019 21:27:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1F62D20811 for ; Tue, 26 Mar 2019 21:27:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732441AbfCZV1L (ORCPT ); Tue, 26 Mar 2019 17:27:11 -0400 Received: from mga06.intel.com ([134.134.136.31]:22518 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730605AbfCZV1K (ORCPT ); Tue, 26 Mar 2019 17:27:10 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Mar 2019 14:27:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,274,1549958400"; d="scan'208";a="135039056" Received: from tthayer-hp-z620.an.intel.com ([10.122.105.146]) by fmsmga008.fm.intel.com with ESMTP; 26 Mar 2019 14:27:09 -0700 From: thor.thayer@linux.intel.com To: bp@alien8.de, mchehab@kernel.org, james.morse@arm.com Cc: linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Thor Thayer Subject: [PATCH 1/2] EDAC, altera: Less Intrusive Error Injection Date: Tue, 26 Mar 2019 16:29:30 -0500 Message-Id: <1553635771-32693-1-git-send-email-thor.thayer@linux.intel.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Thor Thayer Improve the Arria10 and Stratix10 error injection routine by reading the data and changing just 1 bit before writing back out. Previous routine would overwrite the first bytes to 0 then change 1 bit but this method is less intrusive. Signed-off-by: Thor Thayer --- drivers/edac/altera_edac.c | 30 +++++++++++++----------------- drivers/edac/altera_edac.h | 2 +- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index 5ff263850cc7..acb3006df631 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c @@ -1762,28 +1762,24 @@ static ssize_t altr_edac_a10_device_trig2(struct file *file, if (trig_type == ALTR_UE_TRIGGER_CHAR) { writel(priv->ue_set_mask, set_addr); } else { - /* Setup write of 0 to first 4 bytes */ - writel(0x0, drvdata->base + ECC_BLK_WDATA0_OFST); - writel(0x0, drvdata->base + ECC_BLK_WDATA1_OFST); - writel(0x0, drvdata->base + ECC_BLK_WDATA2_OFST); - writel(0x0, drvdata->base + ECC_BLK_WDATA3_OFST); - /* Setup write of 4 bytes */ + /* Setup read/write of 4 bytes */ writel(ECC_WORD_WRITE, drvdata->base + ECC_BLK_DBYTECTRL_OFST); /* Setup Address to 0 */ - writel(0x0, drvdata->base + ECC_BLK_ADDRESS_OFST); - /* Setup accctrl to write & data override */ - writel(ECC_WRITE_DOVR, drvdata->base + ECC_BLK_ACCCTRL_OFST); - /* Kick it. */ - writel(ECC_XACT_KICK, drvdata->base + ECC_BLK_STARTACC_OFST); - /* Setup accctrl to read & ecc override */ - writel(ECC_READ_EOVR, drvdata->base + ECC_BLK_ACCCTRL_OFST); + writel(0, drvdata->base + ECC_BLK_ADDRESS_OFST); + /* Setup accctrl to read & ecc & data override */ + writel(ECC_READ_EDOVR, drvdata->base + ECC_BLK_ACCCTRL_OFST); /* Kick it. */ writel(ECC_XACT_KICK, drvdata->base + ECC_BLK_STARTACC_OFST); /* Setup write for single bit change */ - writel(0x1, drvdata->base + ECC_BLK_WDATA0_OFST); - writel(0x0, drvdata->base + ECC_BLK_WDATA1_OFST); - writel(0x0, drvdata->base + ECC_BLK_WDATA2_OFST); - writel(0x0, drvdata->base + ECC_BLK_WDATA3_OFST); + writel(readl(drvdata->base + ECC_BLK_RDATA0_OFST) ^ 0x1, + drvdata->base + ECC_BLK_WDATA0_OFST); + writel(readl(drvdata->base + ECC_BLK_RDATA1_OFST), + drvdata->base + ECC_BLK_WDATA1_OFST); + writel(readl(drvdata->base + ECC_BLK_RDATA2_OFST), + drvdata->base + ECC_BLK_WDATA2_OFST); + writel(readl(drvdata->base + ECC_BLK_RDATA3_OFST), + drvdata->base + ECC_BLK_WDATA3_OFST); + /* Copy Read ECC to Write ECC */ writel(readl(drvdata->base + ECC_BLK_RECC0_OFST), drvdata->base + ECC_BLK_WECC0_OFST); diff --git a/drivers/edac/altera_edac.h b/drivers/edac/altera_edac.h index 60513f201ffb..1532ec9c3510 100644 --- a/drivers/edac/altera_edac.h +++ b/drivers/edac/altera_edac.h @@ -321,7 +321,7 @@ struct altr_sdram_mc_data { #define ECC_BLK_STARTACC_OFST 0x7C #define ECC_XACT_KICK 0x10000 -#define ECC_WORD_WRITE 0xF +#define ECC_WORD_WRITE 0xFF #define ECC_WRITE_DOVR 0x101 #define ECC_WRITE_EDOVR 0x103 #define ECC_READ_EOVR 0x2 -- 2.7.4