From patchwork Mon Mar 2 12:43:59 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Mueller X-Patchwork-Id: 445102 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 476D714018C for ; Mon, 2 Mar 2015 23:48:20 +1100 (AEDT) Received: from localhost ([::1]:56676 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YSPli-0002bu-67 for incoming@patchwork.ozlabs.org; Mon, 02 Mar 2015 07:48:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40271) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YSPiJ-0005Iv-CQ for qemu-devel@nongnu.org; Mon, 02 Mar 2015 07:44:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YSPiC-00045S-Km for qemu-devel@nongnu.org; Mon, 02 Mar 2015 07:44:47 -0500 Received: from e06smtp15.uk.ibm.com ([195.75.94.111]:57274) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YSPiC-000456-Bm for qemu-devel@nongnu.org; Mon, 02 Mar 2015 07:44:40 -0500 Received: from /spool/local by e06smtp15.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 2 Mar 2015 12:44:39 -0000 Received: from d06dlp01.portsmouth.uk.ibm.com (9.149.20.13) by e06smtp15.uk.ibm.com (192.168.101.145) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 2 Mar 2015 12:44:38 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by d06dlp01.portsmouth.uk.ibm.com (Postfix) with ESMTP id 2327717D8066 for ; Mon, 2 Mar 2015 12:44:56 +0000 (GMT) Received: from d06av03.portsmouth.uk.ibm.com (d06av03.portsmouth.uk.ibm.com [9.149.37.213]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t22CibV159572368 for ; Mon, 2 Mar 2015 12:44:37 GMT Received: from d06av03.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av03.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t22CiZV7003587 for ; Mon, 2 Mar 2015 05:44:36 -0700 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d06av03.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id t22CiTir003352; Mon, 2 Mar 2015 05:44:34 -0700 From: Michael Mueller To: qemu-devel@nongnu.org, kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Date: Mon, 2 Mar 2015 13:43:59 +0100 Message-Id: <1425300248-40277-8-git-send-email-mimu@linux.vnet.ibm.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1425300248-40277-1-git-send-email-mimu@linux.vnet.ibm.com> References: <1425300248-40277-1-git-send-email-mimu@linux.vnet.ibm.com> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15030212-0021-0000-0000-0000030F28E0 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 , "Jason J. Herne" , Cornelia Huck , Paolo Bonzini , Michael Mueller , Andreas Faerber , Richard Henderson Subject: [Qemu-devel] [PATCH v3 07/16] target-s390x: Define 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 --- target-s390x/cpu-models.c | 12 ++++++++++++ target-s390x/cpu-models.h | 8 ++++++++ target-s390x/cpu.c | 1 + 3 files changed, 21 insertions(+) diff --git a/target-s390x/cpu-models.c b/target-s390x/cpu-models.c index 3520691..bd9f0bc 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_active[ACCEL_ID_KVM] = 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") @@ -75,3 +86,4 @@ S390_PROC_DEF("2818-ga1", CPU_S390_2818_GA1, "IBM zEnterprise 114 GA1") S390_PROC_DEF("2827-ga1", CPU_S390_2827_GA1, "IBM zEnterprise EC12 GA1") S390_PROC_DEF("2827-ga2", CPU_S390_2827_GA2, "IBM zEnterprise EC12 GA2") S390_PROC_DEF("2828-ga1", CPU_S390_2828_GA1, "IBM zEnterprise BC12 GA1") + diff --git a/target-s390x/cpu-models.h b/target-s390x/cpu-models.h index db681bf..d5f0b59 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 d2f6312..7a26b91 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