From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11021139.outbound.protection.outlook.com [52.101.65.139]) by lore.virtuozzo.com (Postfix) with ESMTPS id 74BEA80203 for ; Mon, 14 Sep 2026 19:13:22 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pvnn1rmWPCLSigLO4ZHphA1INUtZziGWws5I/Kh+bfcp50HVZNlgAzbzpDFU4gYtBxQ68muuT6qPPrQEGYwaL/rcj1A/UIm62HsPSWcuzS8tjyxuvaE1XzPMOw1gqPdT1x4mXEJ/a5iCGN59gU+h6i6wQEcXKBSLVuNaQyC8BRkqekxZGwM1wTAOWWYDAB8IcGV5qMEhadhn3U4WaLVOC/2n/Tw6CXPZVnzosaCMS3qLFpGUM+bElRugFYp/AKcU7tjugezGfPEXt7zKHO/fR5dWnnmRvKN2oheEK9A9xUPmPfMFy19IbXG+LlOIZzywCQehFaKzHglICe9bHJ6QNQ== 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=aqFvUH4BqCb0tw7WbMAPIubdKArFksNQABP+CXBEcnc=; b=kKcgdab0uYjuZlb0vBDjPBAX9fUmXeAWcXK0aOXGCuR3XjjUktJFZNqdykE+DpYOtSc3YsMCXYXYYsJ8CSkVWn6j7zz3yEPnLrTurwFeO6vTkN31TNBiSYpI2BBd3U/YfmeLcYe3MtV15LbXUIRUa1BrF2NIDTLFKFpr18zYdu/z0M04dN4uF1ErpctqFH7/MqpivCFE2TJ1o5N3pDoy0GFuzihiAyZ9D0r5DoT8Upki/xtVkoNYTDbS2kVhk03MCO2LlgT5r/1qiX6ZImnxOduzCGx6Zq5WoWaQH5N1BYT/GBj68uizuRw5FsFtq/NAjWXp6gohKT+F121rDTdXTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aqFvUH4BqCb0tw7WbMAPIubdKArFksNQABP+CXBEcnc=; b=f+yU1W0P0YzhQRV3MGgSY6zf5AGwWN2u3Q4DOPBhlEyCvq2vUi3dIhrOtPUBxr7+XitUsMpmwE1u2ZcCKesgPRMxQEn+y3tb4VdDHKIAwuy74ow0avjQZ4coVIDF2W5Y5x4JMZ/pV2/0yKHuMuZSpKV+YunWrvdP8Ig4kcGm/M++uX2OzdShhbleY0tDB4mGicmChiLhiAoZ5r5QrQGZ0YT+1/DUG7Hs+oUa4CfGm2DC8t2DI75CEwU13WXXjADIPtPiTE9IeKlRKFnDON5eA9MOzLqTZK1PwF5jS736SmNDM3TPWTJmk7IEgmXawokrncszdyg9d/8K/an/RtOKkQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by PA4PR08MB6192.eurprd08.prod.outlook.com (2603:10a6:102:ea::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.8; Mon, 14 Sep 2026 19:13:20 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%7]) with mapi id 15.21.0428.004; Mon, 14 Sep 2026 19:13:20 +0000 From: Andrey Drobyshev Date: Mon, 14 Sep 2026 22:13:12 +0300 Subject: [PATCH QEMU HCI-8.0 v3 04/12] usb-host: factor out usb_host_reap_xfers() #VSTOR-137800 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260914-usb-host_v3-v3-4-c43a834ce016@virtuozzo.com> References: <20260914-usb-host_v3-v3-0-c43a834ce016@virtuozzo.com> In-Reply-To: <20260914-usb-host_v3-v3-0-c43a834ce016@virtuozzo.com> To: svt-core@virtuozzo.com Cc: den@openvz.org, andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIUP296CA0097.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:35c::17) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|PA4PR08MB6192:EE_ X-MS-Office365-Filtering-Correlation-Id: ed4d338c-d55f-4c00-e309-08df12943d5e List-Id: svt-core@virtuozzo.com X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr X-MS-Exchange-Transport-Rules-Loop: 1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|52116014|366016|376014|18002099003|10067099003|5113699003|22082099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: EA2jpu19Jlldbew84HcTw30JYQVVvybv1ebFBqLL8Jr9SD8251LX6nFjrZ6LjP/Zyn576utp3U9E7zmsoWlEntHTMbuIkDiw+lCWgfAZaj/Cum8A0dBc+g3GTkhYunnG+CcItywyIMAo1kprlRiYyN92tUb+vqFhz4CaHRXAz05E6AphU7scAP6DlpiR0ED60iPYnifisn4Pk31CpZKdxWZDGjTXAJM59iIl/a7Y6T0fT2kS6LLLc6dhykJ2La0+Ef8sB7atZ9VSEukZP4J5ZgKEb4InY+Ot/D7zxR9Kqd3PIGfXug/3MTx0j68ND6HRXb5SmaYwqJhEzrob7/3erw5WZT4AYODE3No/DhOzV0m9H5IWSL8j+a0gc3shT9QKr7uBWf+TsjNReS285LPTVCxbRAYSAoYJVB4ZDLX6ZqvBIqH8NSZTPEIJ/M6wezmASHhi2XmUebzHTpQmEtcbW+GxJNFLum1KlzHhSIkq125RcKsvihYjvUmcoww/a7BjdcnoRmHswI+YiZQ/1hng0u070OFbs/atqb4RypnTpx/0e9U1LNIRS7QtYYunwBfYDMtP1wZxGi7Tu7CRL3rA7L0rVaN93nBTq2l/oiHZzgekYV/hzSscz4oki9apaxej582pjlQYW8G5v9h6UNWiCkvuiHLfInzsjY+3Vu4jju23hLCZJU5wusw7r5nvyCZKxbfbyIwRYp241+Oei+z/r5o/BXnNufP2wK9UHpnIz7s= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB10656.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(52116014)(366016)(376014)(18002099003)(10067099003)(5113699003)(22082099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Zm42djBISHMwU2YyZDFBS3hlVTgwMCtIT0tPRWlaMHVwb2l0SG52MVZZbzgx?= =?utf-8?B?QnlmcGtONzAxNjRnM1RsWE9WcmhrKzFRUno3cHRwcm02MjNYK0pNLzJRL3Np?= =?utf-8?B?S1pwRHpCd1Q3Tk9sODBxN056a1Q0aWUwMzJBSEpGeEYrSlo0dUlBS2JadVl3?= =?utf-8?B?UjNQeHhhWUtGcU84ODl5UmpRSW5yY29XMytMalRrVVFTKzNIeU1JTlAwNG45?= =?utf-8?B?ZXZwRWxqZFVudUpEKzNFMFpqN1ZDL09SZm5Qb3Q1SzR2UTV5MC93RlJSSTIv?= =?utf-8?B?ZGNUNjBGNDdmTU00WDUvSzJ3Q2lMQ3NXUGx6M0JCQi9ZNDdKdTA3RE1lN0g0?= =?utf-8?B?MkNPamk4d05nU1Fha1doOFhzSFJVNjl3d25USktsSStDenAzc0hjRUVuK1h3?= =?utf-8?B?TCtwQjY1Q2k1NTZqMVZ4MklGak1SV0FqZUZnZk1zUXhZRXJrOGIvdzZoNCs1?= =?utf-8?B?Vy9TZEl5Yjk3N0dsOTRMajVmY2oyb0dSTlhpY3BRTXJRL2lDOGQ5NFFLeU5J?= =?utf-8?B?Y2hDWkwweWlDUlRVZWRuRURobTQrdXZORFhZR1cydGpvR3d0azNZN0pBU05F?= =?utf-8?B?S2lydHVHRWxSdmJ6VDFQaGNmTGZVRmlpUitlaDhFTE5BUE5oVVNEd0pEcEVz?= =?utf-8?B?eDhlYVh3bzdRcC9ia09STFVoRFBGenpDSjVBUHEwQ1luMGFzYnRyb29JdFlX?= =?utf-8?B?dTBSNGxYWEtVMkxkZmNXTGl1Qis5djhIcUNMM1BteVlJQVpaK0dsOU9oMHZm?= =?utf-8?B?MzY4L25JanVubFphUEhQZ1BUV010bDFrd2lTSisrMk9GSXBXVDY1azJtUzda?= =?utf-8?B?TkJ2Y2NMdndJV2phbkRCYkFZNnRROWU4bWhwQ2g3d2hYQlR1NEh0c3h4S3Bk?= =?utf-8?B?VUg3U08yWGpLMVczak5CbnFWR0l3SXdqRktIamoybU4wWUhDNURGaXhJWE9W?= =?utf-8?B?dTJoRkNpTmdzQ2Y4L1k5dlk0c2o0WlVaN2lIbTJ0Y3c3KzFWWXJEeGdjcXlW?= =?utf-8?B?czJqRUwvUmFoRkF5bCtDWmVNTERZZEt6VHhpa0dzdEJIcmxibXVkdHlFdjhz?= =?utf-8?B?Rjl3bHZDamxYWmhqcHErcnU0MmpDUVpsQk1QUU9ya3ZSR0twM3JxWElocWVB?= =?utf-8?B?THZQQkhtam5ObWhwVWI3b21LdmNlV2FiQnhhNTdvOWxleFNtUXpYTXkzTTZX?= =?utf-8?B?a3hwNlBwWUxoMDFVQTBwZjdtTlNQUEVQR2tNbTdueU5lRmkyQ2JianVwSjZa?= =?utf-8?B?bXB3akhhbm1lWmU3bjV4RTZ0Z09ZbitaR1NnZUhYbW1DN2dRZWkzMmFISTN4?= =?utf-8?B?SzVhQlRIRExmUk5vUFJyYldiNGJtWW41QU1BT3pqY29Gc0dKL25pbGFNZ2tx?= =?utf-8?B?V043R1hwSW9UbnN3TllSYksvWXBzVjdJdHNua2RoU3JaZk1jWFVYZjZ3SzlQ?= =?utf-8?B?SEZmSEZaa0FjNHo5ZVd1RjdBb3hac0hZN3dZcTkwUU9neHdHV2ZyUnl6K1BN?= =?utf-8?B?c21yUWhLVW9Fd3cxWWZOQWJkZzNaYy9ma1h6SzFUNWJqem05QlVieUZNYmU5?= =?utf-8?B?c3VsZ0hsRXVPaytJMFB4cCs3K2I5aXlqSWJ6UVo3QzVDSDVzcjFKd0F3Q2ZY?= =?utf-8?B?SWdSNGpSc0l1cDRMNEZ1cEpib2Y1eVRtU0RnSGJFQWxmZFh2bzkyaVR2YXBU?= =?utf-8?B?dUxTcFQrQlNtK0Z3anphSVdSV0Y0RmlLc2RMeVM3NW5iQjVGYnNCdlNXbzBr?= =?utf-8?B?R3hkaDZTMGR2M3FsMWp0QTlQby9wdmE3QUNPekQ1aFp2MmZPNENxRytXSXcw?= =?utf-8?B?Q0pPd0JMbTBJSHJnT3c1NDlVUnZ4Vjc3bU9adDJjcFowcEVyeWszUFdYSGdR?= =?utf-8?B?QmswbksrcnkwcVc4UGg1NkE3dTVJWU1KUkFoOVBoWGFvdk1yUFFBY04vOEV0?= =?utf-8?B?WFoyakZmYldvZHh3RkJob1J6WlJ0YWJRT2hHcXZKR0ErNkd0ckZGT1hiOVdo?= =?utf-8?B?eXBPUGFYanVWSXJpam5SSzVZRVBXNGNxZ2JtUlU4Ym14MWZuSEFUUkpMUVVL?= =?utf-8?B?clk4UHVSZkY3M2gvQXNXVmt4ZlhLSkJUZWM4LzF5VEdRRXNJaWtGSDVWSkhF?= =?utf-8?B?OVZaY01jNnV4L2t0RlpVNFprQmpabm4wMGZObGJJZjREOEgyTEJGanA4Z1o5?= =?utf-8?B?MGtPUGhPaUNlWjQybjFvbGdZR1RVam9oYmI1RlpnOFhDZjFQeFdqN3lobnJH?= =?utf-8?B?VDcxa1BtQ2RVc0plcEdDTHkybzdkQkJJQXNac2ZkUGowSjk0eDJsNExYNUM5?= =?utf-8?B?WnFDYjROa0FML3M2clJpU0ZhMW1sNkpuTVlpd3ROR2RtZjA3MkpiTmJRMEFa?= =?utf-8?Q?vchP/3rxF4yWz3P4=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ed4d338c-d55f-4c00-e309-08df12943d5e X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2026 19:13:20.6376 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bChWwSpmKmzTadusAZkZlFtXXrZlD+w1wMiG3qTSeywCNdEtjVHFYuQRpXb9CYLVH5vQnJ+/StmbOgMU4U5h7FEebVNp+K5L5t69q/5pYcQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6192 usb_host_abort_xfers() cancels every pending request and then pumps libusb events until all of them are reaped, with a bounded wait. Split the reap-wait loop into usb_host_reap_xfers(), so that the following commit can reuse it to reap canceled transfers without going through the abort path. No functional change. Signed-off-by: Andrey Drobyshev --- hw/usb/host-libusb.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index b946b0ef350..9b70d6deef9 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -1096,15 +1096,11 @@ fail: return -1; } -static void usb_host_abort_xfers(USBHostDevice *s) +static void usb_host_reap_xfers(USBHostDevice *s) { USBHostRequest *r, *rtmp; int limit = 100; - QTAILQ_FOREACH_SAFE(r, &s->requests, next, rtmp) { - usb_host_req_abort(r); - } - while (QTAILQ_FIRST(&s->requests) != NULL) { struct timeval tv; memset(&tv, 0, sizeof(tv)); @@ -1126,6 +1122,16 @@ static void usb_host_abort_xfers(USBHostDevice *s) } } +static void usb_host_abort_xfers(USBHostDevice *s) +{ + USBHostRequest *r, *rtmp; + + QTAILQ_FOREACH_SAFE(r, &s->requests, next, rtmp) { + usb_host_req_abort(r); + } + usb_host_reap_xfers(s); +} + static int usb_host_close(USBHostDevice *s) { USBDevice *udev = USB_DEVICE(s); -- 2.47.1