Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp1529510rdh; Fri, 24 Nov 2023 15:36:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IGOkvSYtxdideFb7gKnsmuK10yWVsCVrKDF9NCQT/jwnNjcbY5wHpIeCJC2T05UAcEg+GEx X-Received: by 2002:a17:90b:4b4f:b0:283:2873:88ad with SMTP id mi15-20020a17090b4b4f00b00283287388admr6511174pjb.10.1700868971056; Fri, 24 Nov 2023 15:36:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700868971; cv=none; d=google.com; s=arc-20160816; b=FAVH1GULlt5ubPrtZYylXoZiSE8nwgpuVpFuW/aiP5tGR4tAYsAfWupOIzH73vgzOi 6HArzqI7erS0OSr1zidHC2B+2nBiNjAHyZW6ET89s54tWtHMb9Ud0JLIQRUXsik+D4Uz WLo2HKGulzxuxLt3SAdemhtNxXRiNMGAxnMJ18igXIMXN7IZ/kgkSHuo3+BpqHjWpotz lPgw7Ek80QZU9wnI+UrlUpwFRlHDRQtuR2V6NkdQWuYwC6Vpjq7hdxmeQwyoAu0d826x ENrESQaZHFTbPt0RYNdrxxKGUNbyRN8l2l55jIw9edE2HGk8fh3zpp5OoKKXXaHR+cqD cUlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:references:to:from:subject:cc :message-id:date:content-transfer-encoding:mime-version :dkim-signature; bh=8rCTuOTZLjqU1EAi1Ot/Eoexb0bjF9zepY/pVrUGWrc=; fh=f4LdIuWIljZNyj8BB+txhMRCuxfKqeT6/NeRck4qlIY=; b=XSfgfjA6FD6QiPww7z7G//UV8l++Mv3AdbHxNJ0Gi1yP+RQFAe/IIaDu5vHuBDGz1b sX5YUaBP7ChTGSpR6mI9bp3z0GTTxJblSZuzksXk/qH3gRswwvWYmg+4yk+tVaaalRDh prjHku/lY9gjeudhq/ffe2p9iLfds3Fedh3jdw17rEWBTgVtzpiuQ8EnHWlc5Lw2z0aQ Jd6gROUIU4pWYqb9k9OsAViHk654RhaNBGScmz6qOA/EF9MZAFcSahTZfrlXgaMq6z5c xPJrnzpSZr0JJ+GiVtwyZ3a3X3oCGjG3KQGel8WT2EwEZyetxp24kWjOgdIVybyeXUpT jIlA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="S/Y8AIQ0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 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 morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id ha21-20020a17090af3d500b0028595b2d53bsi1654498pjb.90.2023.11.24.15.36.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Nov 2023 15:36:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b="S/Y8AIQ0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 0BF798042D21; Fri, 24 Nov 2023 15:36:08 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231447AbjKXXfr (ORCPT + 99 others); Fri, 24 Nov 2023 18:35:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229557AbjKXXfp (ORCPT ); Fri, 24 Nov 2023 18:35:45 -0500 Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC4341987; Fri, 24 Nov 2023 15:35:50 -0800 (PST) Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-1cfa36bfe0cso7840935ad.1; Fri, 24 Nov 2023 15:35:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700868950; x=1701473750; darn=vger.kernel.org; h=in-reply-to:references:to:from:subject:cc:message-id:date :content-transfer-encoding:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=8rCTuOTZLjqU1EAi1Ot/Eoexb0bjF9zepY/pVrUGWrc=; b=S/Y8AIQ0rZpkxzc02ZIooQzI9HdkxOIY6juzAJIZNfYC09n61VeSzbIbjYG1H26rl+ i/dzCB7mkGcRhcl8q3XSvYNlrtlrsxurg3TKe+kzFq/R4pFtla7R1bV1YLciawCkumSA ueItAo6pOyrErtRDYEFjmAxz8DJckKAOHvV1+pRcmv6/5oF4anOWbkY7uNi/s6VECm+6 2tuXkYF0O5nQGREYHIZMabinek2RM/W0un9hPxI9Hp7iXrNm8Ffk3nzZlcCvik/W0n29 YF73TxAfb4LFbadBXu5rXeO6IRD55yLJ6zU7Liek0rw8eADTBK1O2NO01w8JSOA+8qRI 6m4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700868950; x=1701473750; h=in-reply-to:references:to:from:subject:cc:message-id:date :content-transfer-encoding:mime-version:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=8rCTuOTZLjqU1EAi1Ot/Eoexb0bjF9zepY/pVrUGWrc=; b=pnlnjMw/1BxRcTukYM8h/SGK8mKxWbmXGOjnzLa7dRLqWhg8SqVe8XYXgMdoDBBe69 kExMhytjEDzCApzB+yhk/EtctoLDJt/0zZuqkJHhtnR11wxrposzgXz07O8xiCmyYQeR hk/cuikMh0PwSN7XVBIjmzQXqw6jXt+zq41MYEOcpSQnVFbAD3SuwstPQYdeXo04fYZ7 Uk7P/7L9bNfY23dgfmh7jn+LRAGbcxZ9ojh/GlCQrEd4YixF3reiwgkGcZ5kdb4ZyjF5 QU7aywUW5P6Ypq39ImucW37dB2bh7AlwcdyeiNlB/I0wVMk2Oz657QvKMeyoJjzAZsYc FBUA== X-Gm-Message-State: AOJu0YwYJkQ7GGrztXW8Xrb/2dfRIEBHHss5+uW4+qU8vPDrZUgsxH6R ix8ppjmOh1o+HI2VahXXYbG5Tmhpd/I= X-Received: by 2002:a17:902:868c:b0:1ce:b83f:bd0c with SMTP id g12-20020a170902868c00b001ceb83fbd0cmr8557698plo.7.1700868949824; Fri, 24 Nov 2023 15:35:49 -0800 (PST) Received: from localhost (121-44-66-27.tpgi.com.au. [121.44.66.27]) by smtp.gmail.com with ESMTPSA id gx1-20020a17090b124100b0027e289ac436sm3453860pjb.8.2023.11.24.15.35.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 24 Nov 2023 15:35:49 -0800 (PST) Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Sat, 25 Nov 2023 09:35:41 +1000 Message-Id: Cc: , , , , , Subject: Re: [PATCH v1] powerpc: Add PVN support for HeXin C2000 processor From: "Nicholas Piggin" To: "Zhao Ke" , , , , , , X-Mailer: aerc 0.15.2 References: <20231123093611.98313-1-ke.zhao@shingroup.cn> In-Reply-To: <20231123093611.98313-1-ke.zhao@shingroup.cn> X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Fri, 24 Nov 2023 15:36:08 -0800 (PST) On Thu Nov 23, 2023 at 7:36 PM AEST, Zhao Ke wrote: > HeXin Tech Co. has applied for a new PVN from the OpenPower Community > for its new processor C2000. The OpenPower has assigned a new PVN > and this newly assigned PVN is 0x0066, add pvr register related > support for this PVN. > > Signed-off-by: Zhao Ke > Link: https://discuss.openpower.foundation/t/how-to-get-a-new-pvr-for-pro= cessors-follow-power-isa/477/10 > --- > v0 -> v1: > - Fix .cpu_name with the correct description > --- > --- > arch/powerpc/include/asm/reg.h | 1 + > arch/powerpc/kernel/cpu_specs_book3s_64.h | 15 +++++++++++++++ > arch/powerpc/kvm/book3s_pr.c | 1 + > arch/powerpc/mm/book3s64/pkeys.c | 3 ++- > arch/powerpc/platforms/powernv/subcore.c | 3 ++- > drivers/misc/cxl/cxl.h | 3 ++- > 6 files changed, 23 insertions(+), 3 deletions(-) > > diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/re= g.h > index 4ae4ab9090a2..7fd09f25452d 100644 > --- a/arch/powerpc/include/asm/reg.h > +++ b/arch/powerpc/include/asm/reg.h > @@ -1361,6 +1361,7 @@ > #define PVR_POWER8E 0x004B > #define PVR_POWER8NVL 0x004C > #define PVR_POWER8 0x004D > +#define PVR_HX_C2000 0x0066 > #define PVR_POWER9 0x004E > #define PVR_POWER10 0x0080 > #define PVR_BE 0x0070 > diff --git a/arch/powerpc/kernel/cpu_specs_book3s_64.h b/arch/powerpc/ker= nel/cpu_specs_book3s_64.h > index c370c1b804a9..367c9f6d9be5 100644 > --- a/arch/powerpc/kernel/cpu_specs_book3s_64.h > +++ b/arch/powerpc/kernel/cpu_specs_book3s_64.h > @@ -238,6 +238,21 @@ static struct cpu_spec cpu_specs[] __initdata =3D { > .machine_check_early =3D __machine_check_early_realmode_p8, > .platform =3D "power8", > }, > + { /* 2.07-compliant processor, HeXin C2000 processor */ > + .pvr_mask =3D 0xffffffff, > + .pvr_value =3D 0x00660000, > + .cpu_name =3D "POWER8 (raw)", If this is a raw mode, it should go with the raw POWER8 entry. The raw vs architected entries are already out of order with POWER6, but we should fix that too. You may want your PVR mask to follow the other raw examples too, but it depends on how you foresee PVR being used. Using 0xffff0000 allows you to increment the low part of the PVR and existing kernels will continue to match it. You can then add a specific match for the older version if you need to add special handling for it (e.g., see how POWER9 is handled). Do you want .cpu_name to be "POWER8 (raw)"? You could call it "HX-C2000", as Michael suggested earlier. > + .cpu_features =3D CPU_FTRS_POWER8, > + .cpu_user_features =3D COMMON_USER_POWER8, > + .cpu_user_features2 =3D COMMON_USER2_POWER8, > + .mmu_features =3D MMU_FTRS_POWER8, > + .icache_bsize =3D 128, > + .dcache_bsize =3D 128, > + .cpu_setup =3D __setup_cpu_power8, > + .cpu_restore =3D __restore_cpu_power8, > + .machine_check_early =3D __machine_check_early_realmode_p8, > + .platform =3D "power8", > + }, > { /* 3.00-compliant processor, i.e. Power9 "architected" mode */ > .pvr_mask =3D 0xffffffff, > .pvr_value =3D 0x0f000005, > diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c > index 9118242063fb..5b92619a05fd 100644 > --- a/arch/powerpc/kvm/book3s_pr.c > +++ b/arch/powerpc/kvm/book3s_pr.c > @@ -604,6 +604,7 @@ static void kvmppc_set_pvr_pr(struct kvm_vcpu *vcpu, = u32 pvr) > case PVR_POWER8: > case PVR_POWER8E: > case PVR_POWER8NVL: > + case PVR_HX_C2000: > case PVR_POWER9: > vcpu->arch.hflags |=3D BOOK3S_HFLAG_MULTI_PGSIZE | > BOOK3S_HFLAG_NEW_TLBIE; > diff --git a/arch/powerpc/mm/book3s64/pkeys.c b/arch/powerpc/mm/book3s64/= pkeys.c > index 125733962033..c38f378e1942 100644 > --- a/arch/powerpc/mm/book3s64/pkeys.c > +++ b/arch/powerpc/mm/book3s64/pkeys.c > @@ -89,7 +89,8 @@ static int __init scan_pkey_feature(void) > unsigned long pvr =3D mfspr(SPRN_PVR); > =20 > if (PVR_VER(pvr) =3D=3D PVR_POWER8 || PVR_VER(pvr) =3D=3D PVR_POWER8E= || > - PVR_VER(pvr) =3D=3D PVR_POWER8NVL || PVR_VER(pvr) =3D=3D PVR_POWE= R9) > + PVR_VER(pvr) =3D=3D PVR_POWER8NVL || PVR_VER(pvr) =3D=3D PVR_POWE= R9 || > + PVR_VER(pvr) =3D=3D PVR_HX_C2000) > pkeys_total =3D 32; > } > } > diff --git a/arch/powerpc/platforms/powernv/subcore.c b/arch/powerpc/plat= forms/powernv/subcore.c > index 191424468f10..58e7331e1e7e 100644 > --- a/arch/powerpc/platforms/powernv/subcore.c > +++ b/arch/powerpc/platforms/powernv/subcore.c > @@ -425,7 +425,8 @@ static int subcore_init(void) > =20 > if (pvr_ver !=3D PVR_POWER8 && > pvr_ver !=3D PVR_POWER8E && > - pvr_ver !=3D PVR_POWER8NVL) > + pvr_ver !=3D PVR_POWER8NVL && > + pvr_ver !=3D PVR_HX_C2000) > return 0; > =20 > /* > diff --git a/drivers/misc/cxl/cxl.h b/drivers/misc/cxl/cxl.h > index 0562071cdd4a..9ac2991b29c7 100644 > --- a/drivers/misc/cxl/cxl.h > +++ b/drivers/misc/cxl/cxl.h > @@ -836,7 +836,8 @@ static inline bool cxl_is_power8(void) > { > if ((pvr_version_is(PVR_POWER8E)) || > (pvr_version_is(PVR_POWER8NVL)) || > - (pvr_version_is(PVR_POWER8))) > + (pvr_version_is(PVR_POWER8)) || > + (pvr_version_is(PVR_HX_C2000))) > return true; > return false; > } These should follow the same alignment pattern as the other lines. Thanks, Nick