From patchwork Mon Apr 27 14:53:23 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Mueller X-Patchwork-Id: 465061 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 36A481402B6 for ; Tue, 28 Apr 2015 00:58:36 +1000 (AEST) Received: from localhost ([::1]:55548 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YmkUU-0007xT-3d for incoming@patchwork.ozlabs.org; Mon, 27 Apr 2015 10:58:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58343) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YmkQ8-0007Ge-0C for qemu-devel@nongnu.org; Mon, 27 Apr 2015 10:54:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YmkQ6-0000xV-Mh for qemu-devel@nongnu.org; Mon, 27 Apr 2015 10:54:03 -0400 Received: from e06smtp15.uk.ibm.com ([195.75.94.111]:44666) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YmkQ6-0000vr-EH for qemu-devel@nongnu.org; Mon, 27 Apr 2015 10:54:02 -0400 Received: from /spool/local by e06smtp15.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 27 Apr 2015 15:54:01 +0100 Received: from d06dlp02.portsmouth.uk.ibm.com (9.149.20.14) by e06smtp15.uk.ibm.com (192.168.101.145) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 27 Apr 2015 15:53:59 +0100 Received: from b06cxnps3075.portsmouth.uk.ibm.com (d06relay10.portsmouth.uk.ibm.com [9.149.109.195]) by d06dlp02.portsmouth.uk.ibm.com (Postfix) with ESMTP id 501D22190066 for ; Mon, 27 Apr 2015 15:53:42 +0100 (BST) Received: from d06av04.portsmouth.uk.ibm.com (d06av04.portsmouth.uk.ibm.com [9.149.37.216]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t3RErxTY60489878 for ; Mon, 27 Apr 2015 14:53:59 GMT Received: from d06av04.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av04.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t3RErunJ024696 for ; Mon, 27 Apr 2015 08:53:58 -0600 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d06av04.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id t3RErm9Y024183; Mon, 27 Apr 2015 08:53:55 -0600 From: Michael Mueller To: qemu-devel@nongnu.org Date: Mon, 27 Apr 2015 16:53:23 +0200 Message-Id: <1430146411-34632-10-git-send-email-mimu@linux.vnet.ibm.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1430146411-34632-1-git-send-email-mimu@linux.vnet.ibm.com> References: <1430146411-34632-1-git-send-email-mimu@linux.vnet.ibm.com> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15042714-0021-0000-0000-000003B86231 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 195.75.94.111 Cc: Eduardo Habkost , Gleb Natapov , Alexander Graf , Christian Borntraeger , Daniel Hansel , "Jason J. Herne" , Cornelia Huck , Paolo Bonzini , Richard Henderson , Andreas Faerber , Michael Mueller Subject: [Qemu-devel] [PATCH v6 09/17] target-s390x: Define S390 CPU model specific facility lists X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This patch defines S390 CPU facilities and their presence at the different CPU model levels. Beside defining a base which facilities have to be requested per CPU model, these sets are associated to the defined CPU classes and used to calculate the list of supported CPU models in context of the current hosting machine model. The also defined qemu side facility mask allows to implement and enable facilities in QEMU land. Signed-off-by: Michael Mueller Acked-by: Christian Borntraeger --- target-s390x/cpu-models.c | 11 +++++++++++ target-s390x/cpu-models.h | 8 ++++++++ target-s390x/cpu.c | 1 + 3 files changed, 20 insertions(+) diff --git a/target-s390x/cpu-models.c b/target-s390x/cpu-models.c index 147e221..7bb80db 100644 --- a/target-s390x/cpu-models.c +++ b/target-s390x/cpu-models.c @@ -12,6 +12,7 @@ #include "qemu-common.h" #include "cpu-models.h" +#include "gen-facilities.h" #define S390_PROC_DEF(_name, _cpu_id, _desc) \ static void \ @@ -20,6 +21,10 @@ { \ DeviceClass *dc = DEVICE_CLASS(oc); \ S390CPUClass *cc = S390_CPU_CLASS(oc); \ + uint64_t nbits = FAC_LIST_CPU_S390_SIZE_UINT1; \ + uint64_t fac_list[FAC_LIST_CPU_S390_SIZE_UINT64] = { \ + glue(FAC_LIST_, _cpu_id) \ + }; \ \ cc->is_migration_safe = true; \ cc->mach.ga = cpu_ga(_cpu_id); \ @@ -30,6 +35,7 @@ cc->proc.id = S390_DEF_ID; \ cc->proc.type = cpu_type(_cpu_id); \ cc->proc.ibc = S390_DEF_IBC; \ + bitmap_copy(cc->proc.fac_list, fac_list, nbits); \ dc->desc = _desc; \ } \ static const TypeInfo \ @@ -46,6 +52,11 @@ } \ type_init(glue(_cpu_id, _cpu_register_types)) +/* facilities implemented by qemu */ +uint64_t qemu_s390_fac_list_mask[FAC_LIST_CPU_S390_SIZE_UINT64] = { + FAC_LIST_CPU_S390_MASK_QEMU +}; + /* define S390 CPU model classes */ S390_PROC_DEF("2064-ga1", CPU_S390_2064_GA1, "IBM zSeries 900 GA1") S390_PROC_DEF("2064-ga2", CPU_S390_2064_GA2, "IBM zSeries 900 GA2") diff --git a/target-s390x/cpu-models.h b/target-s390x/cpu-models.h index b02c38b..948af10 100644 --- a/target-s390x/cpu-models.h +++ b/target-s390x/cpu-models.h @@ -13,6 +13,14 @@ #ifndef TARGET_S390X_CPU_MODELS_H #define TARGET_S390X_CPU_MODELS_H +#include "cpu-facilities.h" +#include "gen-facilities.h" + +#define FAC_LIST_ARCH_S390_SIZE_UINT1 \ + (FAC_LIST_ARCH_S390_SIZE_UINT8 * BITS_PER_BYTE) +#define FAC_LIST_ARCH_S390_SIZE_UINT64 \ + (FAC_LIST_ARCH_S390_SIZE_UINT8 / sizeof(uint64_t)) + #define S390_EC 0x1 #define S390_BC 0x2 diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c index 8f49813..9232a97 100644 --- a/target-s390x/cpu.c +++ b/target-s390x/cpu.c @@ -29,6 +29,7 @@ #include "qemu/error-report.h" #include "hw/hw.h" #include "trace.h" +#include "cpu-models.h" #ifndef CONFIG_USER_ONLY #include "sysemu/arch_init.h" #endif