From nobody Sun Apr 12 04:22:17 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass(p=quarantine dis=none) header.from=epfl.ch ARC-Seal: i=2; a=rsa-sha256; t=1771949169; cv=pass; d=zohomail.com; s=zohoarc; b=dMa4tBEQWRabLH405xvW36XDeF4aPTSsq7D4XALWRmGblwgIBIhL4z0Cu/SZRxqqtXcfdoU77Lmt7aX6sTU4Zldp95SLY7ZXqKyyYd2uCAm7EwrNmlUXNOOnqCMLAjIdSEJM4cjk6QDgO1cLto5uWoy0aG/n11M9nrEAxNmaG9Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771949169; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZDhDOuxRDrhI+KTCBzgwyNkgvzN0Rvun5n5L4wpcYgU=; b=KOLdtlsNOMRI2FcctGPZphSiNCpw7pfGtDomCo1SCeUgPpyfruE461TfrUI/1KGgTqo41lrod6IE90OcmmxoBuo0P9YUbg6D+T7srtai0eO0N6B4zSH3IcBJ8bHaPy+HjQAdY6gw+NslOuueWKNYbZYr5TN8FMv+lg+7ZWn7lAc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771949168901391.0989900402134; Tue, 24 Feb 2026 08:06:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuuv4-0005g4-Dr; Tue, 24 Feb 2026 11:05:54 -0500 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 1vuuur-0005eo-Ni for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:05:42 -0500 Received: from mail-switzerlandnorthazon11022137.outbound.protection.outlook.com ([40.107.168.137] helo=ZR1P278CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuuuo-0002J5-HL for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:05:40 -0500 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) by ZR3P278MB1305.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:72::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Tue, 24 Feb 2026 16:00:30 +0000 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c]) by ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c%6]) with mapi id 15.20.9632.017; Tue, 24 Feb 2026 16:00:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E4NM8AVCDjCKCDfEmG0KjbOwkJgVJtwmNlvm+Hu5ugfiJ166/g+fuTDlgHDxTHYoYFenCScunm0JEhSretlFfQSH7q2BylP8P8wohn1mw16UiBsE0igg7+rhxLqq6QG6+4k1p28XO7gdHq8rCbRldF37pXsdh6XLFAMvEjc0MNKJiIzlyLIvXbRwuQhc2dtbFUHktHPPzqPGQEkxNLO4u7VCWozyfv166aCVXXV00SD1ZLFXzLoFW/0cMEqttFsT+rKcde8BA35KCNF8kpBib3RCQC4IdQFFGE0L23N4H3+OcEM8+Y7wL/p0/CcJ+26AN/C4u2pF02/HKVdNP2q+4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZDhDOuxRDrhI+KTCBzgwyNkgvzN0Rvun5n5L4wpcYgU=; b=sStRI+iIhLF0FXBTPgyA8wFGm3uIk/U5+JEyx2vjqJz0UcNOoqIptjBAsaIFrPB+yP6w9EpURyN82DTBUzbMl76HzP0IlxfNX8sjHmIC60HBfQXpe32Njyob4zkxVX4EhjBnd+Fx9zf8t6m7U5RkTNvSEPYjreA90tyohHrPsLyA2lbstLkBEfn37339MLo1pETNkzJCMVKoF8I/3Uuo0H/VGzUAnHFJuZHTlxIrpSJOl2Bt9p96y/3SebwYdkDG7+Np5s+8qpaYNhrK7t6lERJh5GesUXP8ov5ABR+BalLzU82e2EKoGbNKVM03obgdhbdU4D3A8Cztjbo+5qc2kQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epfl.ch; dmarc=pass action=none header.from=epfl.ch; dkim=pass header.d=epfl.ch; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epfl.ch; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZDhDOuxRDrhI+KTCBzgwyNkgvzN0Rvun5n5L4wpcYgU=; b=dK6bVpjMMkUR6axTMgUeSy8uZp2o+ryag/nwQqhQU9OHkKaBZ5C0eo8mrhmLKI+Y6pJHrvdI1t4P8JEecQ1gr6EjsNayvUv7h4r+wfEKkedaW3LLVz+Yx1S/59ggXn5Js2bJDNHUJnc+gsdjGwZMoXcNjkQ+Fnpf4a1hvOuVvk8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epfl.ch; Message-ID: <8dad9153-1e97-4087-a243-3e40cee83572@epfl.ch> Date: Tue, 24 Feb 2026 16:48:24 +0100 User-Agent: Mozilla Thunderbird Subject: [PATCH v4 1/7] plugins: add flag to specify whether PC is rw From: Florian Hofhammer To: qemu-devel@nongnu.org Cc: alex.bennee@linaro.org, pierrick.bouvier@linaro.org, richard.henderson@linaro.org, laurent@vivier.eu, imp@bsdimp.com, berrange@redhat.com References: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Language: en-US Autocrypt: addr=florian.hofhammer@epfl.ch; keydata= xsFNBFw7TEkBEADaJzHcW02rDYHgS2X2kjyXLs99tnNpww/r3MlWEkrKxgfgIRbtVQTJ2vNw mxIhJnAo/Ltu2VoEXU1WGwoMGv8wxquIuE1RBnYghnYPFd4SOMX8fXz5JylHpl+vPCWiP8U0 fFWfVL1vyldQG4aVtufaJ1VEOU8zsw6YeXzxWJJ7ppUag4teMKuFya69tEEN74KLkDMJRxGk pj7rHW8Y+xBdNW9hQ2vAXhWAtm64NtCtJcJYP8RNl/jqlqYTP1Voj7byXym9HUM7NGEbGtrw 4KKi9ws1yZv9BkW3ECBg5Q1w3WYmHfwqSa+8vrD2ahNieDYNu7veYP0oMaohumRgVhiaMscD IY8wqyt6K93RiwXDQjDAqwE44xrZDr4jjCUAm1D/7WYZWtzhsiDq80JasMbXd8SLKGr96zX5 6vJGxa6OvyavRO7Y7DGK/dNPWdZqAC4QlluibdRsbkFLtBg8d60sVxYW8A9o46rrQB8qzglc joPhDebr8/NsI0gnzjgpgmNbresqne4/JIylUuJEwYcOWZqKqDw9U03uTFk/Vp6AxmRquWpy XZJVBsMNbunclgSelZIt2nzCa2nXR5MYyV2Y8ays+gSAPeHFOc6a8JWNLhgVKUed12XVrMUQ bmMmTFWWqfrx89Up4a+jW7uGIzexOeXUXKeE1j0uGsRLk6CF7QARAQABzTRGbG9yaWFuIEhv ZmhhbW1lciAoRVBGTCkgPGZsb3JpYW4uaG9maGFtbWVyQGVwZmwuY2g+wsGUBBMBCAA+AhsD BQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEqCB8P0q+u+2bTfhJlusnujFfx3wFAmfOq/AF CQ10kyEACgkQlusnujFfx3wl9Q//cNbHsBz6YvTzzi3fddVVYnEn7YBPMAw0r4vxtYpLCvpD sKOfMaGYYoV3AbVton2w53qTFcmTC/7J0/UxIi/cH1sWgVipZuVNrtESZFhkKAKpqJvHamPl uDD0kmINzztgNZOz44iUdGkSvqQW6ou5WpSEk9YEks4KPs/EH00l7hQ8YkfR/8oN63OxpYri W4+obeU45fBPPgOO1U1eMtWp/QBvo2qw+GiRQkq8kjKDTt9AYYPfcA+AdnhocgrQ2SdtcBuZ bb1BQnKEqWM2gVpvk/ujyZZktgBvqtoubAwaMpAGNgCoDju/zPf8wtbc/yo+AT+iiRQKuilm mQ7U0THfk3+DewN9CTZUiL1X6NdoUuLMqdSI4HCpo/d/N59wMkRKXHG2h/pKmTLbrHGFA4ZY a4zNN98yyPcq6OeAqurWbotXm7yxraXKkFD5dbBJcZYc5gJx+rZg2pIy+rYtQKqZWJTZhl2s ZrHNl1b8cEyS8vuiSZPjFnzgzVoBS1QE136ke/6P3rFPR4zPLyhZqKbCsGHR/BDfSCzeRwoE zJ3aV/8kmuyAfx1iTWVBLKJsPkiNS08jf+Nb+leo8Vab7AnolDTIr0o06bWas1AsIRG31/Zs wBRDlfjmKZ08f+B6a1SpkhdltGozljNt1PLEposY19aw5Ou3bqFQkYtooTfnZPnOwU0EXgiz 6wEQAM8iX+Y1mi1l3h876YmnuP8JSO1s6k0lABDO42pZaSp6Q9mFOabB7To80q1qEXCznlcR nExrN29WwXkfL2tcV4t/JFb0o4+6J9MmMUR3kdvRu55b/AGncNj0oggZDP8e5cLikv8v1ReV c//RPKSHVKnlmC9gtM0UHWpwHyyoplHi4sMJ8WyzGKfnN1eg7HlSx0xJAE7wKQP59mIMMj7n IXnk7bnGO7oaqy+i2vAxcdJPN6jvFgFCsKECL4NJCw6ifrY05paYRXza8JVwAcCzw0Sx4gZi JXC+gE4p80qNRrwR5AQuyLQNO9EfKLdnKg/85ag7xjB3ZWYMZNbj7HwCB+T16jOS+6lgGONf vctIp+hTFxXoCEnMx96FydDkqaBBjAU0JkbxhpMWFhzKzEILa60fxDxOSYHSs6h3bLk3D+gO i8j1SUPC4Olj9od7VIZDKGLd/nLw5qSt2c0H69cW1M/KS5zVARZQPb8Cqa9SAWdjmGw6MHvc WoYK4mT1arhwUlmrqUMcNqA+foGjDGPsxCQxqqIU2rB590n2wafu65UuyPUmzxOGdcb31I4E kkoBnM6G5nN4uZUCQPXl/DFlq/cfFI7LmIL2aZt6idehfvd+iOND4HDjRzrYDhz1FQn2Ihoi qHNMO4zSpWv35fl5kHfo1iYojwcd/aiyu4V8wo7TABEBAAHCwXwEGAEIACYCGwwWIQSoIHw/ Sr677ZtN+EmW6ye6MV/HfAUCZ86rzQUJC6crYgAKCRCW6ye6MV/HfK3jEACTixlDX+Xa53/f RS4AgdiLLcPnp63HYSe58cul/U8mGfcP8/wZXkPFzpsQZRONmj0vNHFAlTlQHpBnMmqxUvVx SosHPMrSwukjV/zDgTeYe8iZbqDjUEFIJvEU4mQd1O2/bfBCi0N0GuleN+oyu4cHhgJIN/Ym 3yJks/Aeprt4k3YwTZsGRCQ4fVyfmnHyYGLNKjtR/ubibG1I4hDVhf1IwrvsAcpHw1UKf/5+ ZA3O6ZANAwVG2iAidR2LhFPiBAFWtPmI0dX5i8+Hu5CmXlHkYK2TV8ys9zDuOEiWEcMR/9tA agcgw3orjj0lvFiSGYI9+w1NxO76T/by09nWsLXr8Mas+pFaKUP0Wk9vZjj+8TqPTkoKOMJS /+vsAGjFLM1ZfFyLRvVVJH4gaWs5zie533zYlArVA1db36+YGTBWzuHEawITPaLq/FngWb+e bxL9a5LkhEdTCnQVhBaC0yBbplRQcGwsc8IRK0sdWiRIGtlr6NMt1yw+3TwVsBPaYvLM/qfm pBZkz7hBNr2qTLcl1xeP4MMdMO2ubBUGTR5B+sOzaT1qIBe5XNFkhffLTR+YmkW1PXWz7tcO yQcudEYHvYhKegsw0Zjv8iQIQw3yeV0WbQAs+LGQAfwpVURhZgBk3DH9gQBFkZYi8YWX/zEc 5hMMZIzTI4AtIcgA3xe4Ew== In-Reply-To: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV0P278CA0016.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:26::26) To ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZRH2PFAD84B9AF9:EE_|ZR3P278MB1305:EE_ X-MS-Office365-Filtering-Correlation-Id: 2d1cd1c3-ff15-4d7a-8287-08de73bdd4e8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|786006|19092799006|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Ym9jOFQ5U0FmK0ptQ2JmdmFPQnBLNWFIYVEvbXlTMHdqb2YzL0xuL1gycjNF?= =?utf-8?B?TjM5Mm4yUTdBdC80ZlJmZWo2OFN0Q2trblZzek8rMVdIQmt3VDZDWi9XTjY0?= =?utf-8?B?Ny9hTVVTMzdKUkpxU1QyZ211Yzk5QTFmbThHSXRnY1NhV3REUnZZVVFKei9k?= =?utf-8?B?N0l6UURzRzM2N0hxK0J6K09lR2pEVk15a2diR3lvcy8wYVBYK2Y2MlZXUFEx?= =?utf-8?B?aHJKc1NuanByWnpZNWZROG8vRzhJMEhGNWV0R3JlQXVIUlQ2RkttTnl6b3FW?= =?utf-8?B?SW5UUWhwKzJja0NwMDFtNnFDcGxkSEQyeEF4NWJCS29PV2JhMVVwNWo0ZTJZ?= =?utf-8?B?MlFoVlFzWGNJUmcxOW1MdGFlVDhZTi9QZEU4OTBBS1FkcDlvalJzQjdRaHdU?= =?utf-8?B?d1V6bDJOTHNrVHdNcStoeGJtMHJFeG1NdXhtY3g2V0ZkSE1TQndhdWZJM1Zu?= =?utf-8?B?WElqTHlsUnBXQjlzVkI1U0tJNDR1eHdic1V6MWJFVlVZSWFOeXhyZGlXUHZr?= =?utf-8?B?L0lHRnVIcFRWSnArYWtXUzN4RmxtaEF0NE8zOVNOOFMzeng2WXhjanlSMHlJ?= =?utf-8?B?RW1LSzluMUw3MXVmUnlCckdPZDJ4MGhSd0hzcEhpUHJibjllVXY1WE1zSmJB?= =?utf-8?B?dnV2WVc2SHdyallWN042TFg1bVpob2o1d1MwaUhYYmFHUHI1djhTWXJhbGRS?= =?utf-8?B?MkhnVWEyd3kwRmxKK2tocWpPOEFkU2RRSjYvVTBTR1UrTFl3VUluMWFTMVA5?= =?utf-8?B?TFNlQVJYQWJhQVYyV1gvSkc3VHVGc2p2WWdmRE5CaTNuQ3RFNmhKays3c3E2?= =?utf-8?B?TXV0bDVnUVhzL0JIejRYTi9CWFZ4anFyMXFDS3RrbmR4alByOVRBT3BnMzhY?= =?utf-8?B?eE9tajRJK1o4UW9PUXNvV0RPQ3RQb2Y1UjUzK2pERVhucFRSMUpWL2UxKzQ1?= =?utf-8?B?SmJLUldMZncwaVVEUVk0c0kwSW1WMzJmMXlGTmsvVGppUk9ZZHo5UHRJNWlR?= =?utf-8?B?SVJTUFZ0QUFhQktqYlN5RXFIYUdwa0hoUUVZaElvVHVQVzNUUVRMWjZ2Vmhs?= =?utf-8?B?MEJuc2dHZ1dJT05XVmM0dzNuRUp0S0hJcC9Rd25OZGhPdTJRL1FMN2cxY2Nx?= =?utf-8?B?N2VHT3R5am9uS050N1ZYV0Jwa1Fma2ZxZXY2TWNwVVZ1ZWtINm5sRTlFUE90?= =?utf-8?B?WmI3S3YxMVA3djR6TE9TTjdnR1g5ZWtHRVVrOWtxdEFHQVhzZUx4K2FNU05j?= =?utf-8?B?WWZuVzluakg4R09GV0w3dGwxUzZIY0x5Z0JLd3RjZ2ZBTGdPUW5jSC80ZFhT?= =?utf-8?B?RTJHam5wSndGWE14OTQ0NnlXWm1mMVR2VFhSV1JpeWNuRFVQcHJQZ0Z3U1JX?= =?utf-8?B?QVdub0JrMDRBUTlFaDBpSklZNzhzK2N4aFd6d0VGMzFYTkNScThCb3VNZ3Bk?= =?utf-8?B?RXRnelBBOEd2TE1wdUMya2VMZ1FxOWhxNC9CWXFIbEVKQXNBVUVUalVhRWg3?= =?utf-8?B?MCsxNFgxQUVNblRlZVBMam1xbU9tQWcrcmUyRnk2dC9ONXFkYVZPUFhpeVg4?= =?utf-8?B?OUpsWVpEVVlKNWpZcVk2VUpqUElrUFRuSEpzS1RGYWtLMXJOcjJkODZ0SGhG?= =?utf-8?B?eGk3U0xDaktsbUVVbG9ITG1HKyt4NjRsTDRTRG1wcURId1h2dnowNDNiWkZF?= =?utf-8?B?bnd4WUNwUmJ2bXlnZTRDRVBlYll4NGRhSDhZRHZJeGx0bHcvZ25PU3c1TzMy?= =?utf-8?B?N1JsNkIweElrUE0xamV2a1plYnVqZjZ5L3NOcnNuUFIyMFArbFRiRXJIdTYr?= =?utf-8?B?QXFFaitLeWp3dUs3blpZTXNnYmVNUThaVHMyUEVDTjd0QWpJa3V5aUs2WW5p?= =?utf-8?B?Zms0RWdLWFJFS1QzSEZGdnJrM0ZNOFlNczRROGkzaUVmdURMdnZSdGVXWFVv?= =?utf-8?B?OUpMN2kyYUdCRFRwSHYyRjFtNmU4VFFlOW10TEM5SUJjM0NKREUwZ3ZxUTNC?= =?utf-8?B?eXFrNHRoMFNPWkFQQ3dqSFZKOVk4UDBuSDBNblRUNUg2UVlVYy9pOXYvaFJY?= =?utf-8?B?a0VoL2UvOXp2Vk03dnJoU1ZwRVhxeXI5RGR1VTdkdmlaMnNpVldaNUJ1TUtI?= =?utf-8?Q?G8CI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(786006)(19092799006)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TkxMdi9jWTNZUWYxU1hSbkp3ZlZMZmlRWW8wRzh2WWxweE5SeTVqbEN5MWtW?= =?utf-8?B?WXVEQTNMSFBtSTdWTTN4ai9NRW55OU5XVHlYZ2hZY1d2SVdLMFpnT0VRTk4y?= =?utf-8?B?MElGRlkyUlg5OXlVbi91M3R5OExuVXVKYkt2b2ZHdWpaSmtnYmY5ZXpTZmdm?= =?utf-8?B?VWlHSnRNNEREM09RQ2RKRXJNM2ZHc2kxZzE4Mk1hUWNhY2Vna0FQQmhLMDhm?= =?utf-8?B?TXljMGVvUzFYbUZXeFVnZDdzcnFXY3c3c3hJVHdvVEpTRXFwRFRsZGlJMHFH?= =?utf-8?B?M0QrL002dTl6bkpGSkdPbUtITVFoWmVEUi9icEprZG9UZXlRSmVhVEk0bllo?= =?utf-8?B?ZHJOT09hL09qNGM2dmF2WEJNaGxPcU5qK3ZFeXdsejNPSndFWXVFSkFYVDEy?= =?utf-8?B?UkVEWkZRZ09uTkFqNmxweElXUG03d04wS2xyOUVicmdSNExEaHhmM1c3YmRE?= =?utf-8?B?M3dNdE02KzlmUWJwd0JrOFBkOFNVZ25tVmVWZFdSKzBiYjR2TUk5WXlmOG9n?= =?utf-8?B?UFh3NHhBcDhFWU5sYkt1aFNVcllwVUk0Ymd3OWVRTHdNaWVPUVh0UlhSSU1o?= =?utf-8?B?Z1dabENDWjlBaFVQRjhnOFhhUmtnNlFLalU4NmpHRHplMkNQUHdPSWxPRjlE?= =?utf-8?B?NnU4RHdMU2V6dGljdUs0dDZWTUc4ZHJLeE03ZDZZV2ozVHV5cEZWZmI5RzR4?= =?utf-8?B?M3VJVU9vczNqSDl0SmdPcjZZeTk1b1U3dXlGM3NiRkpMbzUwc2ozYzJucjdH?= =?utf-8?B?M2VtcEsxaEI1R0kwL3V5OGtSSzBJb2Zqa1RJclNCWkFBQUN0S3hpdklDZTRQ?= =?utf-8?B?ZmNqcUZDWHd0VGhMalBRWkZyRUl1OThIQ3hubXF0S296aktVL21YWVVnVW9h?= =?utf-8?B?UHVvV0M2Z1M3VWx5SFNCMjhBZkZnL051Rm8zZXNoanRsNm5pdVh5YTRnZldG?= =?utf-8?B?OER6blZ2Rit6bVZZVnR3VEt0VGlDQkgrbGxDNWc0OTlkWWZLRUp6bEhmS2RZ?= =?utf-8?B?U0E1cmRPRXFnR3hBNTVMNzY4dUVVZ2pYaGtYL0xnZmNIdFVsNE9qRC9tb2FO?= =?utf-8?B?QlZSZ2QzajdtdUNwTkt5VTl4ZzlGMUNYcXJKdmlpbTdiVzJwOUVkYjJlMmxy?= =?utf-8?B?T0FHbVNyWTE4YTZFSlVqclo5V3NGc29zL1J3cjFQOWhYcElpT2YwcG1HVVVV?= =?utf-8?B?MzR0ZEdBRG5yMlUxYjJlUmZwb090c3hqMmNjRllWZFplbHhmczgxZTdOZXpv?= =?utf-8?B?T01HTDRoODRPWDVXOERkaEdkR3RmK3J3aWZRcHZjTG1tQjFPYnJZTVV3WUdh?= =?utf-8?B?SUhUMms4RFBkR3BaNC9lZnNad2NqSXhFYlhVTEN6R0hJZDlVYTRlM3p3RE1X?= =?utf-8?B?NC96T1RSeU1NTHVhTlZMR0EyUHAvT3hVbUlvYU9ZMGp0N0d0M3B0T280ODN5?= =?utf-8?B?dWdOK0FTeFRzK0lBR2pWK0tNT0RDYlNPTzROd3pBS1N0TUFvMjFsdzluTllD?= =?utf-8?B?M1V5Z3Q0ODJxOG15VzdnMjBtN0Y3RVhPVnhzQm0wM1hXSjJkWkp4dFFlNkth?= =?utf-8?B?ekovSDM5RHRLTm1ZY3BzVEcyOGpocmRPTlJMWC9pbHRLNXAxMUtvTjEwMFFT?= =?utf-8?B?TlVQMm9wWUdPa1RCQ2xLMFdUb2luSGxteVZFaGwvQ1hjSis3T2lLWHNqTzFN?= =?utf-8?B?SGhvNk5wVmdsSUE3eUtzQ2JOU3N1Wkp6T09rb2lPbzFLbk5ieUplVEdGSXJG?= =?utf-8?B?OVVPNzN6dTQwQmh4Z0RnZllMMFhqd2o3NXN6NUNaZkxKZmlrZjlOWHlCYzFV?= =?utf-8?B?M0RZTS9UTi9hK3hpdUp1V3JFaUxxN2d1ZkZjbHFIL3dmU1RneE1LZllkdmhr?= =?utf-8?B?ZVFneVNnaXNZWUtJWTN5MzB2MjlQam1rM0ZyYWszK0Zwc2t0SVFWbmx4Q3dM?= =?utf-8?B?WVF0eXQxMnh1RUFWbHhsdG5rVjJ6WTRjYUUxQ3J0NERMZ1ZTY1l2a0huSW51?= =?utf-8?B?a3QzSERWRUl2V2M4MFRHVi83NXhrbHVGQ0pQalB1NnlkZTZVMk9pcnIwOVV3?= =?utf-8?B?UkV1azN4b25USG9ub0tYZEVYSlByYmJaV05oKzhDMkgwY0F1MDRrNE5uMzQr?= =?utf-8?B?aElaSjhrMk16aUhQUHVlN0E4aVgvR1B4ZDM4akllMVZGcHFpU1M1L0NOZEg4?= =?utf-8?B?SWQ1d0l1YjZyRlRLcndjT0hOYk9SQTFrRnFHZ3g0ajYybTZKcWFUWTVUZStu?= =?utf-8?B?b0NnV2ROdGQxT252S0ZsdExudW5rZDlWQU9nVW1hb1lubDBNMnl4TVkrZk4r?= =?utf-8?B?ZHpOTjg3b09qcUlUMXZxelR3YStuR0RkYU5FMVkyV0N5dVhjK25kZz09?= X-OriginatorOrg: epfl.ch X-MS-Exchange-CrossTenant-Network-Message-Id: 2d1cd1c3-ff15-4d7a-8287-08de73bdd4e8 X-MS-Exchange-CrossTenant-AuthSource: ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2026 16:00:29.3598 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f6c2556a-c4fb-4ab1-a2c7-9e220df11c43 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: b/9BW3xvvqC31HOgR09P5gEb+ePTRx2lYei65pyCfvTmU9e0O1dD9qnbxmeUSMz+JakLs+fI2V1UiT2sU5WrGymRQGFKS4DTEiYolCKesXw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR3P278MB1305 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=40.107.168.137; envelope-from=florian.hofhammer@epfl.ch; helo=ZR1P278CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.358, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.659, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @epfl.ch) X-ZM-MESSAGEID: 1771949171276158500 Content-Type: text/plain; charset="utf-8" In addition to the flags specifying whether general-purpose registers are read-write (rw) during a plugin callback, we add an additional flag explicitly stating whether the PC is writable. This is in preparation of a patch that allows to explicitly set the PC to divert control flow from within a plugin callback, which is currently not possible. Signed-off-by: Florian Hofhammer Reviewed-by: Alex Benn=C3=A9e --- include/plugins/qemu-plugin.h | 3 +++ plugins/api.c | 3 ++- plugins/core.c | 29 ++++++++++++++++------------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/include/plugins/qemu-plugin.h b/include/plugins/qemu-plugin.h index 17a834dca9..a6ec8e275d 100644 --- a/include/plugins/qemu-plugin.h +++ b/include/plugins/qemu-plugin.h @@ -325,11 +325,14 @@ typedef struct { * @QEMU_PLUGIN_CB_NO_REGS: callback does not access the CPU's regs * @QEMU_PLUGIN_CB_R_REGS: callback reads the CPU's regs * @QEMU_PLUGIN_CB_RW_REGS: callback reads and writes the CPU's regs + * @QEMU_PLUGIN_CB_RW_REGS_PC: callback reads and writes the CPU's + * regs and updates the PC */ enum qemu_plugin_cb_flags { QEMU_PLUGIN_CB_NO_REGS, QEMU_PLUGIN_CB_R_REGS, QEMU_PLUGIN_CB_RW_REGS, + QEMU_PLUGIN_CB_RW_REGS_PC, }; =20 enum qemu_plugin_mem_rw { diff --git a/plugins/api.c b/plugins/api.c index 04ca7da7f1..e754b7c69c 100644 --- a/plugins/api.c +++ b/plugins/api.c @@ -458,7 +458,8 @@ bool qemu_plugin_write_register(struct qemu_plugin_regi= ster *reg, { g_assert(current_cpu); =20 - if (buf->len =3D=3D 0 || qemu_plugin_get_cb_flags() !=3D QEMU_PLUGIN_C= B_RW_REGS) { + if (buf->len =3D=3D 0 || (qemu_plugin_get_cb_flags() !=3D QEMU_PLUGIN_= CB_RW_REGS && + qemu_plugin_get_cb_flags() !=3D QEMU_PLUGIN_CB_R= W_REGS_PC)) { return false; } =20 diff --git a/plugins/core.c b/plugins/core.c index 42fd986593..7220b9dbb4 100644 --- a/plugins/core.c +++ b/plugins/core.c @@ -119,7 +119,7 @@ static void plugin_vcpu_cb__discon(CPUState *cpu, struct qemu_plugin_cb *cb, *next; uint64_t to =3D cpu->cc->get_pc(cpu); =20 - qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS); + qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS_PC); if (cpu->cpu_index < plugin.num_vcpus) { /* iterate safely; plugins might uninstall themselves at any time = */ QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) { @@ -395,15 +395,16 @@ void plugin_register_dyn_cb__udata(GArray **arr, enum qemu_plugin_cb_flags flags, void *udata) { - static TCGHelperInfo info[3] =3D { + static TCGHelperInfo info[4] =3D { [QEMU_PLUGIN_CB_NO_REGS].flags =3D TCG_CALL_NO_RWG, [QEMU_PLUGIN_CB_R_REGS].flags =3D TCG_CALL_NO_WG, [QEMU_PLUGIN_CB_RW_REGS].flags =3D 0, + [QEMU_PLUGIN_CB_RW_REGS_PC].flags =3D 0, /* * Match qemu_plugin_vcpu_udata_cb_t: * void (*)(uint32_t, void *) */ - [0 ... 2].typemask =3D (dh_typemask(void, 0) | + [0 ... 3].typemask =3D (dh_typemask(void, 0) | dh_typemask(i32, 1) | dh_typemask(ptr, 2)) }; @@ -425,15 +426,16 @@ void plugin_register_dyn_cond_cb__udata(GArray **arr, uint64_t imm, void *udata) { - static TCGHelperInfo info[3] =3D { + static TCGHelperInfo info[4] =3D { [QEMU_PLUGIN_CB_NO_REGS].flags =3D TCG_CALL_NO_RWG, [QEMU_PLUGIN_CB_R_REGS].flags =3D TCG_CALL_NO_WG, [QEMU_PLUGIN_CB_RW_REGS].flags =3D 0, + [QEMU_PLUGIN_CB_RW_REGS_PC].flags =3D 0, /* * Match qemu_plugin_vcpu_udata_cb_t: * void (*)(uint32_t, void *) */ - [0 ... 2].typemask =3D (dh_typemask(void, 0) | + [0 ... 3].typemask =3D (dh_typemask(void, 0) | dh_typemask(i32, 1) | dh_typemask(ptr, 2)) }; @@ -464,15 +466,16 @@ void plugin_register_vcpu_mem_cb(GArray **arr, !__builtin_types_compatible_p(qemu_plugin_meminfo_t, uint32_t) && !__builtin_types_compatible_p(qemu_plugin_meminfo_t, int32_t)); =20 - static TCGHelperInfo info[3] =3D { + static TCGHelperInfo info[4] =3D { [QEMU_PLUGIN_CB_NO_REGS].flags =3D TCG_CALL_NO_RWG, [QEMU_PLUGIN_CB_R_REGS].flags =3D TCG_CALL_NO_WG, [QEMU_PLUGIN_CB_RW_REGS].flags =3D 0, + [QEMU_PLUGIN_CB_RW_REGS_PC].flags =3D 0, /* * Match qemu_plugin_vcpu_mem_cb_t: * void (*)(uint32_t, qemu_plugin_meminfo_t, uint64_t, void *) */ - [0 ... 2].typemask =3D + [0 ... 3].typemask =3D (dh_typemask(void, 0) | dh_typemask(i32, 1) | (__builtin_types_compatible_p(qemu_plugin_meminfo_t, uint32_t) @@ -534,7 +537,7 @@ qemu_plugin_vcpu_syscall(CPUState *cpu, int64_t num, ui= nt64_t a1, uint64_t a2, QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) { qemu_plugin_vcpu_syscall_cb_t func =3D cb->f.vcpu_syscall; =20 - qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS); + qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS_PC); func(cb->ctx->id, cpu->cpu_index, num, a1, a2, a3, a4, a5, a6, a7,= a8); qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS); } @@ -558,7 +561,7 @@ void qemu_plugin_vcpu_syscall_ret(CPUState *cpu, int64_= t num, int64_t ret) QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) { qemu_plugin_vcpu_syscall_ret_cb_t func =3D cb->f.vcpu_syscall_ret; =20 - qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS); + qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS_PC); func(cb->ctx->id, cpu->cpu_index, num, ret); qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS); } @@ -584,7 +587,7 @@ qemu_plugin_vcpu_syscall_filter(CPUState *cpu, int64_t = num, uint64_t a1, return false; } =20 - qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS); + qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS_PC); =20 QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) { qemu_plugin_vcpu_syscall_filter_cb_t func =3D cb->f.vcpu_syscall_f= ilter; @@ -605,7 +608,7 @@ void qemu_plugin_vcpu_idle_cb(CPUState *cpu) { /* idle and resume cb may be called before init, ignore in this case */ if (cpu->cpu_index < plugin.num_vcpus) { - qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS); + qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS_PC); plugin_vcpu_cb__simple(cpu, QEMU_PLUGIN_EV_VCPU_IDLE); qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS); } @@ -614,7 +617,7 @@ void qemu_plugin_vcpu_idle_cb(CPUState *cpu) void qemu_plugin_vcpu_resume_cb(CPUState *cpu) { if (cpu->cpu_index < plugin.num_vcpus) { - qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS); + qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS_PC); plugin_vcpu_cb__simple(cpu, QEMU_PLUGIN_EV_VCPU_RESUME); qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS); } @@ -885,6 +888,6 @@ enum qemu_plugin_cb_flags tcg_call_to_qemu_plugin_cb_fl= ags(int flags) } else if (flags & TCG_CALL_NO_WG) { return QEMU_PLUGIN_CB_R_REGS; } else { - return QEMU_PLUGIN_CB_RW_REGS; + return QEMU_PLUGIN_CB_RW_REGS_PC; } } --=20 2.53.0 From nobody Sun Apr 12 04:22:17 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass(p=quarantine dis=none) header.from=epfl.ch ARC-Seal: i=2; a=rsa-sha256; t=1771948918; cv=pass; d=zohomail.com; s=zohoarc; b=UKAaToNBDMwY5G98pnuMiD/u5KuWQgNe6EA+dxc7IDzrxTfYonNL3SfU9qOXTy6KMvUYUqZOJKnqCxuh+51FUB0CQphqlrXrvf+0GAUfCofiBhSlv2EkvxE3CPhqZFKZZGLRXzh3TccX34G2xdhaaGaaDDxhv1HoGSZGwc5r5FY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771948918; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=q69hNXwawucHKJ50UCJzoh38UoKFwQt2bN7/DFlbp1A=; b=l/bTmU941O7PIY5XC5JLNHgTVzcOga00WA6dZN1Sm7zplWHUxZB6em0n1RwWkrRlEXknOwj3uzW8QcdEEVBkqBiIn85YQ3sjegS7Wml+/oNU6KnZLB5tbgbZVqn971pX1+mGbOBptMU15VMcmCkjl5ZJX8GyLrCvvD+JlbU6N/g= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771948918230985.2881040302792; Tue, 24 Feb 2026 08:01:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuuqA-0000Tz-7n; Tue, 24 Feb 2026 11:00:50 -0500 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 1vuuq6-0000Tj-4t for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:00:46 -0500 Received: from mail-switzerlandwestazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c214::1] helo=GVAP278CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuuq2-0001WE-5J for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:00:45 -0500 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) by ZR3P278MB1305.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:72::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Tue, 24 Feb 2026 16:00:30 +0000 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c]) by ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c%6]) with mapi id 15.20.9632.017; Tue, 24 Feb 2026 16:00:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FKSiKWTFCeXw4UP4lSpKc4EN7MvZx4HvlaXNnwZNPVFnvisNbe4OkAnI1GT/yryYET8vThXcF4rs7OWKYy/S+dhsOJ5Gv//aX5SvghsyNMdod1zT1V0KAZB6lcXBX6Tk1xTYboZXhjNfLoCt3bv5qBi0YL0LSDA0GH2xopzhtmUcEM1f0ZOxpnmAGdPuPhMH4M3A0cJOAzOoYQn7YI2rlL5L2P09+xkh8eKOmv8l2a3arfR8iXB6AlkWppXyTNPJ5psaWho5fxD2jDxYmf7pX59nLbp0GASnW5c2IFjBEbRJnoXKVENnxJFtKDx93yKMPmCjHSFLtfFa4gqRNA10Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=q69hNXwawucHKJ50UCJzoh38UoKFwQt2bN7/DFlbp1A=; b=JU1NlssrUSxua753rgiq/OMeR991CSdqjrye/SqzgOX60Dvl46DzYML2t8SmO7kGBEcZ4+OPTDV5GtbHLhgw4Pm2xwqw1wiZwMZv/D2mUUBTTp2x0Fk0+Fqo8+AgHlDOdoFUJHW9O4rbmllxlgArpAJuN6MTAXQC3FRE702u8gsO8UfT8GaQQYQeaZ2Hsx7QNfzASHEGvFMzqG1TkasdnGLxXk1DI/4pZJ0/0rVHHoBG2OISSxbS3UBs0mnGlKxo/ZPh/NMih87jv7u+VEeB92ob9+RXsXW+C3nBhgfsdxiqHzt3arXTgdlX/ILqDZpB3gmnWurkNTUNE8BvWqpWgg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epfl.ch; dmarc=pass action=none header.from=epfl.ch; dkim=pass header.d=epfl.ch; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epfl.ch; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=q69hNXwawucHKJ50UCJzoh38UoKFwQt2bN7/DFlbp1A=; b=fy1HAgPmqms66dfdKs1Dh4FuM2mzg9valRYXdp9s6L3gAuzmwNN4/ZcG2E5MHFVOwwyx+SgQUymBvnJ0O19ccC7H/RNT9QkY7XZaI6B0TOaV43fjuE0pPZEGOdHero0Bbo9ZFXPOZri6XScMn683A3J/BD8O9bSae9yNvrJ2p0Q= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epfl.ch; Message-ID: <8096590c-bf13-4e5e-8167-ab38a37180bc@epfl.ch> Date: Tue, 24 Feb 2026 16:50:59 +0100 User-Agent: Mozilla Thunderbird Subject: [PATCH v4 2/7] linux-user: make syscall emulation interruptible From: Florian Hofhammer To: qemu-devel@nongnu.org Cc: alex.bennee@linaro.org, pierrick.bouvier@linaro.org, richard.henderson@linaro.org, laurent@vivier.eu, imp@bsdimp.com, berrange@redhat.com References: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Language: en-US Autocrypt: addr=florian.hofhammer@epfl.ch; keydata= xsFNBFw7TEkBEADaJzHcW02rDYHgS2X2kjyXLs99tnNpww/r3MlWEkrKxgfgIRbtVQTJ2vNw mxIhJnAo/Ltu2VoEXU1WGwoMGv8wxquIuE1RBnYghnYPFd4SOMX8fXz5JylHpl+vPCWiP8U0 fFWfVL1vyldQG4aVtufaJ1VEOU8zsw6YeXzxWJJ7ppUag4teMKuFya69tEEN74KLkDMJRxGk pj7rHW8Y+xBdNW9hQ2vAXhWAtm64NtCtJcJYP8RNl/jqlqYTP1Voj7byXym9HUM7NGEbGtrw 4KKi9ws1yZv9BkW3ECBg5Q1w3WYmHfwqSa+8vrD2ahNieDYNu7veYP0oMaohumRgVhiaMscD IY8wqyt6K93RiwXDQjDAqwE44xrZDr4jjCUAm1D/7WYZWtzhsiDq80JasMbXd8SLKGr96zX5 6vJGxa6OvyavRO7Y7DGK/dNPWdZqAC4QlluibdRsbkFLtBg8d60sVxYW8A9o46rrQB8qzglc joPhDebr8/NsI0gnzjgpgmNbresqne4/JIylUuJEwYcOWZqKqDw9U03uTFk/Vp6AxmRquWpy XZJVBsMNbunclgSelZIt2nzCa2nXR5MYyV2Y8ays+gSAPeHFOc6a8JWNLhgVKUed12XVrMUQ bmMmTFWWqfrx89Up4a+jW7uGIzexOeXUXKeE1j0uGsRLk6CF7QARAQABzTRGbG9yaWFuIEhv ZmhhbW1lciAoRVBGTCkgPGZsb3JpYW4uaG9maGFtbWVyQGVwZmwuY2g+wsGUBBMBCAA+AhsD BQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEqCB8P0q+u+2bTfhJlusnujFfx3wFAmfOq/AF CQ10kyEACgkQlusnujFfx3wl9Q//cNbHsBz6YvTzzi3fddVVYnEn7YBPMAw0r4vxtYpLCvpD sKOfMaGYYoV3AbVton2w53qTFcmTC/7J0/UxIi/cH1sWgVipZuVNrtESZFhkKAKpqJvHamPl uDD0kmINzztgNZOz44iUdGkSvqQW6ou5WpSEk9YEks4KPs/EH00l7hQ8YkfR/8oN63OxpYri W4+obeU45fBPPgOO1U1eMtWp/QBvo2qw+GiRQkq8kjKDTt9AYYPfcA+AdnhocgrQ2SdtcBuZ bb1BQnKEqWM2gVpvk/ujyZZktgBvqtoubAwaMpAGNgCoDju/zPf8wtbc/yo+AT+iiRQKuilm mQ7U0THfk3+DewN9CTZUiL1X6NdoUuLMqdSI4HCpo/d/N59wMkRKXHG2h/pKmTLbrHGFA4ZY a4zNN98yyPcq6OeAqurWbotXm7yxraXKkFD5dbBJcZYc5gJx+rZg2pIy+rYtQKqZWJTZhl2s ZrHNl1b8cEyS8vuiSZPjFnzgzVoBS1QE136ke/6P3rFPR4zPLyhZqKbCsGHR/BDfSCzeRwoE zJ3aV/8kmuyAfx1iTWVBLKJsPkiNS08jf+Nb+leo8Vab7AnolDTIr0o06bWas1AsIRG31/Zs wBRDlfjmKZ08f+B6a1SpkhdltGozljNt1PLEposY19aw5Ou3bqFQkYtooTfnZPnOwU0EXgiz 6wEQAM8iX+Y1mi1l3h876YmnuP8JSO1s6k0lABDO42pZaSp6Q9mFOabB7To80q1qEXCznlcR nExrN29WwXkfL2tcV4t/JFb0o4+6J9MmMUR3kdvRu55b/AGncNj0oggZDP8e5cLikv8v1ReV c//RPKSHVKnlmC9gtM0UHWpwHyyoplHi4sMJ8WyzGKfnN1eg7HlSx0xJAE7wKQP59mIMMj7n IXnk7bnGO7oaqy+i2vAxcdJPN6jvFgFCsKECL4NJCw6ifrY05paYRXza8JVwAcCzw0Sx4gZi JXC+gE4p80qNRrwR5AQuyLQNO9EfKLdnKg/85ag7xjB3ZWYMZNbj7HwCB+T16jOS+6lgGONf vctIp+hTFxXoCEnMx96FydDkqaBBjAU0JkbxhpMWFhzKzEILa60fxDxOSYHSs6h3bLk3D+gO i8j1SUPC4Olj9od7VIZDKGLd/nLw5qSt2c0H69cW1M/KS5zVARZQPb8Cqa9SAWdjmGw6MHvc WoYK4mT1arhwUlmrqUMcNqA+foGjDGPsxCQxqqIU2rB590n2wafu65UuyPUmzxOGdcb31I4E kkoBnM6G5nN4uZUCQPXl/DFlq/cfFI7LmIL2aZt6idehfvd+iOND4HDjRzrYDhz1FQn2Ihoi qHNMO4zSpWv35fl5kHfo1iYojwcd/aiyu4V8wo7TABEBAAHCwXwEGAEIACYCGwwWIQSoIHw/ Sr677ZtN+EmW6ye6MV/HfAUCZ86rzQUJC6crYgAKCRCW6ye6MV/HfK3jEACTixlDX+Xa53/f RS4AgdiLLcPnp63HYSe58cul/U8mGfcP8/wZXkPFzpsQZRONmj0vNHFAlTlQHpBnMmqxUvVx SosHPMrSwukjV/zDgTeYe8iZbqDjUEFIJvEU4mQd1O2/bfBCi0N0GuleN+oyu4cHhgJIN/Ym 3yJks/Aeprt4k3YwTZsGRCQ4fVyfmnHyYGLNKjtR/ubibG1I4hDVhf1IwrvsAcpHw1UKf/5+ ZA3O6ZANAwVG2iAidR2LhFPiBAFWtPmI0dX5i8+Hu5CmXlHkYK2TV8ys9zDuOEiWEcMR/9tA agcgw3orjj0lvFiSGYI9+w1NxO76T/by09nWsLXr8Mas+pFaKUP0Wk9vZjj+8TqPTkoKOMJS /+vsAGjFLM1ZfFyLRvVVJH4gaWs5zie533zYlArVA1db36+YGTBWzuHEawITPaLq/FngWb+e bxL9a5LkhEdTCnQVhBaC0yBbplRQcGwsc8IRK0sdWiRIGtlr6NMt1yw+3TwVsBPaYvLM/qfm pBZkz7hBNr2qTLcl1xeP4MMdMO2ubBUGTR5B+sOzaT1qIBe5XNFkhffLTR+YmkW1PXWz7tcO yQcudEYHvYhKegsw0Zjv8iQIQw3yeV0WbQAs+LGQAfwpVURhZgBk3DH9gQBFkZYi8YWX/zEc 5hMMZIzTI4AtIcgA3xe4Ew== In-Reply-To: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV0P278CA0016.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:26::26) To ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZRH2PFAD84B9AF9:EE_|ZR3P278MB1305:EE_ X-MS-Office365-Filtering-Correlation-Id: cfd94c19-6fca-4ad2-0d01-08de73bdd554 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|786006|19092799006|1800799024|13003099007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZHlaQ2oweWZ0N2xlbnlsbEZoUE5yQnpHVjlvS01MTG1McVhjUHlQM25mUUpr?= =?utf-8?B?VWUyS1orRXJTTjZhNkd1Z3JCVDBTN0lYMEt5NUxRZndSRHl4LzVINWhwOE1n?= =?utf-8?B?clVVZ1YzOGxibzRJcTBtSWNGcmJVOFh1a1c2YnZKbElQRHM4ZVBaRnFSbW9m?= =?utf-8?B?bnY5UmVjN0xTWHVreDcyMlVpL011R0FLdWFnbHAyM3lTZU0vNnpqSGJ4UCtk?= =?utf-8?B?NU9RWXpYK3hoUmtPRnhVN3hPejN0WlZhNENZL3lyeFVuZ1RxZTY5K21ML3dr?= =?utf-8?B?RitjRGZ2UGJpd2IzVVVSd2toZlU1b2MwTjU4MUVISDlVMEZHNkhzdHBxYU1B?= =?utf-8?B?ZGZQcXRJdFdlVFVUSUV5UzNZbll6MGcrZXZwaFRMd1FCWEQva1JBZEFLbFFP?= =?utf-8?B?YzdKcGpvUlZBUENhY0JveVBaU0VFSmJEYUsrK0kvSU9PeG1USy9TbCt5eHhh?= =?utf-8?B?Qm0xMWpKL3JIdDl5K0pFaXhZMm1qZkI4R1ovenMvelRZUm1oZGhjSFhwTjBC?= =?utf-8?B?cXlYTzRRRkRVdUkzWnN3UDZOV2twNGtGYXpaNEhWTDVWRUhFVmdLMlkrcFFY?= =?utf-8?B?Z3RHWFBhQi9tai9zQXRRaHFsSzVZY1hLc1Nrd0NRZlJtZnJxU1pub3Y2YThF?= =?utf-8?B?L24wRWVIalliSU4wdTVLQlQycURidHNZTGZ1bUtuaDdWMEFjYUF1ZGc0ZVBM?= =?utf-8?B?UFRQSUFlOEpTR0lsVGc4TllKMmllM0FpWTJjR3UybHFGVnVRdUkvVkdLeTlq?= =?utf-8?B?ck4vR0l6ZkxTWU9Od1hSRmpkY3NqZkZ6RUI4QmpSNHNXWVFsU2o4YjlBaUc0?= =?utf-8?B?RzBBWjN5SnRyU3QwcktpcVlqY0pVWXUvbEdyMjR2VnRGNUFRK2hFc0JQVFNU?= =?utf-8?B?YVZ4WTNxN2JnbUZiYUwxT0NZN01HVzlQSlBaclRjWGVQMi9Wc1hOcWJmNG5a?= =?utf-8?B?bXJWSndjQjBCeEQydXBvcVduSTM2M3dZdkFmUW9TeFp1OXJVY2Q3NWhFMTU0?= =?utf-8?B?M0g1ZjZtZjdyN2hQMzZRU2Rzc0dQWHVJS2pPdU9FRDUrZCtSU09QOHJBZVZ3?= =?utf-8?B?citxcHRUdjlwcThnR2JGejE3RUh6ek1DTzZQV1h4Q0FiVWR2cmFyaEpRSVJw?= =?utf-8?B?UE1HVW90dVRralhzNGpiNmlZQ1pyVXRiek5YKy9Qckk3OHlBSUEzbEhmOHRU?= =?utf-8?B?TGVXWmlpTmJETGt1dnZySUpPWXBWeUxzWHBwajdhR1JxY29CeWthSDA5VTdL?= =?utf-8?B?R3BFRHFKWWN2dXJGdVZrY0hoLytvS1ZzMVVXNjVwNnl2NTgzVGRlVnlYUHBO?= =?utf-8?B?RE05THJBeGl2L3g3UmFCQ0w2R3l3aTArLzFWVFRLNWExTDM0TEc3VEljZHVN?= =?utf-8?B?RnBkcHU2UmRwU1B0Rm9TOFZGT3paeE1uZEFUeXFRdXgwNkNCQWZhek51cjFw?= =?utf-8?B?dGNHZHJkdW1pSEc4TnFhTHZ5ZVh3NzVzZnQ5dGc4Mzk0dzRoRzBYNXRDUE5Y?= =?utf-8?B?V0I2VWY1Zjd6T0ZUSVFtN1k4bzBTYTczOTZ3SUozOHpjRzV1WEZUWGNZS2c4?= =?utf-8?B?OEtzSVQ1cHJqcitUWTBIdmlEMXVSSytyYi9PUU94Wnc0Q24zb3FCWUgrK2xi?= =?utf-8?B?R1V6NjFJbmF5Q0RhdlBodUQ4ajNibTljY0krVUIwMDZqSEI5Rm5YM25BSHBU?= =?utf-8?B?QzFWOW1IV3NFNkZ0NzBtWUpyc0tQZzkzZjZvRjU5SVRsUW9xOG00MXJBTlUr?= =?utf-8?B?RDYvNWdIZDJBM3p1YlEvbW94OGcyV2hOV01KR3MreElmcldJMk80RjcxbjdN?= =?utf-8?B?NEJlMGxJWEJMeldpbTJYaGNrUFZXMkNqdzdWVktZM3J5emIvNUdtbXg1NEdR?= =?utf-8?B?RWMyNEdrRm80OGtodDI4UGFPc0I1TjVvUzZrNGhYQXJNdFNxMDVLRVdmdW9l?= =?utf-8?B?YmRqcXFRTFlNSEZEVU1CR2pLdkowaHRLMjdzOWFQa3JBWDhjQlJJKzlCM2Z6?= =?utf-8?B?dmRhd1Q5UVk2MWVYaXlyYm9KYlU4aWhlVWpiZlpFVkp4VnBzNktjRnFTdThN?= =?utf-8?B?MmZnRmJKSWFvdmRqRkVVTGd0N244eXhZK0pPVm10STlTbWNaelY4NzlpT3ZC?= =?utf-8?Q?Q0ss=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(786006)(19092799006)(1800799024)(13003099007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VTdOdnpoTWtrVStkODRsT2ZGU1REVjZYbXdscVlwMlJMWFNzVTZnZTc0T0NZ?= =?utf-8?B?dWpydEFWQXZxcUd6UFhsbStlMEZ4VHZIMnZEOG5uQXZXc3RxQWhyYlA5ZWo1?= =?utf-8?B?UFlTOURHcW5pRVY5djJ0dE1DejRRdVZ4bS82MzlMazY0RVY3citjSWNzR0pM?= =?utf-8?B?OXlFWktTcHVCRTgxUG0xS0dQc3h4QW5ndWdGUzdPMjFHVFJqckFNMjRaVzZP?= =?utf-8?B?NUo1Z3ROK1NXL2hWdTNyVStzcHVpZnFLSStkMGhBOVVrb1VqZi9SUm5keEJ6?= =?utf-8?B?MFNTV2lTSDNNU3FPSFFTRkU2MnRjTW5lc0JEeDh4dTVIODF3dUQ4bzhhRytF?= =?utf-8?B?T20xK2tOemdMOTVRcGZON2J2RzZiV2JFb082Q1VxQW9JQ2l6dTB5c3FVT1N2?= =?utf-8?B?OWZMR05XZVFWY0JpNDRiU2ZmdUNNdVFjb1RTeElpRGVDNFRWbTEwTWFFVFMv?= =?utf-8?B?M2FCTE4yelErRmwzMWZZZTZFckRWT24zdllPeTJwTzVmYno0emJiUXJaL2RO?= =?utf-8?B?MEh5MXJOQXYxMlRLS2JPTmpjVm1IaUkreWhCc0pZYVduMzQzSW5IcFUrSGFG?= =?utf-8?B?aFdBTFZwcmFCTTh6dDNUY1gzN0YrSXNIS214Q1Bjb2JVbVJXM051VUpSOWVU?= =?utf-8?B?Q1FldjdsSFV1WnhEVWUyZ0xyeFQwYzFJNVlvYm5qNC9qY25mTkJIY2VPdGl2?= =?utf-8?B?dmpqOHZENDdqQjMrRmlMVHMxS3M2NFhxVXpqOUpVWWt4WXE4QzNEY3BGZEdP?= =?utf-8?B?cmhtT2dJenVTcmMvb0xrK3BraUw2ODZCSGZtQ25QMWVzNDJaMkhxWFA2Z0No?= =?utf-8?B?dUhMTWhNQlBMNndhMURwdWVJdEJWcmtmSlVUM0dWdjRiVndzMjdKL1IrR29v?= =?utf-8?B?ZGhNWURHaEIyYzQ4bjBRR2NaT0V5d0JxSWpYMi84bFVMWWl1NHlWcDNHVU1u?= =?utf-8?B?VzlvT0Foa1NnWS9IM3NvNm1qcDhJTnRXWVNCWmJ3MGVkRWJxa0t5UDFFYUtY?= =?utf-8?B?VVlxbFY4c0dGWFdTZlA2eVE4cTllT202aThOVWdtdlcwWGh0eERleG5QZDh2?= =?utf-8?B?Nll6L3pvYUpIOVQxeFhZVUVDQ1RBSVpnL1dsREVkaVRwdmVkSjVURG9wazZB?= =?utf-8?B?c29mZFZJdVFJejNEWkdJTTJzaWF6a295VjEvNlZrR2d6MlJiZ1N1N1hLdVA0?= =?utf-8?B?OWNiQlMxQ1k1UHNkdW5HOUJiRG8rLzZlTC9VL0d6VnNHOGhhTzhZL1o5M3dN?= =?utf-8?B?c29HTnNtS1BtNm5aQWVOdTE5VnRBZGdHSGpEOFlnb0ZROUlJS0VCM2ZJbHVy?= =?utf-8?B?OFY1aEFyQmFuUC9PN0hGYjVxa1RYUHErNHpuSWJ6UG85MEI0NXV0eUhqL0Y3?= =?utf-8?B?TVNwbXdOQUNaREZvQnIwaC8yc3FyNlV4cVFqUWZQNHBsU09VbVByMDllTUFm?= =?utf-8?B?WmRyc0wyMnFsS1dXekd1SGRvUnZwSkFoU29QODkxTXFRaG9JWFpxSUpZVlpE?= =?utf-8?B?YmlyZElIT3NWdVBQZXQyRXAzS2lFVGdaVFhUTE02TmlwUXFtY1Q1dXZObUxN?= =?utf-8?B?THhtQmx5VmtnV1JHdEJ3ZDhrMEdrN1FibjlySnVaekExYlZpM3pmL1NvRThQ?= =?utf-8?B?bW1iU0FraTRnRmN4WXlzUmprNkJBZ3VqTzZYREdXeitBZk1TYy93QmQ2bnIv?= =?utf-8?B?RGg2bDEvYTBlYi8xNjFLQ3owRncyY1BzVHlXZUJNSVBrY2pRODRKd2M1Y0hr?= =?utf-8?B?ZjA5NC9GcVRpSk9GNDFyYkxwQ3MzTjhPMnVpOWJuNzZRK0hHOXl0MG5mVHNY?= =?utf-8?B?dFU2VDVNTjBkNjdsN2tiTWJSdzh4Q3l5aTkxQUNFZndndUE5WllCcEs1Q2M5?= =?utf-8?B?bnl1Sk9pRGpDR085K0FUUDJyQkI1aHJaVk5wejlURURuaHg2OHhGVHJTSVNC?= =?utf-8?B?b2tQd041ckwwSUxCcXdvSTZETXo1U3ZVMEUxUVdjTkFWR1d1d1FzY0JhWWJD?= =?utf-8?B?R3FxMmxUM1ZXRnZQTVdKVVkrMDBJdWJ2ZktLYThMc2p3KzMzZmJ5NWdPYzdo?= =?utf-8?B?UXMrajVsVW80a1ZpalptMHptZzBUTzV4UE9xWjdWNEZHQmhudDBpNTVIM09C?= =?utf-8?B?eWZCUGFaamdyN29OUVVqOHZZMzFCSWRJOTNoVnNzTTFweEcrRVN3NkZ6VmhD?= =?utf-8?B?NDNWaytOTnpnR21CQlBkWEFZQkI0N1FueFFGWkZMc1l5bWtFSXpoSmRMcWt4?= =?utf-8?B?aWoxWnp2Q0F6bEFUUDdiQ0VrUUNmNGt0VHAyZ1hRR3pLZFFPKy83bnl0MGtB?= =?utf-8?B?TUJUV05nL1M2YkRTeU5nQ0kydzhjTGZLT2ZtQ2l4dC9lL0ZvZlhOdz09?= X-OriginatorOrg: epfl.ch X-MS-Exchange-CrossTenant-Network-Message-Id: cfd94c19-6fca-4ad2-0d01-08de73bdd554 X-MS-Exchange-CrossTenant-AuthSource: ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2026 16:00:29.9809 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f6c2556a-c4fb-4ab1-a2c7-9e220df11c43 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9+fg9Sz3zVvcBqKodw6hp52vCiFFPeC1poOeKT7xpQYkuR3OkokoV+BbCbJF/E23mHBdP5hCm8OfbvW59oxyv/93ns1cIXOODps8+mmJ8yA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR3P278MB1305 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c214::1; envelope-from=florian.hofhammer@epfl.ch; helo=GVAP278CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @epfl.ch) X-ZM-MESSAGEID: 1771948919089158500 Content-Type: text/plain; charset="utf-8" The syscall emulation code previously wasn't interruptible via cpu_loop_exit(), as this construct relies on a longjmp target that is not live anymore in the syscall handling code. Consequently, longjmp() would operate on a (potentially overwritten) stale jump buffer. This patch adds a= n additional setjmp and the necessary handling around it to make longjmp() (and by proxy cpu_loop_exit() safe to call even within a syscall context. Signed-off-by: Florian Hofhammer Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Pierrick Bouvier --- linux-user/aarch64/cpu_loop.c | 2 +- linux-user/alpha/cpu_loop.c | 2 +- linux-user/arm/cpu_loop.c | 2 +- linux-user/hexagon/cpu_loop.c | 2 +- linux-user/hppa/cpu_loop.c | 4 ++++ linux-user/i386/cpu_loop.c | 8 +++++--- linux-user/include/special-errno.h | 8 ++++++++ linux-user/loongarch64/cpu_loop.c | 5 +++-- linux-user/m68k/cpu_loop.c | 2 +- linux-user/microblaze/cpu_loop.c | 2 +- linux-user/mips/cpu_loop.c | 5 +++-- linux-user/or1k/cpu_loop.c | 2 +- linux-user/ppc/cpu_loop.c | 6 ++++-- linux-user/riscv/cpu_loop.c | 2 +- linux-user/s390x/cpu_loop.c | 2 +- linux-user/sh4/cpu_loop.c | 2 +- linux-user/sparc/cpu_loop.c | 4 +++- linux-user/syscall.c | 16 ++++++++++++++++ linux-user/xtensa/cpu_loop.c | 3 +++ 19 files changed, 59 insertions(+), 20 deletions(-) diff --git a/linux-user/aarch64/cpu_loop.c b/linux-user/aarch64/cpu_loop.c index 7f66a879ea..e7f643d69d 100644 --- a/linux-user/aarch64/cpu_loop.c +++ b/linux-user/aarch64/cpu_loop.c @@ -181,7 +181,7 @@ void cpu_loop(CPUARMState *env) 0, 0); if (ret =3D=3D -QEMU_ERESTARTSYS) { env->pc -=3D 4; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESETPC)= { env->xregs[0] =3D ret; } break; diff --git a/linux-user/alpha/cpu_loop.c b/linux-user/alpha/cpu_loop.c index f93597c400..bef196b1f5 100644 --- a/linux-user/alpha/cpu_loop.c +++ b/linux-user/alpha/cpu_loop.c @@ -82,7 +82,7 @@ void cpu_loop(CPUAlphaState *env) env->pc -=3D 4; break; } - if (sysret =3D=3D -QEMU_ESIGRETURN) { + if (sysret =3D=3D -QEMU_ESIGRETURN || sysret =3D=3D -QEMU_= ESETPC) { break; } /* Syscall writes 0 to V0 to bypass error check, similar diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c index 40aefc4c1d..19874f4c72 100644 --- a/linux-user/arm/cpu_loop.c +++ b/linux-user/arm/cpu_loop.c @@ -399,7 +399,7 @@ void cpu_loop(CPUARMState *env) 0, 0); if (ret =3D=3D -QEMU_ERESTARTSYS) { env->regs[15] -=3D env->thumb ? 2 : 4; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU= _ESETPC) { env->regs[0] =3D ret; } } diff --git a/linux-user/hexagon/cpu_loop.c b/linux-user/hexagon/cpu_loop.c index 5711055aff..9464246e9e 100644 --- a/linux-user/hexagon/cpu_loop.c +++ b/linux-user/hexagon/cpu_loop.c @@ -56,7 +56,7 @@ void cpu_loop(CPUHexagonState *env) 0, 0); if (ret =3D=3D -QEMU_ERESTARTSYS) { env->gpr[HEX_REG_PC] -=3D 4; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESETPC)= { env->gpr[0] =3D ret; } break; diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c index 972e85c487..bd3b67059b 100644 --- a/linux-user/hppa/cpu_loop.c +++ b/linux-user/hppa/cpu_loop.c @@ -17,6 +17,7 @@ * along with this program; if not, see . */ =20 +#include "qemu/compiler.h" #include "qemu/osdep.h" #include "qemu.h" #include "user-internals.h" @@ -123,7 +124,10 @@ void cpu_loop(CPUHPPAState *env) env->iaoq_b =3D env->iaoq_f + 4; break; case -QEMU_ERESTARTSYS: + QEMU_FALLTHROUGH; case -QEMU_ESIGRETURN: + QEMU_FALLTHROUGH; + case -QEMU_ESETPC: break; } break; diff --git a/linux-user/i386/cpu_loop.c b/linux-user/i386/cpu_loop.c index f3f58576af..fe922fceb5 100644 --- a/linux-user/i386/cpu_loop.c +++ b/linux-user/i386/cpu_loop.c @@ -181,7 +181,9 @@ static void emulate_vsyscall(CPUX86State *env) if (ret =3D=3D -TARGET_EFAULT) { goto sigsegv; } - env->regs[R_EAX] =3D ret; + if (ret !=3D -QEMU_ESETPC) { + env->regs[R_EAX] =3D ret; + } =20 /* Emulate a ret instruction to leave the vsyscall page. */ env->eip =3D caller; @@ -234,7 +236,7 @@ void cpu_loop(CPUX86State *env) 0, 0); if (ret =3D=3D -QEMU_ERESTARTSYS) { env->eip -=3D 2; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESETPC)= { env->regs[R_EAX] =3D ret; } break; @@ -253,7 +255,7 @@ void cpu_loop(CPUX86State *env) 0, 0); if (ret =3D=3D -QEMU_ERESTARTSYS) { env->eip -=3D 2; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESETPC)= { env->regs[R_EAX] =3D ret; } break; diff --git a/linux-user/include/special-errno.h b/linux-user/include/specia= l-errno.h index 4120455baa..1db757241a 100644 --- a/linux-user/include/special-errno.h +++ b/linux-user/include/special-errno.h @@ -29,4 +29,12 @@ */ #define QEMU_ESIGRETURN 513 =20 +/* + * This is returned after a plugin has used the qemu_plugin_set_pc API, to + * indicate that the plugin deliberately changed the PC and potentially + * modified the register values. The main loop should not touch the guest + * registers for this reason. + */ +#define QEMU_ESETPC 514 + #endif /* SPECIAL_ERRNO_H */ diff --git a/linux-user/loongarch64/cpu_loop.c b/linux-user/loongarch64/cpu= _loop.c index 26a5ce3a93..603fcc39c7 100644 --- a/linux-user/loongarch64/cpu_loop.c +++ b/linux-user/loongarch64/cpu_loop.c @@ -44,9 +44,10 @@ void cpu_loop(CPULoongArchState *env) env->pc -=3D 4; break; } - if (ret =3D=3D -QEMU_ESIGRETURN) { + if (ret =3D=3D -QEMU_ESIGRETURN || ret =3D=3D -QEMU_ESETPC) { /* - * Returning from a successful sigreturn syscall. + * Returning from a successful sigreturn syscall or from + * control flow diversion in a plugin callback. * Avoid clobbering register state. */ break; diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 2c9f628241..b98ca8ff7b 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -66,7 +66,7 @@ void cpu_loop(CPUM68KState *env) 0, 0); if (ret =3D=3D -QEMU_ERESTARTSYS) { env->pc -=3D 2; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESE= TPC) { env->dregs[0] =3D ret; } } diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_l= oop.c index 78506ab23d..06d92c0b90 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -54,7 +54,7 @@ void cpu_loop(CPUMBState *env) if (ret =3D=3D -QEMU_ERESTARTSYS) { /* Wind back to before the syscall. */ env->pc -=3D 4; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESETPC)= { env->regs[3] =3D ret; } /* All syscall exits result in guest r14 being equal to the diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index 2365de1de1..af98138eb2 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -140,8 +140,9 @@ done_syscall: env->active_tc.PC -=3D 4; break; } - if (ret =3D=3D -QEMU_ESIGRETURN) { - /* Returning from a successful sigreturn syscall. + if (ret =3D=3D -QEMU_ESIGRETURN || ret =3D=3D -QEMU_ESETPC) { + /* Returning from a successful sigreturn syscall or from + control flow diversion in a plugin callback. Avoid clobbering register state. */ break; } diff --git a/linux-user/or1k/cpu_loop.c b/linux-user/or1k/cpu_loop.c index 2167d880d5..e7e9929e6f 100644 --- a/linux-user/or1k/cpu_loop.c +++ b/linux-user/or1k/cpu_loop.c @@ -48,7 +48,7 @@ void cpu_loop(CPUOpenRISCState *env) cpu_get_gpr(env, 8), 0, 0); if (ret =3D=3D -QEMU_ERESTARTSYS) { env->pc -=3D 4; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESETPC)= { cpu_set_gpr(env, 11, ret); } break; diff --git a/linux-user/ppc/cpu_loop.c b/linux-user/ppc/cpu_loop.c index b0b0cb14b4..1f8aae14bb 100644 --- a/linux-user/ppc/cpu_loop.c +++ b/linux-user/ppc/cpu_loop.c @@ -340,8 +340,10 @@ void cpu_loop(CPUPPCState *env) env->nip -=3D 4; break; } - if (ret =3D=3D (target_ulong)(-QEMU_ESIGRETURN)) { - /* Returning from a successful sigreturn syscall. + if (ret =3D=3D (target_ulong)(-QEMU_ESIGRETURN) + || ret =3D=3D (target_ulong)(-QEMU_ESETPC)) { + /* Returning from a successful sigreturn syscall or from + control flow diversion in a plugin callback. Avoid corrupting register state. */ break; } diff --git a/linux-user/riscv/cpu_loop.c b/linux-user/riscv/cpu_loop.c index ce542540c2..eecc8d1517 100644 --- a/linux-user/riscv/cpu_loop.c +++ b/linux-user/riscv/cpu_loop.c @@ -65,7 +65,7 @@ void cpu_loop(CPURISCVState *env) } if (ret =3D=3D -QEMU_ERESTARTSYS) { env->pc -=3D 4; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESETPC)= { env->gpr[xA0] =3D ret; } if (cs->singlestep_enabled) { diff --git a/linux-user/s390x/cpu_loop.c b/linux-user/s390x/cpu_loop.c index 4929b32e1f..67d2a803fb 100644 --- a/linux-user/s390x/cpu_loop.c +++ b/linux-user/s390x/cpu_loop.c @@ -83,7 +83,7 @@ void cpu_loop(CPUS390XState *env) env->regs[6], env->regs[7], 0, 0); if (ret =3D=3D -QEMU_ERESTARTSYS) { env->psw.addr -=3D env->int_svc_ilen; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESETPC)= { env->regs[2] =3D ret; } =20 diff --git a/linux-user/sh4/cpu_loop.c b/linux-user/sh4/cpu_loop.c index 0c9d7e9c46..ee2958d0d9 100644 --- a/linux-user/sh4/cpu_loop.c +++ b/linux-user/sh4/cpu_loop.c @@ -50,7 +50,7 @@ void cpu_loop(CPUSH4State *env) 0, 0); if (ret =3D=3D -QEMU_ERESTARTSYS) { env->pc -=3D 2; - } else if (ret !=3D -QEMU_ESIGRETURN) { + } else if (ret !=3D -QEMU_ESIGRETURN && ret !=3D -QEMU_ESETPC)= { env->gregs[0] =3D ret; } break; diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 7391e2add8..f054316dce 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -229,7 +229,9 @@ void cpu_loop (CPUSPARCState *env) env->regwptr[2], env->regwptr[3], env->regwptr[4], env->regwptr[5], 0, 0); - if (ret =3D=3D -QEMU_ERESTARTSYS || ret =3D=3D -QEMU_ESIGRETUR= N) { + if (ret =3D=3D -QEMU_ERESTARTSYS + || ret =3D=3D -QEMU_ESIGRETURN + || ret =3D=3D -QEMU_ESETPC) { break; } if ((abi_ulong)ret >=3D (abi_ulong)(-515)) { diff --git a/linux-user/syscall.c b/linux-user/syscall.c index d466d0e32f..99e1ed97d9 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -600,6 +601,9 @@ const char *target_strerror(int err) if (err =3D=3D QEMU_ESIGRETURN) { return "Successful exit from sigreturn"; } + if (err =3D=3D QEMU_ESETPC) { + return "Successfully redirected control flow"; + } =20 return strerror(target_to_host_errno(err)); } @@ -14410,6 +14414,18 @@ abi_long do_syscall(CPUArchState *cpu_env, int num= , abi_long arg1, return -QEMU_ESIGRETURN; } =20 + /* + * Set up a longjmp target here so that we can call cpu_loop_exit to + * redirect control flow back to the main loop even from within + * syscall-related plugin callbacks. + * For other types of callbacks or longjmp call sites, the longjmp tar= get + * is set up in the cpu loop itself but in syscalls the target is not = live + * anymore. + */ + if (unlikely(sigsetjmp(cpu->jmp_env, 0) !=3D 0)) { + return -QEMU_ESETPC; + } + record_syscall_start(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); =20 diff --git a/linux-user/xtensa/cpu_loop.c b/linux-user/xtensa/cpu_loop.c index a0ff10eff8..7680e243bb 100644 --- a/linux-user/xtensa/cpu_loop.c +++ b/linux-user/xtensa/cpu_loop.c @@ -17,6 +17,7 @@ * along with this program; if not, see . */ =20 +#include "qemu/compiler.h" #include "qemu/osdep.h" #include "qemu.h" #include "user-internals.h" @@ -185,6 +186,8 @@ void cpu_loop(CPUXtensaState *env) env->pc -=3D 3; break; =20 + case -QEMU_ESETPC: + QEMU_FALLTHROUGH; case -QEMU_ESIGRETURN: break; } --=20 2.53.0 From nobody Sun Apr 12 04:22:17 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass(p=quarantine dis=none) header.from=epfl.ch ARC-Seal: i=2; a=rsa-sha256; t=1771948875; cv=pass; d=zohomail.com; s=zohoarc; b=lXLpm+FlhMwQYLvPR9BNYuCgSXYLlk3T5nsj0a73zxvbz/7Yaw3675wsYGgR1Nf9MLy8IoJAUVrHTuLanTvBV9sN9hsxxzg/CN4N+T/fvuxYtnyQHDScp+65AY9ZvHvHj8DRuANgghCqHMocFH2LkFnadnOiKVrNg4uhAWwOmCc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771948875; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WDuRKnQDy9smGgk+ZpvD37zFwMgHl0iIo3Yvpps20ig=; b=M+aUOd+uqr9dDgsAaiE0ct7dVUgtIfdXcSXX9TtjpMqUuNxKIdsBLetK6A/wCDO4fhe1M+lRw0FxReuO6dPrbl9O2Zwp8wcEhxzDM36ap7UZnTdpVRfSTy31vHm/VLyVC4TXFhs7gGOJPwyLNgxqpyRit+tPK9/kfz8k5a/Bdag= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771948875356179.4367184886928; Tue, 24 Feb 2026 08:01:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuuqF-0000VX-7a; Tue, 24 Feb 2026 11:00:55 -0500 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 1vuuqB-0000Uc-Sx for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:00:52 -0500 Received: from mail-switzerlandwestazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c214::1] helo=GVAP278CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuuq9-0001WE-3B for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:00:51 -0500 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) by ZR3P278MB1305.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:72::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Tue, 24 Feb 2026 16:00:32 +0000 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c]) by ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c%6]) with mapi id 15.20.9632.017; Tue, 24 Feb 2026 16:00:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uOdYO4Vou6zr6uJWvj7k87D5sN/C3sJulNAQIobUU33REzsXx9+5sMs61/JoCfm0bS86yOFLuQTdS/gDHoPIney6Yr3N20o8f5XiCN26IJ7/vH1/fGyG9+F83uVe6V2BDJg6H/RZ7YuJTP6zXGGDPecXyT5MdjW7tUwKkMZav5PSPpPqj/0A+D83a1BrEGC+8h6/rPV6jb/iC1C44MQGULSFNF7447Pj96BD/MB4JXUZCxLYnxRwS48N42mILljFu2KPwFl4GqgPCKlWvC27BGd3X53ovK4p2SYGZ1e5w0i8mCfUjOlNSblolk52DYM9W3Lhv0Uu+iLknMmCcgFo3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WDuRKnQDy9smGgk+ZpvD37zFwMgHl0iIo3Yvpps20ig=; b=OiX1S56EYXensplanIQFfYmeSuxCeJEU30ak1t49qJFf8/J9eN4tPx1eA8zB2blcC0HcaZfp6V+l5XLDExv5ddHiS+1sKvvhLnVvjbul73H7RkGI2IzzH0O/cTew42WFtJx105M2PrzxBUlrt+wrl/qf4QAeoygVEj0FuMye8QuZVeoGVuWB1vYrOG+vdMWJkC8lFyrJi2nf0oLburOSr0TnKjhpDQdhO7Nk/j6OLKGsVn37c3CupxVfhdY5vqx7N7+9hFa6Zy/9ensARvt4/dLzwN3u01rBx1b/ALSxQBdqkcCN1VFNpszYVKqSViazfuTTuZJOJkV/sVarK3ZjBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epfl.ch; dmarc=pass action=none header.from=epfl.ch; dkim=pass header.d=epfl.ch; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epfl.ch; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WDuRKnQDy9smGgk+ZpvD37zFwMgHl0iIo3Yvpps20ig=; b=HZcpUpkzXl/SZ/UEhkMxfwhTOzTwA9TCLRUgyIlf6rPBpvntEBTBPC2B8hnevJ6wHTCxHL84EY96qYxYnoiOfV6y0fHbH/HMlwnuMMgqi4lUfRq2yb6b0OErtOmWXULjbjLrXy5VpvCXth5wqFs3JwFZx/qqNvTJZx5/nGPe+No= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epfl.ch; Message-ID: <33eb2408-b4c3-4ca4-9555-b2015fa38630@epfl.ch> Date: Tue, 24 Feb 2026 16:51:36 +0100 User-Agent: Mozilla Thunderbird Subject: [PATCH v4 3/7] plugins: add PC diversion API function From: Florian Hofhammer To: qemu-devel@nongnu.org Cc: alex.bennee@linaro.org, pierrick.bouvier@linaro.org, richard.henderson@linaro.org, laurent@vivier.eu, imp@bsdimp.com, berrange@redhat.com References: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Language: en-US Autocrypt: addr=florian.hofhammer@epfl.ch; keydata= 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 5hMMZIzTI4AtIcgA3xe4Ew== In-Reply-To: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV0P278CA0016.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:26::26) To ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZRH2PFAD84B9AF9:EE_|ZR3P278MB1305:EE_ X-MS-Office365-Filtering-Correlation-Id: 432f8b04-021e-46a3-9a28-08de73bdd5b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|786006|19092799006|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SDEyZnZtV01QT0Y4YmdjZVR4N3FvNkNkSGhnQVFNMVJOd0JhaTlNSzBjV045?= =?utf-8?B?VlhGc1Z2VG5qdm8wb2ovSDRSY3g3TE5jd1h1Uk1nQ3N0VjgwblpJWnhHU0da?= =?utf-8?B?TjlrTkdFZWNvVFdTQU9YSnJkOFFlWWtZbkZ5RVBPWkM4Vms0UnQ5YW54TXQz?= =?utf-8?B?VU4vOWUxYzV1WVRiMEkvdmNTakttclF3WFNrWjE2bjdYY0NvTUM5Q1o1WlNy?= =?utf-8?B?bmE3bVJwWlE4V0t3amU0b2xjSlNyRGhmSHZrQXdzZFVORU40UjlvT0h5S0NP?= =?utf-8?B?U0RJdHJuWGg2NkFSUlFrVWMyM0VQdGVRbHB0Qi90ZVpBTFlBWXl2RW1JV2Z3?= =?utf-8?B?M3pVSlVIR2ZSd2NkbGNPTDhmYWlmVmpMcUl2YUVoaVhnZDBLbGhhSmYwK0xW?= =?utf-8?B?WDkrMFZyNysxUXpia3FoWXFucDB2bkg3d2ZHVlpPMkJwT284OHlxTDNRWUdr?= =?utf-8?B?bFA1c1QzY1lvZXhSWjRIWm01NUtWMU9NYkRlY2JhcXB4Rjh0UGtCbWZjN0x5?= =?utf-8?B?Q2tpWGR6UnNVOUs5OW84eVZIR0JJSGNyZm5kdDMxQUFPVy9EYjJwcVlPa1hM?= =?utf-8?B?MjMvYjRMb2NnWGp5eFRjNnFmVmVCaXVuSHVaSVkrUC9wSHhQdEJ4OXRCRlNh?= =?utf-8?B?SUp0WmpVWUo3MXVQamdhdDVrS1hCbW1WRDZLN2hZaTFmYnU5OTYyeDJRZ0dq?= =?utf-8?B?UklVc1VlWTJOdHozQ214bm9HWkhVZDJlRXoxVytqRHpQTDM2NHV3NGVoZzVF?= =?utf-8?B?dzg0TXA0TTlKeFJtRlFkbXlnVUlnVHZDOEdQelBWMVpXL2tVUzdSci9ESDh6?= =?utf-8?B?dFVpNjBHTEtiYTJ3WUxORWZMWmpEM0t1eVViRm5wc0NXc0Q2bURRRUx1NWwz?= =?utf-8?B?Y1k4Y0FZSXFrVjNJVUlrUHpxTTZVQ2Z0ME9GMy80dm5oSi9ia3ZvLzBJT1Vt?= =?utf-8?B?ZkZrcWFuZE1CVXN2NDBWamZRck1OdW5GTjJybGh1U0ZtRXpRVHdLMW5lRllh?= =?utf-8?B?QlVZN0dCY09UN1lKMlU4SE85NitKSFJncGhjLy9Dbk9OUjVpMVlQQU9MMmdn?= =?utf-8?B?VjJTemdURDdUZEZqNGJKcU0xWGZFRUlvODNPZTVLekN1Zkdpd3VLYmk0ejdQ?= =?utf-8?B?b0VQM1U0eEx2WWpueUk2cDR0b3k5MG9kZndnOThLVjNLUmlGOXR4QTFqUWlH?= =?utf-8?B?R1ZpVk80Q2NEY2gyRW5ydzUxdVpVSWd4OXdaNDIvMVB5RWJwWFVRK0xFQ04z?= =?utf-8?B?OXRsc2FvSEN5emZrdWUxK0sxZFJob3FGMFV4QUtraG9TSnV4aWZ5Z2ZKV2Ix?= =?utf-8?B?VkFYMWlpU3NKU2tMaGtxNlNWT2dIaFZ2RDJNTDl1MlkyMkdKNU5ZNVZqVUlJ?= =?utf-8?B?Q1JiejI0RWNGVDA3aktUajg0eWNOZXN2L0lNVDd3NmpTRWxxVm1HM3ZmbTFL?= =?utf-8?B?TDhUcU53S002NFRzSW5zVnNjR3JoMXM0QmdDeElFOFhGRWx6eCtSSlVYU0VN?= =?utf-8?B?Q1lieEM3VUNUU1h1V1dXd2sySW9XUVBFV2UvRlZ0NmpEVDkwKzE4WWNreVh6?= =?utf-8?B?MzZvc3VkQkROd0w4aHg0YWtqQTEyOWJCNVlPZ3FiVXpMZkRDalRjSzlLR3JJ?= =?utf-8?B?WEx6M25FNm52cUVCNzNiU2laellROE5jUlEvZTFZWGZtNHNOUnU0aEZyWm5B?= =?utf-8?B?KzlQaDQzOThCUkcrVEVwemZSRzJtTkRzVS9KMFk4b0hXT1h6L1hzZmw0K0FJ?= =?utf-8?B?bDRUVTMrOXpadmora2F2M2l3SzNCYWdkeHpvNTY4QTlnK3JTWWlKblVrVllB?= =?utf-8?B?MG9RVGlHSFVFQ2ZkY09PTmlwVHJic1dBbXpkbWgwbWh0ZytWWkxSS1hXaEJN?= =?utf-8?B?bWRsK1pOWmRUanJHbzAvMkNQcFMvVy9CUzgxMUx1NW9kUjhQY2ROUCsrS0x1?= =?utf-8?B?WDRScXByUzFZcmVqWmQxYUlpREhMMitHdzlnczFRZmRwMWkwcCtBM3dwdXZl?= =?utf-8?B?VlZzRGtTTXh4cEFNNTJ4UVFvdDNnRmxmMzhmc08zODlSUXNGK3VKMnlMR2dy?= =?utf-8?B?ZmRXREY2NjFDaHFzajdFalNzN0I0YldkNDZ5K05KZFhUb0x4eEVkUUF6M2wv?= =?utf-8?Q?u8Gw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(786006)(19092799006)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TjBHTy9yUUpIa2xYMnQzbHdxVzdRMkxad2lzd0kwK01jNmwwUHJwL3lseVNa?= =?utf-8?B?N2JKWXZMazJPSDFNT3duWkFEY2w0RGZUd2JiMDZYWTYxaGpNdVM5NUViM2dX?= =?utf-8?B?ZEdhcGV6VnBhdnBJWDVMRUhhbCtUY09qSWpMSFh6OTJPanMrMEgxUXhYbWEz?= =?utf-8?B?aytCcDFFcHg5cTg2TklqTCsxbmszK2w5UGFLeFN6cTFiL2VhSkFXakhDaldR?= =?utf-8?B?QjFySGJ3N0FYZHFXTjhTZHJlVFJVWTJ1bTY0aWh1TGU5QlpTMEpWY0RtVmVM?= =?utf-8?B?UUtseFFTUGlkckNQMnRBVWhrVFo2RXVrTHBML0hEUjNMMEpEcFA5NVpyN05t?= =?utf-8?B?dEdBTUlOZ1VNM01SUnBtVTdFMjRyMHY3QmFyVHZ5aXY2QkthY3JXTzFFUzRr?= =?utf-8?B?alh0aWdZSnRLSk9KV1JnMmJGblFBVXRudkF3Y3lFUUtmWnAyU21rRkJnUEQ5?= =?utf-8?B?Y1pqYlFaRko5bFBQZzZya3BVRUt0L1ZyWEtxLzlOblk2VzFVRys4eEVwMm4v?= =?utf-8?B?VDJ5U1NSTWRsSWphbnd3anFTWjQ0OHBEVmMrMThabUU1dmptUE9sOStiMHJV?= =?utf-8?B?S0dUQnB3YU5WQW9NZXBoTyszWUZhcVR1WGY0QWJNazhQeFF6dmJRZ2tBUTJw?= =?utf-8?B?Yys0ZUY1dVlVNUJid2Y2d3RObmZLSzRvUmRaWDZvaFM2S1YyVHNqVjZNUFhk?= =?utf-8?B?cDZLOFJGUWM2STltaklOdzFUVG0vdjlmUjJobkZXY3NHWngzQ24wWHVCQjMz?= =?utf-8?B?T3ZmejVSWU5uS2UrNHBUeWlobm5kTzdMbklhWVlYVmdvOHN2YkVJUGtneG10?= =?utf-8?B?SHZYbTJ3d0ovNFRBeUs4V3hyQnRzRHNJWmpXNFpXcXg4ZHlPUW5oSUREc2Va?= =?utf-8?B?MjI3UFFsUVg2KzZsMnBFV0l4b1JKNTlZWnU2SHg1cys1a1NoemQrQWpKSlFs?= =?utf-8?B?czlMR3hmb3RuWkN1Z0pYQ2Ezc2pqd3BPRzZGVUFoQmVoUWU0V3NsZURtOTU3?= =?utf-8?B?cHBsODBocEtKV1VpeUEzdTV0MC8rZ1NZSWM4ZHFqSmVwYnFSWWFwSEcvODBp?= =?utf-8?B?aDZFd01lVi9oaks3ZldDazNMNFltQVRvRTc4bUtVSFFaL1BWU3FRYitBcXdr?= =?utf-8?B?ZTdrSXJqMDJ6OUtLZ2JieTVpSWZvQjRlU1hUV3pnZEJWRFZTeFJoTXJQaENG?= =?utf-8?B?Y2s1ejJUK05SRlZqU2dQZWFPUXRZSDFwWko3TDZjU2FXK0Q5WWZ6b1lWWjNO?= =?utf-8?B?bUU4RFpZK09pWjN5VFlsU3pSa1FrWktsZmUybjFNZHpNS0d2Z3JHa3ZXZDZD?= =?utf-8?B?Y0xmT2tOQzF3TU4xSm5rS1dFQ2VvUGlobHRlZm5tQWl5bHZ6OTY3dUVReXdp?= =?utf-8?B?a3lybE1TNkFFdHVWUkhFbzBjZGk4bVF4N3JiNTIxTmJzYU04UlJYZGhCZW04?= =?utf-8?B?NlVXc0RGNkQ3NUJ0Z2xFL2FOTWRnQyt4YjRSeGJPcTJxc1dSUzRHdEdJZ1dJ?= =?utf-8?B?eG1NZmV4Q0VuekpmaWI3VlFwRTVnaHdPdXVaMGdBNy8xVzZUd0Q0T3NrK3NQ?= =?utf-8?B?V00reVp4anNhcExTRzhQTHJpbGRWRkI0TnpaTDN2OFFEcmlEYjRtOTNEdWpm?= =?utf-8?B?aUJzb0IzSTUxd0pwNjhqUWkzMFY0azhFT3lVelYxdWtLV25xVEFod3hCTEhZ?= =?utf-8?B?M3JkRlI0R1UrOElLMU1tZFltazRuNEp6czBiUlA0dUsrUlNqL2FLd01vdmVM?= =?utf-8?B?OUlEcjJRZkdYbXNyNUgyQ0xHUTdwaldWRW4rQThzME4zbjlHT3JEQVRBeCtW?= =?utf-8?B?WDZKK3Q5SE1HSnJIdmxPT29uYUsvOUR1Yk1TNlNCbjFtNDFTbTB2b2RtT01a?= =?utf-8?B?Vy9ESk5jYVV1UGFxWXhkWXQwZXZvSGVqbjhsOTRPbndIM0ZyMExjVlp1SmhU?= =?utf-8?B?VkdCVXZnNkZ2V3RDSDh3amVsaW5EMWUxYTZrVjZRYlhUcnV1RitWUHZsM3lO?= =?utf-8?B?VFlyYTFJa1B0aGo2SW96V3RFc0dhL0RkVWdsS3k5OEtZZlNkOU5tcVhHTE40?= =?utf-8?B?YzE2K1dENFZyZGRPTmlYcTk4eGM0YU0zRDJKVFpQZXIzbHNESkpSOEtvdWpj?= =?utf-8?B?SWx0Yll5cGh2M0kzekZ0cDdyNUpUM2JVdTV2MFJKekFmTXBJZ05sQlRRMUpP?= =?utf-8?B?cGhWaThVZ2hqaUNPVDZTVTFndHovM1N1V0xyQi82bERaWlRJRVJybVQyV2dL?= =?utf-8?B?RWFXMmRMaFlKZ2U1Y2prOHdoSUFOSnpMR0k5REJndUhYbnpSM29IUVZVKzlD?= =?utf-8?B?Smc4YnlnenBHNUNYeXlwd29yL0VsWmFkWml5UWVXbGhiZE81ZVkvZz09?= X-OriginatorOrg: epfl.ch X-MS-Exchange-CrossTenant-Network-Message-Id: 432f8b04-021e-46a3-9a28-08de73bdd5b1 X-MS-Exchange-CrossTenant-AuthSource: ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2026 16:00:30.6313 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f6c2556a-c4fb-4ab1-a2c7-9e220df11c43 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Fx9LM8ouqoEbNx9qDcKjMgbNu1V5TXt7+ljPKrYeOaYGfJeohgQK4ttvwwWdxXrPRtmk4RUwMaI/0CjN9vcktIfViPmCPeFOtv/KkGyK2vA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR3P278MB1305 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c214::1; envelope-from=florian.hofhammer@epfl.ch; helo=GVAP278CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @epfl.ch) X-ZM-MESSAGEID: 1771948876765158500 Content-Type: text/plain; charset="utf-8" This patch adds a plugin API function that allows diverting the program counter during execution. A potential use case for this functionality is to skip over parts of the code, e.g., by hooking into a specific instruction and setting the PC to the next instruction in the callback. Link: https://lists.nongnu.org/archive/html/qemu-devel/2025-08/msg00656.html Signed-off-by: Florian Hofhammer Reviewed-by: Pierrick Bouvier --- include/plugins/qemu-plugin.h | 13 +++++++++++++ plugins/api.c | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/include/plugins/qemu-plugin.h b/include/plugins/qemu-plugin.h index a6ec8e275d..04c884e82b 100644 --- a/include/plugins/qemu-plugin.h +++ b/include/plugins/qemu-plugin.h @@ -76,6 +76,7 @@ typedef uint64_t qemu_plugin_id_t; * * version 6: * - changed return value of qemu_plugin_{read,write}_register from int to= bool + * - added qemu_plugin_set_pc */ =20 extern QEMU_PLUGIN_EXPORT int qemu_plugin_version; @@ -1042,6 +1043,18 @@ QEMU_PLUGIN_API bool qemu_plugin_write_register(struct qemu_plugin_register *handle, GByteArray *buf); =20 +/** + * qemu_plugin_set_pc() - set the program counter for the current vCPU + * + * @vaddr: the new virtual (guest) address for the program counter + * + * This function sets the program counter for the current vCPU to @vaddr a= nd + * resumes execution at that address. This function only returns in case of + * errors. + */ +QEMU_PLUGIN_API +void qemu_plugin_set_pc(uint64_t vaddr); + /** * qemu_plugin_read_memory_vaddr() - read from memory using a virtual addr= ess * diff --git a/plugins/api.c b/plugins/api.c index e754b7c69c..ca3e93a194 100644 --- a/plugins/api.c +++ b/plugins/api.c @@ -41,6 +41,7 @@ #include "qemu/log.h" #include "system/memory.h" #include "tcg/tcg.h" +#include "exec/cpu-common.h" #include "exec/gdbstub.h" #include "exec/target_page.h" #include "exec/translation-block.h" @@ -466,6 +467,18 @@ bool qemu_plugin_write_register(struct qemu_plugin_reg= ister *reg, return (gdb_write_register(current_cpu, buf->data, GPOINTER_TO_INT(reg= ) - 1) > 0); } =20 +void qemu_plugin_set_pc(uint64_t vaddr) +{ + g_assert(current_cpu); + + if (qemu_plugin_get_cb_flags() !=3D QEMU_PLUGIN_CB_RW_REGS_PC) { + return; + } + + cpu_set_pc(current_cpu, vaddr); + cpu_loop_exit(current_cpu); +} + bool qemu_plugin_read_memory_vaddr(uint64_t addr, GByteArray *data, size_t= len) { g_assert(current_cpu); --=20 2.53.0 From nobody Sun Apr 12 04:22:17 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass(p=quarantine dis=none) header.from=epfl.ch ARC-Seal: i=2; a=rsa-sha256; t=1771948910; cv=pass; d=zohomail.com; s=zohoarc; b=OC1p0yVPZlT08bWbZVvq1ChjpJfxo/4gA0nixmsgcWw8fK9orn/SPW26jg0AfrrtTU1kc6mshrQoJui23V7fyI4dWUnAcSB+0X52uv20tmuiNJyTI/17LeobjZQHeZigfRM9Dwlbp8884wUFotbcgpAzfLZV3f6jdwdzG+jkeqo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771948910; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zSxsCx7NP9O7q1S87jGOWq+PJ6RvRwmFhMlL2qAmGhA=; b=CNm6PEr+EDGYEkBYFgMmCpsp/yVTcOiwryU31dTBcy0LMID9OevsnCna5qC9xPQNI3cMcQt8uFRVeJUOqpnmxmbIVQDw5z4gfbvS4X/9KnuGsVjJ+Cwl+DaMuyQjtjP0tjm5y/pq9whFX22snNNs9m8bjSb60Fek6PlW5iijZos= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771948910568492.10766277646394; Tue, 24 Feb 2026 08:01:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuuqM-0000WW-8y; Tue, 24 Feb 2026 11:01:02 -0500 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 1vuuqG-0000VZ-PQ for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:01:00 -0500 Received: from mail-switzerlandwestazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c214::1] helo=GVAP278CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuuqD-0001WE-Av for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:00:55 -0500 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) by ZR3P278MB1305.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:72::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Tue, 24 Feb 2026 16:00:34 +0000 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c]) by ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c%6]) with mapi id 15.20.9632.017; Tue, 24 Feb 2026 16:00:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mhIc8oSU7bmKwsNyalZ1SCx3A7OfbEC69QtThPPAEQKJMpJjmBl+IZrdlC5VZxiG4EfSaG0BUPA6ED7jHA1CzPCJcTFzOLGgPpMe+zNWGHwWuI+UpKdC/nnuUrDbePXW4sGo3jtLP0PjXcqsVSVFJxwtJ7RZatWGGunwZyZznTqJKPzySYlwqK+cKAKvQyZ8Zt90mtqPmDGOhbPVEn1RdKtSFRcetPm5ISVbD+Uq973KjpeCVyiTLgqi/Hw9TT7Ztf8jdXQ5jjYpiRM3iuhysXkqqZRnqY9I2x/9a8G893sntn25oFFLzsUl67JaHRZSGnqV+gNZWxjxIZ8Tj3aEww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zSxsCx7NP9O7q1S87jGOWq+PJ6RvRwmFhMlL2qAmGhA=; b=ijadDabVxNDaV99jBrUcqnHeArGhWVVR/UKPVl5vDEGhpHwyk6ppAXtRG2TZNZG17iuVVHsT/JEQd78pTLIyqIlHy6kon/CjkUbkwo/3AyIqUTciSGC8vvh/NoKiPbOPGHyYxBLjFZ/6Cm1ZuEKbLf3wNMtaa0FzKPV5TBs1+9DP2ECdEoinh5eyt7kh9Ly7GY/xk/bBV7Hz7x5aV3WB4/K4T0qjaRps72hmRezX4HP4s00TtgWMVPGOyTWrLSWXHQgVjbh60ugQAxS/fHBI9YNlUwnlUJloebMVNidTZIxw2DzQCXKTogz2e7/Gk6xrbe3/HBd01E6oaL147uVJKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epfl.ch; dmarc=pass action=none header.from=epfl.ch; dkim=pass header.d=epfl.ch; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epfl.ch; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zSxsCx7NP9O7q1S87jGOWq+PJ6RvRwmFhMlL2qAmGhA=; b=Rl0yCviR6yURcJ3FqS2F4uaVSerux/uE3XsMA4kzfaEzp3/eFDA/h5doPFnQfNndG/56OPGuDBLcDPHI8QfdBq1PPQZaJ3r7hg39OG6K0A+PwrZMwOau/nv4D4NgVHKpr6V8D4IAAQ2ljytlqm8mnyYKD5Mg17tF38NvbJy1XRg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epfl.ch; Message-ID: <2ccc79ee-48ab-4097-a9cc-4d2b79ab9a8a@epfl.ch> Date: Tue, 24 Feb 2026 16:52:18 +0100 User-Agent: Mozilla Thunderbird Subject: [PATCH v4 4/7] tests/tcg: add test for qemu_plugin_set_pc API From: Florian Hofhammer To: qemu-devel@nongnu.org Cc: alex.bennee@linaro.org, pierrick.bouvier@linaro.org, richard.henderson@linaro.org, laurent@vivier.eu, imp@bsdimp.com, berrange@redhat.com References: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Language: en-US Autocrypt: addr=florian.hofhammer@epfl.ch; keydata= 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 5hMMZIzTI4AtIcgA3xe4Ew== In-Reply-To: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV0P278CA0016.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:26::26) To ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZRH2PFAD84B9AF9:EE_|ZR3P278MB1305:EE_ X-MS-Office365-Filtering-Correlation-Id: 706d7196-299e-47bc-797c-08de73bdd619 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|786006|19092799006|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?R0c2SmVjUU80NXZOTC9ISlBnRXBmR3FGaitZL0RlR0xjclp2bmRGZHF4M2R5?= =?utf-8?B?UXZhWVQ3MW5QS3FDT204ZDg1R05vOHh1M1NBYnZVRHE3Y0xTcXFIMHF1L2tZ?= =?utf-8?B?c2hyeERqNTdyWFhXMjhDSTMwY2svRnk0c1Y3djJtSmltYmlmYXNsZ3B1Nm5q?= =?utf-8?B?NzFGM1RwQ09VcmR0K1krRU5CYXJndnBGak84ZEVjOXBMSmF5VWdMN3dUY3Ni?= =?utf-8?B?WURLNHUvNy9hdnhkUVViUnVZUUxVcHBpbVVxWS9aM3ZCQjlXQ0ptUVI1Qit2?= =?utf-8?B?VFpRelRYcmhpQU1SdUpIbGZYZ1dWR1ZRNGZ2blpjQ1dVUmhqT1ZWblhKU1Rs?= =?utf-8?B?NkswT3lrMWluOStqbzA5b0g3MnJrMXQwSUd6RzVjVFZoUkZQc1laQitSVWhM?= =?utf-8?B?NU8zRjVDcnJPbjh5Y1NKUHZOd3ErMmxoTXBMN1hZK2lYTGFFNmZ1VWl1TG1Y?= =?utf-8?B?OEdEbk1uTks4QVh5RjdCaXVybHZET1J4NExlUnptdUFObGpNSkxWZERxb00w?= =?utf-8?B?WGJOOGxYMVpmMXBveEF6WmtOakY5S2hkZGVrdVJ3c1Z6ZlU0dGlIZGo4MVc1?= =?utf-8?B?YmlXb1h6V2s5T09TUlhtakNDMHl3OFdQZk84bjRieFZHczFYNndvK0hlYmRw?= =?utf-8?B?c2Y3Wk4xT2F5ZmxOYkJWVEVzYUt1Ylp3aFQ1d0VGZ1h2S3d0NW9YZjB4ZzJt?= =?utf-8?B?Sm80ejlQa0V2bXRrS0x2dzE4dFY2VkYvZVA2UW5aV1BLVG8rY1RaNStmaEo2?= =?utf-8?B?Q29xd244NmhjOE56M0dUK2ZiUGxjY2pkd2lmQjFydDhKUFh0b3JJL1hsSkhk?= =?utf-8?B?WWdYV2NKREZuYW5wT21tMWh0eDcvbXN1UzJsNzJhNlpTZThYdTNJQi9qSXhk?= =?utf-8?B?bkRFd2lwb1NkYmRuZmgwck5TWWxjSC9hWmNpbmdHZGNpOFkzR3RRbmxWUnpK?= =?utf-8?B?RzdlUk12aktiYmRsUWhiSGN6ZTNXblJpNmhwaWRnM3BUZ3NZa0RQQmZ0c2lE?= =?utf-8?B?N3F2Qk1nS2xLOTlseFZtUllvUHhvdXRhTDRyUkt1S2Z1OUdyUTR1UnRhK1Bz?= =?utf-8?B?TVpNRVpmaHJNZGNyTUFibUl1bUVaOHJzQXRZSkVUQU9Hbi85QVlYZ1RPR3JR?= =?utf-8?B?NXNJVVBqWlVmMEVqdXN4QmdMVkZZaWJRVG4zNTZIbVd4dlgrVFRlQjhlSkpC?= =?utf-8?B?c0tySFFBR2NVTnZqM0I0UzNQbnZOYlcvSHZycC9BeVg2L1lGTHhicWovaTN2?= =?utf-8?B?Z3RId1ArcVI3TXZwdG9nRk9pckRFS1c1N1RHVEFsY2Z2UVBZK255MDlyUjA4?= =?utf-8?B?bFppdElqL09WQVNOSkp0UUNZNkJZYWZ0bFR5YVRDekhrVmVWNU52aTdqWEYz?= =?utf-8?B?R2pqdVc3S0UrcFBNd1A2N2hMTitLY1ZuM2QwY0h0K0tTUkltZGlCQzVJZVhu?= =?utf-8?B?dGNycTNLc1QycWxnTmc5bE8vcnpQSWE1UnJ3OTJEakRLQnNqdjdXUW1uNVF4?= =?utf-8?B?MXFBMlJpTGY3K0J5d0ZJRGljYTcwY1RDYUtSYzV3dFZQemE5NDRYbDlPZ3V5?= =?utf-8?B?OEV5T2F5YXc1b1E3Tkx1ODIwVVV2QUxWVlVyczBGUnhNeWZJY3I4T0wwYmZM?= =?utf-8?B?blUydDMwNHpycXBoTHhRWm0yQXFXcnRLd2lML3NmQmYzUTUxRzE1Zzd0MGlK?= =?utf-8?B?Nlk1VEhNN0JPYUtlR0l0ckdITEZtaVpwVDM5WW5CK1NDQy9xRDMzUWFwajBv?= =?utf-8?B?RlY5b2RBdUpzQU9EcFpSV1hUKzNDZHZsNXdLcGJBenRDUjd4a1RjRHRXSXVI?= =?utf-8?B?RzJBdnZhdmg0eFNVR1UwOXdJSjNJYi9ON0oybTVWMEhBdUhkaFg0Q1BsdkdG?= =?utf-8?B?WVpHQ3pENkJxeDhMbjc3YVc4VFhmREtZRFEyWVJUNWl0bW9xd1dQVUJodlZP?= =?utf-8?B?aDk3aGQvWXNtQkpDdDhMeDN3eURRNnRPWllYSDcwUU0vbU55NlZqRVhvWmVy?= =?utf-8?B?N2ltL1JueC9Qamcwd0NNdTJVV1N4bDFwM09CU1RycmhPUUk5QTQxUTFOYmRK?= =?utf-8?B?aktjWktNNks2M3cyemVuQklEbDkwZ1Fpb3Z4ZCtwQ0hLV0Y4VGJSQzZBY3pq?= =?utf-8?Q?UCbo=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(786006)(19092799006)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?a3g4WFp5RjRpQ25CaldJcFlVY0NLUzZPWDQxdEtwVjdNSndTUnpyTStacXFt?= =?utf-8?B?R1FUbUI5dVpjZEpFV0toU01qYWF6cmVLdjVmeW04M01NNXdIaExQMmJ4UjBi?= =?utf-8?B?RU51TFU3aVFRUUc1ZTdMSnNxRC85dUpPd2krejAyU1ZHSnVhakxrcXYySVZD?= =?utf-8?B?QVlHRmtpZnI4UTc5L3dwbERVN25Bc3lOWm1PeEs1d2UvNXJVWXNnendDODBK?= =?utf-8?B?endjTkpDTFc2QjN5a09lOVBhc1Uwa1FOaFZOd0VuMDhkVnhCblFITnRkanJm?= =?utf-8?B?Nm9nUU1CdDZ2THFKb1NtZDNGTzNYZjdIOFhwUFkrS3lPdE4vT3RMWXF5QnIr?= =?utf-8?B?SWZaUmZvNkpDUTdpSzZZdnNrNDM2eUVQYkRKWWtSK0EzbVhRSVBnN0J4LzND?= =?utf-8?B?eG9nTC9aTWc0ZnpqM2tEWTgwb2E5UnNVcnJ2aElMNmJIb3lpUGZKVGhQbWJj?= =?utf-8?B?WmNDdmVmVzJzZnUvL1VCVVhMU1VWVzczVVk5alBxNWN2dUNQRTJSWnVRYm9X?= =?utf-8?B?ZWJUWVovNjBQTEczNXdpVEdnVXRKd3hHU1kyUXg0M0pER0ovSEU1QjkxWUFj?= =?utf-8?B?U0FLNU9LNlozZnppeUF3Yk9ickp4c3pKK3F2c2djVHJvSU1YdEtVSVJRQWVp?= =?utf-8?B?RjFsSXByckJoZlhQMkQwM0s5NmgzVUVRSTRzU3RsKzVNT1REejVqYnBlOFBN?= =?utf-8?B?Qy82azB3S1g1Umw1YmRYUmZIZm00YUlpTHpJMWsveXZnT2VKNmFIREEyRUJO?= =?utf-8?B?RENzVERRbWU5OG9IZ2hVOFBYKzlQaDVydWtiNkQ1MjFHTm5NbnEwUE05eXIz?= =?utf-8?B?QWtNZ0pkTEtlemFJRHQ4MlBoRUFYUEZpNkFZWTltVFdVMi9zcDVTaHFtcldP?= =?utf-8?B?eTZWOGI4dWdGQjFNVUZmMTV4U0xRUmtXQWVaZmVQVDVUUWQyQWxFK29OK1JY?= =?utf-8?B?cStOdVJjU2QzNVR6RFdGUGkxN0pVS0NhcldoWDdiVStUakphV3ZCaHFGNnNj?= =?utf-8?B?TjV5MGg3YVYrd09WclVZOG1KMHZ1Y1FhMFNWWDRyakt1ckN1TnI5ZGVCUjJQ?= =?utf-8?B?SnU5VTFCWmRYOVhqV3hPdVc1aGhrdzdvajlwVWxnR0p6MmVoMW5uRXlGZG8y?= =?utf-8?B?dkoxZDFzMENFL2JTYkZQNFhjL2wxVjZub1F3Z3B0VzVzQUdjR0JXUjNwc3Z3?= =?utf-8?B?dmlHTitRdjUzMVNmZ1dFRGhwdFdjVmxIYkFvdS9mdlNtV2dEbDZNdDJBTUVY?= =?utf-8?B?cHl4azh6ZzMxRjVQZFNLVHlOYUhpd3pCMGNnMjd4TlZ0bm1IT3Qrc0VQcDJs?= =?utf-8?B?WlJraDZubXJhT0g3L2RDaG5wQmxxYUUzVnRnRHAzMkV5cXQ2akFCaHdaNmRH?= =?utf-8?B?OHJvMHZLeTl3UEdBWWtPNnprUVFKYmZCMGdzWWRoZlp6QUc2VzBDS3c1NTY3?= =?utf-8?B?OHdOTmc0R0RVTUNiTjZDMlhvM1h1MXJrbzFvZi9NSlBDR2x6NGU0R09jM3Vj?= =?utf-8?B?a2p5eG5nN0hHRWZnKytObElFQUllWlByT3pra0E4UHNUZFQvRElZN1g2VmNM?= =?utf-8?B?WlBXZ3NSaWpWMmVKSDVic1d2ZlhjWHhlVDhrQXg2azE1Q0dmYkk5bHhqZkFW?= =?utf-8?B?WUMxaHB5czRHSFZoZmhXTEpCU3ozcUpIK1FrZGZBM00zMVFzc29XRDlQWWto?= =?utf-8?B?TGIrdVZFMnhiTmNzN1pOdCtqMFVFdTFZVEZYaGdjZGg2a1hHbElRQ1BNbkh0?= =?utf-8?B?cWNIdmR4Q1d0clUrNk83TTdYcXF2NUxTMERPVklrT2lkaDhyNjBKaWRSSWFS?= =?utf-8?B?djBPOFB6VDNGaVBTcmFXRHpONlVFSHNDbUtFL0ZmK0R2NVZwMFZsYW9vblc1?= =?utf-8?B?cjJTYU42bU4xeVhlbERVd0dEM0tOK0FRdTNmUzZSQTNqeXArZmtSckJJdXVy?= =?utf-8?B?MXBkdWw0YkZUK3pVSVZmZGQ3WkEwd2ZEdDNzcmZsNHZnMXkyd2YrWUw5NWc5?= =?utf-8?B?dTk1MzdwcDJHOXhUMmtmYVFtN0thbzFGQmUwS09LWitiUjdkdlo0ZkNVUDNQ?= =?utf-8?B?eElJeVN3TVh1N29TOVBQZE9zdVJ2c1AvSXdDMW4wdC9iTkNvZzBsTHc1QlVk?= =?utf-8?B?Z291UnRqbVo3anBwRURnUTQxL3hJSEFQR2NEcXA0SmlsaGlDYXJlQ0ZSWU9H?= =?utf-8?B?a2pzamdxaG9VVFd2cFRYc011TDdhc1V5eW9WNXlGdDhhVGtYbmYvNXVEem1B?= =?utf-8?B?VHgxRDJpVStPb0k3U2Z3OVphNHNQaUdJdzB3a1JnbWNSejY5RzkyYS93UTJK?= =?utf-8?B?S1YySFIvbkdYemlldWd3a0RtY2VYS1B1bFE1eFJ5YmVaTzdRdloydz09?= X-OriginatorOrg: epfl.ch X-MS-Exchange-CrossTenant-Network-Message-Id: 706d7196-299e-47bc-797c-08de73bdd619 X-MS-Exchange-CrossTenant-AuthSource: ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2026 16:00:31.2597 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f6c2556a-c4fb-4ab1-a2c7-9e220df11c43 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: iYEq8/iu1UP5KlewwIXzCGbVJ98uhnm7eFT/IrxZ/JGri+hhQhbw8sDLt+JYDpIlx8DigQDLr7rgYSplp+JoreRlANX6siq8JPehuq8wU0I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR3P278MB1305 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c214::1; envelope-from=florian.hofhammer@epfl.ch; helo=GVAP278CU002.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @epfl.ch) X-ZM-MESSAGEID: 1771948911303158500 Content-Type: text/plain; charset="utf-8" The test executes a non-existent syscall, which the syscall plugin intercepts and redirects to a clean exit. Due to architecture-specific quirks, the architecture-specific Makefiles require setting specific compiler and linker flags in some cases. Signed-off-by: Florian Hofhammer Reviewed-by: Brian Cain --- tests/tcg/arm/Makefile.target | 6 +++++ tests/tcg/hexagon/Makefile.target | 7 +++++ tests/tcg/mips/Makefile.target | 6 ++++- tests/tcg/mips64/Makefile.target | 15 +++++++++++ tests/tcg/mips64el/Makefile.target | 15 +++++++++++ tests/tcg/mipsel/Makefile.target | 15 +++++++++++ tests/tcg/multiarch/Makefile.target | 22 ++++++++++++++-- .../{ =3D> plugin}/check-plugin-output.sh | 0 .../{ =3D> plugin}/test-plugin-mem-access.c | 0 .../plugin/test-plugin-skip-syscalls.c | 26 +++++++++++++++++++ tests/tcg/plugins/syscall.c | 6 +++++ tests/tcg/sparc64/Makefile.target | 16 ++++++++++++ 12 files changed, 131 insertions(+), 3 deletions(-) create mode 100644 tests/tcg/mips64/Makefile.target create mode 100644 tests/tcg/mips64el/Makefile.target create mode 100644 tests/tcg/mipsel/Makefile.target rename tests/tcg/multiarch/{ =3D> plugin}/check-plugin-output.sh (100%) rename tests/tcg/multiarch/{ =3D> plugin}/test-plugin-mem-access.c (100%) create mode 100644 tests/tcg/multiarch/plugin/test-plugin-skip-syscalls.c create mode 100644 tests/tcg/sparc64/Makefile.target diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target index 6189d7a0e2..0d8be9cd80 100644 --- a/tests/tcg/arm/Makefile.target +++ b/tests/tcg/arm/Makefile.target @@ -78,4 +78,10 @@ sha512-vector: sha512.c =20 ARM_TESTS +=3D sha512-vector =20 +ifeq ($(CONFIG_PLUGIN),y) +# Require emitting arm32 instructions, otherwise the vCPU might accidental= ly +# try to execute Thumb instructions in arm32 mode after qemu_plugin_set_pc= () +test-plugin-skip-syscalls: CFLAGS+=3D-marm +endif + TESTS +=3D $(ARM_TESTS) diff --git a/tests/tcg/hexagon/Makefile.target b/tests/tcg/hexagon/Makefile= .target index f86f02bb31..111dc405fa 100644 --- a/tests/tcg/hexagon/Makefile.target +++ b/tests/tcg/hexagon/Makefile.target @@ -126,3 +126,10 @@ v73_scalar: CFLAGS +=3D -Wno-unused-function =20 hvx_histogram: hvx_histogram.c hvx_histogram_row.S $(CC) $(CFLAGS) $(CROSS_CC_GUEST_CFLAGS) $^ -o $@ $(LDFLAGS) + +ifeq ($(CONFIG_PLUGIN),y) +# hexagon uses clang/lld which does not support -Ttext-segment but GNU ld = does +# not generally support --image-base. Therefore, the multiarch Makefile us= es +# the GNU ld flag and we special-case here for hexagon. +override LDFLAG_TEXT_BASE =3D -Wl,--image-base=3D0x40000 +endif diff --git a/tests/tcg/mips/Makefile.target b/tests/tcg/mips/Makefile.target index 5d17c1706e..d08138f17b 100644 --- a/tests/tcg/mips/Makefile.target +++ b/tests/tcg/mips/Makefile.target @@ -9,11 +9,15 @@ MIPS_SRC=3D$(SRC_PATH)/tests/tcg/mips VPATH +=3D $(MIPS_SRC) =20 # hello-mips is 32 bit only -ifeq ($(findstring 64,$(TARGET_NAME)),) MIPS_TESTS=3Dhello-mips =20 TESTS +=3D $(MIPS_TESTS) =20 hello-mips: CFLAGS+=3D-mno-abicalls -fno-PIC -fno-stack-protector -mabi=3D= 32 hello-mips: LDFLAGS+=3D-nostdlib + +ifeq ($(CONFIG_PLUGIN),y) +# qemu-mips(el) returns ENOSYS without triggering syscall plugin callbacks +run-plugin-test-plugin-skip-syscalls-with-libsyscall.so: + $(call skip-test, $<, "qemu-mips does not execute invalid syscalls") endif diff --git a/tests/tcg/mips64/Makefile.target b/tests/tcg/mips64/Makefile.t= arget new file mode 100644 index 0000000000..5386855efc --- /dev/null +++ b/tests/tcg/mips64/Makefile.target @@ -0,0 +1,15 @@ +# -*- Mode: makefile -*- +# +# MIPS64 - included from tests/tcg/Makefile.target +# + +MIPS64_SRC=3D$(SRC_PATH)/tests/tcg/mips64 + +# Set search path for all sources +VPATH +=3D $(MIPS64_SRC) + +ifeq ($(CONFIG_PLUGIN),y) +# Require no ABI calls to avoid $t9-relative .got address calculation on M= IPS64 +test-plugin-skip-syscalls: CFLAGS+=3D-mno-abicalls -fno-pie +test-plugin-skip-syscalls: LDFLAGS+=3D-no-pie +endif diff --git a/tests/tcg/mips64el/Makefile.target b/tests/tcg/mips64el/Makefi= le.target new file mode 100644 index 0000000000..77ac8815fe --- /dev/null +++ b/tests/tcg/mips64el/Makefile.target @@ -0,0 +1,15 @@ +# -*- Mode: makefile -*- +# +# MIPS64EL - included from tests/tcg/Makefile.target +# + +MIPS64EL_SRC=3D$(SRC_PATH)/tests/tcg/mips64el + +# Set search path for all sources +VPATH +=3D $(MIPS64EL_SRC) + +ifeq ($(CONFIG_PLUGIN),y) +# Require no ABI calls to avoid $t9-relative .got address calculation on M= IPS64 +test-plugin-skip-syscalls: CFLAGS+=3D-mno-abicalls -fno-pie +test-plugin-skip-syscalls: LDFLAGS+=3D-no-pie +endif diff --git a/tests/tcg/mipsel/Makefile.target b/tests/tcg/mipsel/Makefile.t= arget new file mode 100644 index 0000000000..bf1bdb56b3 --- /dev/null +++ b/tests/tcg/mipsel/Makefile.target @@ -0,0 +1,15 @@ +# -*- Mode: makefile -*- +# +# MIPSEL - included from tests/tcg/Makefile.target +# + +MIPSEL_SRC=3D$(SRC_PATH)/tests/tcg/mipsel + +# Set search path for all sources +VPATH +=3D $(MIPSEL_SRC) + +ifeq ($(CONFIG_PLUGIN),y) +# qemu-mips(el) returns ENOSYS without triggering syscall plugin callbacks +run-plugin-test-plugin-skip-syscalls-with-libsyscall.so: + $(call skip-test, $<, "qemu-mipsel does not execute invalid syscalls") +endif diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Make= file.target index 07d0b27bdd..2e2dcda425 100644 --- a/tests/tcg/multiarch/Makefile.target +++ b/tests/tcg/multiarch/Makefile.target @@ -14,6 +14,10 @@ ifeq ($(filter %-linux-user, $(TARGET)),$(TARGET)) VPATH +=3D $(MULTIARCH_SRC)/linux MULTIARCH_SRCS +=3D $(notdir $(wildcard $(MULTIARCH_SRC)/linux/*.c)) endif +ifeq ($(CONFIG_PLUGIN),y) +VPATH +=3D $(MULTIARCH_SRC)/plugin +MULTIARCH_SRCS +=3D $(notdir $(wildcard $(MULTIARCH_SRC)/plugin/*.c)) +endif MULTIARCH_TESTS =3D $(MULTIARCH_SRCS:.c=3D) =20 # @@ -200,13 +204,27 @@ run-plugin-test-plugin-mem-access-with-libmem.so: \ PLUGIN_ARGS=3D$(COMMA)print-accesses=3Dtrue run-plugin-test-plugin-mem-access-with-libmem.so: \ CHECK_PLUGIN_OUTPUT_COMMAND=3D \ - $(SRC_PATH)/tests/tcg/multiarch/check-plugin-output.sh \ + $(SRC_PATH)/tests/tcg/multiarch/plugin/check-plugin-output.sh \ $(QEMU) $< run-plugin-test-plugin-syscall-filter-with-libsyscall.so: =20 EXTRA_RUNS_WITH_PLUGIN +=3D run-plugin-test-plugin-mem-access-with-libmem.= so \ run-plugin-test-plugin-syscall-filter-with-libsyscall.so -else + +# Test plugin control flow redirection by skipping system calls +# (similar functionality to syscall filter but different mechanism) +LDFLAG_TEXT_BASE =3D -Wl,-Ttext-segment=3D0x40000 +test-plugin-skip-syscalls: LDFLAGS +=3D $(LDFLAG_TEXT_BASE) +test-plugin-skip-syscalls: LDFLAGS +=3D -Wl,--section-start,.redirect=3D0x= 20000 +run-plugin-test-plugin-skip-syscalls-with-libsyscall.so: + +EXTRA_RUNS_WITH_PLUGIN +=3D run-plugin-test-plugin-skip-syscalls-with-libs= yscall.so + +else # CONFIG_PLUGIN=3Dn +# Do not build the syscall skipping test if it's not tested with a plugin +# because it will simply return an error and fail the test. +MULTIARCH_TESTS :=3D $(filter-out test-plugin-skip-syscalls, $(MULTIARCH_T= ESTS)) + # test-plugin-syscall-filter needs syscall plugin to succeed test-plugin-syscall-filter: CFLAGS+=3D-DSKIP endif diff --git a/tests/tcg/multiarch/check-plugin-output.sh b/tests/tcg/multiar= ch/plugin/check-plugin-output.sh similarity index 100% rename from tests/tcg/multiarch/check-plugin-output.sh rename to tests/tcg/multiarch/plugin/check-plugin-output.sh diff --git a/tests/tcg/multiarch/test-plugin-mem-access.c b/tests/tcg/multi= arch/plugin/test-plugin-mem-access.c similarity index 100% rename from tests/tcg/multiarch/test-plugin-mem-access.c rename to tests/tcg/multiarch/plugin/test-plugin-mem-access.c diff --git a/tests/tcg/multiarch/plugin/test-plugin-skip-syscalls.c b/tests= /tcg/multiarch/plugin/test-plugin-skip-syscalls.c new file mode 100644 index 0000000000..1f5cbc3851 --- /dev/null +++ b/tests/tcg/multiarch/plugin/test-plugin-skip-syscalls.c @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * + * This test attempts to execute an invalid syscall. The syscall test plug= in + * should intercept this. + */ +#include +#include +#include +#include + +void exit_success(void) __attribute__((section(".redirect"), noinline, + noreturn, used)); + +void exit_success(void) { + _exit(EXIT_SUCCESS); +} + +int main(int argc, char *argv[]) { + long ret =3D syscall(0xc0deUL); + if (ret !=3D 0L) { + perror(""); + } + /* We should never get here */ + return EXIT_FAILURE; +} diff --git a/tests/tcg/plugins/syscall.c b/tests/tcg/plugins/syscall.c index 5658f83087..b68e3cadf4 100644 --- a/tests/tcg/plugins/syscall.c +++ b/tests/tcg/plugins/syscall.c @@ -148,6 +148,12 @@ static void vcpu_syscall(qemu_plugin_id_t id, unsigned= int vcpu_index, fprintf(stderr, "Error reading memory from vaddr %"PRIu64"\n",= a2); } } + + if (num =3D=3D 0xc0deUL) { + /* Special syscall to test the control flow redirection functional= ity. */ + qemu_plugin_outs("Marker syscall detected, jump to clean exit\n"); + qemu_plugin_set_pc(0x20000); + } } =20 static void vcpu_syscall_ret(qemu_plugin_id_t id, unsigned int vcpu_idx, diff --git a/tests/tcg/sparc64/Makefile.target b/tests/tcg/sparc64/Makefile= .target new file mode 100644 index 0000000000..516927a3fc --- /dev/null +++ b/tests/tcg/sparc64/Makefile.target @@ -0,0 +1,16 @@ +# -*- Mode: makefile -*- +# +# Sparc64 - included from tests/tcg/Makefile.target +# + +SPARC64_SRC=3D$(SRC_PATH)/tests/tcg/sparc64 + +# Set search path for all sources +VPATH +=3D $(SPARC64_SRC) + +ifeq ($(CONFIG_PLUGIN),y) +# The defined addresses for the binary are not aligned correctly for sparc= 64 +# but adjusting them breaks other architectures, so just skip it on sparc6= 4. +run-plugin-test-plugin-skip-syscalls-with-libsyscall.so: + $(call skip-test, $<, "qemu-sparc64 does not allow mapping at our given f= ixed address") +endif --=20 2.53.0 From nobody Sun Apr 12 04:22:17 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass(p=quarantine dis=none) header.from=epfl.ch ARC-Seal: i=2; a=rsa-sha256; t=1771948951; cv=pass; d=zohomail.com; s=zohoarc; b=ZFTxqp1LuKVU7QNYh2Cz8Nyf8VYqjXJjvlGrHr6/ioNx9wI3AF8qi5NzI4MTX5n+z9ge0jR2CbNhYfnatqcjpZjF59JtLeHELYDOsBWia7Z5p5AdCW5oYiFZehTvqogC9EBeeX5rQQjWYe9Kl9hA84TksJssGBO+1rbDYZcNKFI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771948951; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=f17hvKRsdxDqIaN8KQ6slEZ1PWnsXw5wX/MCN1HEkNQ=; b=lAx40brX1sZtKtHdpaqX6SuwAwr3DIKMx2KcVfI2ZFM42ukCsLlTdv19+Miia7CwYqv1E3X54zZUjNcDFKGlA+b9FsFBbvAPVB3xF3Q0ps8pgyjyH0cSDmDELVz+65KBHIuEEgaiKUaBWNjQjXjJVCmej6oC2f6Y/dVVkmL/xD0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771948951782196.07440415786402; Tue, 24 Feb 2026 08:02:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuurO-0001do-UF; Tue, 24 Feb 2026 11:02:07 -0500 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 1vuur3-0001Ab-8a for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:01:49 -0500 Received: from mail-switzerlandnorthazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c213::5] helo=ZR1P278CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuuqx-0001kk-OJ for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:01:42 -0500 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) by ZR3P278MB1305.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:72::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Tue, 24 Feb 2026 16:00:34 +0000 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c]) by ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c%6]) with mapi id 15.20.9632.017; Tue, 24 Feb 2026 16:00:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RYR6HohBMc/OcJpCRTwm7vxHJ90O4tYGz8aZV4f+xwhwHQ5SxSQSdAPaFFOcSi9tS0+oz53/UJpAAtZTjMDu958Xg3WhJppUgz3P982qweAtQCQQYdX4QCQZ4fyt/44a/qdpGpD+QV24hBaNCeId7wEnoypXmdcXiAi1UVvRTJ4BlFvuzKPXlqZbCu0NuaTjl77WIyeQrEh4zo0+RhkLKjZTEmoMAjMOLtwbNOR9eOxwzZViv9mipkPtlIKVtAh/ekVynbzOTQcmXQaMTb+jfyvyNtMoBqSMMJwWY6XdhnIBpt1yyopzMHGMYvX/5Jc4fuPoXxHNpyWXGBXfXtHGwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=f17hvKRsdxDqIaN8KQ6slEZ1PWnsXw5wX/MCN1HEkNQ=; b=XWQdrDB0vUVRmW8tKKHsjEZXNaYL96SbddfRzNYegos59cHCyKANMUcT1Syt2mSfBPTzv4jbUw8c9ARnNG7dSUFml6fkAlx5FPVydVkFWdfI/j2n2MggLr+DOmu+fhKgDwrgW952b3jpZs9N1K8nALJau04UwykYQ3RQD0kEwh8o0ktpr8YtV/WRAz0sq24EqnSjBI2Aa5scVnyfu8hjbPlACYLKhvHaH4jDpBtn9YC2pL7E9Ln/+u40WeTxGr2uBzAY/z64WYVcM8hxTmYzyotKtn/ntuwaMEfq1cJOWtS8Q/BVwOmQ/hWVlQDQkzRuALiC3woETMUTBQrcPnuj/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epfl.ch; dmarc=pass action=none header.from=epfl.ch; dkim=pass header.d=epfl.ch; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epfl.ch; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f17hvKRsdxDqIaN8KQ6slEZ1PWnsXw5wX/MCN1HEkNQ=; b=jp5zPnWZbG3VwLRUxf+mUpMvLYrAoSJSKDN1eqpqOXhS1H22r8JbNqBwkik4RdGm24biaF4KhEqFbt/jpIC+3JM1z9QJdsAo69bWjtzi6XjlyFrmVW6U8cWuulJ3Le+3Gb1Sb1+IHnl3Y6oaOeK3eeccGYGDw2KEeEgvtNFxu/k= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epfl.ch; Message-ID: <8716147d-d5b4-4d8b-859a-26a5310973bc@epfl.ch> Date: Tue, 24 Feb 2026 16:53:03 +0100 User-Agent: Mozilla Thunderbird Subject: [PATCH v4 5/7] plugins: add read-only property for registers From: Florian Hofhammer To: qemu-devel@nongnu.org Cc: alex.bennee@linaro.org, pierrick.bouvier@linaro.org, richard.henderson@linaro.org, laurent@vivier.eu, imp@bsdimp.com, berrange@redhat.com References: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Language: en-US Autocrypt: addr=florian.hofhammer@epfl.ch; keydata= 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 5hMMZIzTI4AtIcgA3xe4Ew== In-Reply-To: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV0P278CA0016.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:26::26) To ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZRH2PFAD84B9AF9:EE_|ZR3P278MB1305:EE_ X-MS-Office365-Filtering-Correlation-Id: 10973a64-62cb-4f54-6ff3-08de73bdd672 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|786006|19092799006|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Mzh1aDRMNmtXYWh1cnowZFZoYUZGZlNVVXpzM2JUYUZTRXRKZ09PRzk1VzJH?= =?utf-8?B?czVhODdMbzBKNHBjV3U0MElBa1hhaTQ5QWhDbml2bUxBaFVjUUNYaldNN25R?= =?utf-8?B?Nm12U3k5ay9tSWk0dCt3MlRDMEF3RkJ5Y2l1QVJRd1RUQ2FpL1dvV2R6L21Y?= =?utf-8?B?aTcrdSthSkFkSG1PRVl4UUZHMDFiVm4vK0JTNjFDbHNuYXJBcWNmM0wyeUhX?= =?utf-8?B?ckx2UVBaWUVFd094UkwvT2VOZktIU0hIeVNtbTgvT3Y4bUc3TTBQRlRKclZi?= =?utf-8?B?UnFkaDRSeTlrNFVSTkZYd1Y5NXlQYVNlM0h2eXREQ0V1Tk5KeksyQkZYTUIv?= =?utf-8?B?QVNJenova096MG1DWlJPYU1PTUl3UkFVeWFDa2xSdFp0M1ppazNFSHkzTVor?= =?utf-8?B?emtaQTFJcy82N2d6Vkc1NzBSeWpJOTY5bUJucGRhL3N5aVBsL2FtMzJzaUR3?= =?utf-8?B?Z1BhUTdDRjFzbVNISDVweUpyd2x0ZXRyNjFxZTJDT3JrdEhCSUxhUFdmdHpE?= =?utf-8?B?RTZsVDJPUUxzY2krYVVwVGVocmEzMm5kVFJTa3ROY1d5NlcrSGhxOG9UdXJx?= =?utf-8?B?djBFeEVQNndPc0ptRzBuckFVYTF2Nmk5dkk3VS9RYnQwTERpQmlQbXp3NEhO?= =?utf-8?B?S3FUdnRJamJIdThVUTBra0dIV05GOStqK3VIZXBzdXpQSzd1eEJPakxrbnNI?= =?utf-8?B?dVdjaEhycGZnK1JIZVFwWlBtZUVJSEJSOFRYL0VLVGxoSy8yU29tT0NyS2Q0?= =?utf-8?B?RFlubzFycGlhUnJZWlFhUkIzeTlCbnNsd0tZRTM2TEhLVDFNN2R3RVRhYWsx?= =?utf-8?B?bHdFTUNVamNvZjBScmkzejhrdSsyVUFxWlF2STNZMEY0SENuL1lNWmZpa2Fs?= =?utf-8?B?RlZ0NGNmSmFZUUZvVS8ycHQzOXJuRmYyOGVSeXY0c3JoRlV3OUhMRyt6WFdM?= =?utf-8?B?TU9jZjFwUmVnM0h6bGtiM2tRaVVlMzIvM1lLaEVCL2dJcEVXRnpwMnQzT3k2?= =?utf-8?B?ZWhKSzM1QWNGWitIeUtiSE9Dc3VKT0JBU0lDNVVRZXE5MG5XbVB6RHRyYW9D?= =?utf-8?B?bXVBVVhVN1pySE8vQkt1cTE4Z0hNa0ZVZFpRYTVsd3RuWEliaCtIYUFSNno0?= =?utf-8?B?TG92ZDNNMjJRZy9PMlhCMkVOT09yUzlNYnpZTDY1aThhSHRCVVNBaWhrWmI3?= =?utf-8?B?SlJyR1d5VXkvTnRRbThNMlRoK3VEbjlVbERObVRrMXVNMW42NFFyT3IvZ0o5?= =?utf-8?B?VkphSHpzam1sYXNKQXF1TWZQaisxTXNqNFl5UnpRMm5ZUGR5NC8vbkNoQ1Ex?= =?utf-8?B?MklDQzUyaURaZUZ2dUNwMlBieVloWE1iTmoyZ3h4WVA1UjRkZGtqZEJuRUZm?= =?utf-8?B?aTBieStuTUoyc2pTcm9qNitHaFJPNUE1aDRiYlpuVmc4dXVWdTI0S0hqWnZH?= =?utf-8?B?YXUxU3VJbTNabUVxRUhpUVQwZEY2WnZseHR0cXZDQnBSK25vNnE2dTAwK1lD?= =?utf-8?B?V2pHMkVIN3BYL1FiSVgzY3prV1VBdHBSbEorMERZQndnbnBFWDgyeVRydnln?= =?utf-8?B?a0phYk55UHZGaktLMU54WFd3S1B3ZEdlM2J5SHpEQzdUOTVINXo1eWlobWd1?= =?utf-8?B?RGs2TjFTQTFqK0ZOQ1g4bFRudnhmK29zSnFNaEFNZXMwY0lQRlBRV1VBSGZr?= =?utf-8?B?WUIzMVNtbTRXbTBBVFpJeTROWnRoeTE5S2hFRlZUekd1TmR6TVhvNmx1dDJQ?= =?utf-8?B?amI2M0ZHWld2R2YrclVYZ1N6bjlpWkZSZkgvdC9zdkNFUk43THNxT05NeGtS?= =?utf-8?B?T2gySkFPblZuK3kvMWl0bWpWMkRwWjMvL3FqMVErM0srYnljU1FIcmxCZlpQ?= =?utf-8?B?Mmxra2NlTTVKYkxNN1BWZlF2VXNVRzB5VnpPMGthYnN2QWdvR0cvWDhCL2x1?= =?utf-8?B?THdQVUFiWUVKZzBqNUZSNE9CcDh5VDlvSkdVRXJsZ0doTUtqaGxsdTdranhM?= =?utf-8?B?T3hSQXYyVjdNdHZMWnc5ekJSOGtGMmtGZTVlbG9vZzdZeE9RQldOSmYzNWpl?= =?utf-8?B?djFlTWRJTW1ZUXArT1l3SE5lS3BvT3BpZWk4eGpJRFBORmc4R20vdm92Y01s?= =?utf-8?Q?RTIg=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(786006)(19092799006)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R3MxZDBKTVNKa1BDUVZ3dDR2bmJVS3R3dHk1T2FyUXo1MHBhRW01TW1hZkJv?= =?utf-8?B?MnZwQXlVUFh6OWVIYWV2NnJzRlBKV05wSG9jak1HcGFqMlFqR3JzdVFRVlNP?= =?utf-8?B?TmxnUEJsUmtmS2l5ZFphNzVxYXR3R044TXN3U2NCcXlBUkdoRytaYWREQnBI?= =?utf-8?B?NU1LZWpIdDJWV214SU4xdmFNdjFablJqa1VqMUprMk12ck9zdWpHeGx2Z1dT?= =?utf-8?B?Y2d5amw4dGx2NTFsS2VDUnhjYWhmeWZiYXU0RjJJdFN5anl5MzZ6TUtxaU1G?= =?utf-8?B?MWNnR0hmVWlLL214S2lDeGRxdWdqMnhYNmpUeC81bTVkL3NCd3VqUm0vU2Z0?= =?utf-8?B?RlE3bE1VRkVrSXd0THh0S0NsVFJEQklYTVNlM3NHRk5FRk9kL2hXRWdjbjNS?= =?utf-8?B?MWtzekR4dlI1RnQyNXpvVVF0dmk2RUw1V24xZk04enFSZVJtTlhOTmVLK2tu?= =?utf-8?B?QnRRMXpNbmM4YVFJdHorbVllclNIRHp2YzFYcCtWb0EvcUFISUQ0dnBONUVr?= =?utf-8?B?QmswTlRwdW9FaEpNVURDc1E5Y1BtNUx6R3hFelJETUdINXYrUWVaMlVhN25L?= =?utf-8?B?aGYrSjVJZk00S0kvaXdyZXhydGVvd0J3dG03b05iMDdqLzl0OWM2cDZmUi9W?= =?utf-8?B?dlpVb0U0NHpMSzlxOGhuanlHR1I5NHFkUWs0QTUzMWdhSDdVRnN4bmV3ZERP?= =?utf-8?B?ZTlVMHBhc21UM1doUDIrSSs3N1BJWEU5aysxYm02Ni9hd1dTWnBqSG1TSWpo?= =?utf-8?B?d0UrLzV0Y3kxblhWSFVNcUhtYjR1TkZVL1h2SXlxM01hQXhwcUgxcnFrTFFu?= =?utf-8?B?OTFMeFg4RDFRd3Vxb1dLL2J5TFFlWG1aVWxMQUdFb3V0THFVNDkwWUI1WXNP?= =?utf-8?B?a3pya2dBeXFVMUV5MVNTM1hHWnJkSy9GUW00dmcwOGFxdjl5dTluQy9IZFFT?= =?utf-8?B?Z2w1YUtmaTBNYnVIMkxsQzdoQXluSk9CUUhVeUtTRXVnSHVDNEEreDdQemhu?= =?utf-8?B?ZEVsUGU2M01KQS9kbnE2ZCt2a0p3a2lueEpUaHBNWWFKRlRHY3lnU2VheVdF?= =?utf-8?B?WmlRVysrQlgxbDJiQTNlZjNoNysyZU93RG1GNWtCeUJzOHo0dGpyaGxidWRp?= =?utf-8?B?S2pmTmQ4TU9WRWpTVnpNeUpmQ3o4TGVma1BtUjJTSExkOENPRHQwYmZwMk1X?= =?utf-8?B?THpJazNwa2t3VWkvWFBDL0pFZ0RvM3l2dUNQQ0FZekptZ1NqTnhsZWx4dTY2?= =?utf-8?B?cmpGeDJhOEJjNU0xdU9ia2hMcHp1ZThKTXo0Q3hPRC8wZ24wQloxQktmZmI2?= =?utf-8?B?Vi9QU0lKalUwMlN0NU1qTURmSkRPaStlSUVQY0ppTzY3N0ZMUmJYdEJmR3JW?= =?utf-8?B?VDFIMzdaZHZMNTM4K1FQZEk4VUNzZnNpWURtNll5c0NpZzNUb0pINmVRSGRR?= =?utf-8?B?RDBabnFjQTh6clBFd0JGL0NPWGdsYXdpUUtCY0k3L1dXd3VlakR0WXBtWUJr?= =?utf-8?B?Y2Njam1mbWtaclVhK3N5dXgvYlQ2djJwL0ROWU5VcFhnNitXeExEUDhQcXNw?= =?utf-8?B?VHNHQW5NaWtmSmZGU0VmK0l1amZXYUUzcStic3pqazBHbllYVmUveDZscUU3?= =?utf-8?B?L2RzVThwT0xnNU9KS1pOazNxSlExYTdpUHNRNVdTWnRSb3l6M0lqb21ac0ha?= =?utf-8?B?S2V5ajVockFuQzNFRjB1ZG4xQ0FVb1BWdU13UVJxVEExTjJNSk5abWVWUnEz?= =?utf-8?B?S0NEZ0VrMEY4SE1HQUNyaXp0YzlRR0RSeVZoZjZXNUpZYytrb2NTWVM5Z0Z4?= =?utf-8?B?cFBtaWlwT2NWUnVIRVZSNVJNcVhqMEMzTXdPWGk0bnFsQitMTitha2pkL2dX?= =?utf-8?B?V2RGRDdLZXRiSFNsVEwvWDNScjlUUk94b3p2K1oxN2RiaURzVC9PenBLYWhF?= =?utf-8?B?TjBvMENzTjF6QjU3czd5azJzWElGMllYaCtseGdNT21LL1BhQlM5MVROcm5n?= =?utf-8?B?QWQxd1NCOVEzbHYwcG5ZdDBkU2w5S1FwajBUSG1RT2Irdy90Z09zcDVXWFNY?= =?utf-8?B?bEl2TmVMekJrZWlYUmRyZFl1YlF6L2pLSHhYVmVQSThiNmVCZzUrak5zeHND?= =?utf-8?B?eEJmdWJwZVBQbHAwb3E1c1ROK01zcW1ZV09tNG9pNUVhSWwxMkZ5d2xTNlJw?= =?utf-8?B?YUFWalBIS09UeW1QSGpELzB4ekZTY2x2VHlwYldQb0VCN21mR2xiTnlvWHJB?= =?utf-8?B?dHhxUW4rekJlK2RiS0Q4dTgrdCtiU0pmS3EzeEF4VkxTeFl1eTFTZ1RzV21v?= =?utf-8?B?ekhuL3VTcElmanMrWGlmNmVhclN2Y2w5VUpWc21ocFd4dmppYWN5Zz09?= X-OriginatorOrg: epfl.ch X-MS-Exchange-CrossTenant-Network-Message-Id: 10973a64-62cb-4f54-6ff3-08de73bdd672 X-MS-Exchange-CrossTenant-AuthSource: ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2026 16:00:31.8262 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f6c2556a-c4fb-4ab1-a2c7-9e220df11c43 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: F5cM32XVs4UaMkSeU2SEtuv+iFNC+GElPgGkAWfmrGiOpXI8mpciQirC7vc1M39W4AslBF+xn/jhpIQ6iw6uKhWP+7p8LxGMHzlm9aNxV/s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR3P278MB1305 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c213::5; envelope-from=florian.hofhammer@epfl.ch; helo=ZR1P278CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @epfl.ch) X-ZM-MESSAGEID: 1771948953213158501 Content-Type: text/plain; charset="utf-8" Some registers should be marked as read-only from a plugin API perspective, as writing to them via qemu_plugin_write_register has no effect. This includes the program counter, and we expose this fact to the plugins with this patch. Signed-off-by: Florian Hofhammer Reviewed-by: Alex Benn=C3=A9e --- include/plugins/qemu-plugin.h | 2 ++ plugins/api.c | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/plugins/qemu-plugin.h b/include/plugins/qemu-plugin.h index 04c884e82b..ae711758f1 100644 --- a/include/plugins/qemu-plugin.h +++ b/include/plugins/qemu-plugin.h @@ -979,11 +979,13 @@ struct qemu_plugin_register; * writing value with qemu_plugin_write_register * @name: register name * @feature: optional feature descriptor, can be NULL + * @is_readonly: true if the register cannot be written via qemu_plugin_wr= ite_register */ typedef struct { struct qemu_plugin_register *handle; const char *name; const char *feature; + bool is_readonly; } qemu_plugin_reg_descriptor; =20 /** diff --git a/plugins/api.c b/plugins/api.c index ca3e93a194..b2c52d2a09 100644 --- a/plugins/api.c +++ b/plugins/api.c @@ -410,6 +410,12 @@ bool qemu_plugin_bool_parse(const char *name, const ch= ar *value, bool *ret) * ancillary data the plugin might find useful. */ =20 +static const char pc_str[] =3D "pc"; // generic name for program counter +static const char eip_str[] =3D "eip"; // x86 specific name for program co= unter +static const char rip_str[] =3D "rip"; // x86_64 specific name for program= counter +static const char pswa_str[] =3D "pswa"; // s390x specific name for progra= m counter +static const char iaoq_str[] =3D "iaoq"; // HP/PA specific name for progra= m counter +static const char rpc_str[] =3D "rpc"; // microblaze specific name for pro= gram counter static GArray *create_register_handles(GArray *gdbstub_regs) { GArray *find_data =3D g_array_new(true, true, @@ -427,6 +433,16 @@ static GArray *create_register_handles(GArray *gdbstub= _regs) /* Create a record for the plugin */ desc.handle =3D GINT_TO_POINTER(grd->gdb_reg + 1); desc.name =3D g_intern_string(grd->name); + desc.is_readonly =3D false; + if (g_strcmp0(desc.name, pc_str) =3D=3D 0 + || g_strcmp0(desc.name, eip_str) =3D=3D 0 + || g_strcmp0(desc.name, rip_str) =3D=3D 0 + || g_strcmp0(desc.name, pswa_str) =3D=3D 0 + || g_strcmp0(desc.name, iaoq_str) =3D=3D 0 + || g_strcmp0(desc.name, rpc_str) =3D=3D 0 + ) { + desc.is_readonly =3D true; + } desc.feature =3D g_intern_string(grd->feature_name); g_array_append_val(find_data, desc); } --=20 2.53.0 From nobody Sun Apr 12 04:22:17 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass(p=quarantine dis=none) header.from=epfl.ch ARC-Seal: i=2; a=rsa-sha256; t=1771948926; cv=pass; d=zohomail.com; s=zohoarc; b=HXrV60CXzJjpsgdA65rbc/cQP73yY03Lg7/RLE/PjwVUIL0UD4ULmuusvo4fcvr+imLRbHLf2rgdL3KokBHsloR8hB5SEEFMquy4+AQxz5AZ/8PnKbMQYBrwEDqrAIklD4QcX7tsNSJ/rTz2bRzOwx92rBq2JhTQR6nh4Lsn7j8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771948926; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=S6DfXDfhuroFuxhVAxX4MVTUfm2LCO68zdW0qY5Vh6E=; b=Yi2MIHCF3wDUttk0wG4TgIBRQaP1VJ6DECupqtekewq529dlInLa/VGFhUPWlDIlgpEdaGZcsQpWIzkHzV6MJX/YyqtckHZuYjUfmolzoZ6zAaopNx7NlJrxGmekCJaBm+0gEqZTzDBX6ymAxu41r7FNvKTRs/XIOHNvHWP/8WE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771948926372714.1881144204151; Tue, 24 Feb 2026 08:02:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuurE-0001AP-EQ; Tue, 24 Feb 2026 11:01:57 -0500 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 1vuuqq-00012p-4U for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:01:33 -0500 Received: from mail-switzerlandnorthazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c213::5] helo=ZR1P278CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuuqo-0001kk-3O for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:01:31 -0500 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) by ZR3P278MB1305.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:72::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Tue, 24 Feb 2026 16:00:34 +0000 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c]) by ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c%6]) with mapi id 15.20.9632.017; Tue, 24 Feb 2026 16:00:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pUqzuQRZJFOirXuOU8dfsSF2ODb26v2YmukbuLOR2rnGR+n4wcR5qVTb0l8xVmT5wZsd03y/hBzPN21/I8+qKvfUfnWQufRQ5cLcGonG6Hz4hGN8tvS9OgJDP6hIy8rtOjxmy0s5c9YyAVCYHbFm9J5EaX/inobSZ5CTvxHRzLJc6RBOj6pA/Nf1ouaJl2xqi3shkJpHnPW4fUDdIU8OUXRu1q2gW7pWVhxJPNc54DN7d9wWitMnW4QDDMivL79fOVXikyiuM/eHyMLvYDYOlvdy2ebuaFgytQfmWEzfUHDm07B4ARhs97EhH0Rwh7n9YCojYflHFj5UGYUKkwE5Ow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=S6DfXDfhuroFuxhVAxX4MVTUfm2LCO68zdW0qY5Vh6E=; b=s0apR2wc7E3gzfj+UAQfY5qVoTvvdQxGNTWh2C75KhgeZzpHBy5NYX3CABeAoBVqllQDi/svKn/vPlnEPPX82j+I2T/PvAsn6Ljt9eJDKqp9pH/cFlHI7BR1ovD5FsWTBNwn1SEeJp2qz+Q9FpT9kohq6zFS+Ms4Ubl4aHpyFTysoOvTtg2r5fxdtmBHKdDo58gMIgRPV4YYNJbzBc66DYG/63b5gzMwF9XjU2CjCxyzONTUkLuDvumk43djWfTeTIeiwSc4W8AYChR4nbjVedQa3PbAdQkAwbuDCc5gvfvc3YeVCE2r9mCagbTbf1Yskvfe1G/+0vmPdGb+wwQjpg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epfl.ch; dmarc=pass action=none header.from=epfl.ch; dkim=pass header.d=epfl.ch; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epfl.ch; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S6DfXDfhuroFuxhVAxX4MVTUfm2LCO68zdW0qY5Vh6E=; b=lECT0JUa4gCg4etLJwfQG0G1T3tn25WTpLfR95bwFiM2qbPb7d6ep4+RyLyGHrKjnaOgOmonT3TojQQ1z4qZz9tZ5lnY9m80s+8fqoEmY/iN138/55s0n6hbbz2GBcVPbA3QTmIxtUG+GwDTQHgikau/TVipnhIKakkE0hbMISU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epfl.ch; Message-ID: Date: Tue, 24 Feb 2026 16:57:21 +0100 User-Agent: Mozilla Thunderbird Subject: [PATCH v4 6/7] plugins: prohibit writing to read-only registers From: Florian Hofhammer To: qemu-devel@nongnu.org Cc: alex.bennee@linaro.org, pierrick.bouvier@linaro.org, richard.henderson@linaro.org, laurent@vivier.eu, imp@bsdimp.com, berrange@redhat.com References: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Language: en-US Autocrypt: addr=florian.hofhammer@epfl.ch; keydata= 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 5hMMZIzTI4AtIcgA3xe4Ew== In-Reply-To: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV0P278CA0016.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:26::26) To ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZRH2PFAD84B9AF9:EE_|ZR3P278MB1305:EE_ X-MS-Office365-Filtering-Correlation-Id: 118110e7-fe58-483a-1e89-08de73bdd6cf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|786006|19092799006|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SGVIdU85Vkd4ckMxbjlJWTVqNS85MGFFVUR5S0Y2cW5LVmlXRUJLb2JiL01z?= =?utf-8?B?a2FDNVpraUluRHp3dS9EUVNSd2diLzd4R3Z4d3Jpb3ZEeFZ6U1FQVVQ4Nnhw?= =?utf-8?B?Q2pzQ3ZCQTh1NVh1TUdpU2x3bUxEM25FbStJQndnWHVHN0tpSW45RVBLL1hT?= =?utf-8?B?S0NhNzgzZ3d6MDJwam83R3VLaTl2aUVLUEhnK29WNFhBc29IS29YdlpBME03?= =?utf-8?B?R25CcXZtODB1VVo3eldsczBFSnFvL1puUEk0Z2RiYlQybDUwWXpFS3dpRmNX?= =?utf-8?B?OVN5aGNIYmEwRnFvRHNhclUvc0pwS0FmYVhKZFdETVhwV3hGcUlNcmU3eDBX?= =?utf-8?B?M0daMkpWMlRIWGUxTUxoSHJjNTBiYnlIRmdQazhxWjBJbmdSSnVHTFZtVmtZ?= =?utf-8?B?MmVrK3FDVlNuaVpja3I4K2FUT3BpVlNZU09NaDlCK0dFWEJEWm8xbDk1U1BO?= =?utf-8?B?RUFkRStXZFFsbEJkc3pCY0U4SU5seWhNaVFpZGYvM09OWHU0M0c2ZWs5S3Zy?= =?utf-8?B?cFRjakpaTTJQU21QbDFPcXV5WVJJSE92aVNwRkkwR1cxNTBaUGtkSjVYb0dv?= =?utf-8?B?d0JjeHoxYjhVa0lGYnNxd1lwMExaVjVIWjNweWVvQ1F4cENKMm4xRUdOd0Fx?= =?utf-8?B?NE5zdDVRa3RYSTZkeFdyMWxsNzlWTnBseXFLNmxpSmZvdXBOSGVEUm5jMjRm?= =?utf-8?B?TFdRdkZ1VFludUJOanJRNHJOK1IrNzV2TTFBWU1XK05kSlNVU2FEZHFSUStq?= =?utf-8?B?TjdVS1hPWGoyT2E5YVQ4bExJZTBOL25OMnZxRTVDdWMxcFhUSVkrRnpKN0VB?= =?utf-8?B?aTA2eWRyY2lvRDZaTHlMV0Y5b2M4ZUFRbDZNU2Uxb2paZWNWN1A2OHFVQ2k5?= =?utf-8?B?Z2hkNlBQRk5lM0Z5YUp6a25xU0VVb0wzSzEya1VCdGVoY0hwNmF3ZjhQSW90?= =?utf-8?B?SExQQ2Fjak9XVmJOcnRjcWlXVHhPZnBHcjMyK01PRmlWcjNCcWJOMS9nKzdS?= =?utf-8?B?czU5YUJMKzRoUnlxT1BmYlZHWHAxYXNHNXNGbXppS2xxZ2tTcjl0L0RpQ05L?= =?utf-8?B?SDlHa1pNZ1ZIeFJjSUEwOVNyU3Nka0tpWTI5ekQ0VVBnakZQZ3dkRmpsbW1H?= =?utf-8?B?eW9WZllSRFF4Z29lWko2Z2VLajZiRkR6RmxycC9Vc0M5T3lWNStTTkZUdjRZ?= =?utf-8?B?WmpjVm9ZUHpTUENYbHBLcWV4Y2hDMWxRenFTZ1VLTGNJcXBsSnQrSi9IVUVP?= =?utf-8?B?S01VQlV2dU04dzVIc0M2SDhjVTBmNS9wU2RLMm9RRTM2Q2VOTXg3MUxTMWU3?= =?utf-8?B?QmV2dSt0cWNCWm1rOWdDdmNKb0dqbXlKV1N0S1BUaXdrY0lTVGY5V0l6WlVw?= =?utf-8?B?TDJPV013RHJmaVdGR0xLSVlXUDJDZkh2UU40QjhoVjJvSzdaMGVoZS9vdkxw?= =?utf-8?B?ZHV4WjBDdHZ1K1g2VmtiQld1MFRKNWVrYjdPUmd1a09kdWM2NlVBSlN2dGNH?= =?utf-8?B?OTBvTTJYeC84d21CZEczTFI2cXByWFFLK0RkdHZhV0VKNk14b0NEODRLSVpH?= =?utf-8?B?YnVNZ28xU3VPdXhaN1JTTjNTRlM4ZzlDS2hWaXM1NzF3OVZJOHBIb2tzdm5m?= =?utf-8?B?VEVOOVB0SXVmdlI5RlVETGpRbDh4dWtKdFdPUkNPT0cxMVAvcFZGNnpKblNM?= =?utf-8?B?bG05Z1l5eUFxNjFEamhMQk9LQ09WdkZqWGo4a0ZONnNnWi8yN2NhWnk4cHVq?= =?utf-8?B?Unp6UDBmV0FueFJDb2lpQUhVR2J6YWNIR1lXTjMzeXQ4VWl3VzBDUTUxWXF0?= =?utf-8?B?SnpOUU0veVlPU3M4b3gvb0dQSS96OW42MGlVeUIwL3lpbzdIamgxNlhZZ2Y1?= =?utf-8?B?QVoxVEJMd0tnUmU1bjdBR2RYNHlwcG9QdWpvR0dKbTdpaVI1NEhtL0R1K0JU?= =?utf-8?B?UkcvM0RqbUFUK1hKdDRPNHFmb3Q3L1hPL1NZcDhPTTJIMFFscHkrcjY4Qk5t?= =?utf-8?B?SElkOG5GV0JuelUzbGRiakE2eUVKcGdTUkpDeC9EUTUxbm9oSGNabUxxSVhG?= =?utf-8?B?MHFlZkYrNkVrMTRqWnRsRVhDdmdNNTFWQVJ4aTRNRDdySWkwNlh1c1ZwdjJs?= =?utf-8?Q?yMOw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(786006)(19092799006)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QUdyb0JCU3poQjMyRzQ3RnJpdnVRdkxZNDdURmhxY2VtRFhldCtaQTdzalFF?= =?utf-8?B?eEFnR0F2WFQzYjhLc3NUeU9lSUtJWFJoUUZkWThoWmgzQXh3WWZQVUJNUUkv?= =?utf-8?B?TWlMK1RtbXBja3NUWGNKSFp6dW5qWm1oS1ZzUzZreks2dnR3RzFhYnB0QVRK?= =?utf-8?B?YS9Td2NpSFJoSWFqL1RJSXZWRE1JeW1PNnNXMTJsM01QeU85eE11ZDZhYzlj?= =?utf-8?B?aU4rcS94TVc1eFNmb3AzUlBTcFlWQ3MxSWlQSlMxZkt4eVFVUTRveWY1c2tK?= =?utf-8?B?dWtzYy9WWStpVER5TlBDdlo5NHRpb0RiMTVsS1VRbUY5ZTRQNUZmRHBIMWgz?= =?utf-8?B?TFFQWVVDTVZsUm1zUzd5SXRaRmxOMDRYR1ZyblhhQnZYbVVtTDNLZVU5aktD?= =?utf-8?B?NlVCMitaWVFUTExnU1VjR0xPSUptdmRiOTVyZHNjUDJJaW5ZVlY0SVRRbEw0?= =?utf-8?B?M3hRTXgxTEJvMGh5dVpnVlNIZUpXS3dtM1ZQcDR0Y09tV0FXVVVHMC8weGNy?= =?utf-8?B?V0k4WXZoUWozY0lyMGxjSGRsajd5MjVCbXdSTUlPbldvd2swNndtOXdRNjRq?= =?utf-8?B?cjZ6bVduYk5xamcvQ1lpOGxuYnRxdU5TWE5tU1VoWWtsR1lydzBNaW1wZVhs?= =?utf-8?B?NVdtNytQeENmZ2ozV0FQSmd4T1greENBa05VRlhMcVlTWkdCdThVZHZFVk9Z?= =?utf-8?B?RVNpVUNvcExsejRpMWROdDVWelZVam9CalpMQmJTWEFCSHVROEJmT3FLVFVR?= =?utf-8?B?NFF4d3B5dVcvWUswTStiMDYxUWc4WXVaWjkwekQ5WkNHSUpQb3NoWlVZSTN0?= =?utf-8?B?NzVpYzYxRGszbTlueUczYlhtWWJUejZxb1lBZ0N0TFpJQzhSaEZmUmVmWUpy?= =?utf-8?B?QWJGMDhGd3l6U3lrblVidVloYkdGZlJRbjc2Q3lGeWF0U1ZZQ1RKd3RncmYz?= =?utf-8?B?S1U2WWpDMXlYcXU1eHB2V0dsT1hUdUg1OVJGeFhRSHVrM0NuSTJURms2NkJE?= =?utf-8?B?bjVFWTNOdDhleGNNbEpkeDlMcldNTHRZM1BXMmtRVDk0S1hPTGY1TDVjWi9I?= =?utf-8?B?MVJ2eTBYOXNZdG54Si9Bdk9wR25BcGtJTFlSb09qazVGQmZhR3VHc0phZlpY?= =?utf-8?B?K1dsVHNSMlM2SWhNTklzSjBtTEpJS2VLUWRMTGNmejNDZTZybXZLeVNGSEg5?= =?utf-8?B?bFN1dlFVNkhtdlB6bDZTMW83Ymt3bnptc09ocCt2Q2Eva3lZY3p3ZWVpcnpL?= =?utf-8?B?cnkwNDZGbUNYYWNYL2l4UE51OTAwamdGaXRDK21EODVpMFg4aE1ZMHJMT0hv?= =?utf-8?B?Y2pXRlE2WkpPMUdKWStmM3B3Yk1vNTNwMzVrZkhJaVYxZWoyc1oyc29yNndy?= =?utf-8?B?eDRKZHVDQlJUYjd1d3ZBMlpaV1IrSStvMVZORzZzQTRKaGdTQ3R0WC9KWFAz?= =?utf-8?B?ODB4aVBId3JPdm9jeEc1L2NsdXJiSU5qTERsb1RQNHAvRlF6aWNBN09kSW9t?= =?utf-8?B?WXk5dlV3emtiZ2NnY053eTU2ekhpZm0xNkdCSG1rYm1QYzU2eHUySzJQOGNS?= =?utf-8?B?eFdETnBhUG03cFFVNUs2RmxJTFBkVkxmYVhtMVdQd1REZUVBdlk0eUV1T1Vn?= =?utf-8?B?Z2IwTGtCc004d1VaNGdjWDNjY2ZKOU56T01DNkZXdFVpaXFrV3VqWjd1bm5n?= =?utf-8?B?THJ2bFM0WlplNGlwQ2wzMHVnOEJDTnFzaCthQittRTZQSG5YaitXcXo3LzAz?= =?utf-8?B?Tnp6dmYzZGV0ZHZwMHVFelp2cWJBNXdYeHRZZDM2WGNZaDl3dVBydlhWTG80?= =?utf-8?B?aEdoYWFobjU1Q3N4NnlmMVJOSExIOGpiSmUyLzI0SER2VjV2U3lPSXJpQTJa?= =?utf-8?B?Njh4OW90T1orVUFjTXFENE9WUTFKSkJqQkwzSE54RWljVFMyT3RiL0QrUW02?= =?utf-8?B?N3hiQmZkTldzamZFb3o3b1U1c1NVS1FaRTNSVmNycExacWdOdEZxZVgyWTZX?= =?utf-8?B?K3FsaTVkYVpSNUZOejVCZVFDV2NNZW9sRjBmL2Y2aUJqQkQ1bldOT2phWjdl?= =?utf-8?B?Q3kwYlJVcW50bkEzYUpTaHU4TnpJZkJ6cUxDR2JCMjVrOHoxZldOMmg4dHc4?= =?utf-8?B?UjlzaHJtVW9mVlZxNHBQd0tDL29oWk56S0ZlV0RTMmJ1cjF2M0M0RnpDQ3R0?= =?utf-8?B?UkVpcmhjK0UxTmUvbFVUTUV2OU1PWW8zMHMyY1JJa1ZtMEcwT1VmSkVNSjRu?= =?utf-8?B?SFlxUWZSb1BwbTI3VGJySVN2eExYaWI4KzJ4aCsyVjVoZWNycnRZQS9iYmh5?= =?utf-8?B?dmxxbEo4RUtNaUZ1TmZtMCswRHdpTkxaOXBjWWkwRnZGWHNnUzhGdz09?= X-OriginatorOrg: epfl.ch X-MS-Exchange-CrossTenant-Network-Message-Id: 118110e7-fe58-483a-1e89-08de73bdd6cf X-MS-Exchange-CrossTenant-AuthSource: ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2026 16:00:32.4505 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f6c2556a-c4fb-4ab1-a2c7-9e220df11c43 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CLM6YWAgB5ks9A2ec9wuN2YxCFd0/9CcNSPNtZqzM7KaqWD8n+LoCusHddtMTL14Na8Ca3eTYsf7pOhqPnDr9IZyPLtP3zF54iq77yhmnuw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR3P278MB1305 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c213::5; envelope-from=florian.hofhammer@epfl.ch; helo=ZR1P278CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @epfl.ch) X-ZM-MESSAGEID: 1771948926974158500 Content-Type: text/plain; charset="utf-8" The opaque register handle encodes whether a register is read-only in the lowest bit and prevents writing to the register via the plugin API in this case. Signed-off-by: Florian Hofhammer --- plugins/api.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/api.c b/plugins/api.c index b2c52d2a09..3a8479ddce 100644 --- a/plugins/api.c +++ b/plugins/api.c @@ -424,6 +424,7 @@ static GArray *create_register_handles(GArray *gdbstub_= regs) for (int i =3D 0; i < gdbstub_regs->len; i++) { GDBRegDesc *grd =3D &g_array_index(gdbstub_regs, GDBRegDesc, i); qemu_plugin_reg_descriptor desc; + gint plugin_ro_bit =3D 0; =20 /* skip "un-named" regs */ if (!grd->name) { @@ -431,7 +432,6 @@ static GArray *create_register_handles(GArray *gdbstub_= regs) } =20 /* Create a record for the plugin */ - desc.handle =3D GINT_TO_POINTER(grd->gdb_reg + 1); desc.name =3D g_intern_string(grd->name); desc.is_readonly =3D false; if (g_strcmp0(desc.name, pc_str) =3D=3D 0 @@ -442,7 +442,9 @@ static GArray *create_register_handles(GArray *gdbstub_= regs) || g_strcmp0(desc.name, rpc_str) =3D=3D 0 ) { desc.is_readonly =3D true; + plugin_ro_bit =3D 1; } + desc.handle =3D GINT_TO_POINTER((grd->gdb_reg << 1) | plugin_ro_bi= t); desc.feature =3D g_intern_string(grd->feature_name); g_array_append_val(find_data, desc); } @@ -467,7 +469,7 @@ bool qemu_plugin_read_register(struct qemu_plugin_regis= ter *reg, return false; } =20 - return (gdb_read_register(current_cpu, buf, GPOINTER_TO_INT(reg) - 1) = > 0); + return (gdb_read_register(current_cpu, buf, GPOINTER_TO_INT(reg) >> 1)= > 0); } =20 bool qemu_plugin_write_register(struct qemu_plugin_register *reg, @@ -476,11 +478,12 @@ bool qemu_plugin_write_register(struct qemu_plugin_re= gister *reg, g_assert(current_cpu); =20 if (buf->len =3D=3D 0 || (qemu_plugin_get_cb_flags() !=3D QEMU_PLUGIN_= CB_RW_REGS && - qemu_plugin_get_cb_flags() !=3D QEMU_PLUGIN_CB_R= W_REGS_PC)) { + qemu_plugin_get_cb_flags() !=3D QEMU_PLUGIN_CB_R= W_REGS_PC) + || (GPOINTER_TO_INT(reg) & 1)) { return false; } =20 - return (gdb_write_register(current_cpu, buf->data, GPOINTER_TO_INT(reg= ) - 1) > 0); + return (gdb_write_register(current_cpu, buf->data, GPOINTER_TO_INT(reg= ) >> 1) > 0); } =20 void qemu_plugin_set_pc(uint64_t vaddr) --=20 2.53.0 From nobody Sun Apr 12 04:22:17 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass(p=quarantine dis=none) header.from=epfl.ch ARC-Seal: i=2; a=rsa-sha256; t=1771948943; cv=pass; d=zohomail.com; s=zohoarc; b=ZpWIlHPYedJAPyoft3zRxCoRD3GrTdfU/LHUc65dBcFQRboxxZrkTw74y4W611dcZp/K7JVfLPiyibxXsECbiSzQH7J1jj0Tkai60KnL2uP4yuqnJKUPur4SirueNsi+pc6xU7M1nEGS4+CEUmOKCjKjU0fsKhrE3nArY95FpcM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771948943; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0ISy3kQp1go1wwmNkq8lZDiNxD/uu6c9J/JPxYcPwIg=; b=LteaiWukuDK2hS9DPLsjWfe8i3/D7rvSMKSpukTwR0QXMHwFP0mp4IyIkBkXl00HaBFP5vqC4E9QKhwtyGniFHvAciIg5WPH19PZ+XkR1PygwIXjNzAxbSZ+ibgUFGUWzq4/vjXIS3/Osg8QpBjYWgu34wuyaHyhAZH4h230SVw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=epfl.ch); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771948943379251.18092598689043; Tue, 24 Feb 2026 08:02:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuurO-0001bf-Tk; Tue, 24 Feb 2026 11:02:07 -0500 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 1vuuqv-00016h-La for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:01:42 -0500 Received: from mail-switzerlandnorthazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c213::5] helo=ZR1P278CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuuqq-0001kk-JZ for qemu-devel@nongnu.org; Tue, 24 Feb 2026 11:01:35 -0500 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) by ZR3P278MB1305.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:72::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Tue, 24 Feb 2026 16:00:35 +0000 Received: from ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c]) by ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM ([fe80::80ea:3d03:40bf:998c%6]) with mapi id 15.20.9632.017; Tue, 24 Feb 2026 16:00:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fm1SpAD2pmG6vFKk0pcCltZsiZ94lJunFCdmcAB8zCDK65FJc1+HI71tXMB9MpaLNzhvf/QQtHUb40MAkL8jTIjwv7R+KYpHTsapRhBOhOyCVoSHG+eU0G1zlXPUnqLuqoWp4bZB7037MiVJzTaXx4AAFaV0idmjHF3CHbxciS4K9TMMIVquBs2wcOPUHi/9yY3arN/bi/THEaSSrzrh8bIDugEHpPNtHcjoE80Hk7vR0GSuXxufuCfEigKX91Q4XnyqrBFQdbFMk8941LHETfPNzTP9jgp0JFjZsJcDFFU0CSfGmnG5dOFiwJLbnsXIgyF/8lSYM+R7XZFjqKu3mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0ISy3kQp1go1wwmNkq8lZDiNxD/uu6c9J/JPxYcPwIg=; b=QO0/XjGY0ijtL6xArBYoPq9f95MiWRYlbCUAFX2ZPQqbJI0eNiJQOyGE161C26TSA3TEbF1tJEINI1Ro7KMC8dYlBg4kYaLiWKZgZdtu/i0gDat6IE993xQsgv9bwvrvNhSQ6zejOz/8SeBizNw8yIvkIYydJXoQyYvwvRzCXWRO6wAg3Q9kll1GFFFCNZi4007O581U6iJ6HQDQzehputU5v7NWXm3CCGGPwp52n98AeqrJwoD+3p0OYzobCo26YFKyEXWI78b53JQalpE4E7XhnIvio2YBUrXijm5wa2YPexlBchuw29JMth3SyG6z3xLnIv4luX+8M7lAE91vBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epfl.ch; dmarc=pass action=none header.from=epfl.ch; dkim=pass header.d=epfl.ch; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epfl.ch; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0ISy3kQp1go1wwmNkq8lZDiNxD/uu6c9J/JPxYcPwIg=; b=sQ+VoVBSL4GL6lMlcQQ+lz3E3yJWZeZAvY3AhEBXqOfN+3GpxnugdbuUbeqQ7T1dkz7+/caYAu5yhHlOl7ACcywdtJR8xoyZNIhbOT6xZj/Bh8NrKscyUwuiW8ja0aIEtTvnedhgCyU9CPGAe+3itFoywAj3HGYsSQrpPACdsFc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epfl.ch; Message-ID: Date: Tue, 24 Feb 2026 16:58:25 +0100 User-Agent: Mozilla Thunderbird Subject: [PATCH v4 7/7] tests/tcg/plugins: test register readonly feature From: Florian Hofhammer To: qemu-devel@nongnu.org Cc: alex.bennee@linaro.org, pierrick.bouvier@linaro.org, richard.henderson@linaro.org, laurent@vivier.eu, imp@bsdimp.com, berrange@redhat.com References: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Language: en-US Autocrypt: addr=florian.hofhammer@epfl.ch; keydata= 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 5hMMZIzTI4AtIcgA3xe4Ew== In-Reply-To: <909b0a4f-9759-4e27-bba8-997ae2f41bd6@epfl.ch> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: GV0P278CA0016.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:26::26) To ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM (2603:10a6:918::220) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZRH2PFAD84B9AF9:EE_|ZR3P278MB1305:EE_ X-MS-Office365-Filtering-Correlation-Id: 248fd597-e7e2-4dd9-907d-08de73bdd727 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|786006|19092799006|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WWd3WFdYVnFFcUJyNGJRU25PSytXOEpPT2s0dGVWaEtrZGNwbXV4SmRnajla?= =?utf-8?B?OGQ0dVZuRWZjZEZnVDFTanZtUU9IRUp5MS9LKzJzRTRHRk1aRkE2OWlLaTFV?= =?utf-8?B?SXhMOU9VMHdYM0ZCK2ovMkJxVTJZbm82cEpRZ3J5R25MNnZEV3F0Wm1SMSsv?= =?utf-8?B?SUVaQVN1L0xkSVYvT3FNWVNvVkQ2c2hDdFI5b3BOTTFrOFJybUp5M1pUOW9p?= =?utf-8?B?MTVuQ2M2dVV2cjRvTVhQMERUenNXN1VJZVV6TkpSc3J3K093S3JtcnNQb0Fo?= =?utf-8?B?UVhXQk15VzUzb1hZSWszSDZHT3BjcVA4bW16T0RGaTRGRGNYK256YjFsVDV6?= =?utf-8?B?TFRNUlo4OUVnOEhZMmt5UmZLbkpiT05abTNLMHAvMTFCRHA2Zzd4ZzY4c1Ax?= =?utf-8?B?eGRDVjVaL3NmMng4dWYvN09XbWR0NUdET1hLcXJkQkVsa2lEUlpzbjVacTZs?= =?utf-8?B?YmhiUnZOUWYxN3JnTXY3bEdSeE9aNlZIRTRtZVFtL2pxQ21abnczYS96a0Nw?= =?utf-8?B?U2hlTFBWR1FzSjgyWEVUbFpYdlFMYlp3NTBVZ3hxM2RtWVZ1eldwUUdRWit5?= =?utf-8?B?MW9yR3BESThaeHdxNXIyOHhNWmM0Zkd0U29sZnZvWGpFbWR6Zjh6elh3M0dF?= =?utf-8?B?VHVJcG5vdmNFM0NLKzgrWmVlOFFrMU9pTUxYTXNBMHBzQnFtdGtxU21WQ3po?= =?utf-8?B?RUFMc2FCaHpMdU9raWU3ZGxDTXlVUlBDalg3R1dkNTBON2RKcHJCYTlyZ3VT?= =?utf-8?B?T3hDaE5YVmRWbUZGNEhXQXZBU2UwbUlOL1lkWVo4SmpZYWU2Yld1RVpEcWZQ?= =?utf-8?B?cmowN3pRc05GSTdGeWRBNldva1hNUXljVU5WWmlsQW02L0lCSWljVG9uT2VO?= =?utf-8?B?OENqZUtlQW9SQ1laQ2NtaFdKWXRkai85eUYrQWh2U0U5RElCTjlZcFBMV3Vn?= =?utf-8?B?dHAzL090S3hzUmRxNyt5ZWt3VHFISkMvdGxtQm1oYVBJcEFKaWhxRU90SG1T?= =?utf-8?B?TDFqOVUwZmxkNHp6bEFLZmJqVFhxeGkwb2dLOFZTN29SY2hqRXhaS1EwOG5r?= =?utf-8?B?blFZU2ZSSlIzaDBlVzNCMC9NNDlieVdiM0JvWW56V2F4SnBRak1QQVhNUGZ2?= =?utf-8?B?MVJKL2hmVGhudDJwc21jRmoydnkrZGdDbUNnYTVvdGdrb0JQbUQweDZFTEcr?= =?utf-8?B?Vm96Mjh1SGdIVTlpQnN5ZWhiNEtoWXJoYjEvdWsvWkgrY1luaG96VU8zaTZz?= =?utf-8?B?TVB2UUJXVnBUZE45N2YzWThCeGpjYXpsUmtkR1htMC9EWVVYUFo3cXhQUEsw?= =?utf-8?B?UmVJUDk3WWt6MGEzeEdIVEpxYmdERGNJaVczY0JpaGhEb2JubG9CUnlheDJw?= =?utf-8?B?b2FqbVh6RFFmOGY2Znh6VmEzcXBoRkg2K0ZHelFrckh0NGFLeUp5bDFjTVBv?= =?utf-8?B?L0dvemtRY2VrRGFYeHkzN0huSlpHUXZ2YXNrL203U0FPV0NTQzhzYXdlSGdV?= =?utf-8?B?clNRc1ZGeTI0N3ZnQWxONk1ldVU5d0lScDl3cWpFcDdjUC9seHZJNkZXMXpy?= =?utf-8?B?bERSeE9jdjdEOTlFUVYxcktLRVNSR3FhYlRDRlJOdnluNjlkaTNVOTBoVFR1?= =?utf-8?B?Nnl3bVpaWUhPelE3OG5RNTR0bjZiVmYyME1hNEdqQ3lSOXFQWnFJdjluTmxa?= =?utf-8?B?K3lqZGdmZEZWaXlCd2FYWmgxbkIwdzY3amtpQW5TWFpKOUhwM2xBUXFDSHRI?= =?utf-8?B?TEkxd3IvNVhoWXZXQW9kQzk0VUQvR0VaWFVmMFVGQjVZTDVmMGlRemV0SUsz?= =?utf-8?B?clNSTlRva0Y4dnNFUGJVY0Q1cnFnMVlia0pqZFhQU0VnTjR4Yno3d2x3T3ZS?= =?utf-8?B?cHVGaXlTMzk4K3paTktzQ1ZJZzRsZ2NZOXh2M1BkejlYVFlpKzA0a0s3TXEy?= =?utf-8?B?S0ZoQ1B6WVF5KzB5SWJhNTE3aVhzbGFrQUVHVnUvamRHeklIeEZIalhqM0pV?= =?utf-8?B?UHNBQTMwNHUvazhyMU5ka010bWdTSlZqWGxlc0hYZy9wUVBZcjl4THFtQ3FM?= =?utf-8?B?VHlrWlh1bFJueWZIeHFDTzdtaVBkZzRLdVE2SDRSYjk2alNlUGg3VUtzN3F3?= =?utf-8?Q?nB+8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(786006)(19092799006)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?anBmcFR3ZHpZNWdrMUtkNWxwY1VZYTZINFpCaER3bWF5SFpyNmZya0FxQWRZ?= =?utf-8?B?VGtSOU85aXFuT1V0S0g0N05KNVFpRVE2SmZDaFFuV0hSOCtkZDdiL0hYdzlK?= =?utf-8?B?b3c0alJJT2EwWTFNUGVDdmU0V2w2ZC9QOFhrZUUydFZMTG9PZW9QSmpUU3F4?= =?utf-8?B?eTN1eE5TNEdMZXV0c3Y4L2FqcU9jTG91RTNaTjlGYmJlT0FsclQzUUtHbm5m?= =?utf-8?B?WFRUUHNOeGlQcm83MC9kcmR3Vitucm9JN1RGVFdFS1B4YUd2dmo3NENkZUdx?= =?utf-8?B?YW5YWVV1VWQreGlwZ3pjandpTy94L0tLMmNIZ0t1amVvSDFoSDFxdjZSamw0?= =?utf-8?B?LzJpRTd3eXpuRGhzOHViTFZ3SHY1WUdZSVRrMGttQ09PTERBRGpyYmxrM0dD?= =?utf-8?B?TWJuN28xaDAycEJTTTkzNk1oS0ZPNlJKclpBbGNXRURaYThCdTIzWTM3VTV1?= =?utf-8?B?RkNMTUV3ZFFtQUtZUXoyWEZVS0ZXdk0yVUxsM29RZ0QyNEhyVTY4Tjc3OXF0?= =?utf-8?B?S2YxRldzcG5XZlhmU2Z0UlRhendKeU9hUFExcVZHaVpxUU8xcHl0cGxBSVVW?= =?utf-8?B?UTNtTVNObnpDbE4yVC95c01aakxELzNkeEdiR0hyVVhqMTlCMkxBTE9pSDVQ?= =?utf-8?B?UndsNjkraUVQSjVBK2dHK2ZxWGt5RTg1clhlcjVGVDI3eXlma3E4SkJVRGFz?= =?utf-8?B?NGJHRFU2OXNlSkdkY1drVWt3cTVxMSsydHloRlJaRmlYeVFoYXI0STlCRjBJ?= =?utf-8?B?NllhK1ZaTDFIMjluS0t2Ymc0Z2I2TE5XU0RRaXlXdjl1QmRzeXlLSk5IMHlE?= =?utf-8?B?eVF6a1JkUUdlRWdhL1J3YnJGTWJmaHhCZ3R1Z3ROT1R3cEE1REI2eldkZTBp?= =?utf-8?B?YnREWmJWdDJmNnd3T2RSaWVUR1RJMmpwQnlGOXcyVnpEeTBIdmExQXVDdEtQ?= =?utf-8?B?RGt6MVdBZlRKVFVIU3FrbTVFZElITzU1QVYvRWFVby9iU1VxZnMzM3lTUTNv?= =?utf-8?B?Vnpmd2NMVGdwcE1SMFR2UC9DWEM3Q2NvblEwZkZSbHVKelZ3M2diUnNja3RG?= =?utf-8?B?Z1hGeVVjRnVvS0Nwbm83UnVCYTQwUExwdVllM1REQzk1VnR1UENyS2wwZlI2?= =?utf-8?B?OUc2OGxNaE1ETGx1SXVGNnZGZk1zc3c5b2wyWkdvcFA3anJYcFI5eDhTTll3?= =?utf-8?B?OWNaMkwvN1FGNERQb3ZZZDh1aEowM3UrVmp0YkhiRFYrRXAwbjNCTWFFNUtr?= =?utf-8?B?czEranZPd3BFazFueHB3WCtqZ09iKzFrTnlOTVVBL295QTFpWDNBY01KK0ZD?= =?utf-8?B?S1pzQjQ2K2NTcThNa0RoTUxSSGYxVVdzYnpyR1Rzd2QraDNDelJadmRFV1Jp?= =?utf-8?B?R0JEblhadzF2Q2Z1RWVWd09GWDhTK2FGRUFXSXpxd2kyNHBxSmtxNFZRdk1Z?= =?utf-8?B?U1o2R0tSV0M0UEdWMm5XcXlsUkdRM1NoczFUNER0V3R4MGVIMmZ5eWZQSVdM?= =?utf-8?B?SGJMQytNZ1MrcTF3SG1GWGQ1V2o3bndnZ3o4eXBucWM3L0c5Qm05cEFRcGJ6?= =?utf-8?B?N00xUkx1TW5mY01qc1pBdDhmcTZjdEUwYUhKUW5BcDJ2QlBoU3hoSlNYUnNw?= =?utf-8?B?OXNWV2x4dnBtakdkSHUydjdSZWJ5aHR4RjU4Y2JVS2gzOFNlQStoNFU2N3lz?= =?utf-8?B?S1FzMzZkdjU4NjJiNVVWYW1TbDNLclFXWkVzZk1WZG5YV05iK2hKZ2RIaXdk?= =?utf-8?B?ck51YmxveTJOanhkbys5ODRma2RaYkhTcFJOVnVkZ1IwbFI2Q0RBWDZuMSsy?= =?utf-8?B?QXYxdGxTTUcraHJkdmpyNW5GUHlsdHM1Z0YrMmc0WE9sRHV6VWhORE5ld2Nw?= =?utf-8?B?ZGJvL0JNTGxZQUt4T3hpQmZxM2ZaMWRUa0lNMW94SVBtOXpOaWlBbGVZMU42?= =?utf-8?B?TFpoZU1kaExyOGhJakNEMHdSR2hHbEpYRDlHYTFLbmZBa1pJVldrVHBhaGhY?= =?utf-8?B?U3FaSWVsT2x4MUtJL3RnRkN2Yk8vcytrSjUyMm1uWElLVkdVa0VLcmZnSXBC?= =?utf-8?B?L0xvL0Fib1JBVHZOZmFGQmIzc2pWb0lBL0oxdUdUeENGU1g1TWo5d1lGZU1C?= =?utf-8?B?NGwycUdOcXYwS1E4QzdmeVRSU21keTFIeExlT2dNMG4vaHpaWnFGcmV0QWd2?= =?utf-8?B?NzlEZVM2M0RhZG81d09raENHZ3JUMXI3OWJ6OFB1SmJMaG4zVEZVNUVTSE11?= =?utf-8?B?N0s0aXh3Mis0TGlCeTlYbmQrSGhWYzBUbmpwejFPSXppYTMzaytvcGgzK3RO?= =?utf-8?B?MXNzTVdTV3lZRU9PQVNSL1hxY2hVKzVmM1AzcW1nZFVQS3V0Vm9sQT09?= X-OriginatorOrg: epfl.ch X-MS-Exchange-CrossTenant-Network-Message-Id: 248fd597-e7e2-4dd9-907d-08de73bdd727 X-MS-Exchange-CrossTenant-AuthSource: ZRH2PFAD84B9AF9.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2026 16:00:33.0200 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f6c2556a-c4fb-4ab1-a2c7-9e220df11c43 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ua9ZVjMTILR8aqdV0XsnkffQnCk/ffm3u7Mjk/5bTWHYNlowhthQ1OvmHjkWfnJ3bHOWnN/21bIgUF4CyQI6g7JgA6wVnYvmNh4Ari5ihwI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR3P278MB1305 Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=2a01:111:f403:c213::5; envelope-from=florian.hofhammer@epfl.ch; helo=ZR1P278CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @epfl.ch) X-ZM-MESSAGEID: 1771948945145158500 Content-Type: text/plain; charset="utf-8" This commit tests the readonly feature for registers exposed via the plugin API introduced earlier in the patch series. Signed-off-by: Florian Hofhammer Acked-by: Alex Benn=C3=A9e Reviewed-by: Pierrick Bouvier --- tests/tcg/plugins/meson.build | 1 + tests/tcg/plugins/registers.c | 68 +++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 tests/tcg/plugins/registers.c diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build index c5e49753fd..5005aa8dc9 100644 --- a/tests/tcg/plugins/meson.build +++ b/tests/tcg/plugins/meson.build @@ -6,6 +6,7 @@ test_plugins =3D [ 'insn.c', 'mem.c', 'patch.c', +'registers.c', 'reset.c', 'syscall.c', ] diff --git a/tests/tcg/plugins/registers.c b/tests/tcg/plugins/registers.c new file mode 100644 index 0000000000..a7bd692225 --- /dev/null +++ b/tests/tcg/plugins/registers.c @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2026, Florian Hofhammer + * + * License: GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ +#include "glib.h" +#include +#include +#include +#include +#include +#include + +#include + +QEMU_PLUGIN_EXPORT int qemu_plugin_version =3D QEMU_PLUGIN_VERSION; + +/* + * This callback is called when a vCPU is initialized. It tests whether we + * successfully read from a register and write value back to it. It also t= ests + * that read-only registers cannot be written to, i.e., we can read a read= -only + * register but writing to it fails. + */ +static void vcpu_init_cb(qemu_plugin_id_t id, unsigned int vcpu_index) +{ + g_autoptr(GArray) regs =3D qemu_plugin_get_registers(); + g_autoptr(GByteArray) buf =3D g_byte_array_sized_new(0); + bool success =3D false; + + /* Make sure we can read and write an arbitrary register */ + qemu_plugin_reg_descriptor *reg_desc =3D &g_array_index(regs, + qemu_plugin_reg_descriptor, 0); + g_assert(reg_desc->is_readonly =3D=3D false); + success =3D qemu_plugin_read_register(reg_desc->handle, buf); + g_assert(success); + success =3D qemu_plugin_write_register(reg_desc->handle, buf); + g_assert(success); + + /* + * Reset the buffer and find a read-only register. On each architectur= e, at + * least the PC should be read-only because it's only supposed to be + * modified via the qemu_plugin_set_pc() function. + */ + g_byte_array_set_size(buf, 0); + for (size_t i =3D 0; i < regs->len; i++) { + reg_desc =3D &g_array_index(regs, qemu_plugin_reg_descriptor, i); + if (reg_desc->is_readonly) { + success =3D qemu_plugin_read_register(reg_desc->handle, buf); + g_assert(success); + break; + } else { + reg_desc =3D NULL; + } + } + /* Make sure there is a read-only register and we cannot write to it */ + g_assert(reg_desc !=3D NULL); + success =3D qemu_plugin_write_register(reg_desc->handle, buf); + g_assert(!success); +} + +QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id, + const qemu_info_t *info, + int argc, char **argv) +{ + qemu_plugin_register_vcpu_init_cb(id, vcpu_init_cb); + return 0; +} --=20 2.53.0