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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id CAFE3C3ABC3 for ; Mon, 12 May 2025 18:03:35 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEXUG-0006Rq-6c; Mon, 12 May 2025 14:02:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEXUD-0006QA-8t; Mon, 12 May 2025 14:02:45 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEXU9-0007wl-OF; Mon, 12 May 2025 14:02:45 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54CHsdxf006737; Mon, 12 May 2025 18:02:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=z+c0x+nvW4bJcM4OY exbji+5LoZMUs+4i9c/Z7KPEFo=; b=b11RSZ8hEUXugYqoM5wbG9QeBBhIzBi9w 4lO9YdnGYHnZEF2WY+HKkQCVYAc+aQTezGllJCOaCRcmTKlX5TqIy/1XrjNPNjLH VWOBE8Y4eIkB2oEpss7CeVd679zabAV+Hj1dWwpTlwswrWjYFU+bGxc7eeTj/frM HwhzS3s9lPRVCvB9BIM2zNCm62Tu0MN6Cg+8tRCLP1ooSEJvgsoG4r4IvRwCVu3a K7oEQxagliAVsyzfUwGtZTv+A261ZK8YfyK+sAAUHSvH0in3m+7aVHda6/QNSkYc h2HQqoauhLSr+2XCq+IsRHB1J6+HU6fik1QqRTWVObbvfQEV7GsJg== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 46kdugajhw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 12 May 2025 18:02:37 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 54CHvxuS024441; Mon, 12 May 2025 18:02:35 GMT Received: from smtprelay01.wdc07v.mail.ibm.com ([172.16.1.68]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 46jjmky2qp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 12 May 2025 18:02:35 +0000 Received: from smtpav01.dal12v.mail.ibm.com (smtpav01.dal12v.mail.ibm.com [10.241.53.100]) by smtprelay01.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 54CI2YdV28050062 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 12 May 2025 18:02:34 GMT Received: from smtpav01.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7C06C58061; Mon, 12 May 2025 18:02:34 +0000 (GMT) Received: from smtpav01.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BB23758063; Mon, 12 May 2025 18:02:33 +0000 (GMT) Received: from localhost.localdomain (unknown [9.61.251.19]) by smtpav01.dal12v.mail.ibm.com (Postfix) with ESMTP; Mon, 12 May 2025 18:02:33 +0000 (GMT) From: Rorie Reyes To: qemu-devel@nongnu.org, qemu-s390x@nongnu.org Cc: pbonzini@redhat.com, cohuck@redhat.com, pasic@linux.ibm.com, jjherne@linux.ibm.com, borntraeger@linux.ibm.com, alex.williamson@redhat.com, clg@redhat.com, thuth@redhat.com, akrowiak@linux.ibm.com, rreyes@linux.ibm.com Subject: [RFC PATCH v9 3/4] hw/vfio/ap: Storing event information for an AP configuration change event Date: Mon, 12 May 2025 14:02:29 -0400 Message-ID: <20250512180230.50129-4-rreyes@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250512180230.50129-1-rreyes@linux.ibm.com> References: <20250512180230.50129-1-rreyes@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=OOUn3TaB c=1 sm=1 tr=0 ts=682237bd cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=dt9VzEwgFbYA:10 a=sWKEhP36mHoA:10 a=VnNF1IyMAAAA:8 a=1fYsFTRr82c5d5Av3T0A:9 X-Proofpoint-ORIG-GUID: 1FtW1VmTtcrFEJX6Q0EB8tsBnNHAhbzi X-Proofpoint-GUID: 1FtW1VmTtcrFEJX6Q0EB8tsBnNHAhbzi X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTEyMDE4MSBTYWx0ZWRfXyFqAIC2kUyju 75vtZZeh3tZSt65cHIXtUptmMtec+cNgaXPPyKFeqYJL9QySmrxu8wtW6iwyedXaIK8Lr/919cz m7Q6lrYrDJxUEiDaeT/IrTFDAqFLMjqL5cfHpVPCrY9jU58mnaCGjJJO/n8rP25j2FX5hQsgev+ qZoxHJBziKnj3xiLpIS+xMBEmTJYoasnFx4aDxTYIeiQOys0QDGTqqfb8VexMMHqijf+C0Vx6TT P7Qu0sV4t0SmtQtI7RtohW/dIOF5s2pJg07E7KvpfrjYArI5DyTzUlKQKgPXKh8cb+Mz+gy649f 76Goe1SUqF9bpCSIZlcRhctCan1nP2Eh3yqFIbBWSo2FhD0KwCG1pJv3hRsrwaIm3VyaMQ7v+/H QK5VUK5gpJ3OlpIG957qzqhE8bvLUFq0DXirSfZPw4sOSk0Y3xC38Wd0Ga857T+aDdmt4dCa X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-12_06,2025-05-09_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 suspectscore=0 spamscore=0 lowpriorityscore=0 impostorscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 mlxscore=0 mlxlogscore=999 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2504070000 definitions=main-2505120181 Received-SPF: pass client-ip=148.163.156.1; envelope-from=rreyes@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org These functions can be invoked by the function that handles interception of the CHSC SEI instruction for requests indicating the accessibility of one or more adjunct processors has changed. Signed-off-by: Rorie Reyes --- hw/vfio/ap.c | 39 ++++++++++++++++++++++++++++++++++++ include/hw/s390x/ap-bridge.h | 22 ++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c index 5ea5dd9cca..4f88f80c54 100644 --- a/hw/vfio/ap.c +++ b/hw/vfio/ap.c @@ -96,6 +96,45 @@ static void vfio_ap_cfg_chg_notifier_handler(void *opaque) } +int ap_chsc_sei_nt0_get_event(void *res) +{ + ChscSeiNt0Res *nt0_res = (ChscSeiNt0Res *)res; + APConfigChgEvent *cfg_chg_event; + + if (!ap_chsc_sei_nt0_have_event()) { + return 1; + } + + cfg_chg_event = QTAILQ_FIRST(&cfg_chg_events); + memset(nt0_res, 0, sizeof(*nt0_res)); + + QTAILQ_REMOVE(&cfg_chg_events, cfg_chg_event, next); + g_free(cfg_chg_event); + + /* + * If there are any AP configuration change events in the queue, + * indicate to the caller that there is pending event info in + * the response block + */ + if (ap_chsc_sei_nt0_have_event()) { + nt0_res->flags |= PENDING_EVENT_INFO_BITMASK; + } + + nt0_res->length = sizeof(ChscSeiNt0Res); + nt0_res->code = NT0_RES_RESPONSE_CODE; + nt0_res->nt = NT0_RES_NT_DEFAULT; + nt0_res->rs = NT0_RES_RS_AP_CHANGE; + nt0_res->cc = NT0_RES_CC_AP_CHANGE; + + return 0; + +} + +int ap_chsc_sei_nt0_have_event(void) +{ + return !QTAILQ_EMPTY(&cfg_chg_events); +} + static bool vfio_ap_register_irq_notifier(VFIOAPDevice *vapdev, unsigned int irq, Error **errp) { diff --git a/include/hw/s390x/ap-bridge.h b/include/hw/s390x/ap-bridge.h index 470e439a98..f4d838bf99 100644 --- a/include/hw/s390x/ap-bridge.h +++ b/include/hw/s390x/ap-bridge.h @@ -16,4 +16,26 @@ void s390_init_ap(void); +typedef struct ChscSeiNt0Res { + uint16_t length; + uint16_t code; + uint8_t reserved1; + uint16_t reserved2; + uint8_t nt; +#define PENDING_EVENT_INFO_BITMASK 0x80; + uint8_t flags; + uint8_t reserved3; + uint8_t rs; + uint8_t cc; +} QEMU_PACKED ChscSeiNt0Res; + +#define NT0_RES_RESPONSE_CODE 1; +#define NT0_RES_NT_DEFAULT 0; +#define NT0_RES_RS_AP_CHANGE 5; +#define NT0_RES_CC_AP_CHANGE 3; + +int ap_chsc_sei_nt0_get_event(void *res); + +int ap_chsc_sei_nt0_have_event(void); + #endif -- 2.48.1