From patchwork Mon Jul 24 11:26:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Huth X-Patchwork-Id: 792738 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xGJwf0DhCz9sCZ for ; Mon, 24 Jul 2017 21:26:25 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753352AbdGXL0Y (ORCPT ); Mon, 24 Jul 2017 07:26:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48734 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752194AbdGXL0Y (ORCPT ); Mon, 24 Jul 2017 07:26:24 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 23790827; Mon, 24 Jul 2017 11:26:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 23790827 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=thuth@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 23790827 Received: from thh440s.str.redhat.com (reserved-198-123.str.redhat.com [10.33.198.123]) by smtp.corp.redhat.com (Postfix) with ESMTP id CD472702E1; Mon, 24 Jul 2017 11:26:22 +0000 (UTC) From: Thomas Huth To: kvm@vger.kernel.org, Laurent Vivier Cc: kvm-ppc@vger.kernel.org, =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= Subject: [kvm-unit-tests PATCH v2] powerpc/sprs: Test POWER9 specific registers Date: Mon, 24 Jul 2017 13:26:21 +0200 Message-Id: <1500895581-16713-1-git-send-email-thuth@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 24 Jul 2017 11:26:24 +0000 (UTC) Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org Most of the SPRS are the same as on POWER8, so we can re-use the PowerISA 2.07 functions and simply amend the additional registers afterwards. Signed-off-by: Thomas Huth Reviewed-by: Laurent Vivier --- v2: - Removed GSR (SPR 158) since it is a write-only register - Removed LMRR (813) and LMSER (814) since they have been removed in PowerISA 3.0 B - Added TIDR (144) which is a new register in PowerISA 3.0 B BTW: In case somebody got some spare time and wants to increase their patch count: Seems like TIDR (144) and PSSCR (823) are currently not migrated right. powerpc/sprs.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/powerpc/sprs.c b/powerpc/sprs.c index 39644fa..c02bcc9 100644 --- a/powerpc/sprs.c +++ b/powerpc/sprs.c @@ -126,6 +126,15 @@ static void set_sprs_book3s_207(uint64_t val) mtspr(815, val); /* TAR */ } +/* SPRs from PowerISA 3.00 Book III */ +static void set_sprs_book3s_300(uint64_t val) +{ + set_sprs_book3s_207(val); + mtspr(48, val); /* PIDR */ + mtspr(144, val); /* TIDR */ + mtspr(823, val); /* PSSCR */ +} + static void set_sprs(uint64_t val) { uint32_t pvr = mfspr(287); /* Processor Version Register */ @@ -143,6 +152,9 @@ static void set_sprs(uint64_t val) case 0x4d: /* POWER8 */ set_sprs_book3s_207(val); break; + case 0x4e: /* POWER9 */ + set_sprs_book3s_300(val); + break; default: puts("Warning: Unknown processor version!\n"); } @@ -218,6 +230,14 @@ static void get_sprs_book3s_207(uint64_t *v) v[815] = mfspr(815); /* TAR */ } +static void get_sprs_book3s_300(uint64_t *v) +{ + get_sprs_book3s_207(v); + v[48] = mfspr(48); /* PIDR */ + v[144] = mfspr(144); /* TIDR */ + v[823] = mfspr(823); /* PSSCR */ +} + static void get_sprs(uint64_t *v) { uint32_t pvr = mfspr(287); /* Processor Version Register */ @@ -235,6 +255,9 @@ static void get_sprs(uint64_t *v) case 0x4d: /* POWER8 */ get_sprs_book3s_207(v); break; + case 0x4e: /* POWER9 */ + get_sprs_book3s_300(v); + break; } }