From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11023112.outbound.protection.outlook.com [52.101.83.112]) by lore.virtuozzo.com (Postfix) with ESMTPS id 5769D8017D for ; Fri, 25 Sep 2026 14:11:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XVf667bdkz/hXmjoq94glfO/+CgtFCMArjqhrDMd6DRlaur7RX6129BCqdLfXX0HDky9D3A0FQnreAcMhbHIHycjIV9ewEu1LZSc2WvTwuI2l5EuGy7c+IBlN8DHQPMwjegNS0K7+aJb7fRTtHDFZPvY7z5ZPgiEIc6mUuveYYOqjBOT8ZbIZlIZJMzOe/V4xzUb/T+V+rpfFKdEoHfaRmp7CLbgskUwzaBa9KOBbw9XUMgfI1Um9+vwGYnEH7QKRl9yBzyh/J0O0vwHmE8d+eYPsHUEuE4ZdkMoySIS+kw7EBLCB+KrwWem2HnhpQcsE2PLzDmZfh47fwe1IH2nKg== 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=GBcFbdZh+ApKdTQbxUrvvwgFitwnpu01fULGaF0vQ6w=; b=UapjCCUIzoCOLYQVDMJLwZ5eG5xK5c+kWG46VM06pIP65jOwUC2rh1+l9HSp/coDaRUhtKZHRGG3VApxdw9SnOt/fvjC7w2JLXVFiD6XquDzHMcrCwv/mlwXv/oXj14Jx2ZpLbCAufCrg3/2tIbMCz7LKt89b6MzRwxORZArDwRKPyj3mKuLcXYS0WALnq07W96bvlH8XaadHX/zBB9xGfzVSywrDwUgt5TXdrzMQTPWLhAwjRltEI+CjcZngweIO7/32PbEMCl60eT6vD8GLe9nLnEbI3fZ0Iv0zh2zQTVDd04y/X3csb7WWQ4MaxOl7Hmp3NDE/CIgIYB63idH2Q== 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=GBcFbdZh+ApKdTQbxUrvvwgFitwnpu01fULGaF0vQ6w=; b=Fd6JFuXrHCsKHZxRCTcyIRUHEE2ODKPk4dPetuR2QMlzc6fLKryIWGGs1fGBOo0D9RSQMwb3sbmqMoqI2802eNbn/wxG4l6NyUJuYkUCQg4J/ZdpPrHc8NqM6yZC+tdI7u4nYT4MaZuynJ/LmAYsRk+biszSX9I3o5g4v9c0Nb+wJidKBqKX+BV5jOSkDVMAQ/ZW4fLEil7JsRAPFBXs7C7VfRe8ep1tqMl+iyuhf6t02bXnvHSW4u/t5dBLGpEBYFRb7TFqfeapscLgdhLodw+LeO7610wk7KWsHxBhWYa11GUDoJm0c6qzvMTWkRg16xFhOiD4uwTw+Qcv2j/pjA== 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 AMDPR08MB11336.eurprd08.prod.outlook.com (2603:10a6:20b:716::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.18; Fri, 25 Sep 2026 14:11:27 +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; Fri, 25 Sep 2026 14:11:26 +0000 From: Andrey Drobyshev Subject: [PATCH QEMU HCI-8.0 v5 00/13] usb-host: support CPR migration Date: Fri, 25 Sep 2026 17:11:09 +0300 Message-Id: <20260925-usb-host_v3-v5-0-e5b21724db4d@virtuozzo.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAP2AtmoC/22NsQrCMBCGX6VkNiVtYq1Oggg6ODg4iUiSXm0EG 0naoC19d9O4SBFu+e/u+/4eWTAKLFpFPTLglFW69mE+i5CseH0DrAqfUUrSjCwThlsrcKVtc3U UC1ECz7MiKXiBPPE0UKpXsJ3RcXs4jcvdZo/zmKDL98G24g6yGZ3jtVK20eYd+h0N4N8qPwRLR nlOmQSSZGunTNPqrtOx1I9gd+yHTyc883wiJctFmVECiyk/DMMHGpirzw0BAAA= X-Change-ID: 20260914-usb-host_v3-bbfea86d1dad To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR06CA0178.eurprd06.prod.outlook.com (2603:10a6:803:c8::35) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AMDPR08MB11336:EE_ X-MS-Office365-Filtering-Correlation-Id: 9781c8a2-97e8-4fd8-2363-08df1b0ee348 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|376014|23010399003|52116014|366016|1800799024|10067099003|56012099006|5113699003|6133799003|18002099003|38350700014; X-Microsoft-Antispam-Message-Info: Cbd2QDWG5ZA8fwrKXnRqriZ9Q9Xf5doCfezyHZfinsmePYGhczgrNqJ33I5FBts4GtvcjeKSYsm+ORIPEhzDn8NOEEuq5UQY5CxKamf2Pfs7eMHJtFSMVNW4IY/68dLpNpsFalDAfhzJi8q2Mko6EkjRj+rr/RspE2NKaUEYn7qHx+KqFAPWm8jQsNF+4rTD3GldOYr939Z1DbbNnOrFNf1N2+Xw/VygGQRNoCqS2lAtHOG/uIxN3u4xSHjbQCTr2MUqUNtSPoQE9EM0dlbETWmoDiO0Przwt9F4DzsfBagkKUjXxc8bKZx1YhNFrZt7pDl0yVhVhwjfB9dzGUMv+G1hiMpFfw4CCQS4CdBz0JVjMdfplFmfilq6CDoGQOsOgDBz4aFAOkoxaoP56aDcUDPGUzPRl/dYdU5NSOKE8pVCzMWW8xE7X0i+kTFWsPcOpNUOrH+vWNJp31K+oVplaWOmhteBSzfna0SAevLP0vjoykMYfc3D7FxXqy5ZZ1cCUh1AnxEaSKPSRdjRCcV4cTfUSYuS9gVtjddzCwNf1MaU7t4Fq6PuPAO22xlIjV1tt6jts29Ano0YOPaGGpb8AcX6yS+QCmGLH4BTqaWKZ1C2Pnqtnf/Xv6tKagejJsbMmxGYAJU8thPAWyTd6BBT9GbGZ/RwmhRjVguFY4hgkVYzJnQca4u8BLHClittvtNmMAgRY6Bs0OEPHDxI/uL9xjXnqoFJVj80MJjt053CYtg= 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)(376014)(23010399003)(52116014)(366016)(1800799024)(10067099003)(56012099006)(5113699003)(6133799003)(18002099003)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SS9GQWRMaEl4NGh3cUVFaFQ0WWt3YVRuSE1wUE5kdWdOL2tlYWs4L3ZmeDZU?= =?utf-8?B?Tk5CcVlpM0w5RTN6cnJJajcwZGU4WWRqdDRINGJ2N1doOUgzWUI2YkhEMUtm?= =?utf-8?B?UnpzMmxUZ3UzZW1OT2RtWDNYVkRDUFBOUnNHL0NiQzdUNXhJS2tvcjJQWk9k?= =?utf-8?B?SFJuR2ZFSXpwVmhRbVBvVnJvZCtTeEVMdVhHZnJEV3Q1NGxTalRyNEdhbHBL?= =?utf-8?B?QmVuWTBUSVRqdXdpMEFBdk9JczkxVzYrQ0IxZWRta1dsMUlIMmtjZmsxWExK?= =?utf-8?B?ZG5IdElMeG5VNTJnWllMUUwvUDQ5VVNlSThMVEI0REJJQXhhenRrK3kxQ0N3?= =?utf-8?B?MlhPZWM3VUhZZlovVHdOWDFOMFk2a0s2Z0cySWZwS0ZEdEZvZ1hkSW9MbTVF?= =?utf-8?B?alg1K0hxVjJjTzFjVTkzbjluREhHdW9BdjFMaTVtZ2FMSmpzQ2hhUHZGUUJT?= =?utf-8?B?eXRvSzRKMkFiMEg1SWlMc0pIMVpTVnB0TlhrNW1lOUcvZjlPYVRVRVh3ZDhU?= =?utf-8?B?R0JFZm40cTI3WjRXUjc4enJVejkxWERhdWwxZ2k0ZW1veHBaS3BvVVg4S3R2?= =?utf-8?B?TkRkUEZ1T0Q0RUdOUFJiZjFPU3JGYzNkMGNMSUxvQzloR25wbERZQ1ZwNUUy?= =?utf-8?B?RmdXOEJzRXRhSVVPMEtUOWx6dG03dG9EUm5sOW90NGgxQVlob0lmTkpQSmR1?= =?utf-8?B?NG1LV3Y2QmNjb3NacDJ1b0NySHExRlJYL0Uwbm9mTGVlMHdoeG5MZ2RZMksz?= =?utf-8?B?VEt1Y0hLVGNua0doekpTR2cwUlhQMlJGZ0xBczNBYms2MEtLZ0JuZWVEVFZL?= =?utf-8?B?aStVS1pEYldmSDZUMlQvb3U5amFFdEowQ3U0QVErdTU5OHVHOHRRZlZOaVVW?= =?utf-8?B?OVJUQVEyNndLeTl3TGZjQzV3Q3hsQ3ZlVDR4RlR6Ly8vR2VvQlkwMmczWVBP?= =?utf-8?B?WkQ0UWxCeXE3V2VYYkF1bHJUTTdwT0xZYlNHK3Vwak5oa0RVN0JLZi9EWC8v?= =?utf-8?B?d2VLdUpYQnVBQi9MRXR1amZrTnVmdktQNVdYV0EwN2VGcmtIS1lpU0NWNWtB?= =?utf-8?B?RTBXZ1JpYThQR0RKTVdNUmhxMzRvbnloVHpRaHVINXJrOVdkaTJzLzRaWTZj?= =?utf-8?B?RFE5a2FmWHM4MXNHTytvNFRFUGxsZW1Tc0UxY3l4VWJjYWp3Y29IUFJuVzNz?= =?utf-8?B?Uk04TmRMcmRvblA0MExITzNTUWJGZFkzb2J3eldvU3NjSy9JOGh2T3hVdUVV?= =?utf-8?B?WHFKMUdEd0VoaGhWSU92OXBRYlpYVTRYYWxhRExPcWM0bWFrSm5IL29nUDFi?= =?utf-8?B?Y3RPMU1CTEpnZWphb0xNZmdMQXFPM2VOTnFWZEVUT3RtMSt5N2IyMTh2bDBr?= =?utf-8?B?NXFzRWtublRMS1NWU1hTTkhRMmpreFh6Tm51MlMrczRveXZKUFVHR2hQWTRU?= =?utf-8?B?QVNTQ29GdjhkY09vMW1LSldKdUZUMlI4ZFNRSUF6aW45OHdEL0JHVkRpQ0tE?= =?utf-8?B?VGVVeTBBRXZXcXlXT1Y1UEs5THQ2MjZUSnE1dnhWcDVzd1UyUVF6RncyTGlu?= =?utf-8?B?WlZseDRHYllkL2JTTDgxVFZPZWNKNkZjNThHQ0dIemZQcXJjNlFtcmhlL2tV?= =?utf-8?B?Mms4RE1nb2xxbThpdUdGWFhmVkdTNjkxaklHc3FZNFFlLzZyMzJBTlZCQnVN?= =?utf-8?B?eW9qb1NaRjhIVTA2QU11WTRNRVhVaFRGWHBWR0JYZm9UalV4NnkyRVZLTnpw?= =?utf-8?B?aG1aRk5ET0VEejVmRkJnalg2WFVSYXRvaGs4THhTa2dUV1I0dFo1UkZpdDMr?= =?utf-8?B?ZDd5aVpSTkpPK2RvQ3NlSCtJWDJVZ0ZNckdVbUdhTWdwbmxqbjAzNFo2dXEz?= =?utf-8?B?VDlDWnNRb2ROZ1V6Q1BidzFBOU5HQnRyYWlWbWRqUHRPVUtVMGh0TXVuZHlM?= =?utf-8?B?UGszaTVtbFFJc0RLNm02RkFWS1JRdFVNWTFQOUlzRGNrNExuREZ4R3lJb0M1?= =?utf-8?B?bGRGMU16SjBYQjN1emZiSUgyNnJyeHlnNGorcHF1Yy9zbkVNUWs3QUwyVjZh?= =?utf-8?B?TnVFTW94TWdtckZyOXJlekMzL0Q5MlRBZ0Y1VmkzS2xxajk5UExjcVVQOW14?= =?utf-8?B?M1czQnBiL3U0UEI3NVhaTnFmOEtHRVdUcHYwWVE5QVQxMUNOd2JhQWFlTS9L?= =?utf-8?B?Vm85dkZTRDFBa1B5QlpTQlY5MFQ4M1dQOUpEY1JPTHNGajNHcHVNWGRQaURh?= =?utf-8?B?Mm9SSTM4YkRIeG1STUVySVF1U3hqd3FYRkYxYjk4d053NUxOYjdhY29oZTdz?= =?utf-8?B?RFRSb0M5Zk5oRG5vRFdMNkZPYjJFZ2dFZVRac3pqdHRka2xqMEJJS050Nmlv?= =?utf-8?Q?hkdu8oeEX6sLDUnA=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9781c8a2-97e8-4fd8-2363-08df1b0ee348 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2026 14:11:26.8092 (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: QwnhhG42vITVeNfHqs1ox3ZKEHhT25ZBz7yEbRl6CsPaubdJrOS6tlXxo0k3l77SjZGSgPS30sWnEsx31g+ka+QvbEZE4A7mdS0X6JD+ehk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMDPR08MB11336 v4 -> v5: * Patch 5: deliver URBs that already completed in the kernel instead of dropping their data, and error out any a drain can't reap in time; * Patch 6 (NEW): drain each usb-host before its host controller is migrated, so a shared-context completion can't advance xHCI after it was saved; * Patch 7: remember the packets to replay from the reap callback, so only the genuinely in-flight ones are re-issued. v4: http://lore.virtuozzo.com/qemu/20260924-usb-host_v3-v4-0-1cc48bf630e7@virtuozzo.com Signed-off-by: Andrey Drobyshev --- Andrey Drobyshev (13): 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: drain before the host controller is migrated #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 | 512 ++++++++++++++++++++++++++++++++++++++++---- include/migration/vmstate.h | 1 + 4 files changed, 530 insertions(+), 39 deletions(-) --- base-commit: f2f4b3de1a1be3360a77ca6ab79762466d238804 change-id: 20260914-usb-host_v3-bbfea86d1dad Best regards, -- Andrey Drobyshev