From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11023110.outbound.protection.outlook.com [40.107.162.110]) by lore.virtuozzo.com (Postfix) with ESMTPS id C81B4802BE for ; Fri, 4 Sep 2026 19:04:56 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qlYwfHtDq3CBJglkYZMDv6OzMV6xMnNfxHCGzEZsC9ChAIIYSFXCOK0G7pJyt07t6aoeHn9gKwd+e6Sp5/590JlUhZ6R9k9j2oBbYJJRGJNIF291iWGCKmMwYmJIv4IcjwSK2vmOW9CavQ2pnGueCZG1LAlCcmKkeizN1TpkyPgS4Vy1gK/jIu3194zUI/F39nw+MDfVBQGl1ikoxhm+cIZ7zdVBNaOatQPXZMEqbxDRitUlU7MNwyLM49RthSZRpvDgYWBd7ps2JOCKj3pDt8wqh+iQAnLd2GFsJXfUwTiwvaDrPQGYFe02qtLO8Rp4l45YGIllEr60tz+uI7CIRg== 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=4wgs//+HITR3CZf8pzIsVDp0hsqeb9NGoH/KDTyXm4s=; b=qjr0ulJ++RpLLASfdNHZv39xM4Nr12U9XXbaq5IVBiCTMuXevvOv9SpDa5FEgtwb6Pw5sC28GP1pjvjVip+HW+JO7BIekk5XrDdBF0gM0LlijjXk6GrKQG7kQhDJi1Av+QdFkFkEm5UQPkjsN/8+uSCV3FzQL0epNvZMFqJww9q9Gqe63k67zDGvpTHY3GI/FZRu9mNq16PRsi9dBpSogWGhoIR7BNaNLFdcZgrlDscgRCqlZ25uTxJ1zOy4wHGAZJfaW0U76/ZX+D3LmoIZvC6fkF5DqWGVF0SLde46Iizt4zARKaaA4Sxd9hILnYwlZDNxSRYL52PaSPn2lLaz1Q== 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=4wgs//+HITR3CZf8pzIsVDp0hsqeb9NGoH/KDTyXm4s=; b=WLa/ObmVAySDoGE4bQ4taxq7ZY9S6LGiWIUZcTHpKFd51B6Mbn+M+rkAgKEev6G0dVfz+3LSi6ZZNS2Dty0TqnKB7BoiTRx4kXltog9Bp/ZhmvDzCIz1GI8NmI7riLGpHuGRYs80v3wUuPioHv4AOgzIGVrs1Loo+9ONSYD/PZv0nixvg3keTFhiACX61QTfC0V0y0Q8wFvplpfP+rtvV4SzQn6awTwfHduaQTp3Ggzi9aAPMhuhRt48SFlAksF9arggEGXL50lXDHzzzSiik9oOwoEAkv21ObWMANqpPni5bH1oI7SUkzUQ3QJwCbV/753q1xa/0VO6hkgkIywMDQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from DBBPR08MB10650.eurprd08.prod.outlook.com (2603:10a6:10:52d::7) by DB9PR08MB9827.eurprd08.prod.outlook.com (2603:10a6:10:460::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Fri, 4 Sep 2026 19:04:55 +0000 Received: from DBBPR08MB10650.eurprd08.prod.outlook.com ([fe80::1b2a:832c:d136:a37c]) by DBBPR08MB10650.eurprd08.prod.outlook.com ([fe80::1b2a:832c:d136:a37c%5]) with mapi id 15.21.0382.007; Fri, 4 Sep 2026 19:04:55 +0000 From: Andrey Drobyshev To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org Subject: [QEMU HCI-8.0 PATCH v2 03/13] usb-host: add migration blocker for CPR modes #VSTOR-137800 Date: Fri, 4 Sep 2026 22:04:33 +0300 Message-ID: <20260904190443.795902-4-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260904190443.795902-1-andrey.drobyshev@virtuozzo.com> References: <20260904190443.795902-1-andrey.drobyshev@virtuozzo.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: VI1PR07CA0215.eurprd07.prod.outlook.com (2603:10a6:802:58::18) To DBBPR08MB10650.eurprd08.prod.outlook.com (2603:10a6:10:52d::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DBBPR08MB10650:EE_|DB9PR08MB9827:EE_ X-MS-Office365-Filtering-Correlation-Id: dcc79ed1-4ecd-493e-da41-08df0ab767ed 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|376014|52116014|1800799024|23010399003|366016|38350700014|10067099003|22082099003|5113699003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: FJNG6yLf+7EmXMtMZWT5rYugofLc4G8PmSp3oqpILfdIOWTLsFZ5eMXLaIsvIkCx8z5WAnImzkdcGmiFjnL7f0nFWxehoiU27rCcgYko7MR9fipVXIzovXcphLrF7G5XG9MXK9vJ7+uOpdUSbHHweWc9hWW4WNMzuyZtU7c4ZKDiTVziEQCqsJyVb8bqLgB8RzirHNjjHbrfDPD72Mx9ExwI5WxNsvOwCi7QlZsSlNm97X/YceT7Is3k1F0hD+BYca3fGwFO5AkfrSJkKcn3SImO6tP1+dXjdUxEgMXQUKQaPykSAikBTDQ6ihNbAG9qnzWAQMUA/o7dpvcKOtFFHhTfnEv9Dit6ssb69+q3LcJvRyl4nc4kGqek/BC6E/I9CLlB/fCT8gCcnPg+Ef9u5GvF3YclegQX6CwZ8eqJxrBFDFiPK+5NZ13f3Pt/LrGXalH4afOzzhd3naqV5gPtlAq4zrMfF8El5BC216OPqN9jQbrAfPaQSwz5QQKk8WYoPx2a2e/lUAfuKGpAgFB7bIvbXb7i6zvUBXuApWWvkrYAhNrCgmU97auAy+/ByUt3hsooSHDyMKM0k9F/mN/hkES7nLDJqWr2+QlmpqMCaua3n1DPHQjKJ68iQl65/2xNiPsOt7mdJEqVusje6/KRd4GzTBHkB0QqnACxEp4UP0A8he5bfrU7pGUZRxybIjM2WYY9k/xY8vbqcRmTJ5rrhSXZFY49H1ia55IdiIMpthM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBBPR08MB10650.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(1800799024)(23010399003)(366016)(38350700014)(10067099003)(22082099003)(5113699003)(18002099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dkESmHMGpeExBF7JUxZkaISYFqrcw3btaqRsDchLzJOHJjhmFgIzH+jfA+Xe?= =?us-ascii?Q?p9bM8eMiHqcm3wkG9T96t7BYAb8J4QlpUjQCM9S576v92vv850tEF457XweG?= =?us-ascii?Q?k+lW7RzRueCaUhIe1lm/BLk+LWoyX/y+gSfvjryncnRpn/sBSVeXpMwyIBZC?= =?us-ascii?Q?AfnSjft0I9OhZunKahOjxO1+bYfbSLfHGFYpJOM5/7kYIIVxcG7tPQ6fjiug?= =?us-ascii?Q?pE5VvnvJUcbu9iUEVkLZEtDjutpcyoG6aNhHCMgT3VRvuBbaE+fAie6YQWDy?= =?us-ascii?Q?xmw7wean791HLUz/5PXzdqr1V3h7fq4uN9r3SutS3yGxqNGk7DHXE3pmkWi5?= =?us-ascii?Q?kcFrp7LvOZIqdQ87kaWi9I5z9lKrxdS+kOZNXoLIWexGmY2z4AOTE9pDVGPn?= =?us-ascii?Q?gU0AjRv4WVdmzv8O5gubRk5m793njwIZd9M+O02nB1hH1Gu5PuFbtTVrbvsw?= =?us-ascii?Q?Y1bbZssXJyzzCUpRiCPkhyUu9J74DeF5fbRL9+znmg1p2jt4HHOephqivzHE?= =?us-ascii?Q?WlVe4GHcU1V/rgN/jQMjQkQLaG/flwhsAhLpvfS6/NGcgmxHGSHB6Dtfny0z?= =?us-ascii?Q?6OAwsooU4rFgJAjSo0Q4DyUNCa1x+DRZTQwWKdCzP/lD+4MhF6jte02GhCSY?= =?us-ascii?Q?cFIA3l/EH6Oqm+g4OZSiebdHjbWKJrNTt+oBr8clj4sU5+5YFy8h+MS6vC2C?= =?us-ascii?Q?SrfvyDM9RoPmLm7Hck2PqC8EOujngC6RIO40VENvG46bUlBtm6gUggWTKuDf?= =?us-ascii?Q?HdrBxfWRlokcY2h0V3FTba3p+6evOpwBCKW8sspENofRM/LvP7MmoBKT5IYv?= =?us-ascii?Q?MGAusHwiPjNvHq/cNi/ThrmRkQMigR5rN6bt2cVv+uzT9W4MVSIUG2xP5DoS?= =?us-ascii?Q?x8PrPAr71HLIKNBSKhGgkxbh+pALQfbssIWkhawk/5DXG9U0/3IFblGcD43E?= =?us-ascii?Q?lMUTcnbh61NVuOGeG2NWQ+kzpyXpyWZaVkYXXDuU/sRFUJuf1Cd1MOuoSEO/?= =?us-ascii?Q?JzCOenIkuC5FJWGJZ1h+FmYmncMkoCMP/iw0+OVrDwqsydq8Cc7cw0DBOLmo?= =?us-ascii?Q?xe8gIPJVrp68/WZyF7WT2X4V7f/V7NFv4XLFFNutcDjk5SRHFh404+/HHmUl?= =?us-ascii?Q?Rw4W1inXXLNDJ/9/PG7r2RkWIp+Vmyu7GJKggmu3h63Vkw5Ri0wJ6pQ4MLBI?= =?us-ascii?Q?wdo3FKgBGQSpdy8DusKebdkrq71Pq65sGtwzMaXzRdBmyxAofy1aWruinLv4?= =?us-ascii?Q?v8aRjOG5gOJsJ///t4Hg/la9xfjK6/DvS60fBtwwQp6nWvgBrzNuZfPXGPpG?= =?us-ascii?Q?8YDa2bmd7y5flQaKHL2ndwJ9zxUtbUxkK8MWmYLINRUvybRKkGo6oQrZNTEM?= =?us-ascii?Q?Ry+t2b7CR1slqt6xLzAjWoUK/KFoEnsdiqchtJ7ZUSbneIMrOK/n+PY6KquA?= =?us-ascii?Q?NRSJ1U2QlC7og0YwladyIvc56bQwnLxddWBsILManstW8LIE4QvPRyPy2OAN?= =?us-ascii?Q?eQudCUFV8Q8M7cmaxaNERlbrrQ4s1LfJH54iwicqzpQZtHQwyWVWbn8qzrW9?= =?us-ascii?Q?81jVdMmlFrPghnV4qnfOkuw/73tpGMXel9ptrz20BK7HkDfkl8uQmqdoKGfc?= =?us-ascii?Q?xqHqyBcPOHtNdL7TJWjUaxnF6WUSJcXbFwjr8+tmIbFoOenBbDxWsXtLBP/D?= =?us-ascii?Q?wWDc5wJvqvKNF03H291i6lzzhh1MjYyt4J+6aE91LM7o2zQFGnR0dX5WTUQx?= =?us-ascii?Q?xgv+Uqv3ffsMMFVymMKCnrpghozsQwE=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: dcc79ed1-4ecd-493e-da41-08df0ab767ed X-MS-Exchange-CrossTenant-AuthSource: DBBPR08MB10650.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2026 19:04:54.9970 (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: EawFskzEXkiqgCgqpw5L7OzlEc9BeNAZsUWEjwTkmDG4MnOA78O3lktc2KFw7dTO2OU5uZlX143aPZMzs+s0gP1N5PAbDImMQCxRfovu3Fc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9827 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 resuse 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 | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index a8e6f142ec0..86f96087085 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" @@ -103,6 +104,7 @@ struct USBHostDevice { char port[16]; int hostfd; + Error *cpr_blocker; libusb_device *dev; libusb_device_handle *dh; struct libusb_device_descriptor ddesc; @@ -1254,6 +1256,18 @@ static void usb_host_realize(USBDevice *udev, Error **errp) s->exit.notify = usb_host_exit_notifier; qemu_add_exit_notifier(&s->exit); + + 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) { + qemu_remove_exit_notifier(&s->exit); + if (s->needs_autoscan) { + QTAILQ_REMOVE(&hostdevs, s, next); + } + usb_host_close(s); + } } static void usb_host_instance_init(Object *obj) @@ -1275,6 +1289,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