From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899673; cv=none; d=zoho.com; s=zohoarc; b=QQuV5sNSvLfsevaxZojd1fEkPhR1/6XoYjAMe5gJt/fRjup2Qz2X84qTdkMdvLF1PVGW1ADvOMSIuGV4F/mrolwAj/883vs6L2E++Nbej5aiPSOv139dcXrlOPOVGF9L8C8au5Ve4tFMj7eRBXLvu5zOVnwJZrnVP9NUVirAyjY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899673; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=JZouR69QTS0WFDuiYnGi3MRzEUmM5Iv7L2Wmssqf3Fg=; b=WZuPbBZaloFWmfek7ab+TWa1CNGuOkv+kBMRlAvR5+UEwjrZoPPqF51P69MdsUiD/ecJr7Mz7kSCZbhiiCN4QB2uzQzsUb5vlOaTRObemmk1FtKP8PMqyT9Mbgip+Jd3VZE1pT46+wVBZHihxnWSCXSvxbxG0gbAjwFo8wbwBEc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899673830185.708990460618; Thu, 19 Sep 2019 06:27:53 -0700 (PDT) Received: from localhost ([::1]:43974 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwTP-0004db-Vg for importer@patchew.org; Thu, 19 Sep 2019 09:27:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41882) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvss-000702-Ov for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:50:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvkT-0007gZ-1B for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:41:26 -0400 Received: from mx1.redhat.com ([209.132.183.28]:23288) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvkS-0007f8-QP; Thu, 19 Sep 2019 08:41:24 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E0C633CBC1; Thu, 19 Sep 2019 12:41:23 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2162660933; Thu, 19 Sep 2019 12:41:20 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:42 +0200 Message-Id: <20190919124115.11510-2-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 19 Sep 2019 12:41:23 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 01/34] s390x/tcg: Reset exception_index to -1 instead of 0 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We use the marker "-1" for "no exception". s390_cpu_do_interrupt() might get confused by that. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 29fcce426e35..39ee9b3175ca 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1747,7 +1747,7 @@ uint32_t HELPER(tprot)(CPUS390XState *env, uint64_t a= 1, uint64_t a2) =20 if (env->int_pgm_code =3D=3D PGM_PROTECTION) { /* retry if reading is possible */ - cs->exception_index =3D 0; + cs->exception_index =3D -1; if (!s390_cpu_virt_mem_check_read(cpu, a1, 0, 1)) { /* Fetching permitted; storing not permitted */ return 1; @@ -1757,7 +1757,7 @@ uint32_t HELPER(tprot)(CPUS390XState *env, uint64_t a= 1, uint64_t a2) switch (env->int_pgm_code) { case PGM_PROTECTION: /* Fetching not permitted; storing not permitted */ - cs->exception_index =3D 0; + cs->exception_index =3D -1; return 2; case PGM_ADDRESSING: case PGM_TRANS_SPEC: @@ -1767,7 +1767,7 @@ uint32_t HELPER(tprot)(CPUS390XState *env, uint64_t a= 1, uint64_t a2) } =20 /* Translation not available */ - cs->exception_index =3D 0; + cs->exception_index =3D -1; return 3; } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899482; cv=none; d=zoho.com; s=zohoarc; b=mgtzqXsrKNLHtuYXKU7xzn20ytkXxz8gpZTiV3Uxde+Rdapqzjm5YbH6V+VJ818dmw8pS4SnDPwYqsBwwIdS9NKY6oaDpTj2wdZynu07iSoSmOQLXM9U+IjofIieE7DT0tqBitzZjg2oeJkpf+mpi1nNk/V+XonLtVOk9CgM2rA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899482; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=E017VTqeRpAQ8Et6U5kbeayDX0ZWiVnoDo6up6bzBro=; b=Jx5O48KNVyLNpyQ6omeY/u1FFKC9jIzeDgxuor5+xdilUlTXeej7/+SXf76qBBw288uGTGayJDJpvQlBEqm22p7Hamyl7Ycu+6kywv52n36DmeK3s/KLqG1yQuxswDgLo8XWBT9tLlp6QO9bw5y4n8O3IErZkx5D7Rr4p5aCiwU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899482070461.53160117807124; Thu, 19 Sep 2019 06:24:42 -0700 (PDT) Received: from localhost ([::1]:43922 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwQH-0000VU-8d for importer@patchew.org; Thu, 19 Sep 2019 09:24:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41418) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsh-0006Ji-NH for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:50:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvkX-0007nB-3N for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:41:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47242) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvkW-0007mB-Uo; Thu, 19 Sep 2019 08:41:29 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4156F3B464; Thu, 19 Sep 2019 12:41:28 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5F5475C1D4; Thu, 19 Sep 2019 12:41:25 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:43 +0200 Message-Id: <20190919124115.11510-3-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 19 Sep 2019 12:41:28 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 02/34] s390x/tcg: MVCL: Zero out unused bits of address X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We have to zero out unused bits in 24 and 31-bit addressing mode. Provide a new helper. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 39ee9b3175ca..b02ad148e55b 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -469,6 +469,25 @@ static inline uint64_t get_address(CPUS390XState *env,= int reg) return wrap_address(env, env->regs[reg]); } =20 +/* + * Store the address to the given register, zeroing out unused leftmost + * bits in bit positions 32-63 (24-bit and 31-bit mode only). + */ +static inline void set_address_zero(CPUS390XState *env, int reg, + uint64_t address) +{ + if (env->psw.mask & PSW_MASK_64) { + env->regs[reg] =3D address; + } else { + if (!(env->psw.mask & PSW_MASK_32)) { + address &=3D 0x00ffffff; + } else { + address &=3D 0x7fffffff; + } + env->regs[reg] =3D deposit64(env->regs[reg], 0, 32, address); + } +} + static inline void set_address(CPUS390XState *env, int reg, uint64_t addre= ss) { if (env->psw.mask & PSW_MASK_64) { @@ -772,8 +791,8 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, = uint32_t r2) =20 env->regs[r1 + 1] =3D deposit64(env->regs[r1 + 1], 0, 24, destlen); env->regs[r2 + 1] =3D deposit64(env->regs[r2 + 1], 0, 24, srclen); - set_address(env, r1, dest); - set_address(env, r2, src); + set_address_zero(env, r1, dest); + set_address_zero(env, r2, src); =20 return cc; } --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568900037; cv=none; d=zoho.com; s=zohoarc; b=Y4LwMJbMSML1VpQKbcLluGK12BQP3xUZxpYWWxq2/pOO2fgZqTsUPflwxf2pN3PfRYsRBH1HFA/l+Ee3iZ1OTdNNtvw0elUDcVPISPRQpxl8Ou6srpOVwA9QwHkMk6XiF3BxE7efKHS9aSl1Yd4777k7uFasdCyHTL4mYP81ugU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568900037; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=CJpfVJyf5PA9KPMtryKjtDsdJJFzV+8s8GBu+NTfmfs=; b=njmTjd9V0LNdcn/+P2N6Ub5uGyeF4uxqa/ctcpGIIdyruPxE50RWqgcaQfZIiY5FqsgSBIBzKu7O/i5Oaujm227FfudERB5gKzXynBI+OgCquGif+m2VivxQz3JlQhE4TDYTVm/c11TlosHhE23t78buWObUD9bfa9Jieih+nCE= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568900037195530.0873463036933; Thu, 19 Sep 2019 06:33:57 -0700 (PDT) Received: from localhost ([::1]:44040 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwZG-00028Y-SQ for importer@patchew.org; Thu, 19 Sep 2019 09:33:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41649) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsh-0006je-KN for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:50:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvkY-0007q8-UK for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:41:31 -0400 Received: from mx1.redhat.com ([209.132.183.28]:34176) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvkY-0007p5-PD; Thu, 19 Sep 2019 08:41:30 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 113C32A09D3; Thu, 19 Sep 2019 12:41:30 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B39B85C1B5; Thu, 19 Sep 2019 12:41:29 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:44 +0200 Message-Id: <20190919124115.11510-4-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 19 Sep 2019 12:41:30 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 03/34] s390x/tcg: MVCL: Detect destructive overlaps X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We'll have to zero-out unused bit positions, so make sure to write the addresses back. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index b02ad148e55b..223312a4b194 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -52,6 +52,19 @@ static inline bool psw_key_valid(CPUS390XState *env, uin= t8_t psw_key) return true; } =20 +static bool is_destructive_overlap(CPUS390XState *env, uint64_t dest, + uint64_t src, uint32_t len) +{ + if (!len || src =3D=3D dest) { + return false; + } + /* Take care of wrapping at the end of address space. */ + if (unlikely(wrap_address(env, src + len - 1) < src)) { + return dest > src || dest <=3D wrap_address(env, src + len - 1); + } + return dest > src && dest <=3D src + len - 1; +} + /* Reduce the length so that addr + len doesn't cross a page boundary. */ static inline uint32_t adj_len_to_page(uint32_t len, uint64_t addr) { @@ -787,7 +800,11 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1,= uint32_t r2) uint8_t pad =3D env->regs[r2 + 1] >> 24; uint32_t cc; =20 - cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, 1, ra); + if (is_destructive_overlap(env, dest, src, MIN(srclen, destlen))) { + cc =3D 3; + } else { + cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, 1, ra); + } =20 env->regs[r1 + 1] =3D deposit64(env->regs[r1 + 1], 0, 24, destlen); env->regs[r2 + 1] =3D deposit64(env->regs[r2 + 1], 0, 24, srclen); --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568900221; cv=none; d=zoho.com; s=zohoarc; b=UDVFHA4FB7jZgJVtNA3rk9UhT3RSLrupSm4sK8XBTPscUVwJx11My1xonjrgKB5IdBqFuQj3BBnGyxfSSvZ0G2HnfTQuEHC7T5MNMB5Q9uOnUXXBOnbPQtAK8eyQ9OtLdEEOfBJtd6673J9gm/xis6kv/W7yn17vrI+UWqlyQfM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568900221; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=TFWZyjCXyQzHCVO3whEgLQLudF6sFcWsA0iq4n7F/Zk=; b=VaPwgl/kkTNBipS2/monmQ/LIXhbT9srzPIPO/j67R6arSW331hYvJSKO2YpLJhfYOmvEiUrr3nOTLpLrwymhnOoF/o6Tx3CIFB6thAmSgck+qyfqSHjmELMQqXpzrOLRP4SScspqt9DuuLJSHBXgUO0V06sy1g22s7u4G0S9QI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568900221713730.7810382420287; Thu, 19 Sep 2019 06:37:01 -0700 (PDT) Received: from localhost ([::1]:44114 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwcF-0006Vh-Sq for importer@patchew.org; Thu, 19 Sep 2019 09:36:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41479) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsh-0006Le-64 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:50:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvke-0007zX-3X for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:41:37 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33286) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvkd-0007wJ-SJ; Thu, 19 Sep 2019 08:41:36 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 328CE30B2502; Thu, 19 Sep 2019 12:41:35 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8321460BF1; Thu, 19 Sep 2019 12:41:31 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:45 +0200 Message-Id: <20190919124115.11510-5-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.41]); Thu, 19 Sep 2019 12:41:35 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 04/34] s390x/tcg: MVCL: Process max 4k bytes at a time X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Process max 4k bytes at a time, writing back registers between the accesses. The instruction is interruptible. "For operands longer than 2K bytes, access exceptions are not recognized for locations more than 2K bytes beyond the current location being processed." Note that on z/Architecture, 2k vs. 4k access cannot get differentiated as long as pages are not crossed. This seems to be a leftover from ESA/390. Simply stay within single pages. MVCL handling is quite different than MVCLE/MVCLU handling, so split up the handlers. Defer interrupt handling, as that will require more thought, add a TODO for that. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 44 +++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 223312a4b194..58ab2e48e341 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -798,19 +798,51 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1= , uint32_t r2) uint64_t srclen =3D env->regs[r2 + 1] & 0xffffff; uint64_t src =3D get_address(env, r2); uint8_t pad =3D env->regs[r2 + 1] >> 24; - uint32_t cc; + uint32_t cc, cur_len; =20 if (is_destructive_overlap(env, dest, src, MIN(srclen, destlen))) { cc =3D 3; + } else if (srclen =3D=3D destlen) { + cc =3D 0; + } else if (destlen < srclen) { + cc =3D 1; } else { - cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, 1, ra); + cc =3D 2; } =20 - env->regs[r1 + 1] =3D deposit64(env->regs[r1 + 1], 0, 24, destlen); - env->regs[r2 + 1] =3D deposit64(env->regs[r2 + 1], 0, 24, srclen); - set_address_zero(env, r1, dest); - set_address_zero(env, r2, src); + /* We might have to zero-out some bits even if there was no action. */ + if (unlikely(!destlen || cc =3D=3D 3)) { + set_address_zero(env, r2, src); + set_address_zero(env, r1, dest); + return cc; + } else if (!srclen) { + set_address_zero(env, r2, src); + } =20 + /* + * Only perform one type of type of operation (move/pad) in one step. + * Stay within single pages. + */ + while (destlen) { + cur_len =3D MIN(destlen, -(dest | TARGET_PAGE_MASK)); + if (!srclen) { + fast_memset(env, dest, pad, cur_len, ra); + } else { + cur_len =3D MIN(MIN(srclen, -(src | TARGET_PAGE_MASK)), cur_le= n); + + fast_memmove(env, dest, src, cur_len, ra); + src =3D wrap_address(env, src + cur_len); + srclen -=3D cur_len; + env->regs[r2 + 1] =3D deposit64(env->regs[r2 + 1], 0, 24, srcl= en); + set_address_zero(env, r2, src); + } + dest =3D wrap_address(env, dest + cur_len); + destlen -=3D cur_len; + env->regs[r1 + 1] =3D deposit64(env->regs[r1 + 1], 0, 24, destlen); + set_address_zero(env, r1, dest); + + /* TODO: Deliver interrupts. */ + } return cc; } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899273; cv=none; d=zoho.com; s=zohoarc; b=III2GAsefEt+50gssBiEhiifxQwUawpxEgr94Sy3BmcVda5MkETuj4ZLq72nU1CV8FUzOylDPfRbjRMWCW9aos9/d5absfOQJkU6FdGVK04F1SwB4jUtscqso0Fte6aBkLuyWqCu/hAG39U6FoeLVwB9OTeQcLpRrd4XGlmjZmQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899273; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=SVO4E/saUbGSmMhgzN65hy7Y+uJYdlQtWJRGFdAXNnA=; b=DYs8TCR6vuB1vwBqhIQNOUegdkWCVMVaSBi+oVXBfRH/02kSVongBomYcBoQiYjbQn+KBXBDrDePOnCock+oDsuFzfk9r9PTQLrDzJj2uy1ZfLLKOqhjSWGVIcQzu3IcpSetc42wxo47aE2eRmgrXGzN9R4MkiaEnnMYtchl7h8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899273653140.3380421104589; Thu, 19 Sep 2019 06:21:13 -0700 (PDT) Received: from localhost ([::1]:43884 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwMx-0004T8-Oi for importer@patchew.org; Thu, 19 Sep 2019 09:21:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41649) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsf-0006je-PZ for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvkk-0008CD-C1 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:41:43 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45406) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvkk-0008Ax-3c; Thu, 19 Sep 2019 08:41:42 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 61CEE307D923; Thu, 19 Sep 2019 12:41:41 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A4C045D6B2; Thu, 19 Sep 2019 12:41:36 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:46 +0200 Message-Id: <20190919124115.11510-6-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Thu, 19 Sep 2019 12:41:41 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 05/34] s390x/tcg: MVC: Increment the length once X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Let's increment the length once. While at it, cleanup the comment. The memset() example is given as a programming note in the PoP, so drop the description. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 58ab2e48e341..013e8d6045e7 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -320,16 +320,20 @@ static uint32_t do_helper_mvc(CPUS390XState *env, uin= t32_t l, uint64_t dest, HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); =20 - /* mvc and memmove do not behave the same when areas overlap! */ - /* mvc with source pointing to the byte after the destination is the - same as memset with the first source byte */ + /* MVC always copies one more byte than specified - maximum is 256 */ + l++; + + /* + * "When the operands overlap, the result is obtained as if the operan= ds + * were processed one byte at a time". Only non-destructive overlaps + * behave like memmove(). + */ if (dest =3D=3D src + 1) { - fast_memset(env, dest, cpu_ldub_data_ra(env, src, ra), l + 1, ra); - } else if (dest < src || src + l < dest) { - fast_memmove(env, dest, src, l + 1, ra); + fast_memset(env, dest, cpu_ldub_data_ra(env, src, ra), l, ra); + } else if (dest < src || src + l <=3D dest) { + fast_memmove(env, dest, src, l, ra); } else { - /* slow version with byte accesses which always work */ - for (i =3D 0; i <=3D l; i++) { + for (i =3D 0; i < l; i++) { uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); cpu_stb_data_ra(env, dest + i, x, ra); } --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899533; cv=none; d=zoho.com; s=zohoarc; b=KPcu8LlqgSiBJprNdvHycr2mwB6VY8icrAiXBbcNUa/gllTW49iSCb2Kv2QrjIYqLgAE/f0dzUQEv4iIfonx2B48YMhrvuNf+LgWQaqoEwqBEPCxeOSAyz0DJrzOl7aUZVJFK6xy0hh2ryGQt/bGk+l0JPA9uNQzPZ4vlasxnWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899533; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=e1VAxZ9aNKQRuTpRbS13aYwVth0IElDvC+aUI5rjmYU=; b=jvlnp5sHzYjVONgNr/fLgC+bpbNsftA+hkoArHGeBSf5yW2XHdYSjPqop/U9OW9cFyMgJoFCDnkWcSNVeOJ4HNdI05NmkmNrENJ54qVJyPEMPacohXN2UmBmy6aoPnI7uI5aV7BMxxNgPloaVJ62TeiyS9ahIK2qHw6cRAg8frw= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899533588928.5797505356513; Thu, 19 Sep 2019 06:25:33 -0700 (PDT) Received: from localhost ([::1]:43932 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwR7-0001WU-Gc for importer@patchew.org; Thu, 19 Sep 2019 09:25:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsf-0006KH-OR for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvko-0008IY-M1 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:41:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42714) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvko-0008HN-H1; Thu, 19 Sep 2019 08:41:46 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C449B300BCE9; Thu, 19 Sep 2019 12:41:45 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D1EC31001938; Thu, 19 Sep 2019 12:41:42 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:47 +0200 Message-Id: <20190919124115.11510-7-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Thu, 19 Sep 2019 12:41:45 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 06/34] s390x/tcg: MVC: Use is_destructive_overlap() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Let's use the new helper, that also detects destructive overlaps when wrapping. We'll make the remaining code (e.g., fast_memmove()) aware of wrapping later. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 013e8d6045e7..c31cf4959358 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -330,7 +330,7 @@ static uint32_t do_helper_mvc(CPUS390XState *env, uint3= 2_t l, uint64_t dest, */ if (dest =3D=3D src + 1) { fast_memset(env, dest, cpu_ldub_data_ra(env, src, ra), l, ra); - } else if (dest < src || src + l <=3D dest) { + } else if (!is_destructive_overlap(env, dest, src, l)) { fast_memmove(env, dest, src, l, ra); } else { for (i =3D 0; i < l; i++) { --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899424; cv=none; d=zoho.com; s=zohoarc; b=UdKgE51azxclOZiFT09J/6hX1AWGWZFzeYwrVL+zbN/qTLhR3r8+NlCx5S2rLDqWnx08I7Po9g6iLPmgqi+WlOOpvag8IDihogaHER8O224azws3A348wq9lYqUVb7SkyxXqNbSGn+9Blm5XQ57/djJdLb93eG8RkFlPnuHv3/o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899424; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=V9JhiOJWn8UNDNGwxzHfLUqT0IU1rKP8sPMa0XhJpco=; b=DRUudu7KfMzFqN7JhclUTtPPYScR5+tqK72rhAXVDMQTA3TQJJCchXN7R7dymiLygfk/Wnyr8GEsEqtGkQn+KlEhfVxKGQlgl/EtcZqTlG0rcn/p1EpglcN+ENqw3nxq51/3Wn1PPKYT5Y1MLnQV3J8QclAYS/FvJcb5NwM30fs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899424019827.4907718935762; Thu, 19 Sep 2019 06:23:44 -0700 (PDT) Received: from localhost ([::1]:43906 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwPJ-0007bY-Kg for importer@patchew.org; Thu, 19 Sep 2019 09:23:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41418) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvse-0006Ji-Lu for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvkw-0008Tk-Dn for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:41:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38916) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvkv-0008R7-Iv; Thu, 19 Sep 2019 08:41:54 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 455FD10C030B; Thu, 19 Sep 2019 12:41:52 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3E3935C21E; Thu, 19 Sep 2019 12:41:47 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:48 +0200 Message-Id: <20190919124115.11510-8-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.65]); Thu, 19 Sep 2019 12:41:52 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 07/34] s390x/tcg: MVPG: Check for specification exceptions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Perform the checks documented in the PoP. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index c31cf4959358..7dfa848744a6 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -672,6 +672,13 @@ uint64_t HELPER(clst)(CPUS390XState *env, uint64_t c, = uint64_t s1, uint64_t s2) /* move page */ uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0, uint64_t r1, uint64= _t r2) { + const bool f =3D extract64(r0, 11, 1); + const bool s =3D extract64(r0, 10, 1); + + if ((f && s) || extract64(r0, 12, 4)) { + s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, GETPC()); + } + /* ??? missing r0 handling, which includes access keys, but more importantly optional suppression of the exception! */ fast_memmove(env, r1, r2, TARGET_PAGE_SIZE, GETPC()); --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898979; cv=none; d=zoho.com; s=zohoarc; b=R4Gy9sCXhlrlrf/BPsIQE2FSWfB3vakBYcjFazmiuOXO7LmyBrXbuz+ir0tcQufMO2eBEAcnpvI0AAkRTz3Q1lbpCQnoAZ8fU+d/yJ/k9S4YRzOlalcByyfuN0y0xY7rToL9k3IHFbw+EXnFCz2/Bx0qFMb0ELL+dzaiAl5450g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898979; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=a2kAUPHTwPeAyw/Qh7GNESKj3L7qNkVyzVf197qMmAo=; b=MfnNKqKwvtEGhycH0xuL7HfSVYU20gi1ii5X+7c+Ex1PBubSwoKNL5Kqpn4gqI1pad4MwjDXAhcsoRIkQLbugNQda891uVGP0gBun1zPFZ1CHa5ZC46qUk6y4TXoBwDJntsT1ldwN+KdwH10wAvAlKvp9kjWSO8/aq4ps8Sy3PY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898979227958.9032559574342; Thu, 19 Sep 2019 06:16:19 -0700 (PDT) Received: from localhost ([::1]:43848 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwID-00088w-9M for importer@patchew.org; Thu, 19 Sep 2019 09:16:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41649) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvse-0006je-Ey for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvl0-00007T-4v for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:41:59 -0400 Received: from mx1.redhat.com ([209.132.183.28]:2624) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvky-0008TU-6M; Thu, 19 Sep 2019 08:41:56 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1275AC053B32; Thu, 19 Sep 2019 12:41:54 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B5A855C21E; Thu, 19 Sep 2019 12:41:53 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:49 +0200 Message-Id: <20190919124115.11510-9-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 19 Sep 2019 12:41:54 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 08/34] s390x/tcg: MVPG: Properly wrap the addresses X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We have to mask of any unused bits. While at it, document what exactly is missing. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 7dfa848744a6..746f64730302 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -679,8 +679,15 @@ uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0,= uint64_t r1, uint64_t r2) s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, GETPC()); } =20 - /* ??? missing r0 handling, which includes access keys, but more - importantly optional suppression of the exception! */ + r1 =3D wrap_address(env, r1 & TARGET_PAGE_MASK); + r2 =3D wrap_address(env, r2 & TARGET_PAGE_MASK); + + /* + * TODO: + * - Access key handling + * - CC-option with surpression of page-translation exceptions + * - Store r1/r2 register identifiers at real location 162 + */ fast_memmove(env, r1, r2, TARGET_PAGE_SIZE, GETPC()); return 0; /* data moved */ } --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898757; cv=none; d=zoho.com; s=zohoarc; b=kD4A0uxCGd2dJXhznzHbH6iVrQIQy+JTLT0uJL/KaD4QOOUbD86XGNtRWuf7rgJ821ZJkvj1WnXYTbFY8HM6nIII895fYbmZgnN4cTejjUapnkT14mxHmlIeSxVOknIB7cksF/4RSBnSe2aIg85/D5PGOzocjKbfpWqorVxcwco= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898757; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=JRMdOneiezgteBR7huFW5NhiMY5+MyviRhH1iPmIwP8=; b=fAmIJu2PRxCKR2+6xalrllhkMRan+l5PZFcw4BflPYgS1zfYNI/exY2yQ6PExzaMd5PWxNvZUNPsCRwwGuUbC3tnQLMnggEq5+IB5CgEg/ElmN9nsQedPTpqEbtSdLMfaX5TmtmJokZId1QNnfYhhsNYghWF205p7OhnLjJ4zrI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15688987578115.922301558718914; Thu, 19 Sep 2019 06:12:37 -0700 (PDT) Received: from localhost ([::1]:43810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwEe-0003qj-1K for importer@patchew.org; Thu, 19 Sep 2019 09:12:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41479) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsd-0006Le-FD for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvl7-0000Iz-GJ for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48628) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvl5-0000D4-Pi; Thu, 19 Sep 2019 08:42:04 -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 9328B2026F; Thu, 19 Sep 2019 12:42:01 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 863076013A; Thu, 19 Sep 2019 12:41:55 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:50 +0200 Message-Id: <20190919124115.11510-10-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 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]); Thu, 19 Sep 2019 12:42:01 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 09/34] s390x/tcg: MVCLU/MVCLE: Process max 4k bytes at a time X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Let's stay within single pages. ... and indicate cc=3D3 in case there is work remaining. Keep unicode padding simple. While reworking, properly wrap the addresses. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 54 ++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 746f64730302..86238e0163c8 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -768,8 +768,8 @@ static inline uint32_t do_mvcl(CPUS390XState *env, uint64_t *src, uint64_t *srclen, uint16_t pad, int wordsize, uintptr_t ra) { - uint64_t len =3D MIN(*srclen, *destlen); - uint32_t cc; + int len =3D MIN(*destlen, -(*dest | TARGET_PAGE_MASK)); + int i, cc; =20 if (*destlen =3D=3D *srclen) { cc =3D 0; @@ -779,32 +779,40 @@ static inline uint32_t do_mvcl(CPUS390XState *env, cc =3D 2; } =20 - /* Copy the src array */ - fast_memmove(env, *dest, *src, len, ra); - *src +=3D len; - *srclen -=3D len; - *dest +=3D len; - *destlen -=3D len; + if (!*destlen) { + return cc; + } =20 - /* Pad the remaining area */ - if (wordsize =3D=3D 1) { - fast_memset(env, *dest, pad, *destlen, ra); - *dest +=3D *destlen; - *destlen =3D 0; + /* + * Only perform one type of type of operation (move/pad) at a time. + * Stay within single pages. + */ + if (*srclen) { + /* Copy the src array */ + len =3D MIN(MIN(*srclen, -(*src | TARGET_PAGE_MASK)), len); + *destlen -=3D len; + *srclen -=3D len; + fast_memmove(env, *dest, *src, len, ra); + *src =3D wrap_address(env, *src + len); + *dest =3D wrap_address(env, *dest + len); + } else if (wordsize =3D=3D 1) { + /* Pad the remaining area */ + *destlen -=3D len; + fast_memset(env, *dest, pad, len, ra); + *dest =3D wrap_address(env, *dest + len); } else { - /* If remaining length is odd, pad with odd byte first. */ - if (*destlen & 1) { - cpu_stb_data_ra(env, *dest, pad & 0xff, ra); - *dest +=3D 1; - *destlen -=3D 1; - } - /* The remaining length is even, pad using words. */ - for (; *destlen; *dest +=3D 2, *destlen -=3D 2) { - cpu_stw_data_ra(env, *dest, pad, ra); + /* The remaining length selects the padding byte. */ + for (i =3D 0; i < len; (*destlen)--, i++) { + if (*destlen & 1) { + cpu_stb_data_ra(env, *dest, pad, ra); + } else { + cpu_stb_data_ra(env, *dest, pad >> 8, ra); + } + *dest =3D wrap_address(env, *dest + 1); } } =20 - return cc; + return *destlen ? 3 : cc; } =20 /* move long */ --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899198; cv=none; d=zoho.com; s=zohoarc; b=R4SXCd8+xYteGyY/zVjv06fKPHeHD/xy3jft4Wiyv5cHJ7P7089D1WwJ0fnGIGzAEEOk5TRTgwQLBoSOHtsKCx/OUkhHt/zbTbTrojHI0iSYpwSJ2+zyb2hTUQN6OZtgEn7DeaOi6veluAtI9a5ABPMy4TknCxvcAT8YmrqvJAY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899198; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=Tk8DKOlydDItReut5kYnfFALF08oPbB1Y0q4TrWGXq4=; b=ZPRi8VmY2CtMqkNj1Y4ZKlZiqOwojfrS2FZKtYRQiVGEQvPGOTNq4w5G6pewAV5B4G4zN4i+FIeN2gKkaoeAZ9nIMsFSzPpGAGstBugk7rAdbN3d2++iusuXPNtI+/18SwkJRx1/RP6+w8qt3pgcg5myjcgAQA6AGeDYsPV6iJM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899198339905.6310219619846; Thu, 19 Sep 2019 06:19:58 -0700 (PDT) Received: from localhost ([::1]:43872 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwLe-00039L-Lt for importer@patchew.org; Thu, 19 Sep 2019 09:19:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41418) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsd-0006Ji-BP for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvl8-0000KN-8e for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54162) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvl7-0000GP-Cn; Thu, 19 Sep 2019 08:42:05 -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 658633082137; Thu, 19 Sep 2019 12:42:03 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 117B06017E; Thu, 19 Sep 2019 12:42:02 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:51 +0200 Message-Id: <20190919124115.11510-11-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 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.42]); Thu, 19 Sep 2019 12:42:03 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 10/34] s390x/tcg: MVCS/MVCP: Check for special operation exceptions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Let's perform the documented checks. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 86238e0163c8..20e1ac0ea9cd 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1960,12 +1960,18 @@ uint32_t HELPER(rrbe)(CPUS390XState *env, uint64_t = r2) =20 uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_= t a2) { + const uint8_t psw_as =3D (env->psw.mask & PSW_MASK_ASC) >> PSW_SHIFT_A= SC; uintptr_t ra =3D GETPC(); int cc =3D 0, i; =20 HELPER_LOG("%s: %16" PRIx64 " %16" PRIx64 " %16" PRIx64 "\n", __func__, l, a1, a2); =20 + if (!(env->psw.mask & PSW_MASK_DAT) || !(env->cregs[0] & CR0_SECONDARY= ) || + psw_as =3D=3D AS_HOME || psw_as =3D=3D AS_ACCREG) { + s390_program_interrupt(env, PGM_SPECIAL_OP, ILEN_AUTO, ra); + } + if (l > 256) { /* max 256 */ l =3D 256; @@ -1983,12 +1989,18 @@ uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t = l, uint64_t a1, uint64_t a2) =20 uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_= t a2) { + const uint8_t psw_as =3D (env->psw.mask & PSW_MASK_ASC) >> PSW_SHIFT_A= SC; uintptr_t ra =3D GETPC(); int cc =3D 0, i; =20 HELPER_LOG("%s: %16" PRIx64 " %16" PRIx64 " %16" PRIx64 "\n", __func__, l, a1, a2); =20 + if (!(env->psw.mask & PSW_MASK_DAT) || !(env->cregs[0] & CR0_SECONDARY= ) || + psw_as =3D=3D AS_HOME || psw_as =3D=3D AS_ACCREG) { + s390_program_interrupt(env, PGM_SPECIAL_OP, ILEN_AUTO, ra); + } + if (l > 256) { /* max 256 */ l =3D 256; --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899337; cv=none; d=zoho.com; s=zohoarc; b=BWG5ywPCbt/aP+/JtgEbumKcke1m4o1Yyjja5RD7CZif89DHVzMiUcgU4OVC8oSM+76hidq3nsgBcJkUPHC3sMk/r3Y6kAe5RAxHC5LqHSlOxPJO+K4lWPuJFM/W52ahtBiG1aFblUSFLqVx9W0Ba8k8mP7RALjRAE3xbfO34o8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899337; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=kTSzwvlIKPgjAlXWIR3VU1H3syEuKKznlDskAGdv2Vo=; b=RVtsBaykyfkABrLYmzvUnM3jG23frqXwdhgmtTTKKDaCEYDrshgEw5apGFVFmZeRWrJMcZgVlidwd6nC2fTxO80dMIa8UN1YHmFedaPuqV8uY2UeFJO+AWiec3p8IRE+msQt4di4v3U3XRhV4UX6W3Si9re5I/yRwwRGwIDEqxY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899337167396.57327403844477; Thu, 19 Sep 2019 06:22:17 -0700 (PDT) Received: from localhost ([::1]:43892 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwNy-0005aA-2s for importer@patchew.org; Thu, 19 Sep 2019 09:22:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41479) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsc-0006Le-2I for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlC-0000SM-QX for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42926) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlC-0000RE-Lg; Thu, 19 Sep 2019 08:42:10 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id F2A14302C08D; Thu, 19 Sep 2019 12:42:09 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D63A960F88; Thu, 19 Sep 2019 12:42:04 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:52 +0200 Message-Id: <20190919124115.11510-12-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Thu, 19 Sep 2019 12:42:10 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 11/34] s390x/tcg: MVCOS: Lengths are 32 bit in 24/31-bit mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Triggered by a review comment from Richard, also MVCOS has a 32-bit length in 24/31-bit addressing mode. Add a new helper. Rename wrap_length() to wrap_length31(). Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 20e1ac0ea9cd..320e9ee65c88 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -528,7 +528,15 @@ static inline void set_address(CPUS390XState *env, int= reg, uint64_t address) } } =20 -static inline uint64_t wrap_length(CPUS390XState *env, uint64_t length) +static inline uint64_t wrap_length32(CPUS390XState *env, uint64_t length) +{ + if (!(env->psw.mask & PSW_MASK_64)) { + return (uint32_t)length; + } + return length; +} + +static inline uint64_t wrap_length31(CPUS390XState *env, uint64_t length) { if (!(env->psw.mask & PSW_MASK_64)) { /* 24-Bit and 31-Bit mode */ @@ -539,7 +547,7 @@ static inline uint64_t wrap_length(CPUS390XState *env, = uint64_t length) =20 static inline uint64_t get_length(CPUS390XState *env, int reg) { - return wrap_length(env, env->regs[reg]); + return wrap_length31(env, env->regs[reg]); } =20 static inline void set_length(CPUS390XState *env, int reg, uint64_t length) @@ -2378,7 +2386,7 @@ uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t d= est, uint64_t src, s390_program_interrupt(env, PGM_PRIVILEGED, 6, ra); } =20 - len =3D wrap_length(env, len); + len =3D wrap_length32(env, len); if (len > 4096) { cc =3D 3; len =3D 4096; --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899756; cv=none; d=zoho.com; s=zohoarc; b=aYkLI4vHUqMeyh4DDVnPb96ZuJn6RkeDMwChWb6/+kaX0aV0Wr5VrDdmR8dIKQBh9Qv99Ou6+JSG63pBw0Q62+Sol9j7mpIV+xpus15ZJTNCDZTMIoVX9QgQ8QnnKatfZiw9HwV0ZpfTkMAY3/wGVPybdKUNHvcshov8FUyaTm4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899756; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=aNhXe3Uq1fbbmoHB1FVYjkcm3bhOFzDpr7BOEqtoahM=; b=ksFpeCrpa1kJmOCezNX7Ezz8f7bNqOZvzbjVfZ/ogCL0FPAp3jtZuOJr2sARI8ArpJ2ae9HQUH8ApaWQI7J6sKcSKXxXAj6zCq/n9SzeIBK75lAQ2Kkx7PBaatRoIWxWrypThtN9ZLTtJV/palMtQ+oWsWVcMFWwkw34ldxc6sE= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899756482650.9747028255726; Thu, 19 Sep 2019 06:29:16 -0700 (PDT) Received: from localhost ([::1]:43986 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwUk-0005sE-J1 for importer@patchew.org; Thu, 19 Sep 2019 09:29:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41649) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsb-0006je-Qe for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlE-0000Uv-L8 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:13 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39058) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlE-0000U9-Fs; Thu, 19 Sep 2019 08:42:12 -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 C7C6010C0312; Thu, 19 Sep 2019 12:42:11 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7374E601B3; Thu, 19 Sep 2019 12:42:11 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:53 +0200 Message-Id: <20190919124115.11510-13-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.65]); Thu, 19 Sep 2019 12:42:11 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 12/34] s390x/tcg: MVCS/MVCP: Properly wrap the length X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand ... and don't perform any move in case the length is zero. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 320e9ee65c88..41d7336a1a7a 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1980,10 +1980,13 @@ uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t = l, uint64_t a1, uint64_t a2) s390_program_interrupt(env, PGM_SPECIAL_OP, ILEN_AUTO, ra); } =20 + l =3D wrap_length32(env, l); if (l > 256) { /* max 256 */ l =3D 256; cc =3D 3; + } else if (!l) { + return cc; } =20 /* XXX replace w/ memcpy */ @@ -2009,10 +2012,13 @@ uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t = l, uint64_t a1, uint64_t a2) s390_program_interrupt(env, PGM_SPECIAL_OP, ILEN_AUTO, ra); } =20 + l =3D wrap_length32(env, l); if (l > 256) { /* max 256 */ l =3D 256; cc =3D 3; + } else if (!l) { + return cc; } =20 /* XXX replace w/ memcpy */ --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898890; cv=none; d=zoho.com; s=zohoarc; b=WEo5KRB0xaup40XYYNflK9dih5M5+ZukE0fFxSKI0HNiOvkhXVBjQbZXTAsVNrtGWnoGwBxm4oWuTGBKlfB90scmHpJYR8MnRMm36l4t9VDruNQ6SFtSTajws/hmQWT1b1WNST/ZVzbaYZIV8fZa/VFoKaNOm1n2p3Qqdw/K3s0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898890; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=OVRaOx+1EieVKAVA8PXaLmr0mAu9yUwMHUct4zazRGw=; b=iZr4EaXxRSf4+28e6fqmXSPI7z/TFUWs61dkIfBeBywYeZpsy4Azp4otSZZMKW8C3EH8YDyQZf/dBLWI/s42J9xozXWEjoBLnOR4O6iDdEgGuvFuuxRLypl6JtfClzPWwXuf2RbYQebXgGH6O6OWX//4cbqFrqQrA8W1kuqaMow= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898890125888.5335999542681; Thu, 19 Sep 2019 06:14:50 -0700 (PDT) Received: from localhost ([::1]:43834 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwGj-0006dB-SI for importer@patchew.org; Thu, 19 Sep 2019 09:14:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsb-0006KH-1X for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlI-0000b4-V9 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:18 -0400 Received: from mx1.redhat.com ([209.132.183.28]:3779) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlI-0000a8-Pt; Thu, 19 Sep 2019 08:42:16 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 110DA10DCC96; Thu, 19 Sep 2019 12:42:16 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 465195D9CC; Thu, 19 Sep 2019 12:42:13 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:54 +0200 Message-Id: <20190919124115.11510-14-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.64]); Thu, 19 Sep 2019 12:42:16 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 13/34] s390x/tcg: MVST: Check for specification exceptions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Bit position 32-55 of general register 0 must be zero. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 41d7336a1a7a..ec27be174b20 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -706,6 +706,9 @@ uint64_t HELPER(mvst)(CPUS390XState *env, uint64_t c, u= int64_t d, uint64_t s) uintptr_t ra =3D GETPC(); uint32_t len; =20 + if (c & 0xffffff00ull) { + s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra); + } c =3D c & 0xff; d =3D wrap_address(env, d); s =3D wrap_address(env, s); --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899544; cv=none; d=zoho.com; s=zohoarc; b=UYxIV0a096wsljLZbsHzH7kTH0Cil1VhvIfdaW2NOYHzi47s077CBkmAUasYihKbH/lhxDxok3aQMGpNcBR+w3kbU5/GZWjc6X1PRixJT3q3TI67EtOAJ+7sygm65/7MfMMMu+6xavDjy2NcnAOB9tyAFAE8YQtP0slhRV5hdsc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899544; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=yQ9IhjBqLk7JtxqE1CDD+I+HyEIjoJDnaTM8GlOwo1Y=; b=Q52kIDyM3SmTXq90ZiJ1eMhklLkOJVGrwpyea4e6wStHyozUOZFdD51r0NkdYAmgjRwargBlD1GZ+CGmIstSZMdmpx0WcZRjf5dDZsCycCbaP/G7gn25pw/hjXDAG0R3ueiW2txNWlDG76ZAv71caF/13NHho1XS/gMfQQPq5B8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899544655809.7703762131953; Thu, 19 Sep 2019 06:25:44 -0700 (PDT) Received: from localhost ([::1]:43934 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwRK-0001mK-Lg for importer@patchew.org; Thu, 19 Sep 2019 09:25:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41418) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsa-0006Ji-IB for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlN-0000hu-3X for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:22 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49734) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlM-0000gp-SW; Thu, 19 Sep 2019 08:42:21 -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 33E7810DCC82; Thu, 19 Sep 2019 12:42:20 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 83FFF60167; Thu, 19 Sep 2019 12:42:17 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:55 +0200 Message-Id: <20190919124115.11510-15-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.64]); Thu, 19 Sep 2019 12:42:20 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 14/34] s390x/tcg: MVST: Fix storing back the addresses to registers X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand 24 and 31-bit address space handling is wrong when it comes to storing back the addresses to the register. While at it, read gprs 0 implicitly. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/helper.h | 2 +- target/s390x/insn-data.def | 2 +- target/s390x/mem_helper.c | 26 +++++++++++--------------- target/s390x/translate.c | 8 ++++++-- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index e9aff83b05d3..56e8149866f4 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -20,7 +20,7 @@ DEF_HELPER_FLAGS_4(mvn, TCG_CALL_NO_WG, void, env, i32, i= 64, i64) DEF_HELPER_FLAGS_4(mvo, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(mvpg, TCG_CALL_NO_WG, i32, env, i64, i64, i64) DEF_HELPER_FLAGS_4(mvz, TCG_CALL_NO_WG, void, env, i32, i64, i64) -DEF_HELPER_4(mvst, i64, env, i64, i64, i64) +DEF_HELPER_3(mvst, i32, env, i32, i32) DEF_HELPER_4(ex, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(stam, TCG_CALL_NO_WG, void, env, i32, i64, i32) DEF_HELPER_FLAGS_4(lam, TCG_CALL_NO_WG, void, env, i32, i64, i32) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index f421184fcd53..449eee1662d0 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -637,7 +637,7 @@ /* MOVE PAGE */ C(0xb254, MVPG, RRE, Z, r1_o, r2_o, 0, 0, mvpg, 0) /* MOVE STRING */ - C(0xb255, MVST, RRE, Z, r1_o, r2_o, 0, 0, mvst, 0) + C(0xb255, MVST, RRE, Z, 0, 0, 0, 0, mvst, 0) /* MOVE WITH OPTIONAL SPECIFICATION */ C(0xc800, MVCOS, SSF, MVCOS, la1, a2, 0, 0, mvcos, 0) /* MOVE WITH OFFSET */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index ec27be174b20..a24506676b8d 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -700,18 +700,18 @@ uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0= , uint64_t r1, uint64_t r2) return 0; /* data moved */ } =20 -/* string copy (c is string terminator) */ -uint64_t HELPER(mvst)(CPUS390XState *env, uint64_t c, uint64_t d, uint64_t= s) +/* string copy */ +uint32_t HELPER(mvst)(CPUS390XState *env, uint32_t r1, uint32_t r2) { + const uint64_t d =3D get_address(env, r1); + const uint64_t s =3D get_address(env, r2); + const uint8_t c =3D env->regs[0]; uintptr_t ra =3D GETPC(); uint32_t len; =20 - if (c & 0xffffff00ull) { + if (env->regs[0] & 0xffffff00ull) { s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra); } - c =3D c & 0xff; - d =3D wrap_address(env, d); - s =3D wrap_address(env, s); =20 /* Lest we fail to service interrupts in a timely manner, limit the amount of work we're willing to do. For now, let's cap at 8k. */ @@ -719,17 +719,13 @@ uint64_t HELPER(mvst)(CPUS390XState *env, uint64_t c,= uint64_t d, uint64_t s) uint8_t v =3D cpu_ldub_data_ra(env, s + len, ra); cpu_stb_data_ra(env, d + len, v, ra); if (v =3D=3D c) { - /* Complete. Set CC=3D1 and advance R1. */ - env->cc_op =3D 1; - env->retxl =3D s; - return d + len; + set_address_zero(env, r1, d + len); + return 1; } } - - /* Incomplete. Set CC=3D3 and signal to advance R1 and R2. */ - env->cc_op =3D 3; - env->retxl =3D s + len; - return d + len; + set_address_zero(env, r1, d + len); + set_address_zero(env, r2, s + len); + return 3; } =20 /* load access registers r1 to r3 from memory at a2 */ diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 2927247c82f5..b0a2500e5f36 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3488,9 +3488,13 @@ static DisasJumpType op_mvpg(DisasContext *s, DisasO= ps *o) =20 static DisasJumpType op_mvst(DisasContext *s, DisasOps *o) { - gen_helper_mvst(o->in1, cpu_env, regs[0], o->in1, o->in2); + TCGv_i32 t1 =3D tcg_const_i32(get_field(s->fields, r1)); + TCGv_i32 t2 =3D tcg_const_i32(get_field(s->fields, r2)); + + gen_helper_mvst(cc_op, cpu_env, t1, t2); + tcg_temp_free_i32(t1); + tcg_temp_free_i32(t2); set_cc_static(s); - return_low128(o->in2); return DISAS_NEXT; } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899370; cv=none; d=zoho.com; s=zohoarc; b=N+1vHCHutUHBD0UL4KQCj3lteX1w2SRVDA1A5NDOU+hfXwWCbQTkZ2hYZpzIzqnppp4O/ONbG95XfdGonU35lBHKRkwJ/wTD7TPHTcpG8CRdQrFhEaxRAE+BIfuGlaVmlcT+NuYec0du+l+g1/ECfM8oGL/U/prpV0Ymj3NpMrM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899370; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=KHHVRVVWMXcYp1HKvJ6IuYxaUwOa2PtL6Hti/61f2l8=; b=muRi07inmgJcRxxyFQTC0F9lanCF/rpLf1JwPSVq0fcRVj6lAu6r1lvBvyNwWDEUmhWJUIX1Wjn/2jnwxrOI0iqcu4arSQ4+DKLOuBiDoiJGXER3CfHu+am2J922YdsA8OSkaa7X+f4GSxTf+IyE2lyHPSKWdMrb5oD2H9feIQc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899370496470.9383883319184; Thu, 19 Sep 2019 06:22:50 -0700 (PDT) Received: from localhost ([::1]:43894 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwOP-0005wN-Ef for importer@patchew.org; Thu, 19 Sep 2019 09:22:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41628) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsa-0006i8-Ec for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlS-0000q3-M4 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50644) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlS-0000ow-EP; Thu, 19 Sep 2019 08:42:26 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BB4FF10C093C; Thu, 19 Sep 2019 12:42:25 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A00D25D6B2; Thu, 19 Sep 2019 12:42:21 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:56 +0200 Message-Id: <20190919124115.11510-16-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.66]); Thu, 19 Sep 2019 12:42:25 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 15/34] s390x/tcg: Always use MMU_USER_IDX for CONFIG_USER_ONLY X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Although we basically ignore the index all the time for CONFIG_USER_ONLY, let's simply skip all the checks and always return MMU_USER_IDX in cpu_mmu_index() and get_mem_index(). Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/cpu.h | 4 ++++ target/s390x/translate.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 79202c098096..163dae13d710 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -328,6 +328,9 @@ extern const VMStateDescription vmstate_s390_cpu; =20 static inline int cpu_mmu_index(CPUS390XState *env, bool ifetch) { +#ifdef CONFIG_USER_ONLY + return MMU_USER_IDX; +#else if (!(env->psw.mask & PSW_MASK_DAT)) { return MMU_REAL_IDX; } @@ -351,6 +354,7 @@ static inline int cpu_mmu_index(CPUS390XState *env, boo= l ifetch) default: abort(); } +#endif } =20 static inline void cpu_get_tb_cpu_state(CPUS390XState* env, target_ulong *= pc, diff --git a/target/s390x/translate.c b/target/s390x/translate.c index b0a2500e5f36..a3e43ff9ec0c 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -318,6 +318,9 @@ static inline uint64_t ld_code4(CPUS390XState *env, uin= t64_t pc) =20 static int get_mem_index(DisasContext *s) { +#ifdef CONFIG_USER_ONLY + return MMU_USER_IDX; +#else if (!(s->base.tb->flags & FLAG_MASK_DAT)) { return MMU_REAL_IDX; } @@ -333,6 +336,7 @@ static int get_mem_index(DisasContext *s) tcg_abort(); break; } +#endif } =20 static void gen_exception(int excp) --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568899120; cv=none; d=zoho.com; s=zohoarc; b=GX9PNuTxjlrSLhhBqlHIgtqTHv3lCdsXMDC8PjaVT0na8pXXWS+myYY0DEHd6UjusqTh6uXER11q+KaI+kBIhynPoG1o+AP6YuuUlHtsXJTm0jc3jPcrZ7emMFL6mlcaBdnDlST8s/WVqtsKzn1MYDtpLvQ/jAWSCHhTq8Ahmx0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568899120; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=2uieURhfmYbPHLYlQ58/ujCMOKXGsqeBEaF8hZf5Xfg=; b=g/IdDpheN2uVAYRhKrwCcEhzxjQm817iK1pYDlA+JWeCtfZyYpGnK55G9PjMoXIXSdpEoDORdKzTRVLgfkwA8dNsOsZbEyFakYTzbTRjvdCYr6N1At2E0nqsBfhANs+DfngAiyXeB06XVnTNXC2EtETGJ4OpTunXoYawgiq4yGk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568899120294231.08748820858034; Thu, 19 Sep 2019 06:18:40 -0700 (PDT) Received: from localhost ([::1]:43864 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwKR-00016S-Ui for importer@patchew.org; Thu, 19 Sep 2019 09:18:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsZ-0006KH-7F for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlU-0000t1-Kv for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40594) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlU-0000rt-CC; Thu, 19 Sep 2019 08:42:28 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A965218C8935; Thu, 19 Sep 2019 12:42:27 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 354E55D6B2; Thu, 19 Sep 2019 12:42:27 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:57 +0200 Message-Id: <20190919124115.11510-17-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.70]); Thu, 19 Sep 2019 12:42:27 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 16/34] s390x/tcg: Fault-safe memset X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Replace fast_memset() by access_memset(), that first tries to probe access to all affected pages (maximum is two). We'll use the same mechanism for other types of accesses soon. Only in very rare cases (especially TLB_NOTDIRTY), we'll have to fallback to ld/st helpers. Try to speed up that case as suggested by Richard. We'll rework most involved handlers soon to do all accesses via new fault-safe helpers, especially MVC. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 123 +++++++++++++++++++++++++++++++------- 1 file changed, 103 insertions(+), 20 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index a24506676b8d..dd5da7074610 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -117,27 +117,95 @@ static inline void cpu_stsize_data_ra(CPUS390XState *= env, uint64_t addr, } } =20 -static void fast_memset(CPUS390XState *env, uint64_t dest, uint8_t byte, - uint32_t l, uintptr_t ra) +/* An access covers at most 4096 bytes and therefore at most two pages. */ +typedef struct S390Access { + target_ulong vaddr1; + target_ulong vaddr2; + char *haddr1; + char *haddr2; + uint16_t size1; + uint16_t size2; + /* + * If we can't access the host page directly, we'll have to do I/O acc= ess + * via ld/st helpers. These are internal details, so we store the + * mmu idx to do the access here instead of passing it around in the + * helpers. Maybe, one day we can get rid of ld/st access - once we can + * handle TLB_NOTDIRTY differently. We don't expect these special acce= sses + * to trigger exceptions - only if we would have TLB_NOTDIRTY on LAP + * pages, we might trigger a new MMU translation - very unlikely that + * the mapping changes in between and we would trigger a fault. + */ + int mmu_idx; +} S390Access; + +static S390Access access_prepare(CPUS390XState *env, vaddr vaddr, int size, + MMUAccessType access_type, int mmu_idx, + uintptr_t ra) { - int mmu_idx =3D cpu_mmu_index(env, false); + S390Access access =3D { + .vaddr1 =3D vaddr, + .size1 =3D MIN(size, -(vaddr | TARGET_PAGE_MASK)), + .mmu_idx =3D mmu_idx, + }; =20 - while (l > 0) { - void *p =3D tlb_vaddr_to_host(env, dest, MMU_DATA_STORE, mmu_idx); - if (p) { - /* Access to the whole page in write mode granted. */ - uint32_t l_adj =3D adj_len_to_page(l, dest); - memset(p, byte, l_adj); - dest +=3D l_adj; - l -=3D l_adj; + g_assert(size > 0 && size <=3D 4096); + access.haddr1 =3D probe_access(env, access.vaddr1, access.size1, acces= s_type, + mmu_idx, ra); + + if (unlikely(access.size1 !=3D size)) { + /* The access crosses page boundaries. */ + access.vaddr2 =3D wrap_address(env, vaddr + access.size1); + access.size2 =3D size - access.size1; + access.haddr2 =3D probe_access(env, access.vaddr2, access.size2, + access_type, mmu_idx, ra); + } + return access; +} + +/* Helper to handle memset on a single page. */ +static void do_access_memset(CPUS390XState *env, vaddr vaddr, char *haddr, + uint8_t byte, uint16_t size, int mmu_idx, + uintptr_t ra) +{ +#ifdef CONFIG_USER_ONLY + g_assert(haddr); + memset(haddr, byte, size); +#else + TCGMemOpIdx oi =3D make_memop_idx(MO_UB, mmu_idx); + int i; + + if (likely(haddr)) { + memset(haddr, byte, size); + } else { + /* + * Do a single access and test if we can then get access to the + * page. This is especially relevant to speed up TLB_NOTDIRTY. + */ + g_assert(size > 0); + helper_ret_stb_mmu(env, vaddr, byte, oi, ra); + haddr =3D tlb_vaddr_to_host(env, vaddr, MMU_DATA_STORE, mmu_idx); + if (likely(haddr)) { + memset(haddr + 1, byte, size - 1); } else { - /* We failed to get access to the whole page. The next write - access will likely fill the QEMU TLB for the next iteration= . */ - cpu_stb_data_ra(env, dest, byte, ra); - dest++; - l--; + for (i =3D 1; i < size; i++) { + helper_ret_stb_mmu(env, vaddr + i, byte, oi, ra); + } } } +#endif +} + +static void access_memset(CPUS390XState *env, S390Access *desta, + uint8_t byte, uintptr_t ra) +{ + + do_access_memset(env, desta->vaddr1, desta->haddr1, byte, desta->size1, + desta->mmu_idx, ra); + if (likely(!desta->size2)) { + return; + } + do_access_memset(env, desta->vaddr2, desta->haddr2, byte, desta->size2, + desta->mmu_idx, ra); } =20 #ifndef CONFIG_USER_ONLY @@ -259,15 +327,19 @@ uint32_t HELPER(nc)(CPUS390XState *env, uint32_t l, u= int64_t dest, static uint32_t do_helper_xc(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t src, uintptr_t ra) { + const int mmu_idx =3D cpu_mmu_index(env, false); + S390Access desta; uint32_t i; uint8_t c =3D 0; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); =20 + desta =3D access_prepare(env, dest, l + 1, MMU_DATA_STORE, mmu_idx, ra= ); + /* xor with itself is the same as memset(0) */ if (src =3D=3D dest) { - fast_memset(env, dest, 0, l + 1, ra); + access_memset(env, &desta, 0, ra); return 0; } =20 @@ -315,6 +387,8 @@ uint32_t HELPER(oc)(CPUS390XState *env, uint32_t l, uin= t64_t dest, static uint32_t do_helper_mvc(CPUS390XState *env, uint32_t l, uint64_t des= t, uint64_t src, uintptr_t ra) { + const int mmu_idx =3D cpu_mmu_index(env, false); + S390Access desta; uint32_t i; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", @@ -323,13 +397,15 @@ static uint32_t do_helper_mvc(CPUS390XState *env, uin= t32_t l, uint64_t dest, /* MVC always copies one more byte than specified - maximum is 256 */ l++; =20 + desta =3D access_prepare(env, dest, l, MMU_DATA_STORE, mmu_idx, ra); + /* * "When the operands overlap, the result is obtained as if the operan= ds * were processed one byte at a time". Only non-destructive overlaps * behave like memmove(). */ if (dest =3D=3D src + 1) { - fast_memset(env, dest, cpu_ldub_data_ra(env, src, ra), l, ra); + access_memset(env, &desta, cpu_ldub_data_ra(env, src, ra), ra); } else if (!is_destructive_overlap(env, dest, src, l)) { fast_memmove(env, dest, src, l, ra); } else { @@ -775,7 +851,9 @@ static inline uint32_t do_mvcl(CPUS390XState *env, uint64_t *src, uint64_t *srclen, uint16_t pad, int wordsize, uintptr_t ra) { + const int mmu_idx =3D cpu_mmu_index(env, false); int len =3D MIN(*destlen, -(*dest | TARGET_PAGE_MASK)); + S390Access desta; int i, cc; =20 if (*destlen =3D=3D *srclen) { @@ -805,7 +883,8 @@ static inline uint32_t do_mvcl(CPUS390XState *env, } else if (wordsize =3D=3D 1) { /* Pad the remaining area */ *destlen -=3D len; - fast_memset(env, *dest, pad, len, ra); + desta =3D access_prepare(env, *dest, len, MMU_DATA_STORE, mmu_idx,= ra); + access_memset(env, &desta, pad, ra); *dest =3D wrap_address(env, *dest + len); } else { /* The remaining length selects the padding byte. */ @@ -825,6 +904,7 @@ static inline uint32_t do_mvcl(CPUS390XState *env, /* move long */ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, uint32_t r2) { + const int mmu_idx =3D cpu_mmu_index(env, false); uintptr_t ra =3D GETPC(); uint64_t destlen =3D env->regs[r1 + 1] & 0xffffff; uint64_t dest =3D get_address(env, r1); @@ -832,6 +912,7 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, = uint32_t r2) uint64_t src =3D get_address(env, r2); uint8_t pad =3D env->regs[r2 + 1] >> 24; uint32_t cc, cur_len; + S390Access desta; =20 if (is_destructive_overlap(env, dest, src, MIN(srclen, destlen))) { cc =3D 3; @@ -859,7 +940,9 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, = uint32_t r2) while (destlen) { cur_len =3D MIN(destlen, -(dest | TARGET_PAGE_MASK)); if (!srclen) { - fast_memset(env, dest, pad, cur_len, ra); + desta =3D access_prepare(env, dest, cur_len, MMU_DATA_STORE, m= mu_idx, + ra); + access_memset(env, &desta, pad, ra); } else { cur_len =3D MIN(MIN(srclen, -(src | TARGET_PAGE_MASK)), cur_le= n); =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898570; cv=none; d=zoho.com; s=zohoarc; b=PzKZFfLdzbCwTSjAZXKb1MCXyJ8Ji2nR12xNs70HYNnSyBhHj17Zb1E3Y6xMI5F2A6JXoV6RkMQ/NkAFvluksmvzUpCbn75JsQY3YmJOeRK3m34hIoFCMBhXtLMlzd0aobtsQxxLYtPK44niAsShN8rgttvsqy/3g6OPVFnX6io= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898570; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=wDWgkXbq/G2gpkzuJKGjAwFsaqvWp/nNWurux1r0K9o=; b=M1/sZiInmK/NayNIzSh3BHW7bvIbVfoPGutpY8D/yLlzrfM7dgYAOKQtFZeeXycpX7v/tw9RD65hJZzVnQlYlYEUszUIE/P1col8gc2u/UN6DiozDYWA0uQuxD87aDS5nnF2F1Coyc45J1MnEkdvFqm/UnglQunGG4MuoS8xsbY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15688985708454.4132289174007155; Thu, 19 Sep 2019 06:09:30 -0700 (PDT) Received: from localhost ([::1]:43792 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwBc-00083E-VG for importer@patchew.org; Thu, 19 Sep 2019 09:09:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41479) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsY-0006Le-8y for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlZ-0000zK-51 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:35 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54188) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlY-0000y8-TY; Thu, 19 Sep 2019 08:42:33 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2F80C308FC4D; Thu, 19 Sep 2019 12:42:32 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 289001001B01; Thu, 19 Sep 2019 12:42:29 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:58 +0200 Message-Id: <20190919124115.11510-18-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.43]); Thu, 19 Sep 2019 12:42:32 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 17/34] s390x/tcg: Fault-safe memmove X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Replace fast_memmove() variants by access_memmove() variants, that first try to probe access to all affected pages (maximum is two pages). Introduce access_get_byte()/access_set_byte(). We might be able to speed up memmove in special cases even further (do single-byte access, use memmove() for remaining bytes in page), however, we'll skip that for now. In MVCOS, simply always call access_memmove_as() and drop the TODO about LAP. LAP is already handled in the MMU. Get rid of adj_len_to_page(), which is now unused. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 232 ++++++++++++++++++++++---------------- 1 file changed, 133 insertions(+), 99 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index dd5da7074610..e50cec9263c2 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -65,17 +65,6 @@ static bool is_destructive_overlap(CPUS390XState *env, u= int64_t dest, return dest > src && dest <=3D src + len - 1; } =20 -/* Reduce the length so that addr + len doesn't cross a page boundary. */ -static inline uint32_t adj_len_to_page(uint32_t len, uint64_t addr) -{ -#ifndef CONFIG_USER_ONLY - if ((addr & ~TARGET_PAGE_MASK) + len - 1 >=3D TARGET_PAGE_SIZE) { - return -(addr | TARGET_PAGE_MASK); - } -#endif - return len; -} - /* Trigger a SPECIFICATION exception if an address or a length is not naturally aligned. */ static inline void check_alignment(CPUS390XState *env, uint64_t v, @@ -208,39 +197,110 @@ static void access_memset(CPUS390XState *env, S390Ac= cess *desta, desta->mmu_idx, ra); } =20 -#ifndef CONFIG_USER_ONLY -static void fast_memmove_idx(CPUS390XState *env, uint64_t dest, uint64_t s= rc, - uint32_t len, int dest_idx, int src_idx, - uintptr_t ra) +static uint8_t do_access_get_byte(CPUS390XState *env, vaddr vaddr, char **= haddr, + int offset, int mmu_idx, uintptr_t ra) { - TCGMemOpIdx oi_dest =3D make_memop_idx(MO_UB, dest_idx); - TCGMemOpIdx oi_src =3D make_memop_idx(MO_UB, src_idx); - uint32_t len_adj; - void *src_p; - void *dest_p; - uint8_t x; - - while (len > 0) { - src =3D wrap_address(env, src); - dest =3D wrap_address(env, dest); - src_p =3D tlb_vaddr_to_host(env, src, MMU_DATA_LOAD, src_idx); - dest_p =3D tlb_vaddr_to_host(env, dest, MMU_DATA_STORE, dest_idx); - - if (src_p && dest_p) { - /* Access to both whole pages granted. */ - len_adj =3D adj_len_to_page(adj_len_to_page(len, src), dest); - memmove(dest_p, src_p, len_adj); - } else { - /* We failed to get access to one or both whole pages. The next - read or write access will likely fill the QEMU TLB for the - next iteration. */ - len_adj =3D 1; - x =3D helper_ret_ldub_mmu(env, src, oi_src, ra); - helper_ret_stb_mmu(env, dest, x, oi_dest, ra); +#ifdef CONFIG_USER_ONLY + return ldub_p(*haddr + offset); +#else + TCGMemOpIdx oi =3D make_memop_idx(MO_UB, mmu_idx); + uint8_t byte; + + if (likely(*haddr)) { + return ldub_p(*haddr + offset); + } + /* + * Do a single access and test if we can then get access to the + * page. This is especially relevant to speed up TLB_NOTDIRTY. + */ + byte =3D helper_ret_ldub_mmu(env, vaddr + offset, oi, ra); + *haddr =3D tlb_vaddr_to_host(env, vaddr, MMU_DATA_LOAD, mmu_idx); + return byte; +#endif +} + +static uint8_t access_get_byte(CPUS390XState *env, S390Access *access, + int offset, uintptr_t ra) +{ + if (offset < access->size1) { + return do_access_get_byte(env, access->vaddr1, &access->haddr1, + offset, access->mmu_idx, ra); + } + return do_access_get_byte(env, access->vaddr2, &access->haddr2, + offset - access->size1, access->mmu_idx, ra); +} + +static void do_access_set_byte(CPUS390XState *env, vaddr vaddr, char **had= dr, + int offset, uint8_t byte, int mmu_idx, + uintptr_t ra) +{ +#ifdef CONFIG_USER_ONLY + stb_p(*haddr + offset, byte); +#else + TCGMemOpIdx oi =3D make_memop_idx(MO_UB, mmu_idx); + + if (likely(*haddr)) { + stb_p(*haddr + offset, byte); + return; + } + /* + * Do a single access and test if we can then get access to the + * page. This is especially relevant to speed up TLB_NOTDIRTY. + */ + helper_ret_stb_mmu(env, vaddr + offset, byte, oi, ra); + *haddr =3D tlb_vaddr_to_host(env, vaddr, MMU_DATA_STORE, mmu_idx); +#endif +} + +static void access_set_byte(CPUS390XState *env, S390Access *access, + int offset, uint8_t byte, uintptr_t ra) +{ + if (offset < access->size1) { + do_access_set_byte(env, access->vaddr1, &access->haddr1, offset, b= yte, + access->mmu_idx, ra); + } else { + do_access_set_byte(env, access->vaddr2, &access->haddr2, + offset - access->size1, byte, access->mmu_idx, = ra); + } +} + +/* + * Move data with the same semantics as memmove() in case ranges don't ove= rlap + * or src > dest. Undefined behavior on destructive overlaps. + */ +static void access_memmove(CPUS390XState *env, S390Access *desta, + S390Access *srca, uintptr_t ra) +{ + int diff; + + g_assert(desta->size1 + desta->size2 =3D=3D srca->size1 + srca->size2); + + /* Fallback to slow access in case we don't have access to all host pa= ges */ + if (unlikely(!desta->haddr1 || (desta->size2 && !desta->haddr2) || + !srca->haddr1 || (srca->size2 && !srca->haddr2))) { + int i; + + for (i =3D 0; i < desta->size1 + desta->size2; i++) { + uint8_t byte =3D access_get_byte(env, srca, i, ra); + + access_set_byte(env, desta, i, byte, ra); } - src +=3D len_adj; - dest +=3D len_adj; - len -=3D len_adj; + return; + } + + if (srca->size1 =3D=3D desta->size1) { + memmove(desta->haddr1, srca->haddr1, srca->size1); + memmove(desta->haddr2, srca->haddr2, srca->size2); + } else if (srca->size1 < desta->size1) { + diff =3D desta->size1 - srca->size1; + memmove(desta->haddr1, srca->haddr1, srca->size1); + memmove(desta->haddr1 + srca->size1, srca->haddr2, diff); + memmove(desta->haddr2, srca->haddr2 + diff, desta->size2); + } else { + diff =3D srca->size1 - desta->size1; + memmove(desta->haddr1, srca->haddr1, desta->size1); + memmove(desta->haddr2, srca->haddr1 + desta->size1, diff); + memmove(desta->haddr2 + diff, srca->haddr2, srca->size2); } } =20 @@ -259,45 +319,6 @@ static int mmu_idx_from_as(uint8_t as) } } =20 -static void fast_memmove_as(CPUS390XState *env, uint64_t dest, uint64_t sr= c, - uint32_t len, uint8_t dest_as, uint8_t src_as, - uintptr_t ra) -{ - int src_idx =3D mmu_idx_from_as(src_as); - int dest_idx =3D mmu_idx_from_as(dest_as); - - fast_memmove_idx(env, dest, src, len, dest_idx, src_idx, ra); -} -#endif - -static void fast_memmove(CPUS390XState *env, uint64_t dest, uint64_t src, - uint32_t l, uintptr_t ra) -{ - int mmu_idx =3D cpu_mmu_index(env, false); - - while (l > 0) { - void *src_p =3D tlb_vaddr_to_host(env, src, MMU_DATA_LOAD, mmu_idx= ); - void *dest_p =3D tlb_vaddr_to_host(env, dest, MMU_DATA_STORE, mmu_= idx); - if (src_p && dest_p) { - /* Access to both whole pages granted. */ - uint32_t l_adj =3D adj_len_to_page(l, src); - l_adj =3D adj_len_to_page(l_adj, dest); - memmove(dest_p, src_p, l_adj); - src +=3D l_adj; - dest +=3D l_adj; - l -=3D l_adj; - } else { - /* We failed to get access to one or both whole pages. The next - read or write access will likely fill the QEMU TLB for the - next iteration. */ - cpu_stb_data_ra(env, dest, cpu_ldub_data_ra(env, src, ra), ra); - src++; - dest++; - l--; - } - } -} - /* and on array */ static uint32_t do_helper_nc(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t src, uintptr_t ra) @@ -388,7 +409,7 @@ static uint32_t do_helper_mvc(CPUS390XState *env, uint3= 2_t l, uint64_t dest, uint64_t src, uintptr_t ra) { const int mmu_idx =3D cpu_mmu_index(env, false); - S390Access desta; + S390Access srca, desta; uint32_t i; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", @@ -397,6 +418,7 @@ static uint32_t do_helper_mvc(CPUS390XState *env, uint3= 2_t l, uint64_t dest, /* MVC always copies one more byte than specified - maximum is 256 */ l++; =20 + srca =3D access_prepare(env, src, l, MMU_DATA_LOAD, mmu_idx, ra); desta =3D access_prepare(env, dest, l, MMU_DATA_STORE, mmu_idx, ra); =20 /* @@ -405,9 +427,9 @@ static uint32_t do_helper_mvc(CPUS390XState *env, uint3= 2_t l, uint64_t dest, * behave like memmove(). */ if (dest =3D=3D src + 1) { - access_memset(env, &desta, cpu_ldub_data_ra(env, src, ra), ra); + access_memset(env, &desta, access_get_byte(env, &srca, 0, ra), ra); } else if (!is_destructive_overlap(env, dest, src, l)) { - fast_memmove(env, dest, src, l, ra); + access_memmove(env, &desta, &srca, ra); } else { for (i =3D 0; i < l; i++) { uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); @@ -756,8 +778,11 @@ uint64_t HELPER(clst)(CPUS390XState *env, uint64_t c, = uint64_t s1, uint64_t s2) /* move page */ uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0, uint64_t r1, uint64= _t r2) { + const int mmu_idx =3D cpu_mmu_index(env, false); const bool f =3D extract64(r0, 11, 1); const bool s =3D extract64(r0, 10, 1); + uintptr_t ra =3D GETPC(); + S390Access srca, desta; =20 if ((f && s) || extract64(r0, 12, 4)) { s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, GETPC()); @@ -772,7 +797,11 @@ uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0,= uint64_t r1, uint64_t r2) * - CC-option with surpression of page-translation exceptions * - Store r1/r2 register identifiers at real location 162 */ - fast_memmove(env, r1, r2, TARGET_PAGE_SIZE, GETPC()); + srca =3D access_prepare(env, r2, TARGET_PAGE_SIZE, MMU_DATA_LOAD, mmu_= idx, + ra); + desta =3D access_prepare(env, r1, TARGET_PAGE_SIZE, MMU_DATA_STORE, mm= u_idx, + ra); + access_memmove(env, &desta, &srca, ra); return 0; /* data moved */ } =20 @@ -853,7 +882,7 @@ static inline uint32_t do_mvcl(CPUS390XState *env, { const int mmu_idx =3D cpu_mmu_index(env, false); int len =3D MIN(*destlen, -(*dest | TARGET_PAGE_MASK)); - S390Access desta; + S390Access srca, desta; int i, cc; =20 if (*destlen =3D=3D *srclen) { @@ -877,7 +906,9 @@ static inline uint32_t do_mvcl(CPUS390XState *env, len =3D MIN(MIN(*srclen, -(*src | TARGET_PAGE_MASK)), len); *destlen -=3D len; *srclen -=3D len; - fast_memmove(env, *dest, *src, len, ra); + srca =3D access_prepare(env, *src, len, MMU_DATA_LOAD, mmu_idx, ra= ); + desta =3D access_prepare(env, *dest, len, MMU_DATA_STORE, mmu_idx,= ra); + access_memmove(env, &desta, &srca, ra); *src =3D wrap_address(env, *src + len); *dest =3D wrap_address(env, *dest + len); } else if (wordsize =3D=3D 1) { @@ -911,8 +942,8 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, = uint32_t r2) uint64_t srclen =3D env->regs[r2 + 1] & 0xffffff; uint64_t src =3D get_address(env, r2); uint8_t pad =3D env->regs[r2 + 1] >> 24; + S390Access srca, desta; uint32_t cc, cur_len; - S390Access desta; =20 if (is_destructive_overlap(env, dest, src, MIN(srclen, destlen))) { cc =3D 3; @@ -946,7 +977,11 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1,= uint32_t r2) } else { cur_len =3D MIN(MIN(srclen, -(src | TARGET_PAGE_MASK)), cur_le= n); =20 - fast_memmove(env, dest, src, cur_len, ra); + srca =3D access_prepare(env, src, cur_len, MMU_DATA_LOAD, mmu_= idx, + ra); + desta =3D access_prepare(env, dest, cur_len, MMU_DATA_STORE, m= mu_idx, + ra); + access_memmove(env, &desta, &srca, ra); src =3D wrap_address(env, src + cur_len); srclen -=3D cur_len; env->regs[r2 + 1] =3D deposit64(env->regs[r2 + 1], 0, 24, srcl= en); @@ -2488,16 +2523,15 @@ uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t= dest, uint64_t src, s390_program_interrupt(env, PGM_ADDRESSING, 6, ra); } =20 - /* FIXME: a) LAP - * b) Access using correct keys - * c) AR-mode - */ -#ifdef CONFIG_USER_ONLY - /* psw keys are never valid in user mode, we will never reach this */ - g_assert_not_reached(); -#else - fast_memmove_as(env, dest, src, len, dest_as, src_as, ra); -#endif + /* FIXME: Access using correct keys and AR-mode */ + if (len) { + S390Access srca =3D access_prepare(env, src, len, MMU_DATA_LOAD, + mmu_idx_from_as(src_as), ra); + S390Access desta =3D access_prepare(env, dest, len, MMU_DATA_STORE, + mmu_idx_from_as(dest_as), ra); + + access_memmove(env, &desta, &srca, ra); + } =20 return cc; } --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898827; cv=none; d=zoho.com; s=zohoarc; b=BzRWsDQg0J/wzvYG6o86QEvhzdEHQsRQrJRT5T03b8CPgY3WvTqBHHh8YEvPGLJvlZuoXjEEUXf63Nqx6fBMYFIIkKdbdtzaGJ7HgmLRfoL3pKyCfvsUYh3OfHNSp/G/Rc4zYCddxQ5/+m4TfNJPZj7FbZ2xhkFt+1QlpBV9dLw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898827; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=n7CpdJh/mRtKSctY+7IZIY6k/V8gKoPuukfA1bNFqT4=; b=auWh86M4gYTvQKDIqaHPz+cUzmnMl3AMh6E51UNSSYrnWjJJEgwFXDNs98v0PnXabY7vGrk19ql/kUESm7u0yk0ABZSa2XbrmO2UOyhC5Y/EwFcyA3IclbNnBEPEWSt2vIpu3lR9k5Kii52d50a8sdaQ4OY37uSbs8jlSQaKygE= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898827021278.00032333997683; Thu, 19 Sep 2019 06:13:47 -0700 (PDT) Received: from localhost ([::1]:43828 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwFk-0005Fl-NM for importer@patchew.org; Thu, 19 Sep 2019 09:13:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41418) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsY-0006Ji-0r for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlg-0001Ag-AL for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39282) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlg-00018z-0l; Thu, 19 Sep 2019 08:42:40 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5677210C0311; Thu, 19 Sep 2019 12:42:39 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A18C65C1D4; Thu, 19 Sep 2019 12:42:33 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:40:59 +0200 Message-Id: <20190919124115.11510-19-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.65]); Thu, 19 Sep 2019 12:42:39 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 18/34] s390x/tcg: MVCS/MVCP: Use access_memmove() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand As we are moving between address spaces, we can use access_memmove() without checking for destructive overlaps (especially of real storage locations): "Each storage operand is processed left to right. The storage-operand-consistency rules are the same as for MOVE (MVC), except that when the operands overlap in real storage, the use of the common real- storage locations is not necessarily recognized." Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index e50cec9263c2..6b85f44e2251 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -2086,8 +2086,9 @@ uint32_t HELPER(rrbe)(CPUS390XState *env, uint64_t r2) uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_= t a2) { const uint8_t psw_as =3D (env->psw.mask & PSW_MASK_ASC) >> PSW_SHIFT_A= SC; + S390Access srca, desta; uintptr_t ra =3D GETPC(); - int cc =3D 0, i; + int cc =3D 0; =20 HELPER_LOG("%s: %16" PRIx64 " %16" PRIx64 " %16" PRIx64 "\n", __func__, l, a1, a2); @@ -2106,20 +2107,19 @@ uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t = l, uint64_t a1, uint64_t a2) return cc; } =20 - /* XXX replace w/ memcpy */ - for (i =3D 0; i < l; i++) { - uint8_t x =3D cpu_ldub_primary_ra(env, a2 + i, ra); - cpu_stb_secondary_ra(env, a1 + i, x, ra); - } - + /* TODO: Access key handling */ + srca =3D access_prepare(env, a2, l, MMU_DATA_LOAD, MMU_PRIMARY_IDX, ra= ); + desta =3D access_prepare(env, a1, l, MMU_DATA_STORE, MMU_SECONDARY_IDX= , ra); + access_memmove(env, &desta, &srca, ra); return cc; } =20 uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_= t a2) { const uint8_t psw_as =3D (env->psw.mask & PSW_MASK_ASC) >> PSW_SHIFT_A= SC; + S390Access srca, desta; uintptr_t ra =3D GETPC(); - int cc =3D 0, i; + int cc =3D 0; =20 HELPER_LOG("%s: %16" PRIx64 " %16" PRIx64 " %16" PRIx64 "\n", __func__, l, a1, a2); @@ -2138,12 +2138,10 @@ uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t = l, uint64_t a1, uint64_t a2) return cc; } =20 - /* XXX replace w/ memcpy */ - for (i =3D 0; i < l; i++) { - uint8_t x =3D cpu_ldub_secondary_ra(env, a2 + i, ra); - cpu_stb_primary_ra(env, a1 + i, x, ra); - } - + /* TODO: Access key handling */ + srca =3D access_prepare(env, a2, l, MMU_DATA_LOAD, MMU_SECONDARY_IDX, = ra); + desta =3D access_prepare(env, a1, l, MMU_DATA_STORE, MMU_PRIMARY_IDX, = ra); + access_memmove(env, &desta, &srca, ra); return cc; } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898498; cv=none; d=zoho.com; s=zohoarc; b=Ucx0qKxdSMXmHKOSw30L+BtiMEExYLMsXPBps14ZCHo5qlH7m8fwAZRiH6IWIF959EbYMBGexLcNx4KkvCD8qacyQUcD2oaBX5zEtrzYPt5UG0EqModqYxY+oSLukh1pFFl9fhsAbmaXqIE3JsXIFerLGvCqqNv+H+Z6FxTYtGw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898498; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=3xwrdAYp9/l7EmWmQ4ZGvrLqi2DF2KW9oZVslWjPHMw=; b=aPE7fMlDMKz7kAMCaHB0zhnqo6C1axoSiyEv9UojkJ0/WDRggZZ+6AO3t6g2ScDgF0lHDPEa9HY1OVqBppeq1KlGQsULs8hpHnMvUUnFFX5INwoOK1kgLQ1IfGGzR6oohYkSjrkYg7iwqeEqHKycl0+DWhji79HKoKIQGYoyIpc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898498653710.304387628597; Thu, 19 Sep 2019 06:08:18 -0700 (PDT) Received: from localhost ([::1]:43776 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwAS-0006mO-PA for importer@patchew.org; Thu, 19 Sep 2019 09:08:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41649) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsX-0006je-K6 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvli-0001DI-1D for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:42 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54452) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlh-0001CG-SW; Thu, 19 Sep 2019 08:42:41 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2E8243082135; Thu, 19 Sep 2019 12:42:41 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CAFDC1001281; Thu, 19 Sep 2019 12:42:40 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:00 +0200 Message-Id: <20190919124115.11510-20-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Thu, 19 Sep 2019 12:42:41 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 19/34] s390x/tcg: MVC: Fault-safe handling on destructive overlaps X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand The last remaining bit for MVC is handling destructive overlaps in a fault-safe way. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 6b85f44e2251..abb9d4d70c58 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -432,8 +432,9 @@ static uint32_t do_helper_mvc(CPUS390XState *env, uint3= 2_t l, uint64_t dest, access_memmove(env, &desta, &srca, ra); } else { for (i =3D 0; i < l; i++) { - uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); - cpu_stb_data_ra(env, dest + i, x, ra); + uint8_t byte =3D access_get_byte(env, &srca, i, ra); + + access_set_byte(env, &desta, i, byte, ra); } } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898923; cv=none; d=zoho.com; s=zohoarc; b=h1VWJgBbgihuH2A2ggqBEp7bhwrgP7u+jx1OlUBwgjc+dimbG4RLfzegOEZJcmxQJOgjlASwq4grs+bHLoiNKTku+Yrtrp1VTj04v/yi3F4kzQIvtJjuCRDFTAr51vcy/MTn/ohLsD7HtMvjPzFJcTkSj9pnQSaMef5tdMFMdJs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898923; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=zhQ7qdo1671xzhzFWl1pzosA9J8outPwqDMJfUwy5s8=; b=d0PZSqecmSWAKd6sUHefofy3zB+ncBW6KoxX2+VfUXc+4dVa+2W6tq6+xkGF9+eETVPyOFvK1vZbezKIm+3iH2oqBkNd234z8U2ZZb/lbMKqGpk+DTFZCBxfj0nvQHtq8fXcPexdRBQ6SEpavuHhBvIVJPAd1I6n8w8jfb5sbLs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898923195892.7419311529143; Thu, 19 Sep 2019 06:15:23 -0700 (PDT) Received: from localhost ([::1]:43836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwHI-00073O-FY for importer@patchew.org; Thu, 19 Sep 2019 09:15:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41628) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsW-0006i8-VI for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlm-0001J6-4H for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40694) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvll-0001I6-VP; Thu, 19 Sep 2019 08:42:46 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4DB4C18C8900; Thu, 19 Sep 2019 12:42:45 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9EE665D9CD; Thu, 19 Sep 2019 12:42:42 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:01 +0200 Message-Id: <20190919124115.11510-21-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.70]); Thu, 19 Sep 2019 12:42:45 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 20/34] s390x/tcg: MVCLU: Fault-safe handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand The last remaining bit is padding with two bytes. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index abb9d4d70c58..853b9557cf26 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -919,15 +919,17 @@ static inline uint32_t do_mvcl(CPUS390XState *env, access_memset(env, &desta, pad, ra); *dest =3D wrap_address(env, *dest + len); } else { + desta =3D access_prepare(env, *dest, len, MMU_DATA_STORE, mmu_idx,= ra); + /* The remaining length selects the padding byte. */ for (i =3D 0; i < len; (*destlen)--, i++) { if (*destlen & 1) { - cpu_stb_data_ra(env, *dest, pad, ra); + access_set_byte(env, &desta, i, pad, ra); } else { - cpu_stb_data_ra(env, *dest, pad >> 8, ra); + access_set_byte(env, &desta, i, pad >> 8, ra); } - *dest =3D wrap_address(env, *dest + 1); } + *dest =3D wrap_address(env, *dest + len); } =20 return *destlen ? 3 : cc; --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898314; cv=none; d=zoho.com; s=zohoarc; b=BnTiyAun5VY4n7Owf0m0BNCyMCfM6NndAM1i9jpgWAJ8RnF4Tu5nkb+skEPg22iX/xy2ZY5vjjUREV7eba/Koq6wJ2IoHe+lvtVmtSvl9ZL8l87nN/r+txbZx3ZwUUyCdlBP6cQvGfs5lRtvE2XsMarlpXAJGmzBUD31WO2/YPE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898314; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=fkqkFPfiwnhS6Gmduq5jtWOUNKzvnBlH9vryCwux1l0=; b=YHu3g9K/4o6lRTRME5gU4gm6cn+b70SylAivNKaOBijtOoIRRBxtavkWzRTN71rTZUPVcZuL6TMXeVMf9SlPOWFc1rHW3SgnFtERcexa7ceKcqpuoL1yYDZP7vBp7ST3rvmww36wUApcJG9Z9d73cXTCBaJeGjWQarsN/lahsNQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898314240450.64064034759144; Thu, 19 Sep 2019 06:05:14 -0700 (PDT) Received: from localhost ([::1]:43754 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAw7T-0003D6-Ru for importer@patchew.org; Thu, 19 Sep 2019 09:05:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsW-0006KH-Kt for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlq-0001Ow-9k for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:51 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50768) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlq-0001Nv-4h; Thu, 19 Sep 2019 08:42:50 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 76DC410C0939; Thu, 19 Sep 2019 12:42:49 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BC49A5D6B2; Thu, 19 Sep 2019 12:42:46 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:02 +0200 Message-Id: <20190919124115.11510-22-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.66]); Thu, 19 Sep 2019 12:42:49 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 21/34] s390x/tcg: OC: Fault-safe handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We can process a maximum of 256 bytes, crossing two pages. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 853b9557cf26..0574c31d9a03 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -383,17 +383,26 @@ uint32_t HELPER(xc)(CPUS390XState *env, uint32_t l, u= int64_t dest, static uint32_t do_helper_oc(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t src, uintptr_t ra) { + const int mmu_idx =3D cpu_mmu_index(env, false); + S390Access srca1, srca2, desta; uint32_t i; uint8_t c =3D 0; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); =20 - for (i =3D 0; i <=3D l; i++) { - uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); - x |=3D cpu_ldub_data_ra(env, dest + i, ra); + /* OC always processes one more byte than specified - maximum is 256 */ + l++; + + srca1 =3D access_prepare(env, src, l, MMU_DATA_LOAD, mmu_idx, ra); + srca2 =3D access_prepare(env, dest, l, MMU_DATA_LOAD, mmu_idx, ra); + desta =3D access_prepare(env, dest, l, MMU_DATA_STORE, mmu_idx, ra); + for (i =3D 0; i < l; i++) { + const uint8_t x =3D access_get_byte(env, &srca1, i, ra) | + access_get_byte(env, &srca2, i, ra); + c |=3D x; - cpu_stb_data_ra(env, dest + i, x, ra); + access_set_byte(env, &desta, i, x, ra); } return c !=3D 0; } --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898665; cv=none; d=zoho.com; s=zohoarc; b=RGOGqCYQE/0RK4olQfyqHGwEtz/3VEJING1N/TDDQGP028Ax8DNqHlTr6QxSCM+9sogbJ5Ecm0nBqmKp01d+pkOgcUa+LRu5xN8jbCEoEQnFsbDhXFYk2Zp6mYLTqALhS07wlSKqjlVhAKvc2U2QL5PY5bZVY8t7mUHyB9Meyjc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898665; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=fH4+fcCq9/PhxU0XOZYH6M3qZfl9uHNRG547g5kNCXI=; b=CUvEYH9qs8x+pO1vf2R2SBQQiHu24dukdFJtntmpXBJd+/nwAz03yaTyuBtNF2ysUIG1HqZB2ZlQPP4EVv8LLz+BCdZMoM3xoFEDnrrgwy60WlGAMVZJWN9DxsWwzCUj7MifvL0FAVsU4x5IEB7JuvSzQtBV09Mbsj5rcMxrPP0= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898665220453.2434190991753; Thu, 19 Sep 2019 06:11:05 -0700 (PDT) Received: from localhost ([::1]:43800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwD8-0001NH-Be for importer@patchew.org; Thu, 19 Sep 2019 09:11:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41479) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsV-0006Le-Pc for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvlu-0001Wu-PD for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:42:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53638) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvlu-0001VJ-2I; Thu, 19 Sep 2019 08:42:54 -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 660AF30A6973; Thu, 19 Sep 2019 12:42:53 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E9BBF6013A; Thu, 19 Sep 2019 12:42:50 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:03 +0200 Message-Id: <20190919124115.11510-23-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 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.47]); Thu, 19 Sep 2019 12:42:53 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 22/34] s390x/tcg: XC: Fault-safe handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We can process a maximum of 256 bytes, crossing two pages. While at it, increment the length once. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 0574c31d9a03..a2118a82e3ca 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -349,14 +349,19 @@ static uint32_t do_helper_xc(CPUS390XState *env, uint= 32_t l, uint64_t dest, uint64_t src, uintptr_t ra) { const int mmu_idx =3D cpu_mmu_index(env, false); - S390Access desta; + S390Access srca1, srca2, desta; uint32_t i; uint8_t c =3D 0; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); =20 - desta =3D access_prepare(env, dest, l + 1, MMU_DATA_STORE, mmu_idx, ra= ); + /* XC always processes one more byte than specified - maximum is 256 */ + l++; + + srca1 =3D access_prepare(env, src, l, MMU_DATA_LOAD, mmu_idx, ra); + srca2 =3D access_prepare(env, dest, l, MMU_DATA_LOAD, mmu_idx, ra); + desta =3D access_prepare(env, dest, l, MMU_DATA_STORE, mmu_idx, ra); =20 /* xor with itself is the same as memset(0) */ if (src =3D=3D dest) { @@ -364,11 +369,12 @@ static uint32_t do_helper_xc(CPUS390XState *env, uint= 32_t l, uint64_t dest, return 0; } =20 - for (i =3D 0; i <=3D l; i++) { - uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); - x ^=3D cpu_ldub_data_ra(env, dest + i, ra); + for (i =3D 0; i < l; i++) { + const uint8_t x =3D access_get_byte(env, &srca1, i, ra) ^ + access_get_byte(env, &srca2, i, ra); + c |=3D x; - cpu_stb_data_ra(env, dest + i, x, ra); + access_set_byte(env, &desta, i, x, ra); } return c !=3D 0; } --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898439; cv=none; d=zoho.com; s=zohoarc; b=CHHGiAUZt4PXqYcaR3rQpsj9Ew3KJzQNmRqEAIUS06hWrbn2JWoF5+QDRRQIJ85e18OJNxnANLshS/giohkr9oy47rLtXOpsE9wGf1Jz33b8CEu5aZB0LH9ty3+XPWJuSBNJKiUUkD8BRMrxTbCjRWhWQar29QfHoV2DNleX8Vs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898439; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=maSRT9TaBeu/2fU3OLEbMmjahbkZ2+VPUzO4PRMufYA=; b=lGCymh9ropzf9Ko1osUpIciwoB4b5+KyaVnLSQ8BuJQU5g09GYdpWzOykDqN0+cYgBBymPCacahu+OfHQTK0EtMFEFYd22QoyH8RpravXitq9+W7zJjBdJI54XwTKA0c01bVbrDuv9Uiz7auHAcB19/D2LGtxpq7AAfDKII72Jw= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898439131532.857471458853; Thu, 19 Sep 2019 06:07:19 -0700 (PDT) Received: from localhost ([::1]:43768 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAw9U-0005O9-QE for importer@patchew.org; Thu, 19 Sep 2019 09:07:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41418) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsV-0006Ji-Iy for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvm2-0001ic-Va for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40736) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvm1-0001bO-0s; Thu, 19 Sep 2019 08:43:02 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AE82718C891B; Thu, 19 Sep 2019 12:42:57 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D751C60BF1; Thu, 19 Sep 2019 12:42:54 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:04 +0200 Message-Id: <20190919124115.11510-24-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.70]); Thu, 19 Sep 2019 12:42:57 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 23/34] s390x/tcg: NC: Fault-safe handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We can process a maximum of 256 bytes, crossing two pages. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index a2118a82e3ca..20fc17d44de0 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -323,17 +323,26 @@ static int mmu_idx_from_as(uint8_t as) static uint32_t do_helper_nc(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t src, uintptr_t ra) { + const int mmu_idx =3D cpu_mmu_index(env, false); + S390Access srca1, srca2, desta; uint32_t i; uint8_t c =3D 0; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); =20 - for (i =3D 0; i <=3D l; i++) { - uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); - x &=3D cpu_ldub_data_ra(env, dest + i, ra); + /* NC always processes one more byte than specified - maximum is 256 */ + l++; + + srca1 =3D access_prepare(env, src, l, MMU_DATA_LOAD, mmu_idx, ra); + srca2 =3D access_prepare(env, dest, l, MMU_DATA_LOAD, mmu_idx, ra); + desta =3D access_prepare(env, dest, l, MMU_DATA_STORE, mmu_idx, ra); + for (i =3D 0; i < l; i++) { + const uint8_t x =3D access_get_byte(env, &srca1, i, ra) & + access_get_byte(env, &srca2, i, ra); + c |=3D x; - cpu_stb_data_ra(env, dest + i, x, ra); + access_set_byte(env, &desta, i, x, ra); } return c !=3D 0; } --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898702; cv=none; d=zoho.com; s=zohoarc; b=EZpDpokAbAqGgYdThxf0Ea/0AvRsIA3AqcWv8k6e+wsZQa01i+j5Ra412yppGcIKGtvGr7CuqyDkcZryHmNukcyJY60VDDG5brkDM2vd+XNx0Z4rj3MTbHUNE+BUFuMNbeqy0lyfoHYhZQjCbOpKb8D+Ky52QNhM+lWxlfhNkHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898702; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=AJMpGJQUvzQWq6ehDSFfg9lgl7RMX93kPUcAde7rK4U=; b=B9rmGrPzYrjh64DECN080Nwz3YuHHRgGIV4+UpZ4NBsocuSS8tiviwoBK01Rh6JZ3KEaDzdLQhNevUVfJiTq2jMmlkMGTF/3kaLan/Xv3pKazWgwGvBspilN1oViII0YBhMYbOw9ZUVWH9w9AK0MQAv+Q+QBnqNsrZXMd9/76J4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898702359967.8329438601876; Thu, 19 Sep 2019 06:11:42 -0700 (PDT) Received: from localhost ([::1]:43802 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAwDj-0002M8-EF for importer@patchew.org; Thu, 19 Sep 2019 09:11:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsV-0006KH-Gu for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvm2-0001ij-WB for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40744) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvm2-0001eD-EU; Thu, 19 Sep 2019 08:43:02 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8214718C8929; Thu, 19 Sep 2019 12:42:59 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2F67960BF1; Thu, 19 Sep 2019 12:42:59 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:05 +0200 Message-Id: <20190919124115.11510-25-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.70]); Thu, 19 Sep 2019 12:42:59 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 24/34] s390x/tcg: MVCIN: Fault-safe handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We can process a maximum of 256 bytes, crossing two pages. Calculate the accessed range upfront - src is accessed right-to-left. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 20fc17d44de0..4f46d0be90b3 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -473,12 +473,21 @@ void HELPER(mvc)(CPUS390XState *env, uint32_t l, uint= 64_t dest, uint64_t src) /* move inverse */ void HELPER(mvcin)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t= src) { + const int mmu_idx =3D cpu_mmu_index(env, false); + S390Access srca, desta; uintptr_t ra =3D GETPC(); int i; =20 - for (i =3D 0; i <=3D l; i++) { - uint8_t v =3D cpu_ldub_data_ra(env, src - i, ra); - cpu_stb_data_ra(env, dest + i, v, ra); + /* MVCIN always copies one more byte than specified - maximum is 256 */ + l++; + + src =3D wrap_address(env, src - l + 1); + srca =3D access_prepare(env, src, l, MMU_DATA_LOAD, mmu_idx, ra); + desta =3D access_prepare(env, dest, l, MMU_DATA_STORE, mmu_idx, ra); + for (i =3D 0; i < l; i++) { + const uint8_t x =3D access_get_byte(env, &srca, l - i - 1, ra); + + access_set_byte(env, &desta, i, x, ra); } } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898406; cv=none; d=zoho.com; s=zohoarc; b=BaNFYlaZtHvZt1izSkqqeNFCHhJUiSX8zotOwSJESganDwrtQ6hV2/J7TX6MIbq3YVrOYnUXkfMgHGnW3ooJfhaz8N7ay65mt31iXqmdcGjgBmAtPH1brXxPGoTJ6q2kOhL0Tkna4WCqab6nx3iXWT6uRUriG1wh0dvfMdSXJ8Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898406; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=FCvWegAauvaNodkvaqbwcU+DRMSsN8GpnSLTcscnpf4=; b=n7MbzMsN7wBM5rYHCXYPadOAeBtoC5oip+j905+k7avcYmNRmQ1xFpag+yfQSkR82hJtF/2vgyydaWmhZAP8+fN8QG81fGNMGOLk4PEs4xl99oyPVfwINYHPjL0DNFm4THZGxocP0UXRaah6fOOYxH613jPDJmWxCu1qaL/eAWY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898406719229.93212442094887; Thu, 19 Sep 2019 06:06:46 -0700 (PDT) Received: from localhost ([::1]:43766 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAw8y-0004zy-RY for importer@patchew.org; Thu, 19 Sep 2019 09:06:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsU-0006KH-B9 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvm5-0001mF-92 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46888) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvm5-0001jt-2B; Thu, 19 Sep 2019 08:43:05 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B5B62C04AC69; Thu, 19 Sep 2019 12:43:03 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EEF335D9CC; Thu, 19 Sep 2019 12:43:00 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:06 +0200 Message-Id: <20190919124115.11510-26-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 19 Sep 2019 12:43:03 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 25/34] s390x/tcg: MVN: Fault-safe handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We can process a maximum of 256 bytes, crossing two pages. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 4f46d0be90b3..fbf65ac42bd2 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -494,13 +494,22 @@ void HELPER(mvcin)(CPUS390XState *env, uint32_t l, ui= nt64_t dest, uint64_t src) /* move numerics */ void HELPER(mvn)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t s= rc) { + const int mmu_idx =3D cpu_mmu_index(env, false); + S390Access srca1, srca2, desta; uintptr_t ra =3D GETPC(); int i; =20 - for (i =3D 0; i <=3D l; i++) { - uint8_t v =3D cpu_ldub_data_ra(env, dest + i, ra) & 0xf0; - v |=3D cpu_ldub_data_ra(env, src + i, ra) & 0x0f; - cpu_stb_data_ra(env, dest + i, v, ra); + /* MVN always copies one more byte than specified - maximum is 256 */ + l++; + + srca1 =3D access_prepare(env, src, l, MMU_DATA_LOAD, mmu_idx, ra); + srca2 =3D access_prepare(env, dest, l, MMU_DATA_LOAD, mmu_idx, ra); + desta =3D access_prepare(env, dest, l, MMU_DATA_STORE, mmu_idx, ra); + for (i =3D 0; i < l; i++) { + const uint8_t x =3D (access_get_byte(env, &srca1, i, ra) & 0x0f) | + (access_get_byte(env, &srca2, i, ra) & 0xf0); + + access_set_byte(env, &desta, i, x, ra); } } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898108; cv=none; d=zoho.com; s=zohoarc; b=PqVWul4WvHmLWDpWnxiKRga3ZLZ6V2gkPkZqoc447LcsJk6U/pH0i9y6jeoCf8r5FXDPqC1CRl73jRweBeJ03ysYKycWyso6KWuYCRl4XkNcnOVeQjfhFBcQS4YJMPnO6IRLVoEqvEEh5izILzSSqEtpaD1Ef6OShgZPUigY0r0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898108; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=firF/vMOkErQBLpuvbYY9eDNpxZ8ziwn46pFOBdSjuI=; b=OJXiyepqs2MWsQCqxVZggEbrYG3bM7BVEKcHgFIoInHy0VcZ0jyQmuHQme6AfJXTmP30EVoTTFA6+J8P38RL+h6PmJJUTfGIDEyfiVLbchYREO1cBDprvs3E17C+10kj8KreVLMfQXmJVJIj4A6h5QquJWzWpfJsCXoTH+a63XI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156889810882088.06094033360432; Thu, 19 Sep 2019 06:01:48 -0700 (PDT) Received: from localhost ([::1]:43716 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAw4A-0000Po-GO for importer@patchew.org; Thu, 19 Sep 2019 09:01:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsT-0006KH-7x for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvm9-0001rL-B8 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56234) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvm9-0001q9-5l; Thu, 19 Sep 2019 08:43:09 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 457E1898103; Thu, 19 Sep 2019 12:43:08 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 34B905C1D4; Thu, 19 Sep 2019 12:43:05 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:07 +0200 Message-Id: <20190919124115.11510-27-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.67]); Thu, 19 Sep 2019 12:43:08 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 26/34] s390x/tcg: MVZ: Fault-safe handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We can process a maximum of 256 bytes, crossing two pages. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index fbf65ac42bd2..c836b69fcc12 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -547,13 +547,22 @@ void HELPER(mvo)(CPUS390XState *env, uint32_t l, uint= 64_t dest, uint64_t src) /* move zones */ void HELPER(mvz)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t s= rc) { + const int mmu_idx =3D cpu_mmu_index(env, false); + S390Access srca1, srca2, desta; uintptr_t ra =3D GETPC(); int i; =20 - for (i =3D 0; i <=3D l; i++) { - uint8_t b =3D cpu_ldub_data_ra(env, dest + i, ra) & 0x0f; - b |=3D cpu_ldub_data_ra(env, src + i, ra) & 0xf0; - cpu_stb_data_ra(env, dest + i, b, ra); + /* MVZ always copies one more byte than specified - maximum is 256 */ + l++; + + srca1 =3D access_prepare(env, src, l, MMU_DATA_LOAD, mmu_idx, ra); + srca2 =3D access_prepare(env, dest, l, MMU_DATA_LOAD, mmu_idx, ra); + desta =3D access_prepare(env, dest, l, MMU_DATA_STORE, mmu_idx, ra); + for (i =3D 0; i < l; i++) { + const uint8_t x =3D (access_get_byte(env, &srca1, i, ra) & 0xf0) | + (access_get_byte(env, &srca2, i, ra) & 0x0f); + + access_set_byte(env, &desta, i, x, ra); } } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568898218; cv=none; d=zoho.com; s=zohoarc; b=LzMewqCdFWorB0+ZSodlDECjn3jvoj4MU5/yDN7RKp6M7ck4LWRFviVD5vYSi3XgNZ+f3NGP7icVWzonsvcWtnK5lVtqQ5aMYrwiRnOJB/FyJJrOrjnde0Pvx8Awts0+0XN1su9bvuz283hZy7ijgEgRxdBb7X61pTM12/cVt1I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568898218; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=JHsOLLORCwLmBkkW2SnyLkX/NAQAUGqb4dwptJG6uTU=; b=DipI2a5EnrGKb6ZFgNZv3BgU04k7QNEJhZQDc9Sqin9bH9zgmmlFvAZZpYU2TYgosfJYlBPQgat9YejzhjHaKEapL5KZER7Thu/JgpDepPtcHffh4ANX5yhkYGOzf/+vQArfJWSftGaW7wYnoz2zm9zGZucvhZ7T6+XZbRfmjjY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898218086646.981273629371; Thu, 19 Sep 2019 06:03:38 -0700 (PDT) Received: from localhost ([::1]:43724 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAw5s-0001RP-Nt for importer@patchew.org; Thu, 19 Sep 2019 09:03:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41418) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsR-0006Ji-RE for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvmD-0001wg-NR for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:15 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49960) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvmD-0001vY-IC; Thu, 19 Sep 2019 08:43:13 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9B6C710DCC82; Thu, 19 Sep 2019 12:43:12 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B88DE19C7F; Thu, 19 Sep 2019 12:43:09 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:08 +0200 Message-Id: <20190919124115.11510-28-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.64]); Thu, 19 Sep 2019 12:43:12 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 27/34] s390x/tcg: MVST: Fault-safe handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Access at most single pages and document why. Using the access helpers might over-indicate watchpoints within the same page, I guess we can live with that. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index c836b69fcc12..671e917dc1f8 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -860,23 +860,33 @@ uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0= , uint64_t r1, uint64_t r2) /* string copy */ uint32_t HELPER(mvst)(CPUS390XState *env, uint32_t r1, uint32_t r2) { + const int mmu_idx =3D cpu_mmu_index(env, false); const uint64_t d =3D get_address(env, r1); const uint64_t s =3D get_address(env, r2); const uint8_t c =3D env->regs[0]; + const int len =3D MIN(-(d | TARGET_PAGE_MASK), -(s | TARGET_PAGE_MASK)= ); + S390Access srca, desta; uintptr_t ra =3D GETPC(); - uint32_t len; + int i; =20 if (env->regs[0] & 0xffffff00ull) { s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra); } =20 - /* Lest we fail to service interrupts in a timely manner, limit the - amount of work we're willing to do. For now, let's cap at 8k. */ - for (len =3D 0; len < 0x2000; ++len) { - uint8_t v =3D cpu_ldub_data_ra(env, s + len, ra); - cpu_stb_data_ra(env, d + len, v, ra); + /* + * Our access should not exceed single pages, as we must not report ac= cess + * exceptions exceeding the actually copied range (which we don't know= at + * this point). We might over-indicate watchpoints within the pages + * (if we ever care, we have to limit processing to a single byte). + */ + srca =3D access_prepare(env, s, len, MMU_DATA_LOAD, mmu_idx, ra); + desta =3D access_prepare(env, d, len, MMU_DATA_STORE, mmu_idx, ra); + for (i =3D 0; i < len; i++) { + const uint8_t v =3D access_get_byte(env, &srca, i, ra); + + access_set_byte(env, &desta, i, v, ra); if (v =3D=3D c) { - set_address_zero(env, r1, d + len); + set_address_zero(env, r1, d + i); return 1; } } --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568897879; cv=none; d=zoho.com; s=zohoarc; b=OPZL7CN/mr+ey4VhpTIYelP+TqPg136+1dFjxfyZh8BeJKHk3vfKq51vom0kpaIQfF4cGe4d7gIcccL7bJBKv+9ealctlwM8C8fjBezCu9PCywWAYkf/SFrZgPc84vhk3SrN7oRGpgTYheYOO1HhpJ/D4n0UUknvY6TTfa9ckKc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568897879; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=KPeBsFXokidiK/KuT0W3bQVyVd3x8JhrPk7oDgOE/mk=; b=Uz5666wKHdIOuoFC+LcIB84hMamBEGK9+IpalHpnaf+oCO4/teWftpOgPS15n7MwAxUt7HDjZ44QTWAJUUC4tGjv6IPCxq1q01hlqG5Uo3QpxugSoAtRv1yGBNe4AoxgNGIW0bGMprBPM7yCtpQftExerOdFMMfu2va7q3R7TgM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568897879675437.21621614172454; Thu, 19 Sep 2019 05:57:59 -0700 (PDT) Received: from localhost ([::1]:43682 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAw0L-0005vH-LC for importer@patchew.org; Thu, 19 Sep 2019 08:57:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsR-0006KH-Hd for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvmH-00021f-Vf for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:18 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48360) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvmH-00020p-QO; Thu, 19 Sep 2019 08:43:17 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1F6D2C057F20; Thu, 19 Sep 2019 12:43:17 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1908260BF1; Thu, 19 Sep 2019 12:43:13 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:09 +0200 Message-Id: <20190919124115.11510-29-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Thu, 19 Sep 2019 12:43:17 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 28/34] s390x/tcg: MVO: Fault-safe handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Each operand can have a maximum length of 16. Make sure to prepare all reads/writes before writing. Reviewed-by: Richard Henderson Signed-off-by: David Hildenbrand --- target/s390x/mem_helper.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 671e917dc1f8..504542002033 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -516,31 +516,34 @@ void HELPER(mvn)(CPUS390XState *env, uint32_t l, uint= 64_t dest, uint64_t src) /* move with offset */ void HELPER(mvo)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t s= rc) { + const int mmu_idx =3D cpu_mmu_index(env, false); + /* MVO always processes one more byte than specified - maximum is 16 */ + const int len_dest =3D (l >> 4) + 1; + const int len_src =3D (l & 0xf) + 1; uintptr_t ra =3D GETPC(); - int len_dest =3D l >> 4; - int len_src =3D l & 0xf; uint8_t byte_dest, byte_src; - int i; + S390Access srca, desta; + int i, j; =20 - src +=3D len_src; - dest +=3D len_dest; + srca =3D access_prepare(env, src, len_src, MMU_DATA_LOAD, mmu_idx, ra); + desta =3D access_prepare(env, dest, len_dest, MMU_DATA_STORE, mmu_idx,= ra); =20 /* Handle rightmost byte */ - byte_src =3D cpu_ldub_data_ra(env, src, ra); - byte_dest =3D cpu_ldub_data_ra(env, dest, ra); + byte_dest =3D cpu_ldub_data_ra(env, dest + len_dest - 1, ra); + byte_src =3D access_get_byte(env, &srca, len_src - 1, ra); byte_dest =3D (byte_dest & 0x0f) | (byte_src << 4); - cpu_stb_data_ra(env, dest, byte_dest, ra); + access_set_byte(env, &desta, len_dest - 1, byte_dest, ra); =20 /* Process remaining bytes from right to left */ - for (i =3D 1; i <=3D len_dest; i++) { + for (i =3D len_dest - 2, j =3D len_src - 2; i >=3D 0; i--, j--) { byte_dest =3D byte_src >> 4; - if (len_src - i >=3D 0) { - byte_src =3D cpu_ldub_data_ra(env, src - i, ra); + if (j >=3D 0) { + byte_src =3D access_get_byte(env, &srca, j, ra); } else { byte_src =3D 0; } byte_dest |=3D byte_src << 4; - cpu_stb_data_ra(env, dest - i, byte_dest, ra); + access_set_byte(env, &desta, i, byte_dest, ra); } } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568897820; cv=none; d=zoho.com; s=zohoarc; b=e7WJTxeR2UbPKRG+51qu9UMdSkE5Dpu1+7o1a5XPO0jtlJSxzCZ7CC9oPHfkT/SvhPBaeg1NVhrNsfc+csxBdDIN500s4RXg08SDR8GQSBtDfFUd3uXHsHcrXXlWzemCEbpFUw1FlOaBFmWK4jSM3zS+FvN+gVplAdMY0+8etJs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568897820; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=BQnZLh6AUpwkVemPyhgBNGy5T+5FM8WLUmLjCu7eCmM=; b=cCi+1L2eAAFvB0rUil4SAVxTMV3szmDqvjS/ZSspc+UDRfmfn7QoAF46zvPNQUWl+pBBo+HOQS9Ts8QJ/v0pT6/5iXtnAjCcGDZGoiWcKqoFqK+hz2+RVtvqtERWcVTml6+cUwURAbcG1Uk1UwgfzjWZPCM4iVHtu0p7oYf1lvk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568897820039782.5913582398529; Thu, 19 Sep 2019 05:57:00 -0700 (PDT) Received: from localhost ([::1]:43678 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvzW-00055P-Fx for importer@patchew.org; Thu, 19 Sep 2019 08:56:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsQ-0006KH-5Z for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvmM-00026P-Bg for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46948) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvmM-00025d-6J; Thu, 19 Sep 2019 08:43:22 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 79FC5C051688; Thu, 19 Sep 2019 12:43:21 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9064B5D6B2; Thu, 19 Sep 2019 12:43:18 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:10 +0200 Message-Id: <20190919124115.11510-30-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 19 Sep 2019 12:43:21 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 29/34] tests/tcg: target/s390x: Test MVO X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-s390x@nongnu.org, Richard Henderson , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: David Hildenbrand Let's add the simple test based on the example from the PoP. Reviewed-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Signed-off-by: David Hildenbrand --- tests/tcg/s390x/Makefile.target | 1 + tests/tcg/s390x/mvo.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 tests/tcg/s390x/mvo.c diff --git a/tests/tcg/s390x/Makefile.target b/tests/tcg/s390x/Makefile.tar= get index 151dc075aa78..6a3bfa8b29f0 100644 --- a/tests/tcg/s390x/Makefile.target +++ b/tests/tcg/s390x/Makefile.target @@ -6,3 +6,4 @@ TESTS+=3Dipm TESTS+=3Dexrl-trt TESTS+=3Dexrl-trtr TESTS+=3Dpack +TESTS+=3Dmvo diff --git a/tests/tcg/s390x/mvo.c b/tests/tcg/s390x/mvo.c new file mode 100644 index 000000000000..5546fe2a9767 --- /dev/null +++ b/tests/tcg/s390x/mvo.c @@ -0,0 +1,25 @@ +#include +#include + +int main(void) +{ + uint8_t dest[6] =3D {0xff, 0x77, 0x88, 0x99, 0x0c, 0xff}; + uint8_t src[5] =3D {0xee, 0x12, 0x34, 0x56, 0xee}; + uint8_t expected[6] =3D {0xff, 0x01, 0x23, 0x45, 0x6c, 0xff}; + int i; + + asm volatile ( + " mvo 0(4,%[dest]),0(3,%[src])\n" + : + : [dest] "d" (dest + 1), + [src] "d" (src + 1) + : "memory"); + + for (i =3D 0; i < sizeof(expected); i++) { + if (dest[i] !=3D expected[i]) { + fprintf(stderr, "bad data\n"); + return 1; + } + } + return 0; +} --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568897578; cv=none; d=zoho.com; s=zohoarc; b=XY8+tLr6iIU//55Unk3Z/XrsUwfMxilXk01SqNAd8yNc/fvGwFRXkxYvDlVpr01267tZZsgGqydHJCpHZuwNzjmy7MHLTnMlX/nePkhlBpe01V3EEkEs/jvygKodNnXMeCKxcQ0UBCYy4PFbmbzwNVAprupGpIaP1rWmqUcfZr0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568897578; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=RmrK/tHRKduje7TYQ90a3he+soCBzUVBX3+f9ZYa9aM=; b=LXiHM+0L5+S45OmqjYHxRtRYZFNatGVI9by1FsKdH7SyhqHJ2MmGdNFhobIG8VTK+yS3AckuDr07n6C3h3k1KB08VxdBvvp8Qr/hUw4OSjcAWt5sS0rasbK2EzPXRXIZWFald90DQsIBHp1dNRbHE4+n7fhJ2jVdV5C22bQlDD4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568897578491277.8343158712148; Thu, 19 Sep 2019 05:52:58 -0700 (PDT) Received: from localhost ([::1]:43644 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvvX-0000TS-24 for importer@patchew.org; Thu, 19 Sep 2019 08:52:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41479) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsP-0006Le-7A for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvmO-00028a-54 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56338) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvmN-00027v-W2; Thu, 19 Sep 2019 08:43:24 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 48A4D86668; Thu, 19 Sep 2019 12:43:23 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E9F3460C18; Thu, 19 Sep 2019 12:43:22 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:11 +0200 Message-Id: <20190919124115.11510-31-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 19 Sep 2019 12:43:23 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 30/34] pc-bios/s390-ccw: Do not pre-initialize empty array X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, Cornelia Huck , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Thomas Huth Since commit 339686a358b11a231aa5b6d1424e7a1460d7f277 ("pc-bios/s390-ccw: zero out bss section"), we are clearing now the BSS in start.S, so there is no need to pre-initialize the loadparm_str array with zeroes anymore. Reviewed-by: Cornelia Huck Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c index a69c73349e8f..a21b38628075 100644 --- a/pc-bios/s390-ccw/main.c +++ b/pc-bios/s390-ccw/main.c @@ -17,7 +17,7 @@ =20 char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE))); static SubChannelId blk_schid =3D { .one =3D 1 }; -static char loadparm_str[LOADPARM_LEN + 1] =3D { 0, 0, 0, 0, 0, 0, 0, 0, 0= }; +static char loadparm_str[LOADPARM_LEN + 1]; QemuIplParameters qipl; IplParameterBlock iplb __attribute__((__aligned__(PAGE_SIZE))); static bool have_iplb; --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568897575; cv=none; d=zoho.com; s=zohoarc; b=E8O8w1pXBNZR6q1080uJm3Pt2h8v5a4wPv6CwhFXEKwEp0D/Z3uGahScghtPV8kX3X4hK7IintKQHV6wmVbsCi2WL/QrXba/+5nsa4Rak2UHhbqKK09qqNEO8xmT1U/Jp/A3Oh286j+2nyvyS9xVJTbm5ThN1sPrKTo0XGTMrvI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568897575; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=snMCqRENXOFcAcc6i1IlJuhwPN0V72WvfPVOiOwsbgk=; b=eVQtcgd7AQQDDA0sLN5F+eSTrE06SzZpZDt0t65RMXhKMiXYu8wHZi6zYQ4jJjytpwIun8yOMvFSzjBpCK1wIqKNOcDnVyyjg07aGQoerwVp7SIosMwvM795ZhleWL1btQmPyEu0OJMHj6Rz+xeWeARSPlkwmsy1iEw/ZF/5vEM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568897575891785.8157550404339; Thu, 19 Sep 2019 05:52:55 -0700 (PDT) Received: from localhost ([::1]:43646 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvvZ-0000Vz-Db for importer@patchew.org; Thu, 19 Sep 2019 08:52:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41479) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsO-0006Le-6N for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvmP-0002Az-T4 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49120) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvmP-0002AG-OA; Thu, 19 Sep 2019 08:43:25 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 147F520EB; Thu, 19 Sep 2019 12:43:25 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B8F3A5D6B0; Thu, 19 Sep 2019 12:43:24 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:12 +0200 Message-Id: <20190919124115.11510-32-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.71]); Thu, 19 Sep 2019 12:43:25 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 31/34] pc-bios/s390-ccw/net: fix a possible memory leak in get_uuid() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Yifan Luo , qemu-s390x@nongnu.org, Cornelia Huck , qemu-devel@nongnu.org, Thomas Huth Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Yifan Luo There is a possible memory leak in get_uuid(). Should free allocated mem before return NULL. Signed-off-by: Yifan Luo Message-Id: <02cf01d55267$86cf2850$946d78f0$@cmss.chinamobile.com> Reviewed-by: Thomas Huth Reviewed-by: Cornelia Huck Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/netmain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index f3542cb2cf11..f2dcc01e2725 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -269,6 +269,7 @@ static const char *get_uuid(void) : "d" (r0), "d" (r1), [addr] "a" (buf) : "cc", "memory"); if (cc) { + free(mem); return NULL; } =20 --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568897836; cv=none; d=zoho.com; s=zohoarc; b=KPvw73lrtfSUxgF3K9DzjxOpcUbK7c7JJtAyzR/SuO21ef4mx3ediNMab4Crk6sBWnY3eZ1855ewu6NfAT/6YD/wqcDWQ/C09WLSmlKQkj7eSG3hWkmUbvXMAwAaVlbAG7VggCoTdGnamC882dTtWekTmZ4aJayX/eNldTL01g0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568897836; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=2d+Kt6A4WxpBkl3ljBaZA/hrfExwou+4y065rS9vAM0=; b=F05x/cef/in1BiKMWbrUMqdJw8bWRKxRoTqaLtmN0XyB4+smy4vY1cbEc/wOzacE/Na7TzA1Dl8FaZ1KcpeDbs/AOXeJSjcsaCBKdI2919LjJPv2irNNvn5u6wb9ifuTYkXnmJaeHdXEzMRIBUbQq+DFv0IkZYZDyDcF9TObvko= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568897836759962.371985994861; Thu, 19 Sep 2019 05:57:16 -0700 (PDT) Received: from localhost ([::1]:43680 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvzm-0005KB-K4 for importer@patchew.org; Thu, 19 Sep 2019 08:57:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41468) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsF-0006KH-Lc for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvmS-0002EE-Mi for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:37 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36632) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvmS-0002DA-AE; Thu, 19 Sep 2019 08:43:28 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9FE3718CB8EA; Thu, 19 Sep 2019 12:43:27 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 928145D6B0; Thu, 19 Sep 2019 12:43:26 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:13 +0200 Message-Id: <20190919124115.11510-33-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.63]); Thu, 19 Sep 2019 12:43:27 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 32/34] pc-bios/s390-ccw: Rebuild the s390-netboot.img firmware image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Thomas Huth The new image now contains the "pc-bios/s390-ccw/net: fix a possible memory leak in get_uuid()" patch. Signed-off-by: Thomas Huth --- pc-bios/s390-netboot.img | Bin 67232 -> 67232 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pc-bios/s390-netboot.img b/pc-bios/s390-netboot.img index aa90fbccb142470924ad5f0de5a4c6337916c63a..b984ad0da08f1401978b173d44e= 935d5563dde70 100644 GIT binary patch literal 67232 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�O@0mFjDBp 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 SpP4OG (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568898067775892.9071261804729; Thu, 19 Sep 2019 06:01:07 -0700 (PDT) Received: from localhost ([::1]:43708 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAw3T-0008Oz-Cl for importer@patchew.org; Thu, 19 Sep 2019 09:01:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41479) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsL-0006Le-L9 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvmU-0002GF-F2 for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:31 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49140) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvmU-0002FT-7L; Thu, 19 Sep 2019 08:43:30 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 859CC20EB; Thu, 19 Sep 2019 12:43:29 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3234B5D6B0; Thu, 19 Sep 2019 12:43:29 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:14 +0200 Message-Id: <20190919124115.11510-34-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.71]); Thu, 19 Sep 2019 12:43:29 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 33/34] s390x/kvm: Officially require at least kernel 3.15 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , qemu-s390x@nongnu.org, Cornelia Huck , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Thomas Huth Since QEMU v2.10, the KVM acceleration does not work on older kernels anymore since the code accidentally requires the KVM_CAP_DEVICE_CTRL capability now - it should have been optional instead. Instead of fixing the bug, we asked in the ChangeLog of QEMU 2.11 - 3.0 that people should speak up if they still need support of QEMU running with KVM on older kernels, but seems like nobody really complained. Thus let's make this official now and turn it into a proper error message, telling the users to use at least kernel 3.15 now. Signed-off-by: Thomas Huth Message-Id: <20190913091443.27565-1-thuth@redhat.com> Reviewed-by: David Hildenbrand Signed-off-by: Cornelia Huck --- hw/intc/s390_flic_kvm.c | 6 ------ hw/intc/trace-events | 1 - target/s390x/kvm.c | 7 +++++++ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c index 819aa5e198b7..cedccba8a9c7 100644 --- a/hw/intc/s390_flic_kvm.c +++ b/hw/intc/s390_flic_kvm.c @@ -589,12 +589,6 @@ static void kvm_s390_flic_realize(DeviceState *dev, Er= ror **errp) goto fail; } flic_state->fd =3D -1; - if (!kvm_check_extension(kvm_state, KVM_CAP_DEVICE_CTRL)) { - error_setg_errno(&errp_local, errno, "KVM is missing capability" - " KVM_CAP_DEVICE_CTRL"); - trace_flic_no_device_api(errno); - goto fail; - } =20 cd.type =3D KVM_DEV_TYPE_FLIC; ret =3D kvm_vm_ioctl(kvm_state, KVM_CREATE_DEVICE, &cd); diff --git a/hw/intc/trace-events b/hw/intc/trace-events index 90c9d07c1a66..719f46b51628 100644 --- a/hw/intc/trace-events +++ b/hw/intc/trace-events @@ -75,7 +75,6 @@ xics_ics_simple_eoi(int nr) "ics_eoi: irq 0x%x" =20 # s390_flic_kvm.c flic_create_device(int err) "flic: create device failed %d" -flic_no_device_api(int err) "flic: no Device Contral API support %d" flic_reset_failed(int err) "flic: reset failed %d" =20 # s390_flic.c diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index cea71ac7c3dd..97a662ad0ebf 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -316,6 +316,13 @@ int kvm_arch_init(MachineState *ms, KVMState *s) MachineClass *mc =3D MACHINE_GET_CLASS(ms); =20 mc->default_cpu_type =3D S390_CPU_TYPE_NAME("host"); + + if (!kvm_check_extension(kvm_state, KVM_CAP_DEVICE_CTRL)) { + error_report("KVM is missing capability KVM_CAP_DEVICE_CTRL - " + "please use kernel 3.15 or newer"); + return -1; + } + cap_sync_regs =3D kvm_check_extension(s, KVM_CAP_SYNC_REGS); cap_async_pf =3D kvm_check_extension(s, KVM_CAP_ASYNC_PF); cap_mem_op =3D kvm_check_extension(s, KVM_CAP_S390_MEM_OP); --=20 2.20.1 From nobody Tue May 7 00:41:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568897804; cv=none; d=zoho.com; s=zohoarc; b=FDb5LNftQWVlcduQB8Uo+iXiChIgwP0njUtbtkPqAxlsLC4Q/gE9OX1FgVAZW6AGyhRXiayH/RHbdtHTba5/36hOmbUxv2ZNqQLuaUq9vtqLFsNGYtkGL046eQspHGSCX8khL2+3mlMSP8h4+sshNmBeGr0Wqzaj5We5saiKzfA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568897804; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=IAegViM3NEV03zqRpm+saTjFJNlUzDHDBailOPW+xvI=; b=JpL2QYMzMf5mp5ieobCOfLcilJcjC9vVqgQM7gE0gPSm/ZyHD/6I9VTlG5WhqAay5EFUCbEN+1z8utLoFr3vQEQaoQa108s+Ed29wxbsRR2+mJ4IrdFxXdUYMwHQVdZcJZYYc8eNEd7FOcZSGfZ8FuUMkDAEhWaTyWqe9ro+TT8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1568897804811227.48330407907144; Thu, 19 Sep 2019 05:56:44 -0700 (PDT) Received: from localhost ([::1]:43676 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvzH-0004mg-0X for importer@patchew.org; Thu, 19 Sep 2019 08:56:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41479) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iAvsJ-0006Le-0I for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:49:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iAvmY-0002Lc-PH for qemu-devel@nongnu.org; Thu, 19 Sep 2019 08:43:35 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53340) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iAvmY-0002KX-CJ; Thu, 19 Sep 2019 08:43:34 -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 A82413084037; Thu, 19 Sep 2019 12:43:33 +0000 (UTC) Received: from localhost (dhcp-192-230.str.redhat.com [10.33.192.230]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 013CB6013A; Thu, 19 Sep 2019 12:43:30 +0000 (UTC) From: Cornelia Huck To: Peter Maydell Date: Thu, 19 Sep 2019 14:41:15 +0200 Message-Id: <20190919124115.11510-35-cohuck@redhat.com> In-Reply-To: <20190919124115.11510-1-cohuck@redhat.com> References: <20190919124115.11510-1-cohuck@redhat.com> MIME-Version: 1.0 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.40]); Thu, 19 Sep 2019 12:43:33 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 34/34] s390x/cpumodel: Add the z15 name to the description of gen15a X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Christian Borntraeger , qemu-s390x@nongnu.org, Cornelia Huck , qemu-devel@nongnu.org, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Christian Borntraeger We now know that gen15a is called z15. Signed-off-by: Christian Borntraeger Message-Id: <20190918144214.229936-1-borntraeger@de.ibm.com> Reviewed-by: David Hildenbrand Signed-off-by: Cornelia Huck --- target/s390x/cpu_models.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index 1d16d7d5e794..009afc38b92d 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -84,7 +84,7 @@ static S390CPUDef s390_cpu_defs[] =3D { CPUDEF_INIT(0x3906, 14, 1, 47, 0x08000000U, "z14", "IBM z14 GA1"), CPUDEF_INIT(0x3906, 14, 2, 47, 0x08000000U, "z14.2", "IBM z14 GA2"), CPUDEF_INIT(0x3907, 14, 1, 47, 0x08000000U, "z14ZR1", "IBM z14 Model Z= R1 GA1"), - CPUDEF_INIT(0x8561, 15, 1, 47, 0x08000000U, "gen15a", "IBM 8561 GA1"), + CPUDEF_INIT(0x8561, 15, 1, 47, 0x08000000U, "gen15a", "IBM z15 GA1"), CPUDEF_INIT(0x8562, 15, 1, 47, 0x08000000U, "gen15b", "IBM 8562 GA1"), }; =20 --=20 2.20.1