From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 237CDC3F2D1 for ; Thu, 5 Mar 2020 09:36:02 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E856320870 for ; Thu, 5 Mar 2020 09:36:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E856320870 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.ibm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:45732 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9mvB-0007ER-6r for qemu-devel@archiver.kernel.org; Thu, 05 Mar 2020 04:36:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33186) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9muN-0006Mk-CB for qemu-devel@nongnu.org; Thu, 05 Mar 2020 04:35:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j9muL-0002LX-V2 for qemu-devel@nongnu.org; Thu, 05 Mar 2020 04:35:11 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:28664 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j9muL-0002Ku-PU for qemu-devel@nongnu.org; Thu, 05 Mar 2020 04:35:09 -0500 Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0259Z6Os015588 for ; Thu, 5 Mar 2020 04:35:09 -0500 Received: from e06smtp07.uk.ibm.com (e06smtp07.uk.ibm.com [195.75.94.103]) by mx0b-001b2d01.pphosted.com with ESMTP id 2yhs0v71hm-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 05 Mar 2020 04:35:08 -0500 Received: from localhost by e06smtp07.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 5 Mar 2020 09:34:56 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp07.uk.ibm.com (192.168.101.137) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 5 Mar 2020 09:34:52 -0000 Received: from d06av24.portsmouth.uk.ibm.com (mk.ibm.com [9.149.105.60]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 0259Ypq458392644 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 5 Mar 2020 09:34:51 GMT Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C459342042; Thu, 5 Mar 2020 09:34:51 +0000 (GMT) Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 94F4642047; Thu, 5 Mar 2020 09:34:51 +0000 (GMT) Received: from dyn-9-152-224-184.boeblingen.de.ibm.com (unknown [9.152.224.184]) by d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 5 Mar 2020 09:34:51 +0000 (GMT) Subject: Re: [PATCH v6 10/18] s390x: protvirt: SCLP interpretation To: David Hildenbrand , qemu-devel@nongnu.org References: <20200304114231.23493-1-frankja@linux.ibm.com> <20200304114231.23493-11-frankja@linux.ibm.com> <37047b86-46e5-1180-af0e-cf25a138bf5f@redhat.com> From: Janosch Frank Autocrypt: addr=frankja@linux.ibm.com; prefer-encrypt=mutual; keydata= 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 Date: Thu, 5 Mar 2020 10:34:51 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 MIME-Version: 1.0 In-Reply-To: <37047b86-46e5-1180-af0e-cf25a138bf5f@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="finXWzAin5bXnJtTCjmxfu6rji84P5tSa" X-TM-AS-GCONF: 00 x-cbid: 20030509-0028-0000-0000-000003E116BE X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 20030509-0029-0000-0000-000024A64B05 Message-Id: <2abab5d1-e1a6-23fc-5c43-32c971063715@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572 definitions=2020-03-05_02:2020-03-04, 2020-03-05 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=3 lowpriorityscore=0 impostorscore=0 spamscore=0 clxscore=1015 adultscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2003050060 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 148.163.158.5 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: borntraeger@de.ibm.com, qemu-s390x@nongnu.org, cohuck@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --finXWzAin5bXnJtTCjmxfu6rji84P5tSa Content-Type: multipart/mixed; boundary="6ypnfEFhPzV5joETHdaQ4vRvhSydjiaWF" --6ypnfEFhPzV5joETHdaQ4vRvhSydjiaWF Content-Type: text/plain; charset=windows-1252 Content-Language: en-US Content-Transfer-Encoding: quoted-printable On 3/4/20 6:48 PM, David Hildenbrand wrote: > On 04.03.20 12:42, Janosch Frank wrote: >> SCLP for a protected guest is done over the SIDAD, so we need to use >> the s390_cpu_virt_mem_* functions to access the SIDAD instead of guest= >=20 > nope :) >=20 > s390_cpu_pv_mem_* Ack >=20 >> memory when reading/writing SCBs. >> >> To not confuse the sclp emulation, we set 0x4000 as the SCCB address, >> since the function that injects the sclp external interrupt would >> reject a zero sccb address. >=20 > Please add that as a comment to SCLP_PV_DUMMY_ADDR. >=20 >> >> Signed-off-by: Janosch Frank >> --- >> hw/s390x/sclp.c | 17 +++++++++++++++++ >> include/hw/s390x/sclp.h | 2 ++ >> target/s390x/kvm.c | 5 +++++ >> 3 files changed, 24 insertions(+) >> >> diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c >> index af0bfbc2ec..5136f5fcbe 100644 >> --- a/hw/s390x/sclp.c >> +++ b/hw/s390x/sclp.c >> @@ -193,6 +193,23 @@ static void sclp_execute(SCLPDevice *sclp, SCCB *= sccb, uint32_t code) >> } >> } >> =20 >> +#define SCLP_PV_DUMMY_ADDR 0x4000 >=20 > Should we move that to sclp_c->service_interrupt instead and document i= t > properly? >=20 > Or what about providing a >=20 > sclp_c->service_interrupt_pv(sclp) that handles this internally? The less functions with a pv suffix I have, the happier I am. I'll have a look into the first suggestion. >=20 >> +int sclp_service_call_protected(CPUS390XState *env, uint64_t sccb, >> + uint32_t code) >> +{ >> + SCLPDevice *sclp =3D get_sclp_device(); >> + SCLPDeviceClass *sclp_c =3D SCLP_GET_CLASS(sclp); >> + SCCB work_sccb; >> + hwaddr sccb_len =3D sizeof(SCCB); >> + >> + s390_cpu_pv_mem_read(env_archcpu(env), 0, &work_sccb, sccb_len); >=20 > I assume it's valid to always read the full SCCB length? SIDA and SCCB are currently both 4k, so no problem there. If we use extended SCCB, we would also need to increase the SIDA. >=20 >> + sclp_c->execute(sclp, &work_sccb, code); >> + s390_cpu_pv_mem_write(env_archcpu(env), 0, &work_sccb, >> + be16_to_cpu(work_sccb.h.length)); >> + sclp_c->service_interrupt(sclp, SCLP_PV_DUMMY_ADDR); >> + return 0; >> +} >> + >> int sclp_service_call(CPUS390XState *env, uint64_t sccb, uint32_t cod= e) >> { >> SCLPDevice *sclp =3D get_sclp_device(); >> diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h >> index c54413b78c..c0a3faa37d 100644 >> --- a/include/hw/s390x/sclp.h >> +++ b/include/hw/s390x/sclp.h >> @@ -217,5 +217,7 @@ void s390_sclp_init(void); >> void sclp_service_interrupt(uint32_t sccb); >> void raise_irq_cpu_hotplug(void); >> int sclp_service_call(CPUS390XState *env, uint64_t sccb, uint32_t cod= e); >> +int sclp_service_call_protected(CPUS390XState *env, uint64_t sccb, >> + uint32_t code); >> =20 >> #endif >> diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c >> index 43fc0c088b..a4cbdc5fc6 100644 >> --- a/target/s390x/kvm.c >> +++ b/target/s390x/kvm.c >> @@ -1226,6 +1226,11 @@ static void kvm_sclp_service_call(S390CPU *cpu,= struct kvm_run *run, >> sccb =3D env->regs[ipbh0 & 0xf]; >> code =3D env->regs[(ipbh0 & 0xf0) >> 4]; >> =20 >> + if (run->s390_sieic.icptcode =3D=3D ICPT_PV_INSTR) { >=20 > I still somewhat prefer checking for env->pv instead - similar to patch= #9. Since we also have a notification for SCLP, I'd like to avoid that. And that reminds me that we should add a check for the notification here, so we get notified if KVM changes and let's those through without qemu being prepared for it. --6ypnfEFhPzV5joETHdaQ4vRvhSydjiaWF-- --finXWzAin5bXnJtTCjmxfu6rji84P5tSa Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEwGNS88vfc9+v45Yq41TmuOI4ufgFAl5gx7sACgkQ41TmuOI4 ufgDLhAAzeB0yJ5bxAIFMdxYfSh2MZnLetOyEabg7D6RcxpkpTFessOcvRFNp6Hs s72RaaGvN8KXnQE0JEEjuRMhe7+x5fJf6Ow4K8bitzw/atAhBQTy8qqjcx6u+2qh jmD4hV+3kGzPYtO9EnzzAtiHWl3yMgu8NdhjWWTciRm0anCJOxT3f3q6UmVfg9eO raulcbwDr8e/0PBSuVLKpltznRuy1ABtp65kr7QjOXYsn1WkbugT6dqvbxBgnBBS nooij+hj+GFtjZuLe+w5TYWY2IJvcTR+RqL7SlSLr5b4QXpC4+swdKXtZ2aCADcC 8cVXkbRfTkA4y0jtngpaz+LGqWpBMBPqdTc5H5HV3qXcHdSVV1ubiB3wxWBjjDTW Yk52RLHYm7sYdtzMxBiOFY7N23JThvGU4f5WmcDIgBL53KS3BwFet3ENfMDR2x6E 2CwIi8rfgoINhyql1PTcMF8Bmc9jXcnNd9BwwNUAWpptpMp3I2HQ8YNr0C8RRoDu HJnh7fA6qlxsRYUEVemgQMpv1XWbRRPh+RZ7khXFRRyNcpZGetxtCU8OjzAHZHTZ EnItCIMzRrelJpYMR4CncIKJfvb8Wag8WT896lO1bT5l+xsf+ePQzM9JAUJeg6Rf /qhn2yTuuKBIeEvCvTYqtBNZoGRsVobwJb+/IuLsuWx+3IicnTE= =8kYQ -----END PGP SIGNATURE----- --finXWzAin5bXnJtTCjmxfu6rji84P5tSa--