From nobody Sun Nov 9 17:53:26 2025 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1551450933123224.501315486443; Fri, 1 Mar 2019 06:35:33 -0800 (PST) Received: from localhost ([127.0.0.1]:38753 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gzjG6-0000TM-2t for importer@patchew.org; Fri, 01 Mar 2019 09:35:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39055) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gzjDv-0007Qx-No for qemu-devel@nongnu.org; Fri, 01 Mar 2019 09:33:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gzizY-0005zt-Q8 for qemu-devel@nongnu.org; Fri, 01 Mar 2019 09:18:25 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:38836 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 1gzizY-0005zZ-Ky for qemu-devel@nongnu.org; Fri, 01 Mar 2019 09:18:24 -0500 Received: from pps.filterd (m0098414.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x21EFax1129250 for ; Fri, 1 Mar 2019 09:18:24 -0500 Received: from e06smtp07.uk.ibm.com (e06smtp07.uk.ibm.com [195.75.94.103]) by mx0b-001b2d01.pphosted.com with ESMTP id 2qy3yxptvt-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 01 Mar 2019 09:18:22 -0500 Received: from localhost by e06smtp07.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 1 Mar 2019 14:17:57 -0000 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) 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) Fri, 1 Mar 2019 14:17:55 -0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x21EHtnu28966958 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 1 Mar 2019 14:17:55 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DD855A4057; Fri, 1 Mar 2019 14:17:54 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C82EBA404D; Fri, 1 Mar 2019 14:17:54 +0000 (GMT) Received: from smtp.lab.toulouse-stg.fr.ibm.com (unknown [9.101.4.1]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 1 Mar 2019 14:17:54 +0000 (GMT) Received: from bahia.lan (sig-9-145-41-217.uk.ibm.com [9.145.41.217]) by smtp.lab.toulouse-stg.fr.ibm.com (Postfix) with ESMTP id D97B0220246; Fri, 1 Mar 2019 15:17:53 +0100 (CET) From: Greg Kurz To: qemu-devel@nongnu.org Date: Fri, 01 Mar 2019 15:17:53 +0100 User-Agent: StGit/unknown-version MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19030114-0028-0000-0000-0000034EA3AB X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19030114-0029-0000-0000-0000240D033F Message-Id: <155144987334.126105.2493613675615671242.stgit@bahia.lan> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-03-01_11:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=4 phishscore=0 bulkscore=0 spamscore=0 clxscore=1034 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903010100 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Thomas Huth , David Hildenbrand , Greg Kurz , qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Recent commit b8165118f52c "spapr: support memory unplug for qtest" broke CPU hotplug tests for old machine types: $ QTEST_QEMU_BINARY=3Dppc64-softmmu/qemu-system-ppc64 ./tests/cpu-plug-test= -m=3Dslow /ppc64/cpu-plug/pseries-3.1/device-add/2x3x1&maxcpus=3D6: OK /ppc64/cpu-plug/pseries-2.12-sxxm/device-add/2x3x1&maxcpus=3D6: OK /ppc64/cpu-plug/pseries-3.0/device-add/2x3x1&maxcpus=3D6: OK /ppc64/cpu-plug/pseries-2.10/device-add/2x3x1&maxcpus=3D6: OK /ppc64/cpu-plug/pseries-2.11/device-add/2x3x1&maxcpus=3D6: OK /ppc64/cpu-plug/pseries-2.12/device-add/2x3x1&maxcpus=3D6: OK /ppc64/cpu-plug/pseries-2.9/device-add/2x3x1&maxcpus=3D6: OK /ppc64/cpu-plug/pseries-2.7/device-add/2x3x1&maxcpus=3D6: ** ERROR:/home/thuth/devel/qemu/hw/ppc/spapr_events.c:313:rtas_event_log_to_so= urce: assertion failed: (source->enabled) Broken pipe /home/thuth/devel/qemu/tests/libqtest.c:143: kill_qemu() detected QEMU deat= h from signal 6 (Aborted) (core dumped) Aborted (core dumped) The rtas_event_log_to_source() function is supposed to return the event source to be used for a given event type. In the case of hotplug, it first tries EVENT_CLASS_HOT_PLUG and, if the guest doesn't support it, it falls back to EVENT_CLASS_EPOW. This works well for machine types that enable EVENT_CLASS_HOT_PLUG. For older machine types, this happened to work because they don't set the OV5_HP_EVT bit in spapr->ov5. CAS hence logically keeps the bit cleared in spapr->ov5_cas and we avoid the assert. As shown by commit b8165118f52c, the logic is fragile and we need a bigger hammer to ensure that rtas_event_log_to_source() doesn't go down the EVENT_CLASS_HOT_PLUG path with older machine types. Signed-off-by: Greg Kurz Reported-by: Thomas Huth Tested-by: Thomas Huth --- hw/ppc/spapr_events.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c index ab9a1f0063d5..1a09dab6857d 100644 --- a/hw/ppc/spapr_events.c +++ b/hw/ppc/spapr_events.c @@ -307,11 +307,13 @@ rtas_event_log_to_source(sPAPRMachineState *spapr, in= t log_type) =20 switch (log_type) { case RTAS_LOG_TYPE_HOTPLUG: - source =3D spapr_event_sources_get_source(spapr->event_sources, - EVENT_CLASS_HOT_PLUG); - if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) { - g_assert(source->enabled); - break; + if (spapr->use_hotplug_event_source) { + source =3D spapr_event_sources_get_source(spapr->event_sources, + EVENT_CLASS_HOT_PLUG); + if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) { + g_assert(source->enabled); + break; + } } /* fall back to epow for legacy hotplug interrupt source */ case RTAS_LOG_TYPE_EPOW: