From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11021104.outbound.protection.outlook.com [40.107.130.104]) by lore.virtuozzo.com (Postfix) with ESMTPS id CD74B807CB for ; Tue, 6 Oct 2026 16:28:01 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=haPzUl0iE6ZuXtEn9PZ4TRDfmAQAl5An8NAxOgK2w5SSn8+51WzpkDB5OKD6z5uaL4jN5XS/RD6yjGoSipp3TIAyYCsACLkg3F09oTRTHdt/Ce+m7Hr8WUNteTfH+nbKcKAn7Eth3JXZtLaUiS6pTbdkUm7Uc0yQJsSLyeDWU+qz3klw9wQyuBPT3gvtgS1swiQfKUgNKpG89L4r/BYyZzDUWpgZkH6exU6750RtHcwR8fZwmHEUGnrh5GMRZoV9khPJJEybqN3JfepCt5E85jkffcdrF9/EoKFT8H9uPzkyFv2JDg6xSEPz9qVIHA7GlbqjxYFtZxYlDyCYQxJFEA== 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=rvIu58CzpLkGIAemaccdhfywAVOYEkgnYhpiuL8UGKI=; b=WkFLT6c/NY+qeta7ljI973E7MBf6NzRk5ec5jC6sXcVA0Wk5rCROB+TJxBaewv/ErKh38ab5KbT4RL0e7vdtrkBqBoXDTSQ9RwOiChNEiAtoYdS7Z4yyXe280PjQtPhtmeioIEPixOLNzPUFJOYZtzMkzoLWbCJlalY9C6qnsq8FrbW6rdMebgRNO8WXOplbvPZRM03X1X64uHchicDavgb5205Ukc/uF2EJMK5hiApHGcN/RShrD133arCxLl20QoFDEVzskBiBtyO9cMpatc/G8yH3M96/f74xF0V4LvauSaKf8yeW9zJps3ujjpttG0k5dSCKYwZcWhAHSn13cw== 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=rvIu58CzpLkGIAemaccdhfywAVOYEkgnYhpiuL8UGKI=; b=cQt9Nodwk4N7bBiHQevznLbN6E8/5PwxAFzf5D8zzMMilBIvMpw8teJ6Fe6KPUD900HTxnn9UcEQPcfTU9jHOQ2sInMTAD26BwM5BaYYyU+3fuGFotokIoNjE+obHMGh1Bpu/zxpWwAhW+9A5jDA4XvyQCJnowmySB8JMn95bBxWoLkmom2zHJlIwe8WefSZRPtpfvaIPWYvYuq36fpe5rJ+6Hi0aBNcFnq5Tn8G9GhV3m9TikiXLXDUt2V62VfB514tIj7iwP5+v7roBid0LWkkXQQUgAHjJN9q4nkw/w1lsbNydWRUQRCsxIC+/0+z51J8bLpLEp0GT2BEooWtNA== 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 PAVPR08MB8848.eurprd08.prod.outlook.com (2603:10a6:102:321::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.472.15; Tue, 6 Oct 2026 16:27:58 +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:27:56 +0000 From: Andrey Drobyshev Date: Tue, 06 Oct 2026 19:27:54 +0300 Subject: [PATCH QEMU HCI-8.0 v8 03/14] usb-host: add migration blocker for CPR modes #VSTOR-137800 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261006-usb-host_v3-v8-3-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_|PAVPR08MB8848:EE_ X-MS-Office365-Filtering-Correlation-Id: 887d6b3b-abc5-4ef9-34fe-08df23c6c6cd 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|52116014|1800799024|366016|376014|23010399003|5113699003|38350700014|22082099003|18002099003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: YLEBxBPO5dGD44pUCueug0GFm8MLRsmG3BbuHvupRcESsCfiH6e7/3rdJV9lQYSevUXo4eXMpgnKS6aAYQX3glMduh6OqTqFd6nNubr2fz6lxIzavXSd+vs0YrtE/omUpLchut8Qeu/Yylpffh512vwfU8PMoDD1u6lBxCMHSLC5qTCsFO2/ixun9qKdkrs2f5aLXMA8I6mqRRWy9euotVLoONL0vbW4JLzZU9WHv04bUT3B5AHK8k8nEeDwdUBQjcTiGINXvF2OOoVbwoO0raootELJfSDXKrBXk2Dsttc2f52iLB9MfjopehcwbB6eBYdPMdz7fw+wdV+ays2jqFrZlPMS6YYZUxVuqxT74K3UuGCviimKeSICwN+Yjv1uGWR3j32BppFDdAzdRbhysbLBT5WEAsEyBzlCTD2Eoppz+0aGfnyjbrO81TBtMoJ3JadfM2uBQmCnGUz9dms1IZAmI7JvYC0t+iTVVAIvpX646Ruw8eX9bCa+OL4QEosGU0hmj6VWEyxsJtHkr7AOzMaPuGSWaN06sUMNl/bPh7lAG3avNflRLTkX+zvOGVA0Ko65uzn9KOCMMfPe31u4ei0ycs0qsbkUh8I5MsCZ62Bc1RmvX/aiLX8p/g6v2ZE2mN42URKpa4/4E/Q3mnBa98WAueyNrKIpf9NnnvtLMCqMpv2ggH84aRbF5HWQzLTvtatVXmhvLQE03ApL00c31ooqUrYYIz31OlkMmh8L+oQ= 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)(52116014)(1800799024)(366016)(376014)(23010399003)(5113699003)(38350700014)(22082099003)(18002099003)(10067099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QWI4eGVDN1pRTExEVXBlSzhTWC94c1VnUUZkblhEWWJFcXprVkJ0K3dNSFc5?= =?utf-8?B?Y2pXNWo1V3ZhcU9objdUZGhCT1dLajZxU1Z2TWdYREd4d2R0NUw0eFBRNlRZ?= =?utf-8?B?TEVWeXByWE9kbnVjRkJYZ1doeGxoaFhXTXFZZmZIalhnc2FXWnErSFM4TEd6?= =?utf-8?B?cFNzcXJweXpnUzNzc3JnWVJIWlJkd1dmT1dlV2duRmdwNHYrc1AzSlRDNEVn?= =?utf-8?B?ZmptQXhTZDBJcDV1ZjNnQis4ZHc0MzA5Vkg3Y1E4anJMNEVpcGRxdXk4aHRu?= =?utf-8?B?a1Nrcld5V1ZDUDFOYkMvWmZoQ3NQN0lwcjlLM2hsRlRqdkg1VHVGSWVSck9H?= =?utf-8?B?S2MrOE9aQVN5M1RSbWNxeWxBdVdEdmpDYUcydEZtM1hwaUNuUS9pVFZIclI0?= =?utf-8?B?MTYyeWkxR2lyc2RaaE1JRWw2S2FDYVJKQWxsTnU4d0ZaLzI2UHJUL1NWMEZ3?= =?utf-8?B?cTVOQnl1WmlnSWI5eHNMa2xua1BER3VPRGhhQXdzMnVUcVZLTWdMWGJHc0dq?= =?utf-8?B?RUw2cy9hK3A5Yi8ydDFYZVZBYXpzbFRsak1VVTZtVnBJM1QzQnhDamh1b3Ur?= =?utf-8?B?cFBRMkZKOXVNODJTeEVwbXByd3VOZ3FBZzQ0TTEyWnNoWVU5WDNCckJjQTlq?= =?utf-8?B?WlFOY01oZzI4RGFrNS9QU1JseGxYdzJucHpHbUxnQmdLcStPT0l5ZkFHM2Za?= =?utf-8?B?czhaaVVvUHdJcVpzeUJqUXMwdjJWcmNSK09Bd2tSbVM0RC96WFJSMll5OTBu?= =?utf-8?B?bkFwNmlQM2pmMHR1YTF5bCsxVkNYYzN0YXg4SHNHOG1UazdKU3RWTVlpanBM?= =?utf-8?B?NzNYdVhJQTNPbWVmZmlLRW1SbkxxVHNjSUNDWXFTcncvdUJESi9wclhlYnJC?= =?utf-8?B?TE1kbGs1eS9zK1ljdXB3OEhlNFV5aU53bDZUdUQ0dnpOaEU4aXJQTHVCWVpx?= =?utf-8?B?ODFkU0l2bDh4d3B0blZXWkhtSlBhUHlrSXZXdVpkOFJHdGtITVUxclM2SlRE?= =?utf-8?B?RFM1K0ZNcHpzUkVralVZWXlGUGJsUFJING8vVTZMd0dlK0VXS3VOQmFrS2RM?= =?utf-8?B?aEt3UDNUS3I1cjZwTHJPU1NpeXRha1o5OWt4eXpHR1MwU1NuWkUzbEIyS2Jj?= =?utf-8?B?d0dZem1JTERZRUlKV055djQvSEYyd2Faa3hnK2tFeDY4R0ZFUWhiVWs2K2p4?= =?utf-8?B?aHhiN2tKMnBxWWtNbVVEQlpnS095WkRCWUtWZ3c5SjdDWFJEWFNQTEx2TFFE?= =?utf-8?B?QmxEeEttbm1WU0F1NGxFM2tPRnJYSVk5V2UrT2o3NUw3WFdJVHpTbmVGaDN2?= =?utf-8?B?Wmg1UFA3eUhOREljQ2ZaRDdCUUVyU29VbDFBTXJkY0tsc2FVNFZnU3UydXV1?= =?utf-8?B?alN0WEF5SzVSVVlYeTltUXZjRTRsYVB0OHZaZHFzY09nMnU5VW8zMjZFN2FV?= =?utf-8?B?N3dkZTQ0UlNLR2l6T1FJc1ovSitWTHhMOG93UzREWnN2WVM4NC94MGNaMys3?= =?utf-8?B?NEZxUWxUS2ZHdHQ5ZEo5N0VxMGROMUNaL2liTmhVQm9nMUhxSUR3UHlDSWE1?= =?utf-8?B?VWx3RFUybkZCcmZkd1BGanhHa0JwZlptQ0QvR2xobVZXMWRsektucGFRL2J2?= =?utf-8?B?eGdUdU9KbmExNU5VU0dWTFo2Y2ZZK2tJVHNYa2xtMTlqd3lGTTRqSlAzTGp4?= =?utf-8?B?dkc3ZGtPa2dhN0xOZ3RmbC84VnZwc1FmbDAxSGpyUGNSS1IvVUZwZGs0VlJz?= =?utf-8?B?dGNUTC9zdEN1UEd2NEVaYnFYSUg4bUlnOXk3b3pZdnJ3UzZ0d3drV1FLMFBK?= =?utf-8?B?WWZXWlVZZWJDT2p1V1lEZ2J5MmlqMVRMazdvK1E4ZWhETGptbGdGVERVWUI3?= =?utf-8?B?M0RGK0dRWER1M3lhMmk4VS91MVFRN0xHMnNPM2J6Z0NvSDVDSUo3R0MzMFpr?= =?utf-8?B?aVVNb1c3Z09PLzFkcEtYd1lUZHl4Y2c3M1NQaG9nRjUrbnU4cDJid3dUdVZH?= =?utf-8?B?OUt6eUFkM1puaytRZFdneFRoeTRKMjhucG40WWh3b092bHdwd212enpUNERO?= =?utf-8?B?Yk9jSGVyL3dCL0tHaWQxdzh3MGZ5SUwzbEJWdUZmMktkOHR4bXRRWmtsUGNH?= =?utf-8?B?VmZjaXgzMGQxMUJodExJdE1yMlJHN3ZwZjlWOGN0TjE1Mnk5aytrekZBbDZD?= =?utf-8?B?VG9pWFV2UzJ2UjdTb05UTVZ1MjA1K2RoUkhOd1E3OU9nUnJlVUNhV0VseUJJ?= =?utf-8?B?dm5ray90MFZDR0I3UlJ1bndnTGRuUVB6VHVVQWllT2YySjRLeUFOenU4SGhB?= =?utf-8?B?TENHYWU5N2FURkpIeG5nTkkwOVNTMUh1aXhieUNwRDJBTnF6UDAxaXgyTzJn?= =?utf-8?Q?7v+e7C7uKTwUNsOo=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 887d6b3b-abc5-4ef9-34fe-08df23c6c6cd 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:55.7031 (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: BVPM82B+ZCOAr41OW9zLZx/XlzCQaZthdYyfXYJaDZqEXAqJJdL1kgCqR3jhxs+Z1+jetWkB9gWjK3tK2/nUItCe54IK6wsDry4aFz0iatE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB8848 We're about to add support for CPR migration to usb-host in the upcoming commits. Right now CPR is crashing with usb-host devices. Let's add migration blocker upfront, for both cpr-exec and cpr-transfer. The blocker is added unconditionally, so that we refuse CPR migration instead of crashing on it. That is for the sake of bisectability of the upcoming commits. It is going to be lifted (conditioned) in a following patch once CPR support is added. Also, blocker is added at the end of usb_host_realize(), so we have to cleanup all the side effects done earlier in .realize() in case migrate_add_blocker_modes() fails. Signed-off-by: Andrey Drobyshev --- hw/usb/host-libusb.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index 7c8b65ad5af..e3bd7bcf749 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -46,6 +46,7 @@ #endif #include "qapi/error.h" +#include "migration/blocker.h" #include "migration/vmstate.h" #include "monitor/monitor.h" #include "qemu/error-report.h" @@ -118,6 +119,9 @@ struct USBHostDevice { bool bh_postld_pending; Notifier exit; + /* CPR migration */ + Error *cpr_blocker; + /* request queues */ QTAILQ_HEAD(, USBHostRequest) requests; QTAILQ_HEAD(, USBHostIsoRing) isorings; @@ -1256,6 +1260,18 @@ static void usb_host_realize(USBDevice *udev, Error **errp) usb_host_auto_check(NULL); } + error_setg(&s->cpr_blocker, "usb-host device %s does not support CPR", + DEVICE(s)->id ?: "(anonymous)"); + if (migrate_add_blocker_modes(&s->cpr_blocker, errp, + MIG_MODE_CPR_TRANSFER, + MIG_MODE_CPR_EXEC, -1) < 0) { + if (s->needs_autoscan) { + QTAILQ_REMOVE(&hostdevs, s, next); + } + usb_host_close(s); + return; + } + s->exit.notify = usb_host_exit_notifier; qemu_add_exit_notifier(&s->exit); } @@ -1279,6 +1295,7 @@ static void usb_host_unrealize(USBDevice *udev) QTAILQ_REMOVE(&hostdevs, s, next); } usb_host_close(s); + migrate_del_blocker(&s->cpr_blocker); } static void usb_host_cancel_packet(USBDevice *udev, USBPacket *p) -- 2.47.1