Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp2297518ybi; Sun, 9 Jun 2019 08:19:27 -0700 (PDT) X-Google-Smtp-Source: APXvYqxo2UOlfJfg5hkI3G3QFki4TQGWEFSvB3mZlONfe5EdthLW44dKdt+1DxaiYyCXkk9gpFz+ X-Received: by 2002:a17:902:e282:: with SMTP id cf2mr43312241plb.301.1560093567070; Sun, 09 Jun 2019 08:19:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560093567; cv=none; d=google.com; s=arc-20160816; b=vX1bNakbkYPi0ZmCh6dWVRC1gB8KWTjl5IyXrBSe2xiWiTDR4EALpGw/hfrpU401c7 S4AGjiL0uAoEcKHokIbSnIeay/OJ0fF2aNyt5qOMxvCbEYjPVwgzm9I9o3OEtLuY4B14 ySAYOtcVPubFG8rt3twigu0P+HANCdB845a0bxvty23CWGJsUwQAuSMEz395OAk8pFmA qKoFXDUFHisID/5doSkLxD+nIZRvpZdb80dkcAhymSbwxmafBdpMBykTK060bgcvPukN jGTvEX6iUD7zOGdtCPaDI8EAx0q6vhq46lYPkMAmY5yCGhkR53fcBP5KuHf3AcV2xoke /09g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:mime-version :message-id:date:dkim-signature; bh=qKJDlF41n2EgvfZqLQFoJ0x9Menf4fYRMFv6XR4X2Ss=; b=NRVxBlcDB8I6u2kdkwE0tevFgeXHaJuf7qReoXF+v/ME2I4PMlMdeEtg4CC8oVsSYc 12LyrMtkZPFOSgmCXQI9VJoO7JozXrkL0yuoNYXJAvJThyzR/0R2b8U/HlO06Lc1C3Zg gJmVJz70F5I/3sGA2ePLE1On+ZiF/YhhGVlqGzs2ATvGeb5PR6LavA/nvr5/fQqI5HYH w7KjjuHFRMlKaHugvOznYpKWKALNmorhVJ8YRP/nUoQmXnCWJgaG97mEcmYR6F3ubWPB aTddLbJCcserJZhuRJ+s5NfJDSvrwI7OEY/Ipre5n2ixcVcq0zOPd40/2SfPVQDY8Nka u9kw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=nwPnhSFy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 186si7451781pgc.47.2019.06.09.08.19.10; Sun, 09 Jun 2019 08:19:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=nwPnhSFy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728926AbfFIPRH (ORCPT + 99 others); Sun, 9 Jun 2019 11:17:07 -0400 Received: from mail-yw1-f74.google.com ([209.85.161.74]:33898 "EHLO mail-yw1-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728635AbfFIPRG (ORCPT ); Sun, 9 Jun 2019 11:17:06 -0400 Received: by mail-yw1-f74.google.com with SMTP id q8so7275288ywc.1 for ; Sun, 09 Jun 2019 08:17:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=qKJDlF41n2EgvfZqLQFoJ0x9Menf4fYRMFv6XR4X2Ss=; b=nwPnhSFyKJ/Gsm2uw7Y+IY923p8lZHU4t6P6tnxAjxi+fElFp0M0kaSSi+1y7Dz/c/ kN+5JPoAtBEI095SMNkqBK81sozEopfkiCAL8WIAuxYaYwoDGou6jJhs+VXU+LF1Wg3g Vl0eP+lyoBFWm00Zp5AHkd7rbGUurFsq7R2fb1CBE7Pk0GP9s9SIqIu8oA02hG5fRLQ5 uCzIC7jNqukI4RolIP8p/6WVvdrRQJBOhZX0UtAxhuvCnJsZXXZi8VDrcUXGrW/VpRTN WZ5AcQgaGZkw7UQVIdOAoIhqsSJSs4x+kScKCtCwWsvBkZeab8FW6i/YkB8x8eCFP06u 2NMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=qKJDlF41n2EgvfZqLQFoJ0x9Menf4fYRMFv6XR4X2Ss=; b=nuCoUIZUVkG9+4glj3kEabNC7Ho6gEa9q8EINC+2wTMoZDu5oioUGt68fPKHU11Gc2 0Wal0yk2hLpnTFSYNh/FiyVN+hBjNHVNd4x9yGXZ+Va1ine6u7XVrbUfijLgNoThTD2L ZAb+f3WjP0YGHrHw9VpD+Xm62QHUyYtyJPucxVI/3pYJ6ogayr4zhljGogNOxoGXOcaN eToSkBfsaiUbCgkHDcX1D17/ljE8ETUUwu2yvVRzsU5JteL5ldHIw03v7zDDoBzoZVFG /49sHKFEWynu3gxmY6U4ybKwP0jvBSaorZ/BRysWqsSIsWstizgnO3VUW+WgR7HwbSLU Jy3w== X-Gm-Message-State: APjAAAVZRsuaoesHaAvUJH0n7SNp8Fkk07pLF/rCHjJ0n/QLYuTk8nDR khHcEDou5lweaNkrCHfMnvd6CRqq8Q== X-Received: by 2002:a25:4742:: with SMTP id u63mr19267473yba.164.1560093425410; Sun, 09 Jun 2019 08:17:05 -0700 (PDT) Date: Sun, 9 Jun 2019 17:16:13 +0200 Message-Id: <20190609151613.195164-1-elver@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.22.0.rc2.383.gf4fbbf30c2-goog Subject: [PATCH] EDAC, ie31200: Add Intel Coffee Lake CPU support From: Marco Elver To: jbaron@akamai.com Cc: linux-kernel@vger.kernel.org, Marco Elver , Borislav Petkov , Mauro Carvalho Chehab , Tony Luck , linux-edac Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Coffee Lake seems to work like Skylake and Kaby Lake. This patch adds all device IDs for Coffee Lake-S CPUs according to datasheet. Cc: Jason Baron Cc: Borislav Petkov Cc: Mauro Carvalho Chehab Cc: Tony Luck Cc: linux-edac --- Tested with a Xeon E-2124G. --- drivers/edac/ie31200_edac.c | 95 +++++++++++++++++++++++++------------ 1 file changed, 64 insertions(+), 31 deletions(-) diff --git a/drivers/edac/ie31200_edac.c b/drivers/edac/ie31200_edac.c index adf60eb45bd4..e9ee3ff608b2 100644 --- a/drivers/edac/ie31200_edac.c +++ b/drivers/edac/ie31200_edac.c @@ -20,11 +20,13 @@ * 0c08: Xeon E3-1200 v3 Processor DRAM Controller * 1918: Xeon E3-1200 v5 Skylake Host Bridge/DRAM Registers * 5918: Xeon E3-1200 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers + * 3e..: 8th/9th Gen Core Processor Host Bridge/DRAM Registers * * Based on Intel specification: * http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/xeon-e3-1200v3-vol-2-datasheet.pdf * http://www.intel.com/content/www/us/en/processors/xeon/xeon-e3-1200-family-vol-2-datasheet.html * http://www.intel.com/content/www/us/en/processors/core/7th-gen-core-family-mobile-h-processor-lines-datasheet-vol-2.html + * https://www.intel.com/content/www/us/en/products/docs/processors/core/8th-gen-core-family-datasheet-vol-2.html * * According to the above datasheet (p.16): * " @@ -61,6 +63,26 @@ #define PCI_DEVICE_ID_INTEL_IE31200_HB_8 0x1918 #define PCI_DEVICE_ID_INTEL_IE31200_HB_9 0x5918 +/* Coffee Lake-S */ +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_MASK 0x3e00 +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_1 0x3e0f +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_2 0x3e18 +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_3 0x3e1f +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_4 0x3e30 +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_5 0x3e31 +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_6 0x3e32 +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_7 0x3e33 +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_8 0x3ec2 +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_9 0x3ec6 +#define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_10 0x3eca + +/* Helper macro to test if HB is for Skylake or later. */ +#define DEVICE_ID_SKYLAKE_OR_LATER(did) \ + (((did) == PCI_DEVICE_ID_INTEL_IE31200_HB_8) || \ + ((did) == PCI_DEVICE_ID_INTEL_IE31200_HB_9) || \ + (((did)&PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_MASK) == \ + PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_MASK)) + #define IE31200_DIMMS 4 #define IE31200_RANKS 8 #define IE31200_RANKS_PER_CHANNEL 4 @@ -381,10 +403,10 @@ static int ie31200_probe1(struct pci_dev *pdev, int dev_idx) u32 addr_decode, mad_offset; /* - * Kaby Lake seems to work like Skylake. Please re-visit this logic - * when adding new CPU support. + * Kaby Lake, Coffee Lake seem to work like Skylake. Please re-visit + * this logic when adding new CPU support. */ - bool skl = (pdev->device >= PCI_DEVICE_ID_INTEL_IE31200_HB_8); + bool skl = DEVICE_ID_SKYLAKE_OR_LATER(pdev->device); edac_dbg(0, "MC:\n"); @@ -542,36 +564,47 @@ static void ie31200_remove_one(struct pci_dev *pdev) } static const struct pci_device_id ie31200_pci_tbl[] = { - { - PCI_VEND_DEV(INTEL, IE31200_HB_1), PCI_ANY_ID, PCI_ANY_ID, 0, 0, - IE31200}, - { - PCI_VEND_DEV(INTEL, IE31200_HB_2), PCI_ANY_ID, PCI_ANY_ID, 0, 0, - IE31200}, - { - PCI_VEND_DEV(INTEL, IE31200_HB_3), PCI_ANY_ID, PCI_ANY_ID, 0, 0, - IE31200}, - { - PCI_VEND_DEV(INTEL, IE31200_HB_4), PCI_ANY_ID, PCI_ANY_ID, 0, 0, - IE31200}, - { - PCI_VEND_DEV(INTEL, IE31200_HB_5), PCI_ANY_ID, PCI_ANY_ID, 0, 0, - IE31200}, - { - PCI_VEND_DEV(INTEL, IE31200_HB_6), PCI_ANY_ID, PCI_ANY_ID, 0, 0, - IE31200}, - { - PCI_VEND_DEV(INTEL, IE31200_HB_7), PCI_ANY_ID, PCI_ANY_ID, 0, 0, - IE31200}, - { - PCI_VEND_DEV(INTEL, IE31200_HB_8), PCI_ANY_ID, PCI_ANY_ID, 0, 0, - IE31200}, - { - PCI_VEND_DEV(INTEL, IE31200_HB_9), PCI_ANY_ID, PCI_ANY_ID, 0, 0, - IE31200}, + { PCI_VEND_DEV(INTEL, IE31200_HB_1), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_2), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_3), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_4), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_5), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_6), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_7), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_8), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_9), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_1), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_2), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_3), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_4), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_5), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_6), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_7), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_8), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_9), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, + { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_10), PCI_ANY_ID, PCI_ANY_ID, 0, 0, + IE31200 }, { 0, - } /* 0 terminated list. */ + } /* 0 terminated list. */ }; MODULE_DEVICE_TABLE(pci, ie31200_pci_tbl); -- 2.22.0.rc2.383.gf4fbbf30c2-goog