From patchwork Mon Mar 21 10:18:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Boehr X-Patchwork-Id: 12787059 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2AC3DC433F5 for ; Mon, 21 Mar 2022 10:19:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346255AbiCUKUi (ORCPT ); Mon, 21 Mar 2022 06:20:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241246AbiCUKUg (ORCPT ); Mon, 21 Mar 2022 06:20:36 -0400 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7396D29CB0; Mon, 21 Mar 2022 03:19:11 -0700 (PDT) Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 22L9p2gb006261; Mon, 21 Mar 2022 10:19:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=rWbuFv4lGzl+y/2dTFlezS5g21Ok5kP3Q0CN9QF5nQ0=; b=MOeruy9XX4HW0anhznE2+d1kxLuxKyzSjxAvUSsDPnvEvc2+iGYjAlme4TRFOTSBlRTy JuI02S112K7ibI/b0M2onaNq6jnGVP7L6293m4lS5l1kLGwUAEbkSOVU9anxHk2MM72K pw6+w1RopfoQyDzqR3G9M+CNxGr3UMTB72HZelvvIInzlvJMAoMHj79dPi8MIjmOoi2u rTjxO4E/79itMG/KeO0E2uxaD5x8sKlh22fXc2nquR5k2GMhOTXhLeLINJ4b3pHrTwPX ChiFXu3s4hqIaEZrA+ckUsoo2IspHSNsgpomuEpXTICVufKJtfHyrXTjKTlFtkBKoOvh pg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exkvn4p8m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:10 +0000 Received: from m0098421.ppops.net (m0098421.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 22L9rOdW014978; Mon, 21 Mar 2022 10:19:10 GMT Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exkvn4p85-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:10 +0000 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 22LAE3bh016733; Mon, 21 Mar 2022 10:19:08 GMT Received: from b06avi18626390.portsmouth.uk.ibm.com (b06avi18626390.portsmouth.uk.ibm.com [9.149.26.192]) by ppma03ams.nl.ibm.com with ESMTP id 3ew6t8ujt3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:08 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 22LA7QOo5964172 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 21 Mar 2022 10:07:26 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 696F711C04C; Mon, 21 Mar 2022 10:19:05 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 231F311C050; Mon, 21 Mar 2022 10:19:05 +0000 (GMT) Received: from t46lp57.lnxne.boe (unknown [9.152.108.100]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 21 Mar 2022 10:19:05 +0000 (GMT) From: Nico Boehr To: kvm@vger.kernel.org, linux-s390@vger.kernel.org Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com, david@redhat.com, farman@linux.ibm.com Subject: [kvm-unit-tests PATCH v1 1/9] s390x: smp: add tests for several invalid SIGP orders Date: Mon, 21 Mar 2022 11:18:56 +0100 Message-Id: <20220321101904.387640-2-nrb@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220321101904.387640-1-nrb@linux.ibm.com> References: <20220321101904.387640-1-nrb@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 5z0mSuGdx-FdSZ8wH7nwk-RGKnA1DB0E X-Proofpoint-ORIG-GUID: Jl62OW2pYOhzP4_6yIdyW_xXgC0vUmb8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-21_04,2022-03-21_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 clxscore=1011 bulkscore=0 mlxlogscore=999 phishscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 adultscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203210066 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Add tests with for intercepted SIGP orders with invalid values: - SIGP_STOP with invalid CPU address - SIGP_START with invalid CPU address - SIGP_CPU_RESET with invalid CPU address - SIGP_STOP_AND_STORE_STATUS with invalid CPU address - SIGP_STORE_STATUS_AT_ADDRESS with invalid CPU address - invalid order - invalid order with invalid CPU address Signed-off-by: Nico Boehr Reviewed-by: Claudio Imbrenda --- s390x/smp.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/s390x/smp.c b/s390x/smp.c index 068ac74dd28a..911a26c51b10 100644 --- a/s390x/smp.c +++ b/s390x/smp.c @@ -19,6 +19,47 @@ #include static int testflag = 0; +#define INVALID_CPU_ADDRESS -4711 +#define INVALID_ORDER_CODE 0xFF +struct sigp_invalid_cases { + int order; + char message[100]; +}; +static const struct sigp_invalid_cases cases_invalid_cpu_addr[] = { + { SIGP_STOP, "stop with invalid CPU address" }, + { SIGP_START, "start with invalid CPU address" }, + { SIGP_CPU_RESET, "reset with invalid CPU address" }, + { INVALID_ORDER_CODE, "invalid order code and CPU address" }, + { SIGP_SENSE, "sense with invalid CPU address" }, + { SIGP_STOP_AND_STORE_STATUS, "stop and store status with invalid CPU address" }, +}; +static const struct sigp_invalid_cases cases_valid_cpu_addr[] = { + { INVALID_ORDER_CODE, "invalid order code" }, +}; + +static void test_invalid(void) +{ + const struct sigp_invalid_cases *c; + uint32_t status; + int cc; + int i; + + report_prefix_push("invalid parameters"); + + for (i = 0; i < ARRAY_SIZE(cases_invalid_cpu_addr); i++) { + c = &cases_invalid_cpu_addr[i]; + cc = sigp(INVALID_CPU_ADDRESS, c->order, 0, &status); + report(cc == 3, c->message); + } + + for (i = 0; i < ARRAY_SIZE(cases_valid_cpu_addr); i++) { + c = &cases_valid_cpu_addr[i]; + cc = smp_sigp(1, c->order, 0, &status); + report(cc == 1, c->message); + } + + report_prefix_pop(); +} static void wait_for_flag(void) { @@ -123,10 +164,16 @@ static void test_store_status(void) { struct cpu_status *status = alloc_pages_flags(1, AREA_DMA31); uint32_t r; + int cc; report_prefix_push("store status at address"); memset(status, 0, PAGE_SIZE * 2); + report_prefix_push("invalid CPU address"); + cc = sigp(INVALID_CPU_ADDRESS, SIGP_STORE_STATUS_AT_ADDRESS, (uintptr_t)status, &r); + report(cc == 3, "returned with CC = 3"); + report_prefix_pop(); + report_prefix_push("running"); smp_cpu_restart(1); smp_sigp(1, SIGP_STORE_STATUS_AT_ADDRESS, (uintptr_t)status, &r); @@ -331,6 +378,7 @@ int main(void) smp_cpu_stop(1); test_start(); + test_invalid(); test_restart(); test_stop(); test_stop_store_status(); From patchwork Mon Mar 21 10:18:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Boehr X-Patchwork-Id: 12787060 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2161DC4332F for ; Mon, 21 Mar 2022 10:19:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346266AbiCUKUm (ORCPT ); Mon, 21 Mar 2022 06:20:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34138 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233638AbiCUKUg (ORCPT ); Mon, 21 Mar 2022 06:20:36 -0400 Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F0C882A240; Mon, 21 Mar 2022 03:19:11 -0700 (PDT) Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 22L9MuKD010588; Mon, 21 Mar 2022 10:19:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=3qw3e7BuEn1pPymt4arsvOWmgm2yE8s6QV6FNjb7NoU=; b=Kb+tL3NKe1TuOeCUUy+gynhG5YAIQOtuEOW2v6p8qmB+RMEALmQYqDwVnn/VREEQNoa0 D79fnz1sLcbYpv0JsGxJ84VhroE0AIZEOKdSbHMUNoGtSIKFTO4g8Ult5sQM/CvfPPTW Il5Z39eH3n2f8pX5i6q6SezbhSsKCorle5IHfwFq2u8HPbDKWYDPqMYNuIMBS67GyUoC cbxtK8d7+rIEo2l9T4bjgG2B3ff9l9lxQ8zu89/+NbrndsfPP7R9KPv85ZJDbyTOJF3W t0J1J5KD9KglVemhgOehH3ksePhtOvP2769KYoe8prX0FytDxfd6P4nZE75zYdRwdhP5 dw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com with ESMTP id 3exppbh10d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:11 +0000 Received: from m0098416.ppops.net (m0098416.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 22LAGIfx016049; Mon, 21 Mar 2022 10:19:10 GMT Received: from ppma04ams.nl.ibm.com (63.31.33a9.ip4.static.sl-reverse.com [169.51.49.99]) by mx0b-001b2d01.pphosted.com with ESMTP id 3exppbh104-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:10 +0000 Received: from pps.filterd (ppma04ams.nl.ibm.com [127.0.0.1]) by ppma04ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 22LAEb0N029756; Mon, 21 Mar 2022 10:19:08 GMT Received: from b06avi18626390.portsmouth.uk.ibm.com (b06avi18626390.portsmouth.uk.ibm.com [9.149.26.192]) by ppma04ams.nl.ibm.com with ESMTP id 3ew6t8uju2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:08 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 22LA7RL75964174 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 21 Mar 2022 10:07:27 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C3D9A11C04C; Mon, 21 Mar 2022 10:19:05 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 74C9811C052; Mon, 21 Mar 2022 10:19:05 +0000 (GMT) Received: from t46lp57.lnxne.boe (unknown [9.152.108.100]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 21 Mar 2022 10:19:05 +0000 (GMT) From: Nico Boehr To: kvm@vger.kernel.org, linux-s390@vger.kernel.org Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com, david@redhat.com, farman@linux.ibm.com Subject: [kvm-unit-tests PATCH v1 2/9] s390x: smp: stop already stopped CPU Date: Mon, 21 Mar 2022 11:18:57 +0100 Message-Id: <20220321101904.387640-3-nrb@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220321101904.387640-1-nrb@linux.ibm.com> References: <20220321101904.387640-1-nrb@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: ibFRI82f-WaC8xZVUlqgQau0AzA0NeFC X-Proofpoint-GUID: GDyDvV5o9ONzXqAG9gyHjlx-WpGnks0y X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-21_04,2022-03-21_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 priorityscore=1501 mlxlogscore=999 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203210066 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org As per the PoP, the SIGP STOP order is only effective when the CPU is in the operating state. Hence, we should have a test which tries to stop an already stopped CPU. Even though the SIGP order might be processed asynchronously, we assert the CPU stays stopped. Signed-off-by: Nico Boehr Reviewed-by: Claudio Imbrenda Reviewed-by: Janosch Frank --- s390x/smp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/s390x/smp.c b/s390x/smp.c index 911a26c51b10..e5a16eb5a46a 100644 --- a/s390x/smp.c +++ b/s390x/smp.c @@ -129,6 +129,11 @@ static void test_stop(void) */ while (!smp_cpu_stopped(1)) {} report_pass("stop"); + + report_prefix_push("stop stopped CPU"); + report(!smp_cpu_stop(1), "STOP succeeds"); + report(smp_cpu_stopped(1), "CPU is stopped"); + report_prefix_pop(); } static void test_stop_store_status(void) From patchwork Mon Mar 21 10:18:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Boehr X-Patchwork-Id: 12787062 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CB2C1C4332F for ; Mon, 21 Mar 2022 10:19:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346271AbiCUKUp (ORCPT ); Mon, 21 Mar 2022 06:20:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346253AbiCUKUh (ORCPT ); Mon, 21 Mar 2022 06:20:37 -0400 Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB9D52AE1F; Mon, 21 Mar 2022 03:19:12 -0700 (PDT) Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 22L9qcta026557; Mon, 21 Mar 2022 10:19:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=+UxZVigsFqkvCffLxp5O+cgTvGmXU+WkFPd8+oWtZf8=; b=c4ZNEmmrHlAv1Va7/ohEVzOkHZbKqkwGtrld+Tffr8HYVyckPbibpAKq7Ee4Dx4rzoIe OD7UeTx5YFOUY6GgLtnBlxFFn36Q3asDE2yBejDm9Onh3Rf09vn6nYkt5U9SfLL2eWRS jdNHgsJFZ7g7haylJIiRwcmWZuNH7mo4EWppjFumPWO+DixRM6eWReT/Eo57ps0ymJ9g bL59fnR8g1DLBtviiQJcKVuN5K7R77v7OWAwg6pHXnHYGC67/fzyPlNA8Jt44n6DJwoa J7TZN3E220GeJF8a5+9B275iof/0BZ2LVoeHWJuvJNFuw/jNpb/3PZ+lRNWkaYQWeFpA qQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com with ESMTP id 3exq48ggkf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:11 +0000 Received: from m0098420.ppops.net (m0098420.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 22L9xWMj020034; Mon, 21 Mar 2022 10:19:11 GMT Received: from ppma04fra.de.ibm.com (6a.4a.5195.ip4.static.sl-reverse.com [149.81.74.106]) by mx0b-001b2d01.pphosted.com with ESMTP id 3exq48ggk3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:11 +0000 Received: from pps.filterd (ppma04fra.de.ibm.com [127.0.0.1]) by ppma04fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 22LADkxU013522; Mon, 21 Mar 2022 10:19:09 GMT Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by ppma04fra.de.ibm.com with ESMTP id 3ew6t8k40j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:09 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 22LAJ67G23527750 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 21 Mar 2022 10:19:06 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 221CD11C04A; Mon, 21 Mar 2022 10:19:06 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CF7C011C050; Mon, 21 Mar 2022 10:19:05 +0000 (GMT) Received: from t46lp57.lnxne.boe (unknown [9.152.108.100]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 21 Mar 2022 10:19:05 +0000 (GMT) From: Nico Boehr To: kvm@vger.kernel.org, linux-s390@vger.kernel.org Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com, david@redhat.com, farman@linux.ibm.com Subject: [kvm-unit-tests PATCH v1 3/9] s390x: gs: move to new header file Date: Mon, 21 Mar 2022 11:18:58 +0100 Message-Id: <20220321101904.387640-4-nrb@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220321101904.387640-1-nrb@linux.ibm.com> References: <20220321101904.387640-1-nrb@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: R7WxHfv2ZSXLgOKHUKHR_9JxSHvkHZww X-Proofpoint-GUID: 4vseju_kIAY2XTztoEhmupbiG2XZJPvF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-21_04,2022-03-21_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 priorityscore=1501 malwarescore=0 mlxscore=0 mlxlogscore=810 clxscore=1015 lowpriorityscore=0 suspectscore=0 bulkscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203210066 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Move the guarded-storage related structs and instructions to a new header file because we will also need them for the SIGP store additional status tests in smp.c. Signed-off-by: Nico Boehr Reviewed-by: Claudio Imbrenda --- lib/s390x/gs.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ s390x/gs.c | 65 +--------------------------------------- 2 files changed, 81 insertions(+), 64 deletions(-) create mode 100644 lib/s390x/gs.h diff --git a/lib/s390x/gs.h b/lib/s390x/gs.h new file mode 100644 index 000000000000..e28fa4e1b893 --- /dev/null +++ b/lib/s390x/gs.h @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Guarded storage related definitions + * + * Copyright 2018 IBM Corp. + * + * Authors: + * Martin Schwidefsky + * Janosch Frank + */ +#include + +#ifndef _S390X_GS_H_ +#define _S390X_GS_H_ + +struct gs_cb { + uint64_t reserved; + uint64_t gsd; + uint64_t gssm; + uint64_t gs_epl_a; +}; + +struct gs_epl { + uint8_t pad1; + union { + uint8_t gs_eam; + struct { + uint8_t : 6; + uint8_t e : 1; + uint8_t b : 1; + }; + }; + union { + uint8_t gs_eci; + struct { + uint8_t tx : 1; + uint8_t cx : 1; + uint8_t : 5; + uint8_t in : 1; + }; + }; + union { + uint8_t gs_eai; + struct { + uint8_t : 1; + uint8_t t : 1; + uint8_t as : 2; + uint8_t ar : 4; + }; + }; + uint32_t pad2; + uint64_t gs_eha; + uint64_t gs_eia; + uint64_t gs_eoa; + uint64_t gs_eir; + uint64_t gs_era; +}; + +static inline void load_gs_cb(struct gs_cb *gs_cb) +{ + asm volatile(".insn rxy,0xe3000000004d,0,%0" : : "Q" (*gs_cb)); +} + +static inline void store_gs_cb(struct gs_cb *gs_cb) +{ + asm volatile(".insn rxy,0xe30000000049,0,%0" : : "Q" (*gs_cb)); +} + +static inline unsigned long load_guarded(unsigned long *p) +{ + unsigned long v; + + asm(".insn rxy,0xe3000000004c, %0,%1" + : "=d" (v) + : "m" (*p) + : "r14", "memory"); + return v; +} + +#endif diff --git a/s390x/gs.c b/s390x/gs.c index 7567bb78fecb..248f387abf1b 100644 --- a/s390x/gs.c +++ b/s390x/gs.c @@ -13,49 +13,7 @@ #include #include #include - -struct gs_cb { - uint64_t reserved; - uint64_t gsd; - uint64_t gssm; - uint64_t gs_epl_a; -}; - -struct gs_epl { - uint8_t pad1; - union { - uint8_t gs_eam; - struct { - uint8_t : 6; - uint8_t e : 1; - uint8_t b : 1; - }; - }; - union { - uint8_t gs_eci; - struct { - uint8_t tx : 1; - uint8_t cx : 1; - uint8_t : 5; - uint8_t in : 1; - }; - }; - union { - uint8_t gs_eai; - struct { - uint8_t : 1; - uint8_t t : 1; - uint8_t as : 2; - uint8_t ar : 4; - }; - }; - uint32_t pad2; - uint64_t gs_eha; - uint64_t gs_eia; - uint64_t gs_eoa; - uint64_t gs_eir; - uint64_t gs_era; -}; +#include static volatile int guarded = 0; static struct gs_cb gs_cb; @@ -64,27 +22,6 @@ static unsigned long gs_area = 0x2000000; void gs_handler(struct gs_cb *this_cb); -static inline void load_gs_cb(struct gs_cb *gs_cb) -{ - asm volatile(".insn rxy,0xe3000000004d,0,%0" : : "Q" (*gs_cb)); -} - -static inline void store_gs_cb(struct gs_cb *gs_cb) -{ - asm volatile(".insn rxy,0xe30000000049,0,%0" : : "Q" (*gs_cb)); -} - -static inline unsigned long load_guarded(unsigned long *p) -{ - unsigned long v; - - asm(".insn rxy,0xe3000000004c, %0,%1" - : "=d" (v) - : "m" (*p) - : "r14", "memory"); - return v; -} - /* guarded-storage event handler and finally it calls gs_handler */ extern void gs_handler_asm(void); asm(".globl gs_handler_asm\n" From patchwork Mon Mar 21 10:18:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Boehr X-Patchwork-Id: 12787063 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AB496C433FE for ; Mon, 21 Mar 2022 10:19:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346278AbiCUKUr (ORCPT ); Mon, 21 Mar 2022 06:20:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346258AbiCUKUi (ORCPT ); Mon, 21 Mar 2022 06:20:38 -0400 Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 314432B1B0; Mon, 21 Mar 2022 03:19:13 -0700 (PDT) Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 22L9flfv002475; Mon, 21 Mar 2022 10:19:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=KOW4B+B+gvXGH4dB/xR21fTFmttn5uOgaEpBLMciALg=; b=L+x9PMcmXFfcrplPySmdlMu/fkItW9QwJf2NvFi+10XnnotKCbIgeVFD7qkiTUysawns qc4POAFrJ8D4a/iT+3USLJlo820uIk8qNCKB8mydrjiDyX0SewPF5lZjqcR/CMulXi+j oMmrosGFQmxdGO/CroCr9Gsrt79jhs4X5W8tzKWMqUI46VqWXBjBYhPMTwZTR7hQiD9l sANcs2sUp2NukYJXHPPxlPH9Pz7yUFtR8o6QMS3YE/vN1JtJmE7L8QDldKRpe5zZmpp3 sVU5aS15WGaB5WylhRIx6GsnReddTML0AakjUIiwA2TutjuTPyzUWgQXnepnjtVFpQO3 rQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com with ESMTP id 3expy08pd9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:12 +0000 Received: from m0098419.ppops.net (m0098419.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 22LAFi1X029837; Mon, 21 Mar 2022 10:19:11 GMT Received: from ppma02fra.de.ibm.com (47.49.7a9f.ip4.static.sl-reverse.com [159.122.73.71]) by mx0b-001b2d01.pphosted.com with ESMTP id 3expy08pcs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:11 +0000 Received: from pps.filterd (ppma02fra.de.ibm.com [127.0.0.1]) by ppma02fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 22LACUII012471; Mon, 21 Mar 2022 10:19:09 GMT Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by ppma02fra.de.ibm.com with ESMTP id 3ew6t8k3b0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:09 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 22LAJ6ua23003480 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 21 Mar 2022 10:19:06 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 77CD711C04A; Mon, 21 Mar 2022 10:19:06 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2DCD911C054; Mon, 21 Mar 2022 10:19:06 +0000 (GMT) Received: from t46lp57.lnxne.boe (unknown [9.152.108.100]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 21 Mar 2022 10:19:06 +0000 (GMT) From: Nico Boehr To: kvm@vger.kernel.org, linux-s390@vger.kernel.org Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com, david@redhat.com, farman@linux.ibm.com Subject: [kvm-unit-tests PATCH v1 4/9] s390x: smp: add test for SIGP_STORE_ADTL_STATUS order Date: Mon, 21 Mar 2022 11:18:59 +0100 Message-Id: <20220321101904.387640-5-nrb@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220321101904.387640-1-nrb@linux.ibm.com> References: <20220321101904.387640-1-nrb@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: ut_OJbF31xAn6scFmtDGkjMcz6wEa4PM X-Proofpoint-GUID: x7dC2Lwwd15hEe43iRLkPpmXnvx582p- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-21_04,2022-03-21_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 impostorscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 suspectscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203210066 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Add a test for SIGP_STORE_ADDITIONAL_STATUS order. There are several cases to cover: - when neither vector nor guarded-storage facility is available, check the order is rejected. - when one of the facilities is there, test the order is rejected and adtl_status is not touched when the target CPU is running or when an invalid CPU address is specified. Also check the order is rejected in case of invalid alignment. - when the vector facility is there, write some data to the CPU's vector registers and check we get the right contents. - when the guarded-storage facility is there, populate the CPU's guarded-storage registers with some data and again check we get the right contents. To make sure we cover all these cases, adjust unittests.cfg to run the smp tests with both guarded-storage and vector facility off and on. Signed-off-by: Nico Boehr --- s390x/smp.c | 259 ++++++++++++++++++++++++++++++++++++++++++++ s390x/unittests.cfg | 6 + 2 files changed, 265 insertions(+) diff --git a/s390x/smp.c b/s390x/smp.c index e5a16eb5a46a..5d3265f6be64 100644 --- a/s390x/smp.c +++ b/s390x/smp.c @@ -16,6 +16,7 @@ #include #include +#include #include static int testflag = 0; @@ -37,6 +38,19 @@ static const struct sigp_invalid_cases cases_valid_cpu_addr[] = { { INVALID_ORDER_CODE, "invalid order code" }, }; +/* + * We keep two structs, one for comparing when we want to assert it's not + * touched. + */ +static uint8_t adtl_status[2][4096] __attribute__((aligned(4096))); + +#define NUM_VEC_REGISTERS 32 +#define VEC_REGISTER_SIZE 16 +static uint8_t expected_vec_contents[NUM_VEC_REGISTERS][VEC_REGISTER_SIZE]; + +static struct gs_cb gs_cb; +static struct gs_epl gs_epl; + static void test_invalid(void) { const struct sigp_invalid_cases *c; @@ -200,6 +214,247 @@ static void test_store_status(void) report_prefix_pop(); } +static int have_adtl_status(void) +{ + return test_facility(133) || test_facility(129); +} + +static void test_store_adtl_status(void) +{ + uint32_t status = -1; + int cc; + + report_prefix_push("store additional status"); + + if (!have_adtl_status()) { + report_skip("no guarded-storage or vector facility installed"); + goto out; + } + + memset(adtl_status, 0xff, sizeof(adtl_status)); + + report_prefix_push("running"); + smp_cpu_restart(1); + + cc = smp_sigp(1, SIGP_STORE_ADDITIONAL_STATUS, + (unsigned long)adtl_status, &status); + + report(cc == 1, "CC = 1"); + report(status == SIGP_STATUS_INCORRECT_STATE, "status = INCORRECT_STATE"); + report(!memcmp(adtl_status[0], adtl_status[1], sizeof(adtl_status[0])), + "additional status not touched"); + + report_prefix_pop(); + + report_prefix_push("invalid CPU address"); + + cc = sigp(INVALID_CPU_ADDRESS, SIGP_STORE_ADDITIONAL_STATUS, + (unsigned long)adtl_status, &status); + report(cc == 3, "CC = 3"); + report(!memcmp(adtl_status[0], adtl_status[1], sizeof(adtl_status[0])), + "additional status not touched"); + + report_prefix_pop(); + + report_prefix_push("unaligned"); + smp_cpu_stop(1); + + cc = smp_sigp(1, SIGP_STORE_ADDITIONAL_STATUS, + (unsigned long)adtl_status + 256, &status); + report(cc == 1, "CC = 1"); + report(status == SIGP_STATUS_INVALID_PARAMETER, "status = INVALID_PARAMETER"); + + report_prefix_pop(); + +out: + report_prefix_pop(); +} + +static void test_store_adtl_status_unavail(void) +{ + uint32_t status = 0; + int cc; + + report_prefix_push("store additional status unvailable"); + + if (have_adtl_status()) { + report_skip("guarded-storage or vector facility installed"); + goto out; + } + + report_prefix_push("not accepted"); + smp_cpu_stop(1); + + cc = smp_sigp(1, SIGP_STORE_ADDITIONAL_STATUS, + (unsigned long)adtl_status, &status); + + report(cc == 1, "CC = 1"); + report(status == SIGP_STATUS_INVALID_ORDER, + "status = INVALID_ORDER"); + + report_prefix_pop(); + +out: + report_prefix_pop(); +} + +static void restart_write_vector(void) +{ + uint8_t *vec_reg; + uint8_t *vec_reg_16_31 = &expected_vec_contents[16][0]; + int i; + + for (i = 0; i < NUM_VEC_REGISTERS; i++) { + vec_reg = &expected_vec_contents[i][0]; + memset(vec_reg, i, VEC_REGISTER_SIZE); + } + + ctl_set_bit(0, CTL0_VECTOR); + + asm volatile ( + " .machine z13\n" + " vlm 0,15, %[vec_reg_0_15]\n" + " vlm 16,31, %[vec_reg_16_31]\n" + : + : [vec_reg_0_15] "Q"(expected_vec_contents), + [vec_reg_16_31] "Q"(*vec_reg_16_31) + : "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "v9", + "v10", "v11", "v12", "v13", "v14", "v15", "v16", "v17", "v18", + "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", "v27", + "v28", "v29", "v30", "v31", "memory" + ); + + ctl_clear_bit(0, CTL0_VECTOR); + + set_flag(1); + + /* + * function epilogue will restore floating point registers and hence + * destroy vector register contents + */ + while (1) + ; +} + +static void cpu_write_magic_to_vector_regs(uint16_t cpu_idx) +{ + struct psw new_psw; + + smp_cpu_stop(cpu_idx); + + new_psw.mask = extract_psw_mask(); + new_psw.addr = (unsigned long)restart_write_vector; + + set_flag(0); + + smp_cpu_start(cpu_idx, new_psw); + + wait_for_flag(); +} + +static void test_store_adtl_status_vector(void) +{ + uint32_t status = -1; + struct psw psw; + int cc; + + report_prefix_push("store additional status vector"); + + if (!test_facility(129)) { + report_skip("vector facility not installed"); + goto out; + } + + cpu_write_magic_to_vector_regs(1); + smp_cpu_stop(1); + + memset(adtl_status, 0xff, sizeof(adtl_status)); + + cc = smp_sigp(1, SIGP_STORE_ADDITIONAL_STATUS, + (unsigned long)adtl_status, &status); + report(!cc, "CC = 0"); + + report(!memcmp(adtl_status, expected_vec_contents, sizeof(expected_vec_contents)), + "additional status contents match"); + + /* + * To avoid the floating point/vector registers being cleaned up, we + * stopped CPU1 right in the middle of a function. Hence the cleanup of + * the function didn't run yet and the stackpointer is messed up. + * Destroy and re-initalize the CPU to fix that. + */ + smp_cpu_destroy(1); + psw.mask = extract_psw_mask(); + psw.addr = (unsigned long)test_func; + smp_cpu_setup(1, psw); + +out: + report_prefix_pop(); +} + +static void restart_write_gs_regs(void) +{ + const unsigned long gs_area = 0x2000000; + const unsigned long gsc = 25; /* align = 32 M, section size = 512K */ + + ctl_set_bit(2, CTL2_GUARDED_STORAGE); + + gs_cb.gsd = gs_area | gsc; + gs_cb.gssm = 0xfeedc0ffe; + gs_cb.gs_epl_a = (uint64_t) &gs_epl; + + load_gs_cb(&gs_cb); + + set_flag(1); + + ctl_clear_bit(2, CTL2_GUARDED_STORAGE); +} + +static void cpu_write_to_gs_regs(uint16_t cpu_idx) +{ + struct psw new_psw; + + smp_cpu_stop(cpu_idx); + + new_psw.mask = extract_psw_mask(); + new_psw.addr = (unsigned long)restart_write_gs_regs; + + set_flag(0); + + smp_cpu_start(cpu_idx, new_psw); + + wait_for_flag(); +} + +static void test_store_adtl_status_gs(void) +{ + const unsigned long adtl_status_lc_11 = 11; + uint32_t status = 0; + int cc; + + report_prefix_push("store additional status guarded-storage"); + + if (!test_facility(133)) { + report_skip("guarded-storage facility not installed"); + goto out; + } + + cpu_write_to_gs_regs(1); + smp_cpu_stop(1); + + memset(adtl_status, 0xff, sizeof(adtl_status)); + + cc = smp_sigp(1, SIGP_STORE_ADDITIONAL_STATUS, + (unsigned long)adtl_status | adtl_status_lc_11, &status); + report(!cc, "CC = 0"); + + report(!memcmp(&adtl_status[0][1024], &gs_cb, sizeof(gs_cb)), + "additional status contents match"); + +out: + report_prefix_pop(); +} + static void ecall(void) { unsigned long mask; @@ -388,6 +643,10 @@ int main(void) test_stop(); test_stop_store_status(); test_store_status(); + test_store_adtl_status_unavail(); + test_store_adtl_status_vector(); + test_store_adtl_status_gs(); + test_store_adtl_status(); test_ecall(); test_emcall(); test_sense_running(); diff --git a/s390x/unittests.cfg b/s390x/unittests.cfg index 1600e714c8b9..2d0adc503917 100644 --- a/s390x/unittests.cfg +++ b/s390x/unittests.cfg @@ -77,6 +77,12 @@ extra_params=-name kvm-unit-test --uuid 0fb84a86-727c-11ea-bc55-0242ac130003 -sm [smp] file = smp.elf smp = 2 +extra_params = -cpu host,gs=on,vx=on + +[smp-no-vec-no-gs] +file = smp.elf +smp = 2 +extra_params = -cpu host,gs=off,vx=off [sclp-1g] file = sclp.elf From patchwork Mon Mar 21 10:19:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Boehr X-Patchwork-Id: 12787064 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1FF8AC433EF for ; Mon, 21 Mar 2022 10:19:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346281AbiCUKUs (ORCPT ); Mon, 21 Mar 2022 06:20:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346259AbiCUKUi (ORCPT ); Mon, 21 Mar 2022 06:20:38 -0400 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5EE142A240; Mon, 21 Mar 2022 03:19:13 -0700 (PDT) Received: from pps.filterd (m0187473.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 22L9LhVL016181; Mon, 21 Mar 2022 10:19:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=1y+iVhxfboa/6GiahI0C6GZ/jZeoElApDbL4Z8vlqaI=; b=lyp6T2jnrqZnGlwCHJ7pNAhVtJvScD6oNq1+J/Y2WmdVyNUBC8j/gPlXJiicQ1Ah9w4P huPUEeO1KUDGQENoX+PcBppWDGmR6+DK5asbeUF5EQ4bGZF5Dr75sJ/krOlCsZz8+gUX FXNKIZVLpEqvLK38WGGGvu0OVJFUrciXNi8gQVL9OH+wtmCiOTGnEwciyibTLY5y4DrA TTT8i1SIabuPgv8Bg8dJMfEYJsBF4pxx4oHww9Mbm8K4znecy3c6Gw3W99+fbKLtUE6/ rBSfhCSMZdJQZKT32K+AM3we1+EEhesqdYaWLwj6tIVMMJMrOw6fu4tdNHtnt3DQSjtm iA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exkk3w1wc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:12 +0000 Received: from m0187473.ppops.net (m0187473.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 22LAIWue027914; Mon, 21 Mar 2022 10:19:12 GMT Received: from ppma04ams.nl.ibm.com (63.31.33a9.ip4.static.sl-reverse.com [169.51.49.99]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exkk3w1vr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:12 +0000 Received: from pps.filterd (ppma04ams.nl.ibm.com [127.0.0.1]) by ppma04ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 22LAEb0O029756; Mon, 21 Mar 2022 10:19:10 GMT Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by ppma04ams.nl.ibm.com with ESMTP id 3ew6t8uju4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:10 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 22LAJ66d15466948 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 21 Mar 2022 10:19:06 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C8DBA11C04A; Mon, 21 Mar 2022 10:19:06 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 83B6F11C04C; Mon, 21 Mar 2022 10:19:06 +0000 (GMT) Received: from t46lp57.lnxne.boe (unknown [9.152.108.100]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 21 Mar 2022 10:19:06 +0000 (GMT) From: Nico Boehr To: kvm@vger.kernel.org, linux-s390@vger.kernel.org Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com, david@redhat.com, farman@linux.ibm.com Subject: [kvm-unit-tests PATCH v1 5/9] s390x: smp: add tests for SET_PREFIX Date: Mon, 21 Mar 2022 11:19:00 +0100 Message-Id: <20220321101904.387640-6-nrb@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220321101904.387640-1-nrb@linux.ibm.com> References: <20220321101904.387640-1-nrb@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: luZzkLrqSev72xYLRGvX5kbqNicmYky0 X-Proofpoint-ORIG-GUID: HNhAEBmNnwHCxvbjyZRwpIQZIexp6tmt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-21_04,2022-03-21_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 mlxscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 bulkscore=0 adultscore=0 clxscore=1015 spamscore=0 suspectscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203210066 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org We cover the following cases: - running CPU - illegal CPU id The order should be rejected in both cases. Signed-off-by: Nico Boehr Reviewed-by: Claudio Imbrenda --- s390x/smp.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/s390x/smp.c b/s390x/smp.c index 5d3265f6be64..f22520b4f4fc 100644 --- a/s390x/smp.c +++ b/s390x/smp.c @@ -51,6 +51,8 @@ static uint8_t expected_vec_contents[NUM_VEC_REGISTERS][VEC_REGISTER_SIZE]; static struct gs_cb gs_cb; static struct gs_epl gs_epl; +static uint32_t cpu1_prefix; + static void test_invalid(void) { const struct sigp_invalid_cases *c; @@ -455,6 +457,76 @@ out: report_prefix_pop(); } +static void loop(void) +{ + while (1) + ; +} + +static void stpx_and_set_flag(void) +{ + asm volatile ( + " stpx %[prefix]\n" + : [prefix] "=Q" (cpu1_prefix) + : + : + ); + + set_flag(1); +} + +static void test_set_prefix(void) +{ + struct lowcore *new_lc = alloc_pages_flags(1, AREA_DMA31); + struct cpu *cpu1 = smp_cpu_from_idx(1); + uint32_t status = 0; + struct psw new_psw; + int cc; + + report_prefix_push("set prefix"); + + assert(new_lc); + + memcpy(new_lc, cpu1->lowcore, sizeof(struct lowcore)); + new_lc->restart_new_psw.addr = (unsigned long)loop; + + report_prefix_push("running"); + set_flag(0); + new_psw.addr = (unsigned long)stpx_and_set_flag; + new_psw.mask = extract_psw_mask(); + smp_cpu_start(1, new_psw); + wait_for_flag(); + cpu1_prefix = 0xFFFFFFFF; + + cc = smp_sigp(1, SIGP_SET_PREFIX, (unsigned long)new_lc, &status); + report(cc == 1, "CC = 1"); + report(status == SIGP_STATUS_INCORRECT_STATE, "status = INCORRECT_STATE"); + + /* + * If the prefix of the other CPU was changed it will enter an endless + * loop. Otherwise, it should eventually set the flag. + */ + smp_cpu_stop(1); + set_flag(0); + smp_cpu_restart(1); + wait_for_flag(); + report(cpu1_prefix == (uint64_t)cpu1->lowcore, "prefix unchanged"); + + report_prefix_pop(); + + report_prefix_push("invalid CPU address"); + + cc = sigp(INVALID_CPU_ADDRESS, SIGP_SET_PREFIX, (unsigned long)new_lc, &status); + report(cc == 3, "CC = 3"); + + report_prefix_pop(); + + free_pages(new_lc); + + report_prefix_pop(); + +} + static void ecall(void) { unsigned long mask; @@ -647,6 +719,7 @@ int main(void) test_store_adtl_status_vector(); test_store_adtl_status_gs(); test_store_adtl_status(); + test_set_prefix(); test_ecall(); test_emcall(); test_sense_running(); From patchwork Mon Mar 21 10:19:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Boehr X-Patchwork-Id: 12787065 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1BCEC433F5 for ; Mon, 21 Mar 2022 10:19:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346282AbiCUKUt (ORCPT ); Mon, 21 Mar 2022 06:20:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346257AbiCUKUi (ORCPT ); Mon, 21 Mar 2022 06:20:38 -0400 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F08B2B26A; Mon, 21 Mar 2022 03:19:13 -0700 (PDT) Received: from pps.filterd (m0127361.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 22L8QZ6c008491; Mon, 21 Mar 2022 10:19:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=XlkiD+9qIVAFCk0Bh+L1998DKrnzpvIqppMNI7tlHdo=; b=MuUIND90FJnzWxPzBbF2amXlf9yQOrFAPTI0aPyaProxrhy3n56OzvPECcDHXI0PfiC7 5YqQcdZwjvYfrmTfexr0ZU8dO3WIq1arUwhhFBQbI/eJdpG0l8cIzJccKSE7n89n4Ljm NevTO8Rg4TZEO3gDwgEVeRY4eQw/U9eRqrs8GkYzWXgY9gM9Y3zI6U4/3pacKqygI/fN 9juWw9y0NQE3dN4Uy2ir6hQxtXOvPmOjwZnsA8sSUbc0oJRuujC3I2JWSGgjcltAfPjj OtFbIGvoNsZyldiGZvb1DXUsrR5Qw1INM2DuQBGO9NvpnYEiUDClqGAx+WfynwLpypYf aQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exbyk36s2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:12 +0000 Received: from m0127361.ppops.net (m0127361.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 22LABDEa040014; Mon, 21 Mar 2022 10:19:11 GMT Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exbyk36rp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:11 +0000 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 22LADrBe016149; Mon, 21 Mar 2022 10:19:10 GMT Received: from b06cxnps4076.portsmouth.uk.ibm.com (d06relay13.portsmouth.uk.ibm.com [9.149.109.198]) by ppma03ams.nl.ibm.com with ESMTP id 3ew6t8ujt6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:10 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 22LAJ70g40567064 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 21 Mar 2022 10:19:07 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2EEB011C04A; Mon, 21 Mar 2022 10:19:07 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D47D111C050; Mon, 21 Mar 2022 10:19:06 +0000 (GMT) Received: from t46lp57.lnxne.boe (unknown [9.152.108.100]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 21 Mar 2022 10:19:06 +0000 (GMT) From: Nico Boehr To: kvm@vger.kernel.org, linux-s390@vger.kernel.org Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com, david@redhat.com, farman@linux.ibm.com Subject: [kvm-unit-tests PATCH v1 6/9] s390x: smp: add test for EMERGENCY_SIGNAL with invalid CPU address Date: Mon, 21 Mar 2022 11:19:01 +0100 Message-Id: <20220321101904.387640-7-nrb@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220321101904.387640-1-nrb@linux.ibm.com> References: <20220321101904.387640-1-nrb@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: f5MvrnN2XrTt7M2j0fTgTBv6NR29xQet X-Proofpoint-ORIG-GUID: K7l_EQpyAp5UJnAkoO8idCWGyZGr_4wv X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-21_04,2022-03-21_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 mlxscore=0 mlxlogscore=999 priorityscore=1501 lowpriorityscore=0 malwarescore=0 adultscore=0 impostorscore=0 phishscore=0 bulkscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203210066 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org In this case, we expect the order to be rejected. Signed-off-by: Nico Boehr Reviewed-by: Claudio Imbrenda --- s390x/smp.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/s390x/smp.c b/s390x/smp.c index f22520b4f4fc..3bd7e7c8f5ed 100644 --- a/s390x/smp.c +++ b/s390x/smp.c @@ -580,6 +580,7 @@ static void emcall(void) static void test_emcall(void) { struct psw psw; + int cc; psw.mask = extract_psw_mask(); psw.addr = (unsigned long)emcall; @@ -592,6 +593,14 @@ static void test_emcall(void) smp_sigp(1, SIGP_EMERGENCY_SIGNAL, 0, NULL); wait_for_flag(); smp_cpu_stop(1); + + report_prefix_push("invalid CPU address"); + + cc = sigp(INVALID_CPU_ADDRESS, SIGP_EMERGENCY_SIGNAL, 0, NULL); + report(cc == 3, "CC = 3"); + + report_prefix_pop(); + report_prefix_pop(); } From patchwork Mon Mar 21 10:19:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Boehr X-Patchwork-Id: 12787066 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F4F1C433EF for ; Mon, 21 Mar 2022 10:19:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346285AbiCUKUu (ORCPT ); Mon, 21 Mar 2022 06:20:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34378 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346261AbiCUKUk (ORCPT ); Mon, 21 Mar 2022 06:20:40 -0400 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 215822C13A; Mon, 21 Mar 2022 03:19:14 -0700 (PDT) Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 22L7Lq1P024285; Mon, 21 Mar 2022 10:19:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=JeuytjubPG8GOorb5edg4H1plZpbBkzegdyzimyumJI=; b=FlaSgoHqjWXv4VxNqldwQG+OfxGrAPmakgon7UF6vy9SWFcrzVgHHS19MPRCLeqAKaYq LQqLxj9DHFNpOiBNSllDxVNxL2AKacV3mIgf3lG1FVxDYGRiqvHG8cNvsdjNZJjcjuRg eTs4aYjHINFp5mATFSXRS2pK69gtq+H68HF/ES61HK+ohfOb8I7q+DJKU0TuHD/Y44ik 6fs45ArdOEaxBy2hqLk55vyxnmhuinx9RIEZohWfuwWve5npi68rhcrktJgWAD5xKx/8 uBAs3VfndOf/bf+CVBlsvtadCub2VIsFw04SS0PgzhYZ1rOfl3uUmWkD5XqX7YQaZnNM zw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exmwkbjx6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:13 +0000 Received: from m0098409.ppops.net (m0098409.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 22L9fn7o003054; Mon, 21 Mar 2022 10:19:13 GMT Received: from ppma03fra.de.ibm.com (6b.4a.5195.ip4.static.sl-reverse.com [149.81.74.107]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exmwkbjwj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:13 +0000 Received: from pps.filterd (ppma03fra.de.ibm.com [127.0.0.1]) by ppma03fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 22LAC6ZE009778; Mon, 21 Mar 2022 10:19:10 GMT Received: from b06cxnps4076.portsmouth.uk.ibm.com (d06relay13.portsmouth.uk.ibm.com [9.149.109.198]) by ppma03fra.de.ibm.com with ESMTP id 3ew6t933qa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:10 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 22LAJ7kb41681226 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 21 Mar 2022 10:19:07 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 805D911C052; Mon, 21 Mar 2022 10:19:07 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3ADAF11C04C; Mon, 21 Mar 2022 10:19:07 +0000 (GMT) Received: from t46lp57.lnxne.boe (unknown [9.152.108.100]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 21 Mar 2022 10:19:07 +0000 (GMT) From: Nico Boehr To: kvm@vger.kernel.org, linux-s390@vger.kernel.org Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com, david@redhat.com, farman@linux.ibm.com Subject: [kvm-unit-tests PATCH v1 7/9] s390x: smp: add tests for CONDITIONAL EMERGENCY Date: Mon, 21 Mar 2022 11:19:02 +0100 Message-Id: <20220321101904.387640-8-nrb@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220321101904.387640-1-nrb@linux.ibm.com> References: <20220321101904.387640-1-nrb@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: qUldapKGt0t9kaL1BH3ixllFoM85U-7Y X-Proofpoint-GUID: _-zVEXncMOEhrSKKmewrBTSKacZW6ICn X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-21_04,2022-03-21_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 mlxscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203210066 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Add a test for the conditional emergency signal. We cover the following cases: - invalid CPU address. Should lead to the order being rejected. - the order is accepted and an emergency signal is delivered. We make sure this is the case by disabling the CPU's PSW for IO interruptions. Note we intentionally don't cover the case where the signal isn't delivered. As per the PoP, implementations are allowed to make the signal an unconditional one when the condition determination is precluded. This test is unsupported under PV. Signed-off-by: Nico Boehr Reviewed-by: Claudio Imbrenda --- s390x/smp.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/s390x/smp.c b/s390x/smp.c index 3bd7e7c8f5ed..9c4e27106aef 100644 --- a/s390x/smp.c +++ b/s390x/smp.c @@ -16,6 +16,7 @@ #include #include +#include #include #include @@ -604,6 +605,47 @@ static void test_emcall(void) report_prefix_pop(); } +static void test_cond_emcall(void) +{ + uint32_t status = 0; + struct psw psw; + int cc; + psw.mask = extract_psw_mask() & ~PSW_MASK_IO; + psw.addr = (unsigned long)emcall; + + report_prefix_push("conditional emergency call"); + + if (uv_os_is_guest()) { + report_skip("unsupported under PV"); + goto out; + } + + report_prefix_push("invalid CPU address"); + + cc = sigp(INVALID_CPU_ADDRESS, SIGP_COND_EMERGENCY_SIGNAL, 0, NULL); + report(cc == 3, "CC = 3"); + + report_prefix_pop(); + + report_prefix_push("success"); + set_flag(0); + + smp_cpu_start(1, psw); + wait_for_flag(); + set_flag(0); + cc = smp_sigp(1, SIGP_COND_EMERGENCY_SIGNAL, 0, &status); + report(!cc, "CC = 0"); + + wait_for_flag(); + smp_cpu_stop(1); + + report_prefix_pop(); + +out: + report_prefix_pop(); + +} + static void test_sense_running(void) { report_prefix_push("sense_running"); @@ -731,6 +773,7 @@ int main(void) test_set_prefix(); test_ecall(); test_emcall(); + test_cond_emcall(); test_sense_running(); test_reset(); test_reset_initial(); From patchwork Mon Mar 21 10:19:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Boehr X-Patchwork-Id: 12787068 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6137FC433F5 for ; Mon, 21 Mar 2022 10:19:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346287AbiCUKUw (ORCPT ); Mon, 21 Mar 2022 06:20:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346263AbiCUKUk (ORCPT ); Mon, 21 Mar 2022 06:20:40 -0400 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E470F2CE2A; Mon, 21 Mar 2022 03:19:15 -0700 (PDT) Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 22LAC3uE017443; Mon, 21 Mar 2022 10:19:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=EjMC+y1VFmFr0lzNcT329swwbIgPh0I+Rm30oTAR+SI=; b=lbZ1ECfRaXmFSCagANDjlkaPLX0rfDiv+/bCUXmPCE8O0YsrsfK8NFceLGEqEKEENjyh pN/ZondPM5m9R2atZoz7/5d+UvYoRc4bRXpYEvfJozYAg8cCCU6kGQHpQGBHZfpUpQSx CIaDxj+CZIhl8agFyD/U9YIPxGTL3l5zUSJH3VoKYGD6mVpB6sXq4KWO+3wcTPkWx44c A1tlnHiCP7DOrG7ceaajxWvGnzxu6bt0PNJZ8wGZsKdnvJUKzLDR269sf63TmZ/RNAOy wrlz7sJsbtu1g5kwNMPI/kjC+E1J+huIWIsEpveV8XIH/lDhayV88yNrvg1+GVagprke Jw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exqd3r4nh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:15 +0000 Received: from m0098394.ppops.net (m0098394.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 22LABxU0017185; Mon, 21 Mar 2022 10:19:14 GMT Received: from ppma01fra.de.ibm.com (46.49.7a9f.ip4.static.sl-reverse.com [159.122.73.70]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exqd3r4m7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:14 +0000 Received: from pps.filterd (ppma01fra.de.ibm.com [127.0.0.1]) by ppma01fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 22LADsD1031555; Mon, 21 Mar 2022 10:19:11 GMT Received: from b06cxnps4076.portsmouth.uk.ibm.com (d06relay13.portsmouth.uk.ibm.com [9.149.109.198]) by ppma01fra.de.ibm.com with ESMTP id 3ew6t8k3rk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:10 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 22LAJ7HD40567068 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 21 Mar 2022 10:19:07 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D10A211C050; Mon, 21 Mar 2022 10:19:07 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8BFA411C054; Mon, 21 Mar 2022 10:19:07 +0000 (GMT) Received: from t46lp57.lnxne.boe (unknown [9.152.108.100]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 21 Mar 2022 10:19:07 +0000 (GMT) From: Nico Boehr To: kvm@vger.kernel.org, linux-s390@vger.kernel.org Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com, david@redhat.com, farman@linux.ibm.com Subject: [kvm-unit-tests PATCH v1 8/9] s390x: add TPROT tests Date: Mon, 21 Mar 2022 11:19:03 +0100 Message-Id: <20220321101904.387640-9-nrb@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220321101904.387640-1-nrb@linux.ibm.com> References: <20220321101904.387640-1-nrb@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: GZhRNeDiXgwwPyv9i_piBSsgeA3rEGGf X-Proofpoint-GUID: BzxsT79_XkAUGyDr5sp0sqsYQTAp1RT5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-21_04,2022-03-21_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 lowpriorityscore=0 adultscore=0 spamscore=0 mlxlogscore=999 mlxscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203210066 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Add tests for TEST PROTECTION. We cover the following cases: - page is read/write - page is readonly - lowcore protection - page is not present - translation specification exception We don't cover storage keys and the case where the page can be neither read nor written right now. This test mainly applies to the TCG case. Signed-off-by: Nico Boehr Reviewed-by: Claudio Imbrenda Reviewed-by: Janis Schoetterl-Glausch --- s390x/Makefile | 1 + s390x/tprot.c | 108 ++++++++++++++++++++++++++++++++++++++++++++ s390x/unittests.cfg | 3 ++ 3 files changed, 112 insertions(+) create mode 100644 s390x/tprot.c diff --git a/s390x/Makefile b/s390x/Makefile index 53b0fe044fe7..92c1ce4648dd 100644 --- a/s390x/Makefile +++ b/s390x/Makefile @@ -3,6 +3,7 @@ tests += $(TEST_DIR)/intercept.elf tests += $(TEST_DIR)/emulator.elf tests += $(TEST_DIR)/sieve.elf tests += $(TEST_DIR)/sthyi.elf +tests += $(TEST_DIR)/tprot.elf tests += $(TEST_DIR)/skey.elf tests += $(TEST_DIR)/diag10.elf tests += $(TEST_DIR)/diag308.elf diff --git a/s390x/tprot.c b/s390x/tprot.c new file mode 100644 index 000000000000..460a0db7ffcf --- /dev/null +++ b/s390x/tprot.c @@ -0,0 +1,108 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * TEST PROTECTION tests + * + * Copyright IBM Corp. 2022 + * + * Authors: + * Nico Boehr + */ + +#include +#include +#include +#include +#include "mmu.h" +#include +#include + +static uint8_t pagebuf[PAGE_SIZE] __attribute__((aligned(PAGE_SIZE))); + +static void test_tprot_rw(void) +{ + int cc; + + report_prefix_push("Page read/writeable"); + + cc = tprot((unsigned long)pagebuf, 0); + report(cc == 0, "CC = 0"); + + report_prefix_pop(); +} + +static void test_tprot_ro(void) +{ + int cc; + + report_prefix_push("Page readonly"); + + protect_dat_entry(pagebuf, PAGE_ENTRY_P, 5); + + cc = tprot((unsigned long)pagebuf, 0); + report(cc == 1, "CC = 1"); + + unprotect_dat_entry(pagebuf, PAGE_ENTRY_P, 5); + + report_prefix_pop(); +} + +static void test_tprot_low_addr_prot(void) +{ + int cc; + + report_prefix_push("low-address protection"); + + low_prot_enable(); + cc = tprot(0, 0); + low_prot_disable(); + report(cc == 1, "CC = 1"); + + report_prefix_pop(); +} + +static void test_tprot_transl_unavail(void) +{ + int cc; + + report_prefix_push("Page translation unavailable"); + + protect_dat_entry(pagebuf, PAGE_ENTRY_I, 5); + + cc = tprot((unsigned long)pagebuf, 0); + report(cc == 3, "CC = 3"); + + unprotect_dat_entry(pagebuf, PAGE_ENTRY_I, 5); + + report_prefix_pop(); +} + +static void test_tprot_transl_pte_bit52_set(void) +{ + report_prefix_push("PTE Bit 52 set"); + + protect_dat_entry(pagebuf, BIT(63 - 52), 5); + + expect_pgm_int(); + tprot((unsigned long)pagebuf, 0); + check_pgm_int_code(PGM_INT_CODE_TRANSLATION_SPEC); + + unprotect_dat_entry(pagebuf, BIT(63 - 52), 5); + + report_prefix_pop(); +} + +int main(void) +{ + report_prefix_push("tprot"); + + setup_vm(); + + test_tprot_rw(); + test_tprot_ro(); + test_tprot_low_addr_prot(); + test_tprot_transl_unavail(); + test_tprot_transl_pte_bit52_set(); + + report_prefix_pop(); + return report_summary(); +} diff --git a/s390x/unittests.cfg b/s390x/unittests.cfg index 2d0adc503917..6227cd3ba1d0 100644 --- a/s390x/unittests.cfg +++ b/s390x/unittests.cfg @@ -142,3 +142,6 @@ file = firq.elf timeout = 20 extra_params = -smp 1,maxcpus=3 -cpu qemu -device qemu-s390x-cpu,core-id=2 -device qemu-s390x-cpu,core-id=1 accel = tcg + +[tprot] +file = tprot.elf From patchwork Mon Mar 21 10:19:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nico Boehr X-Patchwork-Id: 12787067 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E959EC433FE for ; Mon, 21 Mar 2022 10:19:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346284AbiCUKUv (ORCPT ); Mon, 21 Mar 2022 06:20:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346262AbiCUKUk (ORCPT ); Mon, 21 Mar 2022 06:20:40 -0400 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2374C2CC9C; Mon, 21 Mar 2022 03:19:15 -0700 (PDT) Received: from pps.filterd (m0187473.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 22L9Pt0q015588; Mon, 21 Mar 2022 10:19:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=b9rgkHJbHKZ27YCfeW4MQUexcpse6aSh3Py6GAPryYk=; b=OYhsLPvZl6ajaZobBKQz6fBo2h3n3HVEU8sVZ0d3ycJa0AzOaoXJcjoLEZCYBki9FMY+ zVXNtrM1++PSL2xvuobFHw/ywqFo6vDorA6Osftrvkec5pepGmBxlhw6GGnppFM5EzJl EW5m6QBh3RGPtryr8og84Xo+VSpB0x4rWDa2T6j8neMFFqfOdfY/fbSsfjAiCd6qGY2a xfM5QfINTKvGZuHcX/3V8HGJ11y1g+iuDQHbH7CAKfi9CaVPgOxa94tu+j65tAlml3x4 ubQVNPAVrvbW3bRqT8zqz/B4YoLDXjA90JWyKTIY5VdL8hcP7wGpzFjzs90P3+ajGnXM qA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exkk3w1x4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:14 +0000 Received: from m0187473.ppops.net (m0187473.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 22LA7Icx035236; Mon, 21 Mar 2022 10:19:13 GMT Received: from ppma04ams.nl.ibm.com (63.31.33a9.ip4.static.sl-reverse.com [169.51.49.99]) by mx0a-001b2d01.pphosted.com with ESMTP id 3exkk3w1w7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:13 +0000 Received: from pps.filterd (ppma04ams.nl.ibm.com [127.0.0.1]) by ppma04ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 22LAEZ2G029744; Mon, 21 Mar 2022 10:19:11 GMT Received: from b06cxnps3074.portsmouth.uk.ibm.com (d06relay09.portsmouth.uk.ibm.com [9.149.109.194]) by ppma04ams.nl.ibm.com with ESMTP id 3ew6t8uju7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 21 Mar 2022 10:19:11 +0000 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 22LAJ8Zc36831596 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 21 Mar 2022 10:19:08 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2D76E11C052; Mon, 21 Mar 2022 10:19:08 +0000 (GMT) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DC8B511C04C; Mon, 21 Mar 2022 10:19:07 +0000 (GMT) Received: from t46lp57.lnxne.boe (unknown [9.152.108.100]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 21 Mar 2022 10:19:07 +0000 (GMT) From: Nico Boehr To: kvm@vger.kernel.org, linux-s390@vger.kernel.org Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com, david@redhat.com, farman@linux.ibm.com Subject: [kvm-unit-tests PATCH v1 9/9] s390x: stsi: check zero and ignored bits in r0 and r1 Date: Mon, 21 Mar 2022 11:19:04 +0100 Message-Id: <20220321101904.387640-10-nrb@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220321101904.387640-1-nrb@linux.ibm.com> References: <20220321101904.387640-1-nrb@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: Oh9hi1Fos_GJSgRcd_8ogjMvAOCs7Mxx X-Proofpoint-ORIG-GUID: oWQ0L9xq_X1hgYSZGx-ehmfjktzwSxrm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.850,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-21_04,2022-03-21_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 mlxscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 bulkscore=0 adultscore=0 clxscore=1015 spamscore=0 suspectscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2203210066 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org We previously only checked for two zero bits, one in r0 and one in r1. Let's check all the bits which must be zero and which are ignored to extend the coverage. Signed-off-by: Nico Boehr Reviewed-by: Claudio Imbrenda --- s390x/stsi.c | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/s390x/stsi.c b/s390x/stsi.c index dccc53e7a816..94a579dc3b58 100644 --- a/s390x/stsi.c +++ b/s390x/stsi.c @@ -9,6 +9,7 @@ */ #include +#include #include #include #include @@ -19,19 +20,40 @@ static uint8_t pagebuf[PAGE_SIZE * 2] __attribute__((aligned(PAGE_SIZE * 2))); static void test_specs(void) { + int i; + int cc; + report_prefix_push("specification"); - report_prefix_push("inv r0"); - expect_pgm_int(); - stsi(pagebuf, 0, 1 << 8, 0); - check_pgm_int_code(PGM_INT_CODE_SPECIFICATION); - report_prefix_pop(); + for (i = 36; i <= 55; i++) { + report_prefix_pushf("set invalid r0 bit %d", i); + expect_pgm_int(); + stsi(pagebuf, 0, BIT(63 - i), 0); + check_pgm_int_code(PGM_INT_CODE_SPECIFICATION); + report_prefix_pop(); + } - report_prefix_push("inv r1"); - expect_pgm_int(); - stsi(pagebuf, 1, 0, 1 << 16); - check_pgm_int_code(PGM_INT_CODE_SPECIFICATION); - report_prefix_pop(); + for (i = 32; i <= 47; i++) { + report_prefix_pushf("set invalid r1 bit %d", i); + expect_pgm_int(); + stsi(pagebuf, 1, 0, BIT(63 - i)); + check_pgm_int_code(PGM_INT_CODE_SPECIFICATION); + report_prefix_pop(); + } + + for (i = 0; i < 32; i++) { + report_prefix_pushf("r0 bit %d ignored", i); + cc = stsi(pagebuf, 3, 2 | BIT(63 - i), 2); + report(!cc, "CC = 0"); + report_prefix_pop(); + } + + for (i = 0; i < 32; i++) { + report_prefix_pushf("r1 bit %d ignored", i); + cc = stsi(pagebuf, 3, 2, 2 | BIT(63 - i)); + report(!cc, "CC = 0"); + report_prefix_pop(); + } report_prefix_push("unaligned"); expect_pgm_int();