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 D488D80204 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=ORQ9cE80ciq9MdFI4xe85W8fToRr22o5MjXPNTbngD0sjmb/52dgmbKl9aY/de5U5gJ+Jx7l6RA8hyuxymx4NZQBIVGvGr3Z7zTd943WnGnI3/t8+TY935/IzB+/woyDTyIrAeOY1AJjwnC87b4LKYjzly8ZuRcggVOFeUqppJYJTRfHIel6nim5oYwDC/IAF6wMnNaqokzE45VVERHbgdyZyfCB8hsyLmhXjseKmwnIQk7NwBx5tXWJLIQwWrCcXSfq81tYy1A84W7PJX2QRw9VWjUZf8cDGIdG/ehVRQR47yWWiFxIcevLDWunXdJ4xQEIhXiXv0nzxVD/YZ64Dg== 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=TuJnX2NlP9f340wziPjCvcUpKG5C/mk4gV10vRseRl4=; b=tQLr1I577Ky4o26a2oxmdmUmq4NlVyYOK8whOlY6ABNVjam4Dy83StgnhNXNOitGdqH7FmbGU105CIpfVXCQmb1qn42rpMm0bfPsA9pH+EfYTaZMWxj5N7PJgmc8JyN1H6MROS0CC6y+JpZcSHCG9dZMLOXCefF3jxN3Hjt2FQmfwhz1t6qrYRYsNjZG2+HPPw+J+2EJ4mC5CxvOk+fgUV9qwmTgUkTiD8JoPtp7IET5zn+kOzOa9euORA3vCPMbf9m9P4OXMB5+2RfNWlx3NkFK/YNTAuX8ZmR1b9cd60R1FMOahaTQoK6bKf08ljrjvfL9vv3964+i/c0rca14Vg== 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=TuJnX2NlP9f340wziPjCvcUpKG5C/mk4gV10vRseRl4=; b=iVmN9CzXxOJRh3mxIaMsxE5np1Iwrxn3z4GMi1aMNuEl+4lUMgyzLgpER9Vh2jV5KDd4mvJnY7H4J8mFR7PYKQ9KrQswxLR5p0wrcJuivDmI5OlmIIceQOgYcqGgMIxqUzinFwdgPoJ1XBVNwA1qog1y0r/sAUazuxm5b6Fv6GqMEQRogCE2fJATNT/3mhp1SHb+Sx2zrE2J0UOV04zgZVozQe9msLkxppLJ+5rL4QSqHwYldg8Rgv7Oi2im6sj0FacJwcwiKASNvBnPY2yoA73mvBJr/hc2ip6/PrkA4JMu5xcRnSHQSW7TUTKM2lhZyqxgdPgXOxEILYR+rXq6+A== 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:19 +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:19 +0000 From: Andrey Drobyshev Date: Mon, 14 Sep 2026 22:13:10 +0300 Subject: [PATCH QEMU HCI-8.0 v3 02/12] usb-host: add migration blocker for CPR modes #VSTOR-137800 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260914-usb-host_v3-v3-2-c43a834ce016@virtuozzo.com> References: <20260914-usb-host_v3-v3-0-c43a834ce016@virtuozzo.com> In-Reply-To: <20260914-usb-host_v3-v3-0-c43a834ce016@virtuozzo.com> 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: fd61a3e6-e0a3-44d8-7314-08df12943cae 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|22082099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: /unZWARFXAsVGs0qB/HDRfT5mj2RhwoIzDf1ltckYN4/qeW0oDPOOeqPoDo8EP0XXzhCaBO+riclHiwIapye397F/YXfAYG2sYxR2X/Okti7hcfgKvPzpxLumAzNLVST8fvU+ZWunPnKBqhwqv4c9VFqbcpDGqCeN3ww/tXfOswlwHIENtBWFSnCRtVYC/n0WfcHegWmuvO725EVI500mNmpkV7D7DgnKFJMfNGfsSQvBmPEd0CQR4N458Pla0o5Msipz4P/9M86LuWzgJw9AyKPMRbX5+u3nP+NTLcdBQaJ3r5HHW9XesGWH2deqPP8KxLu6sjBpCwdVsq5OnDpjvbIvmHahqniWMGUZmSaynyYDwovEhphVowOdgIP5lTX/KVDiOVbigbt9rwMaDReR0f+527LGZ9wU1gissKDcxkpZ0i8in1a1sWw8E5XgGHd3vIcsAwC8+FuukFEkvc8ZxFv3I7+KPbjp3KtzIQcRGBg3LtrmzFtq6W2FVhdqkf5vaBcLNhoayKc3H8FzSFn6JZJkEbOy/8cKNENwXvtewb6m1qX04LYrEPrxDVhldm1a3yruun16rv6o3808nWoqh0aiVlLRnAkqT0Z3mu9NoQUiJF2NKlSV1ZUEHkRA++5BR2cb31Nh89doFSD+YlBCCh94gziO60WBH7ymVnsl+31tcYxtNZYYwtqR8z/0krC6SLLNlApkQxJ8vb+YARVGkK3TJmUTX/Glvp7UsIBV5g= 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)(22082099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SDRJaTdNZ3Q2YWhySFBidTFuYWErdDdhbks2YTZLTFNwNHRWSXAxZHp6WFRx?= =?utf-8?B?dmV3dmkxOG5lY3VXdksydVYyZ2diVXdxVkVNWnNCdS8wMklUQ2w4K3VuME5N?= =?utf-8?B?M2RmU0dKM0ZZa3RHUWNKKy8vZ3VGY1RSQkhKMklNR0hkd041VGk4dHlvelFz?= =?utf-8?B?R3lVRmc2eWMvMlhJUE94NUxPZ1RyM2kwcHZMaEdDQmswQ3dabzlhVGZSeEdS?= =?utf-8?B?OUZwcDBHUmZqSkMzOVZDOHdWMzhoSzhFMHZWWW8waS8raTB1ZkRjSXFlWGU3?= =?utf-8?B?ZTgzTjdBS3RlcXBObDl3OU9Rd3F4Q1U5UGdvbG0wS0FNT1grVzMyU09tVWN2?= =?utf-8?B?MzljS2NtM3BHVzlsYXBvRFBkaHhVQWhKZCtIdHJtZHA4TTl0MzR2MTBpbjlY?= =?utf-8?B?YStBWmJpRVc1amltZXFXUytXWlljN1F3TjcvN2UzY2RESloyM1ZtS2k3Z3lX?= =?utf-8?B?N0tlVDJVRlByd0Y0MWw0LzUzbjB5MTZCRDlPWStpNEJ4cGc4dy9DOWtBOU9V?= =?utf-8?B?SG9zU2dlTGNndnVSVkR1Q1dxcFFZd2s3S3FWaUY1Uk1pTlhFeEVTb2VzdDNO?= =?utf-8?B?MDI0OGc0QkMzbnA3QnFLQTZVM1ovallCTmROTnV3aG1CalB3cUhhVkg2ZVRU?= =?utf-8?B?bXU3ZGsxMlp3NVJKcVJnZnhmazQ5SHRJUnBUV3pYRm9jNUV0YXBIQ1JOdHU5?= =?utf-8?B?R3Z5YzR0ZXNwcXN1Q0FodkxwVEJZd0RzR3FuejYrZHd0azVhc1ZwOFV1VDZZ?= =?utf-8?B?dE9sWGhBQ0FLQ2JxVDRSL3BRSnFlZC9XVjBySGJtdW5YZFJUS2pQRXFIbkNJ?= =?utf-8?B?WUtlN2JWS1dvT3lKNlN3dkRCQjlVWXRoa0U2Q2tVZmlCUUw5bXpQcy9hWTA4?= =?utf-8?B?VEUvSE1zS3FtbnhZS1EzcXY5N1d3NjB4dDVkNVFkV3VaRmUvSUdjSjhyam9S?= =?utf-8?B?d1l4NlVTT3pZeHVUTVNZYlA4Z3BqTXZoa1pXdGlQUE0zVTFLSHNZUUtVcEZP?= =?utf-8?B?bmVhbkVJeGxnc0hYeVg4WDJxTStGckJUc1BlZ0xYWFN0WEd0Q2JtbUplMk5I?= =?utf-8?B?MEpuMDJtRTI0dHVmQUNzS2ZUdVV5cS9KRkp1MkNxYXRTeGRNYmpJb2o2cC8x?= =?utf-8?B?Z1U0dlBld3grZzVUdG0waWJvNTMxOW9qeStBT2hlMkJjQWJhTUQ5UlhyMitY?= =?utf-8?B?TzZ2N1A4aDI1T3ZlNFdIckdqYTY3UFgrWkg1bFlHVGgyUWxrcUtBcWxjaTBu?= =?utf-8?B?Z25sRG1helN5UEE3aHhhMzhnU3NDTnYwZUU3SmYzT1VrV3c5TlZHcC90RUVK?= =?utf-8?B?L1lPYndRUENiTnBNNkR6SjlnQzNKMjlnczBSTDhONXUzSVdjeDM1TjIwL0li?= =?utf-8?B?Q1JidzU5T2I1SDAzaVBPMGZKdVhmNTdCaXlsM3E4YmZYYWVSS3NHaEZuZG9m?= =?utf-8?B?d2dXU3EyNzNKaTI4NWtRVkZ2Y244dk1UaHplZVk5MFhFK1lHaEZtTmF6UWFW?= =?utf-8?B?ejRhNUlWVzlodk9tWHhEY3V6VGpzb2JGZ1pDMXZKYUFYaTBxK0YxUW93bTF1?= =?utf-8?B?cHFXbUVIVVVDUGl4S1NJWHN4dXE2TWd4S2c5K1NKZVVRQ1luR0QxZVI3VENE?= =?utf-8?B?bVZkVkFOVFZhdDF0RGdvdWF1cFZHYzYyQWdIQ05mV2U1dWpTQ1FDcUN6M3ly?= =?utf-8?B?eVNFcmxENjZUcmdnRXg0QXBXaWs1NlBMbit6L3IySGJJNjIrVjJaaHJ1U25n?= =?utf-8?B?eWVxWkEwMXFvUlBOcnhFeVU1Z0NZZ2t6aDdzRXBSMko2Sko3UEdGNjlKSWxn?= =?utf-8?B?NWR6NG00MVdVT3pGU21qNWNVZDBOV2lIeGxLWGxML08xV0dBSDcvN1hnaEZW?= =?utf-8?B?MHV5UzMvamo4OXEwQVVMdURzeVdFZStEWHg0MjNVUEZsRW1kMDlLSURNTXhL?= =?utf-8?B?b3grT2I1eHBrSlJLL05TbkZ5ek9jejZpak5ERHJNQlc3enpaUHM4V3NSamV2?= =?utf-8?B?WFpLNW5YS1lYT2x0Z0hObzRkM2t6bVFoQkk4dS9USmdoemRWeGNLbE9hKzRu?= =?utf-8?B?Qll0c2RSeGZzM0Uza1N1ZmlUcWRJQ3dtcVZCTDVaeGdLQ3c3d2FEYkYzU090?= =?utf-8?B?MFpWM2Q5enF6Mk0yZ01VS1JRb1lkY3djUHQ4d0R1NHNWY0hYMTFuUWR3Yjcr?= =?utf-8?B?YzZRaTR2eGZORzk1L29BaDN6NGp5UHVzSUFyWmFSRWJlRnJyTVBkVFBtQkd1?= =?utf-8?B?cHdBNDAxV3dxT3Rxb0VDNUR2by8xalJyRHF1NXNza3pUZElTYVh2K1FDK2V3?= =?utf-8?B?ZEcrUTErdGEzenl2ZE5BZ2gyc2JsT0lhdkVoVjlRU2E2d2FrSzRUbG1Xc0VD?= =?utf-8?Q?W2T0pywJzrM3xx2k=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: fd61a3e6-e0a3-44d8-7314-08df12943cae 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:19.4935 (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: W38oM/zaNp1qXaczoNuGiTgUIcqWvZOGTVWe67KptbROjwHXy1gqAxQ/poTFfmV6m2OgY8F7jLNXBzMcCPOHVV9AerBgDYOemdSYtXXpuB8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6192 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 83645fbe0ce..5c3da00d8eb 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; @@ -1258,6 +1260,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) @@ -1279,6 +1293,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