From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11021101.outbound.protection.outlook.com [40.107.130.101]) by lore.virtuozzo.com (Postfix) with ESMTPS id D2636807CF for ; Tue, 6 Oct 2026 16:28:04 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ElmByGSyv1DYfiElTMRXV13+TCHqboVNYXx3pq+BVG/i4s/eDo7OCqWb2Sq0wpaEv1z6/6JeYa/GFvt/HzANxZnzir+i+z2tDgrr5Sk+aeTcvETbPUVgsk+Ocd949cjynp2IrMYIjgEg4ad4S2V/dxZGZVUdJF1VQ03dpYFN1eUuwlp+Zm2CFkxUKHiSpvgcc15G7lnaqB+XKK4PdqE8dD1Z+NHYAPvc7nud6BJrSwNxht5/TY8Nx/L6lhngig3Qmw+B5GSWfhd8jc5uZUHtK0sG1xa9MA++bL9cb7S86yYu4/83AGt1BEWdS2iwMzFq/A1FjTr2ziIry/oyDiIWyQ== 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=vNSjVXByNXBCJXJ1KMZPqt/aqxE+qrdGq7X+7XXCS4U=; b=sG1rxON6eHqSii9pADjiQz+llmZ2vXuG7nwTab0uYZBPh/wgoGukR5eGbdghGyB7U/L8atWcLBFHscoXeTuzQhWKaUKIAjCJ2RBACuUSlHBWtdFEONGjZ7k6c8NcZkdDk0LKb145FdRonJ1Um/5efopxmGCL2F7tD/oEOcRfcCS6XBGjlYW8UEZPp2Fz8GS8D3qgUtR2WFHRBhGKONH1TCeI6+nBoCB5LRed/xMDkb9WbHm/hV6eCeJp+0/iiheRxkdQ8RRbgkadI4BzOQ7T33fzoArhnywAdo+t/nGNwHM1TmkL+y9QTnjWw0KA98NfKeRZp/BsD6Gdxq8Y+WY2RQ== 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=vNSjVXByNXBCJXJ1KMZPqt/aqxE+qrdGq7X+7XXCS4U=; b=hNvA8fFQjWIXa72gclR+UcbYceQCl21el9mK3K/DlTbhXJCRfslE2CNOBYbDJ1YcthlpUAxkkWibOs4dWbd8U8a5RdBxWe466osMITcXgHBx44GD7FfPhCeXbCdDWuQUlV+xN+KPq3uibByOURtZ2/QnriMBKuXthAXfLayeGkQ7OqWA+JQ6sWYCjT+L6ckTSKeeL+aBbcpPpdt64pFWOFZPBrLtQPRoygXfEa/iDrJMUphhO7jttOsvn9wXS3EYlcpcf/iC2nZvI5Iirhcoj4GoTyz3UY9je97kU73jLqO3gD4xawubFxrvgZyCFnPN4f59J2R2flTs/OwuRySpiQ== 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 AS8PR08MB8899.eurprd08.prod.outlook.com (2603:10a6:20b:5b6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.496.14; Tue, 6 Oct 2026 16:28:00 +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.0496.010; Tue, 6 Oct 2026 16:28:00 +0000 From: Andrey Drobyshev Date: Tue, 06 Oct 2026 19:28:00 +0300 Subject: [PATCH QEMU HCI-8.0 v8 09/14] usb-host: factor out usb_host_start_events() #VSTOR-137800 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261006-usb-host_v3-v8-9-72ae4fb8977b@virtuozzo.com> References: <20261006-usb-host_v3-v8-0-72ae4fb8977b@virtuozzo.com> In-Reply-To: <20261006-usb-host_v3-v8-0-72ae4fb8977b@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR08CA0230.eurprd08.prod.outlook.com (2603:10a6:802:15::39) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AS8PR08MB8899:EE_ X-MS-Office365-Filtering-Correlation-Id: e00cbaad-aa02-4399-2aad-08df23c6c839 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|52116014|376014|23010399003|5113699003|22082099003|18002099003|38350700014|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: 96d0y+Ho41lJw0miVupdspGgvj2zhUSTJvBODbbRjRSy1tvmILbkpYyze+6dpFoZUq+JaaAC50zAqGh8kt2c9xjXbpfJaWQoz60umS4L+UBnHqP/USmOVT4paE50+gUEGTKAszjXQOhd+z3NUpeBuVz5zuwY9lZJUuBV3SxpYsBkgyXgD8Ru6LG8F9Wu4Thn8lNEUoGTGunWL4RxvxhNW2byVKtb4uzX6/T0XyqwqhjIc7Ifmnmul6qHGuVg0QWEM42Ntyg1/zwHM9t32b+1qQXYtpabdHVCcbFw8hzt8S0F+/xtNU4Rm6FvP7AwM9H633cKRl7kBDhIjaM5A1/Zb8aMyam3gbQ6qmc9yAyBXMVlrtzkQivAqhEgFrvuQnPQM52zo0akCLjbdUMD0sonoCr9U4Nj9esKVRJgGS+DvJ5Dg6am/phROS444cRy10aHiAUJANDj0AwzcspihJArst6csc9zLN39RPpux1TUnP+kUxUZw/LqrL/IF2FzLFgJ00cGPOFacgmLsiX8dnDPpe8KhPyLNA8vh5qSyIgVy/+RRhfRoiMh//tY3rjxIJqSiOUfGzZOYSaFrD8NzMyIeMEPGMux+tIBc3l5hUm0K+7VHdsLUA+OMlLUHs3yXHHEKFa/DMRSrEhKZ8NidYaVXPPo320LLXC1CiS1/9IFPZ1FoEnFxxr9ygOUdgOZGxqKQVRH7nYTivllAeBn0Bo/fJjAXTP45IXULKVyDyxS2T8= 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)(1800799024)(366016)(52116014)(376014)(23010399003)(5113699003)(22082099003)(18002099003)(38350700014)(56012099006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b0gxMEtrRkRTWURQL2JYY04rZ3JiT3NFVlpPSndmSTFkKzVYRU5zdC9kQU1a?= =?utf-8?B?Q0phWXlQZXgwbVd3ZEQ3dmpuakFvMFAvMWxOQlZOZG9wZFA3OWwrSEFVWnNJ?= =?utf-8?B?a2JzOHNiVmJmcUcvU1FxejRia3I5V2NwRGFpODNGNVlOTXY3UTNtTVlka09s?= =?utf-8?B?T3B1SDRLdm0rNDdtTklXY0Jtc2R3NjM1eUZpZkVqc2YvWlR5aXczQVc2Yjhi?= =?utf-8?B?a2dnOEN1by8xYXg0SkxwTHpiRmJzUzYvazhaZ2Nrci9jNkRMVXQrVytTL3Zs?= =?utf-8?B?VnUvMWRiLzJvcWlTOGk3TTYyMHhjVGU5TnNya3hMUE9GcUxXaUtLWm42c0lq?= =?utf-8?B?dXVJKzZER08zOUxieTY1b0FsUlZXTldJTDdmOVFUOWUvQVdNTUN3MEIxSzRP?= =?utf-8?B?aG5BSnZ4YldEM0xnWUExSDR4M2dZak8xUGwwcjEvWVBCdVBJd0FYVlNMSkpC?= =?utf-8?B?Z1BCeWJoK3Z6Qks4YStzS0FLdzdnVnNhdFpOYy9ZY3k5cCt5RjhjUFlJSzlz?= =?utf-8?B?eEFUcVhwcEx6TFhsYUV0WGdWQ3JmMy9naUpsUytNbGFmTU9OWnVXanNiL292?= =?utf-8?B?czdZZDRnMDJUZzRkamt0TStvcmZYbTdzSjBxTlZzQkVHa25BcEtIT2VBdEwx?= =?utf-8?B?cmtlQ01DdThkLzBrMU9YV2VySC9Ba2tHOFRVWDJ0QnZwVFprQjVETlRaYkdU?= =?utf-8?B?MzgvKzM5dW15NitqdGltVUc0YTQ0SWVLQTJHSlZLcFV2OEk3cXVuZkJyLzF5?= =?utf-8?B?cFJQYVFwYnB3UG8rZ0ZySTNlUXFiU0xReXVYdC9QdThIOVgyMi9HVzJ3MUMr?= =?utf-8?B?TXNidHBScGJmZ1ovS2srcDRub3kwK3hHV3dtVlRSZkhaOUI1TFFQeFhNblFP?= =?utf-8?B?dzlsQ0xuNUVkbDc4RmVWb3BFMzZ6U0VJNDJmVnNJbzVXeFV0NWlaK244Z1Z5?= =?utf-8?B?YW9lRXV2SGJGb0RtTklQenZaQldwQWErd2xSS3RuWTVBYlJuNE0rWnkydmd1?= =?utf-8?B?RWxmVGgyRnJIT09qYllocXo3YnFwNE00N2hlNE1kdzZldVkvQXBtVE12MHRF?= =?utf-8?B?YjNLREJjbHMwWHh0cHBTbXVCejhXNTdTMldCZTh5dzR5djYzQytUdlB2TGJo?= =?utf-8?B?cGNMT0ZjNjJyTGwzQWFFemlaNEIyZ2hPUEFGc3ZBcWdSTmhKQ0g0NmJySm1K?= =?utf-8?B?U0lTUEkzVDc2aU4xczEyS2ZVUkJ0NXZRWGU5V1FoYmx3RUUvMDJsaU8xZFhh?= =?utf-8?B?eDAvYkF3OFVoRGpkOEJEeVVoUnUwZ01VQ3FEdGRjblBqdzBMMTZUZ3dYWmsw?= =?utf-8?B?LzZGTC96c0VEL3JySEhQWUhvTi9pRmJ2WUs5bE1sQ2cybzdhSStNL1psd3FR?= =?utf-8?B?NVc3TkNNQ0pDc3RUdVJWNHgwbHYvdG1lK1NMY2RlYS9XUmlnRVpJU0cwYXdD?= =?utf-8?B?eTZHdEM5cWxzZFQ0NXJuN3pLOTBYaytmeHUwcHZlNU9keEdyZU43QzBZY1I1?= =?utf-8?B?bFBkU1JTZzNxZmV1Tmk3RTM5OXJGR1RTWDBtWkJVZ3Iwc25ob1VteXRDaVVI?= =?utf-8?B?QXVCZmZxTDZxODM0UENmSjlsK1FmaU8yREpLOHNTUmdXRWxGTEN5VUFWWldz?= =?utf-8?B?ajE3MlYydFhySlQzczkrRVhLZk9yREZmYklhZURFMm0wYmJTc2tFOVhnRHF3?= =?utf-8?B?ekoyQjB6WmRqdHM2Z242R1ZhVDlzeXVBOUgzQ21FdERqRWxrS1BPcFFvVVlp?= =?utf-8?B?OUVoMWE4RjhmSTlnQWQyZmVKOVlrbk5RT0NKdkl0WHRmbzdSeFlSdTR1Y3c5?= =?utf-8?B?ZDVib001ZXBqM1d0cXBiTmgwWncxY2tzVU4zdTQvaFV6YXNsMjkydkl0d2tV?= =?utf-8?B?L1BzZlhlTDF6WGlWcXhlaEZWUm5wK1huVG44eWJQMlBKOXJZeXc4UXlqaTFB?= =?utf-8?B?TDdXNHF3bzN5eGg4b2lqTDYwbmtGbUUvdW1haStoeTMzUTZtQlBtZ0wzZnY3?= =?utf-8?B?dUxZN1FVdzFzZndHemttR0hPVEFPRS9DMmxYY0puc210dVQrV2hOVmVCV1Iz?= =?utf-8?B?WXBhanAyTW5kRkpOZVZTVUZtKzV1ZVlTOWViWWFySXdlbEZFdWZEV3BkWmNL?= =?utf-8?B?MW9sa0pua3h0UGZjL2xpdTBQYTlJOVU4SkdpUUNrZGJUS3dPT0JrZWVhcUFh?= =?utf-8?B?YStQc2hKaEhuOS9FaFdueUsya1JyUmJEYXplS3duMVpsSnZLc3lKUFR2d3NJ?= =?utf-8?B?VDNYT3lhL2liZGFYM1kxak5lYjJUZUhERi9ocDBKYmxuNkx1M2dXWkFwNzlr?= =?utf-8?B?TGQ5SC9xQ3MyN3NzTENwV1VjeXlDeVFwT3FEblJScUpzWkI5bWt2WlFBMkRD?= =?utf-8?Q?FlmAuj3jfR62u/WM=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e00cbaad-aa02-4399-2aad-08df23c6c839 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2026 16:27:58.0743 (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: rvrpjO/auBEnAXOnqSngsRH3Dtuo7lMcD1RuS4KeEIRldghjLT/DaVlFNabAub2tegRydbjJ4qC0TQQ0WZNPY89aOkQWw1aCfoveBC84+kE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8899 usb_host_init() registers the libusb pollfd notifiers and hands libusb's current fds to the QEMU main loop so URB completions get reaped. Move that into a helper so the CPR hand-off code can reuse it to resume reaping after a switchover. No functional change. Signed-off-by: Andrey Drobyshev --- hw/usb/host-libusb.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index 6c00ce528b1..70ae0a38167 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -265,6 +265,24 @@ static void usb_host_del_fd(int fd, void *user_data) qemu_set_fd_handler(fd, NULL, NULL, NULL); } +/* + * Register the libusb event callbacks and hand its current fds to the QEMU + * main loop, so URB completions start getting reaped. + */ +static void usb_host_start_events(void) +{ + const struct libusb_pollfd **poll; + + libusb_set_pollfd_notifiers(ctx, usb_host_add_fd, usb_host_del_fd, ctx); + poll = libusb_get_pollfds(ctx); + if (poll) { + for (int i = 0; poll[i] != NULL; i++) { + usb_host_add_fd(poll[i]->fd, poll[i]->events, ctx); + } + free(poll); + } +} + #else static QEMUTimer *poll_timer; @@ -292,9 +310,6 @@ static void usb_host_timer(void *opaque) static int usb_host_init(void) { -#ifndef CONFIG_WIN32 - const struct libusb_pollfd **poll; -#endif int rc; if (ctx) { @@ -313,17 +328,7 @@ static int usb_host_init(void) poll_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, usb_host_timer, NULL); usb_host_timer_kick(); #else - libusb_set_pollfd_notifiers(ctx, usb_host_add_fd, - usb_host_del_fd, - ctx); - poll = libusb_get_pollfds(ctx); - if (poll) { - int i; - for (i = 0; poll[i] != NULL; i++) { - usb_host_add_fd(poll[i]->fd, poll[i]->events, ctx); - } - } - free(poll); + usb_host_start_events(); #endif return 0; } -- 2.47.1