From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11023081.outbound.protection.outlook.com [52.101.72.81]) by lore.virtuozzo.com (Postfix) with ESMTPS id B6B4C8065D for ; Thu, 24 Sep 2026 16:41:38 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=t/uwVyW5SqorJ3IDRc15jpcSYQ5NV+fDp6slNCXFotLbBsSFwein8Du6WuMg7p4v8HzEUFzILXGEn2iHzanWxK+q6szBO2/RrXEByMGkcFMfhzy2GOALfwdvaUrkCzkfLpKkhfjGV4LWP6tipVJnREcdZRhtu90wp0/xE4+nuxozTOplBLXfWMUcX1qPhyEClZusQHD2a+zoEjPkTX+lZnp2Pe+7i3rIF92TnVUS2St85tE5i+Dfa+9ItBrBNgFHC54UTgYVWNz2bpn1HP5Mvjkpkm79mEIcCm7/vGhzce4Eg5JSz3L1u3G9Yekd+W/RKMNpcLQSN1Zv+VVcOOWl6g== 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=AdeiHS2F2MnV3iBVLumd/EMxJoOa2b4iCMqwRZfJso3yF8v93nTCI9jtTg98Q5ra5cPg2/+VrpTA9SRqNekGnfXazXdHYrdMdOUAPSZJRlmhwJADBXPBTjgoA9vYpwRVdlsLvU2ymrYdJQC6YmDl3Vuqo7YZDGnZ8Fq/p+wiDhvg/7Kkksa8vXLgsFBlyyynLWodrmnzvlXhJbzxhIbwV4Ovtr0I+YYqEorez0wFN4QpMO2HGIn2oSqHB656xD1FaDGwHHXBaTQ4j2H32TN6jvlAFC1Prof8Z8HlxG5JzeLZOpFiSYwVzTHcDMf0+tenyiiNKOhjK0G2Ou7xwWU0OQ== 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=WFWUVOQybaYxnwxAAO47tdrk2Ob05WzUhnD4tCqHnd009fcdV2shpkBwZNEdQVosQafgXSA3OjwvsFE8MLHxAqpCoFg7mSzKi4A3qdVdffNKczjEmpvChEBQvAQ5Qv+aJHCs/GXC/9s4GPM+4ffAhBUO6UqL7Pmq60plO6qoqWD7CvDcmmEsH4FER4LVgcH0ZMjZIhlwFcEFZdEaUPrWcmsKoqKwPQ2WL04M7Ta0rQUdyGxcehj/40aD9Nc3dPnVJ+ZgCUu0scC54Np2dbi4MSxmKzrrhOwBUnwIotlV9Na+HvG65ioyNzvWOwQrx9YxaREAM/ljbogHlo268F7dvw== Authentication-Results: mx.microsoft.com 1; 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 BR0PR08MB151385.eurprd08.prod.outlook.com (2603:10a6:2c8:30::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.18; Thu, 24 Sep 2026 16:41:37 +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.0451.014; Thu, 24 Sep 2026 16:41:37 +0000 From: Andrey Drobyshev Date: Thu, 24 Sep 2026 19:41:27 +0300 Subject: [PATCH QEMU HCI-8.0 v4 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: <20260924-usb-host_v3-v4-4-1cc48bf630e7@virtuozzo.com> References: <20260924-usb-host_v3-v4-0-1cc48bf630e7@virtuozzo.com> In-Reply-To: <20260924-usb-host_v3-v4-0-1cc48bf630e7@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev , den@openvz.org X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIVP296CA0030.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:356::12) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|BR0PR08MB151385:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a60dc59-7d8b-421e-2a0f-08df1a5ab3a7 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com 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|52116014|376014|1800799024|366016|10067099003|5113699003|18002099003|22082099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: SkkSj48TAonX1aEH4oiMWEh+evxVZr6p95TFzgNHBbguuc/4Kufe51gPkorz8MUNEWB1o5fE3BIeil+ALDYN8Vwc/T/6snGxyynZPn4EOeENEeWJlfLmKkYpM7gqm5ytlUnq41ZWCXgK3gOLDWj6EIsmnpPqvi2bvGryJ9/c6XzxSXmAVQTeD+HmcSM6xuAS+vLzS5Lhzg6THCOeM312nfShiP2vZxldcRnu2cZ7mCXh0ah7dSumchiFLvI+Q9VWGdhKBc9DD7seYap/x20fCKwzjxJqrlUdo30JplaAZRn48zLaga+Ol2DOLCO8ha4U5MhbjNpHt4OMpEdzlzZLJ7vPMVu3sL725+W80Y4L7V2WAPsy3yBZkIIH6jDI6bbI7CgP6IP+EPF+45+DSfVEO5UDIxQYv7QZa/kSXFkrp+HcnSOSW3gupg2dEmcDJmuAWqy8fTXnvlowapowvE/6VNKZqFjq7wM1evRYKjnTwZKQjY9Y7REgR3I/xDJFss1j76mIIsGqa9/99lNSBfG1WuvrR9IY5Vf+FYqHG7jSztyIuNbuiXlZm0AO8FVBOO8b9K/6IdpscvD8Q/jOm4rzmVJR4w+dWXb6/tlvCTrbuYQs2KaFyGhRoVo0nqRd0+1X5c/FuWgGmTC6MJ9Y/K35xp9FNyeltiZHuGnPjve7rcF2ARykUFrSwuQAWAUwiqDsD+M/3KGw9vufs5j1tgNt6vm8IM7fZNVp13+//RTPFFk= 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)(52116014)(376014)(1800799024)(366016)(10067099003)(5113699003)(18002099003)(22082099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bkFrTkJSbXd0dmtNRU8wQXdqRlBaUHRoV3paTzRJTEFUbWNMcmlCRzIvUDZW?= =?utf-8?B?VlkwZk81RTJtM2l5M0dLVG5MdzBXMlVacFZka1ZrZElxR09BdWJ3czJrRm5o?= =?utf-8?B?MEpFKzMwa1RzcW8rUVdML1F2RWVudnhDdTlnMWI2dnpWWFprR0h3b1BFbStZ?= =?utf-8?B?aGgzc1JKemdWQ0xrU05IaXF4N2VIZFdTRkRjTnRiS3U4TEZYNkRvT01BWEto?= =?utf-8?B?STE2SVR1VzkxWFgxeUdxdGlzVyt4WHhlL3JqWnJPeVc2bGhjRE1jZU5tcVV3?= =?utf-8?B?bWJlV2JmR2hjOGxLZ0J3MThqMWpLYkxCWlBKNFAxSGFCNnVmNi9Qdk41SjJ2?= =?utf-8?B?elZHeEZBK3RFZWRtR3d5bE9YY1ZJZDJ1enoyOHFTVFVMaWFqWnVNTzdVQkhk?= =?utf-8?B?cXgvdDRYN1E4MkpvT0lCY2lkUEtrd0d5U3NpUTN1c2RaamFnMjZFRGZ0V0sr?= =?utf-8?B?SDhnQ0R6ODNTL0QyNDhiaWwxTlRCUDBjaGh2aUw5bGNmd3ZHTTcxOU9tR0pL?= =?utf-8?B?Rk9HelEwQ0xTM2pIZXdraHU1SVMvVTBIQnNTaFVheHFxYit4V29xVHRiNUlK?= =?utf-8?B?MnNweENIS2JUUnNWY1FRQlZGaVNTeDcydWJlOXFzemVBbGNOY0hnRlpzbXYv?= =?utf-8?B?bnFRUDdYK2FNK0kxKytUbDI0cnJWRmRHcDA1dit6Z2kxNVFnVUxsWEVIN0x1?= =?utf-8?B?eml0OEFZdEs4MkUyOHprMjBYUStXcXljYi8ybmJPZXBqSk5DNzNxWDR3bDZx?= =?utf-8?B?ZEpJdmtTS1NxYi9nTlNKR0NsM0xNVjJEbjN0a3dkWGs3RTlPeks3UXR4dVRn?= =?utf-8?B?RjNjTmJMOTRRUStwRCtqVnVGaDZYL0NlbFlJVjNCSjRFYVVna20zVHVYbVBK?= =?utf-8?B?ZHFMdm9qN3B6QzVCZk9vVGN1VjFyVVRJU0xmRWdNY0hjN25ZQlZFQXRtZU5W?= =?utf-8?B?cktIZklFV1BoUm1hTkMvQkhxMGk3YXYyUndtQWZWUjU5akRGZTF1RGlLU3Zh?= =?utf-8?B?Qm90bDd5OFM5a2MwNXdQWXA5Mk9XdEF3MXMyZWJRTnk5Tk1xdXNhajF6UFpp?= =?utf-8?B?MG1scEFrTXI3ZlM1VlRUOW41Zzd3VHFZVjRhMFBrbzFlL2I2NTVQWmxZTmh0?= =?utf-8?B?Z0dMODJrQ29PZzZzQ1ArSmMyVEpRMWdCVjhpamtlem50d0VsQzRDcGxleGhM?= =?utf-8?B?Tk9mWU05MFdleFF4R2VybWsxL3hUdVNuSzJNdFFnbGpnblhQU01xQUlEQnFE?= =?utf-8?B?bUNsbXZibXhzb2QxVVR1eDkxS2pvY3VITXpZVXppaCtjTkJwKzh3Rm1COTlL?= =?utf-8?B?dGsyWFc3NDF0aW00UFYvdklEbTR5MkVBQVlqem4yNWUycGRFYitGN3lkNzY0?= =?utf-8?B?KzlXVEJ4TExpRDJJeEMrdmp0YzFqb09BcTRldXhDTml5M3N3TGxEY3pYZHl6?= =?utf-8?B?eExFUFZLZG9vb3ludEVKTmlvbWQ4bWpMYVRhZmZ1aWRUOE1IMDNsZzIxZ1g3?= =?utf-8?B?QXlEQTNXMXhJVU5OaHkwc09pRHZnRlF5WGQ4UzFLWVhobEFvTy95cDNzaHZu?= =?utf-8?B?K2JUS3V3SEFEZzlXU1RYRGxyL2pEVktjUzA4ZHIyT2tLNHJPOVBrTi9jWHFE?= =?utf-8?B?enFBVUJudkVLaFpUaklER3U5d1VvNmdhcEtzZ2xocGhLZFd0UEl4dmxRNGY3?= =?utf-8?B?YXB3OFNIRXF4VTl6bnE4aHE0Q3JxdEdzRVFxU25Bb0lzQnVTNEJ2TmdaTmJE?= =?utf-8?B?N01Iek9yK01YY1NnTi90Z3BDeEZRdkVOWEJ3MlFOM0FXWUw5UWdVZGcwQmQ4?= =?utf-8?B?N05IQUJTc1hCQ3U2d255SzJpSlF4dlh3bngzUy9kZUpnaTgwbnlDVS96Zm1a?= =?utf-8?B?WnNtQTVZQXg1UDhMRTFZVTJ1Q2xYMUJMUzVla3k1amFZdnBXWXc3LzZZTDNT?= =?utf-8?B?NHpueUQza1BVY3pwTk1RRGE3VHduSWNESnh0bDJ6ZUN3dDc1eHV5U0lIbTJJ?= =?utf-8?B?aTI4NjhsTE9ISUY5VUppK3hyTFRtWmpPaGhXcmcrZUl2bjRrZkl5cXAyS2k2?= =?utf-8?B?TzJYRkNQWmFRQ1o2bE81dm5HMzhXdHUzU0c2dm90bkVNTFBsY29wRk15V1Va?= =?utf-8?B?ZGNocGRyUWxtWmJldEFzTmprcitmR1pMMnc5M0Y5YndJK3NmOEZESko2dVBB?= =?utf-8?B?K25pa2E5WVZWd3NPZjdyZ2N2ZnJ3bzZBSXpOaXV2OVIyZmpMYjhjUmJIbk0x?= =?utf-8?B?bUNyR3RFQytxSWtoMy80aEd0T1ZnNjdqNWxkUzBkRG1DRjJhNHVBbGlwUTM3?= =?utf-8?B?ZGJZcGVMTWNoVWJ3ZjBhbFJ5b2tKYmZKOUhTSGw3Yy9VTUxoY1JCbXNFeTdG?= =?utf-8?Q?oXyqr/zpifkGSXmA=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a60dc59-7d8b-421e-2a0f-08df1a5ab3a7 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Sep 2026 16:41:37.6118 (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: SDDWk+gNK7sC8lVdckES+Zcuux+bL3XF6fPXp68YpmYu8YN/t6UivqbjZH6IW1UT5w4umJ9l4D40po0S1NXz1xXAbJ3BCFozBWbQYT0z9ew= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BR0PR08MB151385 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