Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1413658imm; Sat, 11 Aug 2018 12:57:27 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwov8U/SETuNRdMudHTQKHJaUOzZXo3RySVXOzXzV3YoKJDjQWKCYa2EQ0sfBrs+ozteTAW X-Received: by 2002:a63:1e08:: with SMTP id e8-v6mr11016284pge.281.1534017447367; Sat, 11 Aug 2018 12:57:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534017447; cv=none; d=google.com; s=arc-20160816; b=KyumMsHZk2v4h/S+dEKeMsisiPjVhPbmXd+f3QVsZAPYGkpeEr1wtHjjNcHpWCtNk2 XJIrX4xymS9JPFZl719RRhc0Z5LcLi2LBpCcwl4uvQ9/DeGzUnCGZWwjoqaIEC66GpHD bGfG0ySO+Mjs8ukjmmoppNdkVucKE9nY0d692BD5pNc+Fo5dePCPys9Mpr3F2/Zh7P1c IdsPhAtxRmXvtsdB2gJ6Bli3G1tWHEKeXJxhWbG5SOA6i8QsL/bXZMVl+KLoUCDKLSS8 0n46e0T0opPwpzCg760Do2Rj5/RF7nMtXwVeHTOszRvaZHFgyTJyp62weyIIctRUWkCm aoFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=/LJNveq1C9HkSRJBF9bsVpXf7r8DCqUSlpuqyr5NESI=; b=f3yG7jzhvDo8UNbbkqJdVhi0b6ceZz9nbKpTm3XrygJ3epz8C8C7VnQ1ZlM202jyZF g9C+TB9+Kv0d5jRT/lvIWqJzg/c+Hn61koCeceyEXltYo9G2FQieTv3ZkA+JxyBPQLZR yce0TBb9axGAF1Wh3IGyk8zUMpNz47PSZlQrQJUHgLvvZeVXEreTIlYXZ1JDXQn5F4kY lJMFMI/yaYxPOsbXMEJYog7I0fe+/NuEQxuQdRJBAMzuvrmFqbyqFyucIzlKAzmb2hpM lZi0Z+izFLpzWoIP8J3s+zKowo3WfDdw36gCGs/cESlQOVFtpwxHV96pc4JB+XinqIN3 zlGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jfOGqxFb; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k80-v6si14019994pfg.42.2018.08.11.12.57.12; Sat, 11 Aug 2018 12:57: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=@gmail.com header.s=20161025 header.b=jfOGqxFb; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727602AbeHKWbc (ORCPT + 99 others); Sat, 11 Aug 2018 18:31:32 -0400 Received: from mail-it0-f68.google.com ([209.85.214.68]:33325 "EHLO mail-it0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727429AbeHKWbc (ORCPT ); Sat, 11 Aug 2018 18:31:32 -0400 Received: by mail-it0-f68.google.com with SMTP id d16-v6so7790139itj.0; Sat, 11 Aug 2018 12:56:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=/LJNveq1C9HkSRJBF9bsVpXf7r8DCqUSlpuqyr5NESI=; b=jfOGqxFbh4Z1AImsCMqb+s/avt1PQTtj4/2+/lvCxGHW/RTXrOsuWlrUuGfEWnFbur Cri2f1nL+CBtq/5lIzbN/wMK5F3rwUzG/1HW/PzgY3237Doeq3Y5qCu2ocrAVa4OMIGy mDhsQmSpdEwjQF9spc4r1bSGlEx/JS76zswKjycbGgn5axV/jVF29IYlYdnx8sKFdaZX gAaxtb96KfGL+K6GZm0HlMjb0FKWV7VeEdKgouHd4Uh9c4IjPLxv8u9WAeHeFYEJ7Ehd Ah7b+Uc1kLRqk/pPlzEk0Zmgj2Y/KfDWDoKjN5QrO1aqvGAn9UWsCPg1+FIPHV8UeVy3 ZXBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=/LJNveq1C9HkSRJBF9bsVpXf7r8DCqUSlpuqyr5NESI=; b=NIBvdQ7flkXY0Ktj9H7oBAZrrsW2z5ExVgmgt1LrwUTCRKEIReLo1+0BD7AXq8IAgy 76kkazCuQYcAo/Mngzqp5wLtrN28SfumBJng6mSUhB1ChnQcoLgQUScNZ++lpCCscujZ PJ+92wEVZhBdvO/Xv2hj1B8OqkHItjjltw8ieZ9+3HQ6ic5qYVcl881/JMV1QbLTvDRD oW+Ps/nACOem7GKtfHQKHiODpQBHepKeY/lgnmzbG/SPbUJ3WLZ1aX/UcHv7vLiIM0g8 Cv6H5SKk/hePDevW7NUISvezkRXfH5WgONwlHezHSMjcItKrGkhkeg4qVEA2B8EqLO2y +yNw== X-Gm-Message-State: AOUpUlGuRSHHNMFHUHQRj1swk8b+1xTwoB7Y6NuKDzw5pQEhp05jKoc3 Fz3KO5sDkyEGgaJwuRTfRdajivbl/ThwKdXVmEU= X-Received: by 2002:a24:fe89:: with SMTP id w131-v6mr6591487ith.153.1534017378355; Sat, 11 Aug 2018 12:56:18 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4f:5a03:0:0:0:0:0 with HTTP; Sat, 11 Aug 2018 12:56:17 -0700 (PDT) In-Reply-To: References: From: Michael Jin Date: Sat, 11 Aug 2018 15:56:17 -0400 Message-ID: Subject: Re: [PATCH v3 16/17] driver/edac: enable Hygon support to AMD64 EDAC driver To: Pu Wen Cc: tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, thomas.lendacky@amd.com, bp@alien8.de, pbonzini@redhat.com, Mauro Carvalho Chehab , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-edac@vger.kernel.org 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 On Sat, Aug 11, 2018 at 9:30 AM, Pu Wen wrote: > diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c > index 18aeabb..fb81354 100644 > --- a/drivers/edac/amd64_edac.c > +++ b/drivers/edac/amd64_edac.c > @@ -211,7 +211,7 @@ static int __set_scrub_rate(struct amd64_pvt *pvt, u32 new_bw, u32 min_rate) > > scrubval = scrubrates[i].scrubval; > > - if (pvt->fam == 0x17) { > + if (pvt->fam == 0x17 || pvt->vendor == X86_VENDOR_HYGON) { > __f17h_set_scrubval(pvt, scrubval); Separating the vendor check as an "else if (pvt->vendor == X86_VENDOR_HYGON)" block would make architectural changes (future hygon models, i.e. 19h, 20h, etc) less confusing. > + amd64_read_pci_cfg(pvt->F6, > + F17H_SCR_BASE_ADDR, &scrubval); > + if (scrubval & BIT(0)) { > + amd64_read_pci_cfg(pvt->F6, The new lines after "amd64_read_pci_cfg(pvt->F6," can be removed. > @@ -1051,6 +1065,16 @@ static void determine_memory_type(struct amd64_pvt *pvt) > else > pvt->dram_type = MEM_DDR4; > return; > + case 0x18: > + if (pvt->vendor == X86_VENDOR_HYGON) { This vendor checking is not necessary as there are no other known family 18h processors. > switch (pvt->fam) { > @@ -3192,6 +3227,13 @@ static struct amd64_family_type *per_family_init(struct amd64_pvt *pvt) > pvt->ops = &family_types[F17_CPUS].ops; > break; > > + case 0x18: > + if (pvt->vendor == X86_VENDOR_HYGON) { > + fam_type = &family_types[HYGON_F18_CPUS]; > + pvt->ops = &family_types[HYGON_F18_CPUS].ops; > + break; > + } There is a missing second 'break' statement after the "if (pvt->vendor == X86_VENDOR_HYGON)" block for case 0x18, see case 0x15 and case 0x16 for comparison. > diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c > index 2ab4d61..f7adc47 100644 > + case 0x18: > + if (c->x86_vendor == X86_VENDOR_HYGON) { > + xec_mask = 0x3f; > + if (!boot_cpu_has(X86_FEATURE_SMCA)) { > + pr_warn("Decoding supported only on Scalable MCA processors.\n"); > + goto err_out; > + } > + break; > + } The 'break' statement could be moved outside of the "if (c->x86_vendor == X86_VENDOR_HYGON)" block, this is to allow case 0x18 to reach the 'break' statement if the vendor is not X86_VENDOR_HYGON.