From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020120.outbound.protection.outlook.com [52.101.69.120]) by lore.virtuozzo.com (Postfix) with ESMTPS id 52A0E807CC for ; Tue, 6 Oct 2026 15:36:02 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rLBJDpS1WuPkb7lg1Dh5RQpy0UqugQP8k0fb3Op8+g9j8K1/MY6XUf6/3btxx5iCRwOjh/YNXe+L0QgnaTYQaNljczfcwzUObasYmPZe4MzWQKG2VZml1eJ/qqLni/39dN+GFLSfqBxnK3bh/QXuGDnddZtLKnnol1eZjOGrt/pItpB86i3hDUy455wbkokKVcd7EFdyY5NnVfqvcIugkTuLXXg/o53bvL+AIARjgQPLjK3/e5Y3NQmXvKNzq9yaaFYEC9D8hNZQc5t7US1JH4gDr/0Tq0MAI0ZPiG+Xa2ylYSHKyB2FRI0dy4sM44wESBH72lknAlzc8H6vJwcv2Q== 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=8RcqNElG+HjhM0QhdbmlXwhTjqpoojluAjHBWMsFh5k=; b=FAvtUGzgd1lnZvNNUZfg7C5YGM2EDincrb1Z0xi6DLQvZcr13h1H4QThKi4OQaYLQh6SjtDOesvWGraFuowXEadQs1IGykwvfffPcPQfo2bS8TfEVKd8AlUum/0ZsGfdeDj+MCHuBcpMhooRnVb+SB64m3hiYCr1Mn+6Doen7cuHgHvZA8Acv/WuN1SWLsUKMdDgx4zEUl7MBg9j2l+DhdXvsrQgRHi3D6Fw+PgoGEyoIr1iNpNkFli6k0aYRaX5OuWW2VaISX81VuALjeBjKiqdgQAvEKjl9UzFgWdaTCpAJoM374eHWz3YpXqm/w2bL6tJS9BI3jDKoothhPE8rA== 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=8RcqNElG+HjhM0QhdbmlXwhTjqpoojluAjHBWMsFh5k=; b=vkNYAOUvvVPkLhO/AHsc6nmFR0f1DmHvp6j57v2mQvp6KRBrkaLOHj3dtI6MCILYVcYt7B+8v7mbrbVfWWfdLypqmttPdQuMIXulJekxoTdsAhazPPsg2yV6BXrFrLQ4L0O/8/jM6dV7zqZys+vD483q0BvwE+v7p3Iln1ofovnO8W7LGynOQkDSNTMv5InZ36e0kw7S3pbUpalHmhEIIuYhmsirVpod/DXsDQBq5aKlOOWwNV3pNHIATuKx+5g/wZ4EAZKkPBh3jMMJnw4wdJDRJJ2nI1YiRF2UOTE/KBDvFQMLwTNy1OacxQAVYK9fwYjv81uRXJ8KaPAJLPvzMA== 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 DU0PR08MB9774.eurprd08.prod.outlook.com (2603:10a6:10:445::18) 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 15:36: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 15:36:00 +0000 From: Andrey Drobyshev Date: Tue, 06 Oct 2026 18:36:00 +0300 Subject: [PATCH QEMU HCI-8.0 v7 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-v7-9-044f668789a1@virtuozzo.com> References: <20261006-usb-host_v3-v7-0-044f668789a1@virtuozzo.com> In-Reply-To: <20261006-usb-host_v3-v7-0-044f668789a1@virtuozzo.com> To: svt-core@virtuozzo.com Cc: den@openvz.org, andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI5PEPF00000985.AUTP296.PROD.OUTLOOK.COM (2603:10a6:808:1::81a) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DU0PR08MB9774:EE_ X-MS-Office365-Filtering-Correlation-Id: c0b0c221-2b9f-4dc8-d8d8-08df23bf8551 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|23010399003|1800799024|366016|376014|52116014|5113699003|56012099006|10067099003|22082099003|18002099003|38350700014; X-Microsoft-Antispam-Message-Info: JowFoflKotpEi15pLKZHl0nY0i00ZHkPIJTVOjru26WRd2LxW0YHbLy6ChLhQqubfnXqMtNt9vydQFZNaepfA11Riop8j3rPsHaLCCenIJ57aUQX8ocX0zzK8wXZdNBp0qFegZeVbfwT7bRG4+6mNIZZ42dcRpbrhN7mFJyV3LB2/vpqS5vdK/HtEWhdJwNAHJ+1PprLcgNKu850mAtDYDPB8KZPkyeLI4mh40rH3G6sPFzdeH9jVnyC95s5dlfcpMptFiFfmr+VKzQ2u0QogYIU0AUT5dwzGtxzMYrPx/fpnsxLh9sjzufT/D5+06p+mO1Q0SGOSCngfnkdD3yHQ7lJhoX1lWeyBwVUdidcAOuqztBPoNL5M0p7tbXKiQGgo0vFA8KoDVy6DxOOomVub8FtLT9ZxAn4oOeYKfhTd3AcD9WM2TucMd7LGsd8v6RRneqMG2lb32jTqYPgK2ld05KSWf0idtRcTyOAgA5XLHqtaoMkEBxp002LRRwdzADIEfWWcEbHg3ooikLVFtBq7l9h92wojT1UYpG7s5+h54PdKGpXC+s/7p4gWR9iRbyI0KBSE1Af+ZBpiV1B8MnoSIi1x3Oq0QHgykY02m/ajxrmOxa9FKZsJ5UGKagiX97NzxDaw1tvbqH0MVsekoiBXfiod46rW8IP+VJPSqaFuI5AVzgWs5z+H1aSDJ/UQwOOjCeB3ljSgidgizmT3reJEEzzeuboN9F8xOuPKn2bGNM= 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)(366016)(376014)(52116014)(5113699003)(56012099006)(10067099003)(22082099003)(18002099003)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bHdaTDNCMkM4ay9MS2ZBSnROVDgyaktWNERFMDE2ZkFTZTZpUGJqNW9hdE5o?= =?utf-8?B?UkhtSUUzb2R6eWRIanZXSG5XTjNPdEtKd05wTmZsNDJOZUZwMWhLUW5WN2o4?= =?utf-8?B?b2taWDBPUkhuWVFsZndwKzNpQitlOXhxTUNOVVNRNk9MRnN6VDhrWHZhUHMr?= =?utf-8?B?V2g3bDBaeWFvS3VrdDhUc2RhSHdrWnFYb0QwUHpCUU9BeFE2U1I3ZWZseXlu?= =?utf-8?B?NjNGSGZWWE0rRmJLdGIzdDhzbkpRQzVuRzRHdjlINldJWU9FMEg5UndXU0E2?= =?utf-8?B?ME9lWXptcWZ6MTlMRDZzWm85b2hkY0dPaHhpMUdRYTc1VFFleG5tMHZzd2dS?= =?utf-8?B?SjI4TnNHcDBXeDdFc0JLRnlRZll0VW9RMVVKd0FKWVNSV2REcVZ4dDcrb1Bv?= =?utf-8?B?R2VralQ2WEsyam5kY3U1MUZVNFN5UDMzZWR0QVFCUXZMd3FjcW9EMlFZN0ht?= =?utf-8?B?MTVFZ2thV3IwODdVNHJmdGRCSkJxUUQ2Y21HR3p4cTcwR1lWSWRXZHFJWWM0?= =?utf-8?B?Uk9DR084MFhHN2dHSHNKMTZHaVdrWFp5cWdTeWFWKzVUbEkwRHBVajNHczkv?= =?utf-8?B?RmMwNEU3T0RzbnQvQTA5NTdGL1VrNDJldmxyOUVqWTlvOEQ1LzVyRGRjOW1a?= =?utf-8?B?UktycTJ6ZzdxSkdrVHlMd2lvOU5nUXRIU0U4ek9IS3RKOG93L21IY0dILzMx?= =?utf-8?B?eFFyb082MUtWODlyZ2NrZkk1c1Y0Wm5YbzV2dGhtZ2M0UnRwLzhxVTdVbTRB?= =?utf-8?B?N3EvUDJwVXJpeFF1SEUzVWVqNTY5QWVJcXo0YXVPMlQwT2VEcGZpcDRrdy9v?= =?utf-8?B?RWZaYmdIWDhaYlFJbjFTclN4dko1Uy92cTlhMmx5OFN0US9iOFNpUzRjN2tK?= =?utf-8?B?K1RnL0pTYzRPS1AwUTcrV21lZjAyTEFQSzdkcGpjOTB1M3FsTStweHJRTkNB?= =?utf-8?B?L1NuMThmVEZORjI2UU5yUGtucUFENWJYY3Z5UkNRaEp0ZE43SDRCSklONWF6?= =?utf-8?B?L00zYnNKeTdRb2hPeFFtQzIvTjdJdERNM1RmZmRQejdRa084bmV1RXo0bEdR?= =?utf-8?B?cDByWERndlcwcUdtVkgzaVU0eWZEUVlQRlFOb0wvcVR1N2ZzR2tHWnFDOTBO?= =?utf-8?B?YU9oMUVVQUwvRWpIY2NMNjFxWWE2Q3J6TFdycWNPK2Vyc2tNRHQ1YnV3Nzg2?= =?utf-8?B?T21IbFp1MFh1Z1hhcDhHUml3UHg3WHEzM2Voa2NJU0pQMzVFeXJmMGJVS21l?= =?utf-8?B?blM3dHIzWEszSHlxcWVvNk1qYXBxZ2xYa2IyODRwc2lBSTMrOFBtelhPc1pu?= =?utf-8?B?MVdaVVFRY0hXeHh4QmM4K054VVFIZ3BtRWpsUzFBUUZVckxnWFN0ZzhmOGsw?= =?utf-8?B?SGZmbDlkU3E1Q2l2b2V2ZmJmREl4bzBCNlNYblBnWmljMEZobisyL1R1T21R?= =?utf-8?B?NlA0MmZPUlVEMnY0M25uUVdycnNGdDlNRkZLbEtGd0pjODVHWWZSUW1IYlM0?= =?utf-8?B?WWtZb3NNZzlwdHBCVUZRd2h6b0dLMzVDRHlDVXJWTHV6MHN3TUdBWUNWNzRX?= =?utf-8?B?bkcrZFNaa3o3SkpWOFRQUTk3emxGSVZsTUlKazVaRW9BRENaYzY5U0g2NG1k?= =?utf-8?B?WEVnUnptQ3pZMFNBd2ZjUXRyMVBpTElORXl6enV6Q2RYOXNxY3c1bGp0NWd5?= =?utf-8?B?dFkyaEpUNjdTQ0RLKzUyaDV3ZVpBMGNCZE10T1cxa3RWOHlIcEVUc04yamdG?= =?utf-8?B?bVJaMWNKQWxoNi9WY2FmWTdUL0dkcVovQ3BGZlpzMGdxbUd5SUluaDBVOXBl?= =?utf-8?B?WUQyczBVNXNUb000SkRzOXYxS0xBck1MWE5FWEJSZG9mc3V5RGZ3RlJ5eXZZ?= =?utf-8?B?TFBEWjlzaWV1UEVyRGQ2Ym00RjRQbm1PKzVsa3pVQlNrOUc5akpJYzI3T2t2?= =?utf-8?B?RGlMWlU2N09WeG00WEwwbVltZTd4ZDh2d1p2TkpTMUhJb01pSWRqK3hYQUFZ?= =?utf-8?B?QnpXckp5Q3k5b3pEbDJzVmtZZnZTTTRFdHRDZkxXYXJJaGRzenFTUGlieitB?= =?utf-8?B?RkxPSUZsdnUvZVRMK2lxckhQK1JIUDNzM2dNQWlKRllmYTEwOTBKckl6Tmh1?= =?utf-8?B?TkRtQ1VoSElHNkc2TjVSVlV4clVwbGxHWC9CRUhBeVhaQXZqeCtUanY1L2lR?= =?utf-8?B?VGNVYUYrbTJHRlhBSGdSeTNBZHpvZi9wcHUzZVg2VjlOUW5kLzREaklkMVlv?= =?utf-8?B?OU1DSkJWbHF4a1JVNmo1UnhnUURmZ0h4NlZrcy9wQlBidFdpM294NEI1eWhw?= =?utf-8?B?TmszeHIwR05ESG5maEpnRWtHVWFpRGVvNloyMGt0enMzYThGeTVCc1pFc0w2?= =?utf-8?Q?TZCijqxjuJhmFW4M=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c0b0c221-2b9f-4dc8-d8d8-08df23bf8551 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2026 15:35:59.3653 (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: XDm1WI6WXtL4vGIOcAOd/eT9XfRj1smYU7mJsTktwrEDjHs9df3p842Va8vv7N5J9dIa1khkJioGHCWYA+2CipZPcynhnMxnofonlwUxBJc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9774 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 271456abb0a..09ffb5d48f7 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