From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752159AbdFLRtL (ORCPT ); Mon, 12 Jun 2017 13:49:11 -0400 Received: from blatinox.fr ([51.254.120.209]:40294 "EHLO vps202351.ovh.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751833AbdFLRtJ (ORCPT ); Mon, 12 Jun 2017 13:49:09 -0400 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lefaure?= To: Borislav Petkov , Mauro Carvalho Chehab Cc: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lefaure?= , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] edac, i5000, i5400: fix definition of nrecmemb register Date: Mon, 12 Jun 2017 13:47:58 -0400 Message-Id: <20170612174759.7649-1-jeremy.lefaure@lse.epita.fr> X-Mailer: git-send-email 2.13.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In i5000 and i5400 edac drivers, the register nrecmemb is defined as a 16 bits value which result in wrong shifts in the code: CHECK drivers/edac/i5000_edac.c drivers/edac/i5000_edac.c:485:15: warning: right shift by bigger than source value drivers/edac/i5000_edac.c:580:23: warning: right shift by bigger than source value CC drivers/edac/i5000_edac.o CHECK drivers/edac/i5400_edac.c drivers/edac/i5400_edac.c:391:36: warning: right shift by bigger than source value drivers/edac/i5400_edac.c:401:37: warning: right shift by bigger than source value CC drivers/edac/i5400_edac.o In the datasheets ([1], section 3.9.22.20 and [2], section 3.9.22.21), this register is a 32 bits register. A u32 value for the register fixes the wrong shifts warnings and matches the datasheet. This patch also fixes the mask to access to the CAS bits [16 to 28] in the i5000 edac driver. [1]: https://www.intel.com/content/dam/doc/datasheet/5000p-5000v-5000z-chipset-memory-controller-hub-datasheet.pdf [2]: https://www.intel.se/content/dam/doc/datasheet/5400-chipset-memory-controller-hub-datasheet.pdf Signed-off-by: Jérémy Lefaure --- I have found this error thanks to the sparse tool. Please note that this patch hasn't been tested on real hardware. drivers/edac/i5000_edac.c | 6 +++--- drivers/edac/i5400_edac.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/edac/i5000_edac.c b/drivers/edac/i5000_edac.c index f683919981b0..c79016ade51e 100644 --- a/drivers/edac/i5000_edac.c +++ b/drivers/edac/i5000_edac.c @@ -227,7 +227,7 @@ #define NREC_RDWR(x) (((x)>>11) & 1) #define NREC_RANK(x) (((x)>>8) & 0x7) #define NRECMEMB 0xC0 -#define NREC_CAS(x) (((x)>>16) & 0xFFFFFF) +#define NREC_CAS(x) (((x)>>16) & 0x1FFF) #define NREC_RAS(x) ((x) & 0x7FFF) #define NRECFGLOG 0xC4 #define NREEECFBDA 0xC8 @@ -371,7 +371,7 @@ struct i5000_error_info { /* These registers are input ONLY if there was a * Non-Recoverable Error */ u16 nrecmema; /* Non-Recoverable Mem log A */ - u16 nrecmemb; /* Non-Recoverable Mem log B */ + u32 nrecmemb; /* Non-Recoverable Mem log B */ }; @@ -407,7 +407,7 @@ static void i5000_get_error_info(struct mem_ctl_info *mci, NERR_FAT_FBD, &info->nerr_fat_fbd); pci_read_config_word(pvt->branchmap_werrors, NRECMEMA, &info->nrecmema); - pci_read_config_word(pvt->branchmap_werrors, + pci_read_config_dword(pvt->branchmap_werrors, NRECMEMB, &info->nrecmemb); /* Clear the error bits, by writing them back */ diff --git a/drivers/edac/i5400_edac.c b/drivers/edac/i5400_edac.c index 37a9ba71da44..cd889edc8516 100644 --- a/drivers/edac/i5400_edac.c +++ b/drivers/edac/i5400_edac.c @@ -368,7 +368,7 @@ struct i5400_error_info { /* These registers are input ONLY if there was a Non-Rec Error */ u16 nrecmema; /* Non-Recoverable Mem log A */ - u16 nrecmemb; /* Non-Recoverable Mem log B */ + u32 nrecmemb; /* Non-Recoverable Mem log B */ }; @@ -458,7 +458,7 @@ static void i5400_get_error_info(struct mem_ctl_info *mci, NERR_FAT_FBD, &info->nerr_fat_fbd); pci_read_config_word(pvt->branchmap_werrors, NRECMEMA, &info->nrecmema); - pci_read_config_word(pvt->branchmap_werrors, + pci_read_config_dword(pvt->branchmap_werrors, NRECMEMB, &info->nrecmemb); /* Clear the error bits, by writing them back */ -- 2.13.1 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: edac, i5000, i5400: fix definition of nrecmemb register From: =?utf-8?q?J=C3=A9r=C3=A9my_Lefaure?= Message-Id: <20170612174759.7649-1-jeremy.lefaure@lse.epita.fr> Date: Mon, 12 Jun 2017 13:47:58 -0400 To: Borislav Petkov , Mauro Carvalho Chehab Cc: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lefaure?= , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: SW4gaTUwMDAgYW5kIGk1NDAwIGVkYWMgZHJpdmVycywgdGhlIHJlZ2lzdGVyIG5yZWNtZW1iIGlz IGRlZmluZWQgYXMgYQoxNiBiaXRzIHZhbHVlIHdoaWNoIHJlc3VsdCBpbiB3cm9uZyBzaGlmdHMg aW4gdGhlIGNvZGU6CiAgQ0hFQ0sgICBkcml2ZXJzL2VkYWMvaTUwMDBfZWRhYy5jCmRyaXZlcnMv ZWRhYy9pNTAwMF9lZGFjLmM6NDg1OjE1OiB3YXJuaW5nOiByaWdodCBzaGlmdCBieSBiaWdnZXIg dGhhbgpzb3VyY2UgdmFsdWUKZHJpdmVycy9lZGFjL2k1MDAwX2VkYWMuYzo1ODA6MjM6IHdhcm5p bmc6IHJpZ2h0IHNoaWZ0IGJ5IGJpZ2dlciB0aGFuCnNvdXJjZSB2YWx1ZQogIENDICAgICAgZHJp dmVycy9lZGFjL2k1MDAwX2VkYWMubwogIENIRUNLICAgZHJpdmVycy9lZGFjL2k1NDAwX2VkYWMu Ywpkcml2ZXJzL2VkYWMvaTU0MDBfZWRhYy5jOjM5MTozNjogd2FybmluZzogcmlnaHQgc2hpZnQg YnkgYmlnZ2VyIHRoYW4Kc291cmNlIHZhbHVlCmRyaXZlcnMvZWRhYy9pNTQwMF9lZGFjLmM6NDAx OjM3OiB3YXJuaW5nOiByaWdodCBzaGlmdCBieSBiaWdnZXIgdGhhbgpzb3VyY2UgdmFsdWUKICBD QyAgICAgIGRyaXZlcnMvZWRhYy9pNTQwMF9lZGFjLm8KCkluIHRoZSBkYXRhc2hlZXRzIChbMV0s IHNlY3Rpb24gMy45LjIyLjIwIGFuZCBbMl0sIHNlY3Rpb24gMy45LjIyLjIxKSwKdGhpcyByZWdp c3RlciBpcyBhIDMyIGJpdHMgcmVnaXN0ZXIuIEEgdTMyIHZhbHVlIGZvciB0aGUgcmVnaXN0ZXIg Zml4ZXMKdGhlIHdyb25nIHNoaWZ0cyB3YXJuaW5ncyBhbmQgbWF0Y2hlcyB0aGUgZGF0YXNoZWV0 LgoKVGhpcyBwYXRjaCBhbHNvIGZpeGVzIHRoZSBtYXNrIHRvIGFjY2VzcyB0byB0aGUgQ0FTIGJp dHMgWzE2IHRvIDI4XSBpbgp0aGUgaTUwMDAgZWRhYyBkcml2ZXIuCgpbMV06IGh0dHBzOi8vd3d3 LmludGVsLmNvbS9jb250ZW50L2RhbS9kb2MvZGF0YXNoZWV0LzUwMDBwLTUwMDB2LTUwMDB6LWNo aXBzZXQtbWVtb3J5LWNvbnRyb2xsZXItaHViLWRhdGFzaGVldC5wZGYKWzJdOiBodHRwczovL3d3 dy5pbnRlbC5zZS9jb250ZW50L2RhbS9kb2MvZGF0YXNoZWV0LzU0MDAtY2hpcHNldC1tZW1vcnkt Y29udHJvbGxlci1odWItZGF0YXNoZWV0LnBkZgoKU2lnbmVkLW9mZi1ieTogSsOpcsOpbXkgTGVm YXVyZSA8amVyZW15LmxlZmF1cmVAbHNlLmVwaXRhLmZyPgotLS0KCkkgaGF2ZSBmb3VuZCB0aGlz IGVycm9yIHRoYW5rcyB0byB0aGUgc3BhcnNlIHRvb2wuIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBw YXRjaApoYXNuJ3QgYmVlbiB0ZXN0ZWQgb24gcmVhbCBoYXJkd2FyZS4KCgogZHJpdmVycy9lZGFj L2k1MDAwX2VkYWMuYyB8IDYgKysrLS0tCiBkcml2ZXJzL2VkYWMvaTU0MDBfZWRhYy5jIHwgNCAr Ky0tCiAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvaTUwMDBfZWRhYy5jIGIvZHJpdmVycy9lZGFjL2k1MDAw X2VkYWMuYwppbmRleCBmNjgzOTE5OTgxYjAuLmM3OTAxNmFkZTUxZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9lZGFjL2k1MDAwX2VkYWMuYworKysgYi9kcml2ZXJzL2VkYWMvaTUwMDBfZWRhYy5jCkBA IC0yMjcsNyArMjI3LDcgQEAKICNkZWZpbmUJCQlOUkVDX1JEV1IoeCkJCSgoKHgpPj4xMSkgJiAx KQogI2RlZmluZQkJCU5SRUNfUkFOSyh4KQkJKCgoeCk+PjgpICYgMHg3KQogI2RlZmluZQkJTlJF Q01FTUIJCTB4QzAKLSNkZWZpbmUJCQlOUkVDX0NBUyh4KQkJKCgoeCk+PjE2KSAmIDB4RkZGRkZG KQorI2RlZmluZQkJCU5SRUNfQ0FTKHgpCQkoKCh4KT4+MTYpICYgMHgxRkZGKQogI2RlZmluZQkJ CU5SRUNfUkFTKHgpCQkoKHgpICYgMHg3RkZGKQogI2RlZmluZQkJTlJFQ0ZHTE9HCQkweEM0CiAj ZGVmaW5lCQlOUkVFRUNGQkRBCQkweEM4CkBAIC0zNzEsNyArMzcxLDcgQEAgc3RydWN0IGk1MDAw X2Vycm9yX2luZm8gewogCS8qIFRoZXNlIHJlZ2lzdGVycyBhcmUgaW5wdXQgT05MWSBpZiB0aGVy ZSB3YXMgYQogCSAqIE5vbi1SZWNvdmVyYWJsZSBFcnJvciAqLwogCXUxNiBucmVjbWVtYTsJCS8q IE5vbi1SZWNvdmVyYWJsZSBNZW0gbG9nIEEgKi8KLQl1MTYgbnJlY21lbWI7CQkvKiBOb24tUmVj b3ZlcmFibGUgTWVtIGxvZyBCICovCisJdTMyIG5yZWNtZW1iOwkJLyogTm9uLVJlY292ZXJhYmxl IE1lbSBsb2cgQiAqLwogCiB9OwogCkBAIC00MDcsNyArNDA3LDcgQEAgc3RhdGljIHZvaWQgaTUw MDBfZ2V0X2Vycm9yX2luZm8oc3RydWN0IG1lbV9jdGxfaW5mbyAqbWNpLAogCQkJCU5FUlJfRkFU X0ZCRCwgJmluZm8tPm5lcnJfZmF0X2ZiZCk7CiAJCXBjaV9yZWFkX2NvbmZpZ193b3JkKHB2dC0+ YnJhbmNobWFwX3dlcnJvcnMsCiAJCQkJTlJFQ01FTUEsICZpbmZvLT5ucmVjbWVtYSk7Ci0JCXBj aV9yZWFkX2NvbmZpZ193b3JkKHB2dC0+YnJhbmNobWFwX3dlcnJvcnMsCisJCXBjaV9yZWFkX2Nv bmZpZ19kd29yZChwdnQtPmJyYW5jaG1hcF93ZXJyb3JzLAogCQkJCU5SRUNNRU1CLCAmaW5mby0+ bnJlY21lbWIpOwogCiAJCS8qIENsZWFyIHRoZSBlcnJvciBiaXRzLCBieSB3cml0aW5nIHRoZW0g YmFjayAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2k1NDAwX2VkYWMuYyBiL2RyaXZlcnMv ZWRhYy9pNTQwMF9lZGFjLmMKaW5kZXggMzdhOWJhNzFkYTQ0Li5jZDg4OWVkYzg1MTYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZWRhYy9pNTQwMF9lZGFjLmMKKysrIGIvZHJpdmVycy9lZGFjL2k1NDAw X2VkYWMuYwpAQCAtMzY4LDcgKzM2OCw3IEBAIHN0cnVjdCBpNTQwMF9lcnJvcl9pbmZvIHsKIAog CS8qIFRoZXNlIHJlZ2lzdGVycyBhcmUgaW5wdXQgT05MWSBpZiB0aGVyZSB3YXMgYSBOb24tUmVj IEVycm9yICovCiAJdTE2IG5yZWNtZW1hOwkJLyogTm9uLVJlY292ZXJhYmxlIE1lbSBsb2cgQSAq LwotCXUxNiBucmVjbWVtYjsJCS8qIE5vbi1SZWNvdmVyYWJsZSBNZW0gbG9nIEIgKi8KKwl1MzIg bnJlY21lbWI7CQkvKiBOb24tUmVjb3ZlcmFibGUgTWVtIGxvZyBCICovCiAKIH07CiAKQEAgLTQ1 OCw3ICs0NTgsNyBAQCBzdGF0aWMgdm9pZCBpNTQwMF9nZXRfZXJyb3JfaW5mbyhzdHJ1Y3QgbWVt X2N0bF9pbmZvICptY2ksCiAJCQkJTkVSUl9GQVRfRkJELCAmaW5mby0+bmVycl9mYXRfZmJkKTsK IAkJcGNpX3JlYWRfY29uZmlnX3dvcmQocHZ0LT5icmFuY2htYXBfd2Vycm9ycywKIAkJCQlOUkVD TUVNQSwgJmluZm8tPm5yZWNtZW1hKTsKLQkJcGNpX3JlYWRfY29uZmlnX3dvcmQocHZ0LT5icmFu Y2htYXBfd2Vycm9ycywKKwkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHB2dC0+YnJhbmNobWFwX3dl cnJvcnMsCiAJCQkJTlJFQ01FTUIsICZpbmZvLT5ucmVjbWVtYik7CiAKIAkJLyogQ2xlYXIgdGhl IGVycm9yIGJpdHMsIGJ5IHdyaXRpbmcgdGhlbSBiYWNrICovCg==