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 B9E9A80203 for ; Mon, 14 Sep 2026 19:13:21 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i8+/HpKt5siV/Qn3kGruPw8hhzGphxZdD/8ALqD+R+1SZXSYFyNYad4GH9Efs4XyaYjc2qDVsjI0ck+y+qC/gSTObB+EizOn+YJdBrwX64M+XUk5wlYMdAnPl3dPHDTLfvl3jZnyGXSl6k9yiWNFQq2T0hYy+outD5AUX8wJVoaQvUaPhRrfTvOHuJ5awZmJs37ABpYaAhOY7oYBVeWrhocs0UyActtJM9efCfzx91JWO/LI5dedIQAHZIEdKA5zh7d6qs+NLC85sTb0KQCk/1FQTTZPpRE0n8i7O8ObETJaN5OA656WG+w2ImT0b/ebSQbAYPeF2kuH/8mVNc1rtg== 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=RH7ciXqRpJR4WOWM/oQ37gE3X7AWRcL+Ym2H5swk710=; b=Z8aN43cqaVWEAUL20F5Wz4iAmQuUr0TjCFERtPA6bx97MGWznzRpHOyb5RxIYdREwat7PiV58UWz1rNUCcDvUt74Bfalg6X3rDU+nrDR/9QWNgdQaL/HD+eDhbUy9tF4ZkzHEZCAW8/R9rf5SQ4Ly9wG36KW+5Oo8AQChPwroh9NEwZR1aQ4T2PlivkdWGNf8zoCDKcEqruetbs9k1vNlGyxTu+gTuvkuC2q8ahoBkvgMOh+wBovIrMyMdoo8owsWGlfsf0xDdXvYsL9BoToB1WMGeWYrj5ponIJyh09ndzNve28Im3s2L3NaJXWevaAfeTDEJG8GVjqQTmhdOlM4g== 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=RH7ciXqRpJR4WOWM/oQ37gE3X7AWRcL+Ym2H5swk710=; b=r6zCNsKv1VAs625vZHUsMguEH746rK48o5bHkJ8U/OYinFo1iI8h0/YhB1EaitdUbwJjRT4DvJj65nQWLie9lwpExIHxkJ23FFPzf2URklFWU6Zsz+ikkekAJ/bgRuHwd1icwYIj9q/cQa1VAZnI4+Z26P1gJYJcSM8Ec0j/d+jUg0zxaEqElbCqM/ezkl678DInMD799+rALVUe94vI9RZ26FE/Nz5WpS1Fe4ZtBhTRzB/anY+hH+oz/1FH0ezXXvdO9JVC7HewUICFhFLcDyggWCCpsaeFfOaGsY29IxInTX6nIQi0QnxeKP2g+3/vmCZ2CeXyo2Vq3dVo75ghVQ== 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:18 +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:18 +0000 From: Andrey Drobyshev Subject: [PATCH QEMU HCI-8.0 v3 00/12] usb-host: support CPR migration Date: Mon, 14 Sep 2026 22:13:08 +0300 Message-Id: <20260914-usb-host_v3-v3-0-c43a834ce016@virtuozzo.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAERHqGoC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyjHUUlJIzE vPSU3UzU4B8JSMDIzMDS0MT3dLiJN2M/OKS+DJj3aSktNREC7MUw5TEFCWgjoKi1LTMCrBp0Uq Brr6hIEEPZ09dCz0DpViIguLSpKzU5BKQmUq1tQD+Gb6TgAAAAA== X-Change-ID: 20260914-usb-host_v3-bbfea86d1dad 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: a8b120e1-0623-4c56-a75b-08df12943c21 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|6133799003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: 42wVYM7z2gNdf70thaDFgUJ5/jX0eLYDHPEyx7+9QnhCbarpbAK2fYFsKr5W97j/enflo+64fW3QX9RwlxLH7bmTt3iH5Fjtp8wskvxlXNnXC24aVuMJ+6CMIp64vf//vfWHR3CtW1vNlwE+rCKu3jOOOwvxtWvhxdrcsyxp6eJYGuD/3PTpIrbjK6Is3ZqF9O10vckBrcW0kwCog+9eS7P5N+J12vW19z0AnK4SvFJ3+CG8r+Eclvj+suDax3LfbIHKEKKJKHZorq6uci9iMO0y0wUPugAkUhPyFXlWNzvFUtMOO7pIgPeN1ZrCp+7IUc1H5VbphYhCGhmoAODbVDkvcweLIHsNuJTkSuUJklt3doXyLCZb27b/WWseW1/kgHOZHQRPMCzHuqPqB/ura4DKLI9RhXKSLEnweCUMR2zF97rmWJeGpx6q+Mdnx7zWZ9Tq4BxmTG5cPO2COZaT1hyra8huNYMIJicn1LN0svwgw829qwkwwacJQDrnh/i5M4U0PJlLuEFfg5rNHfmYMJa3V2XSiqqTRGuw1zF82zAhxCOsrspiz58EqFHORcLnhPb0Tr8NS/x4/ADXNjPWunNWGIDRYvs1MtSM6gCjf4QS8jnfs4XQWvXzNcQkpi8Wu81+9wwvUez9SCRritL4fLnB/60aFU9u9k6Om0DR1bT7n3y70O+5uQsrrhyc9QvaVhWywS1aV1q1LpgkKwV4elAAA/WGa+6JG4pGjKodA7Q= 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)(6133799003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bDZtT3hqVjdQZkhnbzR0elBBZjJSZ2FVUjM0dG9zUTdYb0hab2REMzJNbnNn?= =?utf-8?B?d0krRDdoZTFDRzVnRjRzamRTSmcvZ3JiZlBaaUh4NVAzNllZbVRTa2FXcGJ4?= =?utf-8?B?dVpDa0drMWtPRlVGd3lrNmV6Y3k4aWZwUEVPd1IzMHcydGdhSXBYOVljTkc5?= =?utf-8?B?eERzc0Z4b2ZHNzVCT05xa0VBVTVYeTA4b284S29ac3MyeHR3eGxmcWVOQ1Q4?= =?utf-8?B?cjVZUVd3Q3V5eG5iNEl1em96Rytyc0lpOXRCQjBEYVprYjJFaHBUQ2JFa3VI?= =?utf-8?B?OXBhbnBrSno3NVdkZm9DKzBCMlEzcmtYZG1FVTFCZWRKMUZiUkpKcDdsL3Vs?= =?utf-8?B?T24ySWx3eWcySmVaNGx3V3JIciszOFhQdnNTWTh1elZPZW90Vk40Q0tiMVhn?= =?utf-8?B?SlljbWhNOU9nQ20zUkVTYVEreVZkeUFxVFVLWjVFd0tMREdPMktBU0xoQVlH?= =?utf-8?B?VmdXS3pRU3JxQXFSbkxkb2J2ai9DbnZpZzlJSFVMNVdMQldma2VXK0tiWlBo?= =?utf-8?B?VnNUZzU0YTRVUUZpZW0zYlBSaW5NV1gwTjFwUEYzeWlhSXdmbjJORjdpZ3Na?= =?utf-8?B?a1hSRWVCMDBkVDYyR2NDeFBDekVLaWk4Mk1RYlFJSCtXZVdHVlplejVZOEht?= =?utf-8?B?Q3cxZ1EvRk0vSjZ0VVBtdWl0dndMQ2JoMTRMZytMUnl3MXpkQVVMdkVjZXJS?= =?utf-8?B?ZjYvMGNPWGNuajdOcFJMOS9oOUx6T2xyR2pIaGhHYUlLZTVoODJUVWpvMFhx?= =?utf-8?B?c2lVdGNTRGd4M0dKelNXSmxJSkVySzlNVUJ5NlZMbTFRWHhad2JmdHBPYjBF?= =?utf-8?B?ZUM3TTdxbVJTYTk4SnUvSEU2OTN4S1BtMitxQTB4RmNseGEza2s1VDBqc1ZH?= =?utf-8?B?dEg1ZkhScGFqOFBhMU9LUDZxRWQwZE1HaitoUzFYQkVXLzZ6TG8rQlh2MGhQ?= =?utf-8?B?VDA2WE92QWJMQS9zc1pTMVpYUXcwaTI5RXIyb0JMQU1Rc2x5Y0dTOVFudUdC?= =?utf-8?B?d3lVQkwvaTlrdzI5WmQ2ckVWNlVGMFo2TCtPYk5nQk9rNWVmaFlNalhYdHRQ?= =?utf-8?B?NU9QNlhST2t0b3plWVczdkk0US9jQWJRZTlZbHRmd2p4WVZtNXFXVitYSkNx?= =?utf-8?B?cG81QWszN252Y20rRGdoK2l5UlpVTW5iMFBRTmU4OHp5NFBRY2l2eTNDN25l?= =?utf-8?B?cDU5ZDFLME9jU0pISmJENVI0N1NlQ2dtSzUxVzhVWStySGEzZlpNdE5TRTR4?= =?utf-8?B?ejhPYVdHT3VaMmNIM1Z2bzB0aVBGUjZLZG4xTkYrd0Z5VFJFeXR0S2JEMTBV?= =?utf-8?B?VnRiajY0UjhpdWZuYjZpNU1XbWozdTdQOFRTQ0w3OGNwdExqQlQ1WVhuVitI?= =?utf-8?B?eFhRN0l2NWpXeVRVV20wMysyb1lZMkNIS1hMYUpPQXM0OEV4Ri9lMUlsZE9L?= =?utf-8?B?ZGlacy9zOUFkUyt5WFZEVkRDUk5sMDJnT0FjdDQ1c1JmS3FwOGtGc1Qrb2lu?= =?utf-8?B?ZXV0WmhmblBoV2xJTEtSWlJxdnNNejFVRStiRXEwOERjQjlzZ3BaQmQrSkk1?= =?utf-8?B?aTJ6Rkc5MU5ockwveDhSVDNTR2lSQ013Y0VrTDNWbXV0ZWVOM3BZMFNVbkhj?= =?utf-8?B?dmlKdElQVjdQamd4YzJSRG9NN21jOEpqdU5mOWdOSXlDSXJHOTNtU25INkhy?= =?utf-8?B?UUlmOFhnMWJYU3RsMEIwb2g0Y2NFdlJmNXJTUlVxRkc4N2I2QVUvVkgxbjhn?= =?utf-8?B?c05LbWtia0wzZW9KeE52Y1pqZ3BFYWVVeStGb2xEWkNPK0IxSGRIQk9XdU5v?= =?utf-8?B?TkZJTXZIQ3dxdEYwTXppMEtvTDhHTDIyRnM3Y2xqUi8wL3BZQXFiTVhLbDJV?= =?utf-8?B?dzJ5dlpLUnZPVDFOVkZaUEY0OHlFczI0OE1PYlpGT25OaDh6WGRuNC85Titr?= =?utf-8?B?OHRHckZneUNBQWxkbnZFeldOazBrNk95YXlzSTY3K2ZNbWtqV1hrSVV1WnZX?= =?utf-8?B?TDk2WjIyeVFoSGlGUzJPdXBBdzZINHBlLzY3TmVZd0kvK3Q0RDlHOG5FLzZP?= =?utf-8?B?SXNwOU5XSk4xZUVacml5NzREVmVIdm1CTmYvZ1gzOXZGTjR3ajBUVGNyNGlr?= =?utf-8?B?NDFaZ1l5bktvOFp1VGlqekx4VzJTK2hqZ1ZqYmJ3N0tlY1EwRG9wNEtTS2R5?= =?utf-8?B?VW9UcHlFY25BUkF3b0gzTlh5Q1lpOU9FeXZvWjBFSElZSFRXUHlJTTJjc3BP?= =?utf-8?B?L0xZQXpkRmpOQzltQ2FuZW5LcURxbzI5b2RvaVlzcGhzVmNFNzliZTAyZS9r?= =?utf-8?B?RzF2RjdkZWp6QnlNN3pDdVlMR3NHdWtkcEFxcnU4OVNNNjJiOTZvcHRYYTFE?= =?utf-8?Q?VXI7VxWxyuHxeAn4=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a8b120e1-0623-4c56-a75b-08df12943c21 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:18.5098 (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: T2onZ9lSVWNgbEXQ2xW0m94qUKdkEniqcP3ucDhEmyn4cw/et3v9hZJU+D1v6hoo8MNuR52ynHwZv2grbAFPs9pu2oCcPpajGTRCotY0jGQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6192 v3 fixes the issues reported by Den. v2 -> v3: * v2 patch 1 ("migration/cpr: fix use-after-free in cpr_delete_fd()"): dropped, already applied. * Patch 1: record the caller's FD before the early exits so every failure path frees it. * Patch 2: make the blocker message a complete sentence; * Patch 3: use cpr_open_fd(); * Patch 5: - fail .pre_save() when a URB can't be reaped; - fix a block-comment style warning; - reword the TD-replay note. * Patch 6: drop the packet from the re-issue list in usb_host_cancel_packet(); * Patch 8: - honour cpr_handed_off in usb_host_close(); - move the forward declarations above the notifier's doc comment. * Patch 10: - validate the migrated altsetting and fail the incoming migration instead of asserting on it; - check libusb_claim_interface() failures instead of silently continuing; - reword commit message. * Patch 11: gate the resync to cpr_is_incoming(). Signed-off-by: Andrey Drobyshev --- Andrey Drobyshev (12): usb-host: don't leak hostdev FD on open failure #VSTOR-137800 usb-host: add migration blocker for CPR modes #VSTOR-137800 usb-host: preserve hostdev FD during CPR migration #VSTOR-137800 usb-host: factor out usb_host_reap_xfers() #VSTOR-137800 usb-host: drain in-flight URBs across CPR #VSTOR-137800 usb-host: re-issue drained URBs if CPR is aborted #VSTOR-137800 usb-host: skip product-string read on CPR incoming #VSTOR-137800 usb-host: hand off the device across cpr-transfer #VSTOR-137800 usb: migrate the interface altsetting #VSTOR-137800 usb-host: reconfigure endpoints on CPR incoming #VSTOR-137800 hcd-xhci: resync isochronous endpoints after CPR #VSTOR-137800 usb-host: make CPR migration blocker conditional #VSTOR-137800 hw/usb/bus.c | 36 +++++ hw/usb/hcd-xhci.c | 20 +++ hw/usb/host-libusb.c | 435 ++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 471 insertions(+), 20 deletions(-) --- base-commit: 87f111d087cff956908ccb22daedb596b3734877 change-id: 20260914-usb-host_v3-bbfea86d1dad Best regards, -- Andrey Drobyshev