From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11023112.outbound.protection.outlook.com [52.101.72.112]) by lore.virtuozzo.com (Postfix) with ESMTPS id AA11B807A7 for ; Tue, 6 Oct 2026 10:34:33 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=s+ix8pv9zx7SRwn0bdcCOM6EMt8acykFXkcHQTXzOPqZLMtDLx+fXVFgiFO/ooJv88M6ldiCq6H5YgwKtjYSN1XLIbCIBLbzod/DUPwYRYkxcwAcPpYzRz5AN3gdS4ICL3jlZZamgS6uYbh8bgxTnX+P8ZsAuqS6NdvggebT0piFPd2C9+AxJirnsTtbocVAhwgrVErFa7etZ+Jv7qhwq1e/jjJceLUBXOO8SgJi87/q0MyvXyPUb1bL1GAjdF8UEN0bCrFAKqBM4069//LrF4uGD3WBd4mYq7lmC2qEJQBdiWsXRH9e9xkXGbejNkRk79BvZiaTPYsAzBWxGk7lzg== 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=BPNyHwpKR0x/8UQpJF3hAX7kCb9DZ3cknoXGJane4aA=; b=URsHHnytXQBcT1JApXqnjfP+AzjcpqehWHUsKZzSjqyCGsGyq3+xQJFCgB2TLGDEX48hr/D1MUFuEqtvBAIqc8ZxAR8Sy/35Z1TJhvnj7CEZrzTueJHgdQJnYyhh6/vPrk9hfrpQmuR5ttodGlMWgrai1yoknahsFhyBBO5+ksBb78JhUCmFz1w4Ao1xbgODRPUBTZZbVONhQX1OM/y81l8DFx5+Htk4vy9gPpP+zoV6cuvk/DOPqmuESQXvWVfQdJLdyEJHyY7Xow2oB9MkH2qwzvfRn0kP+IbiPJVXpTnGDQITVWiim3nm+y0oqLBsvDEAG1iih96YG57Hl3I4lg== 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=BPNyHwpKR0x/8UQpJF3hAX7kCb9DZ3cknoXGJane4aA=; b=ol8PMAojTj9B3W+6QRiPRXyG/vlQLmaYJh7iWR0P3MiHhMCo/nDtPkzZU8j063wgoIcCjYKR4CcMGU+t72EDewHSuhTlLfF32aSC6SmGwt4LdoOSeJEHM4EftfDPDa3pO/UItpwgpyE/ySFIaIWnizlUfmEt73cMUiS9UKOXAGa1vjZiV/pfW62ysuKHrYF4xDnyEnaNZm/Q8CuFOzZb7kzZtIJEeuXkuFq6WCj5DSmHLvPxuNsm0BGdeZ3pZJX8VsW3j4YEQvLMSdWlIxXJOGc12LJPApo7zzJpz//D+bHXx+11cnaxIu39wmTWAZwbEu/FZV90OAv6srHlIuG1Tg== 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 DB8PR08MB5515.eurprd08.prod.outlook.com (2603:10a6:10:11f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.496.14; Tue, 6 Oct 2026 10:34:32 +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 10:34:32 +0000 From: Andrey Drobyshev Date: Tue, 06 Oct 2026 13:34:26 +0300 Subject: [PATCH QEMU HCI-8.0 v6 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: <20261006-usb-host_v3-v6-2-8688ec9576d1@virtuozzo.com> References: <20261006-usb-host_v3-v6-0-8688ec9576d1@virtuozzo.com> In-Reply-To: <20261006-usb-host_v3-v6-0-8688ec9576d1@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR09CA0115.eurprd09.prod.outlook.com (2603:10a6:803:78::38) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DB8PR08MB5515:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c561077-a484-4768-da89-08df23956821 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|366016|23010399003|52116014|1800799024|376014|22082099003|38350700014|18002099003|10067099003|56012099006|5113699003; X-Microsoft-Antispam-Message-Info: NkoyMrfTD2Qpy9m6bbgvrCHrsl3EsjmYAJi4QGZ1gyuiNZT0AEGmWIMXb5mDc1FuKjwo3O8+BaO3A4ZjsRpuvvv8DqNGExaKUnlMWN0saNd7rSc2CCIcH4SR/P/yM2C3L+ks/2C2PBqzAp0cNRFZZwk+i4TpidOYhk9a/gBJ1xkRqDPhxEQ3q99TewqFtqqBCG8hLrYUSV/RX1wO/97Vr2xLbY96DO9FVmPVsHilgTiGeZc0f1mI+5ncl0vhNYu/uk2J1R7dS+XGFAcirzadXrehQLkcYfaweZ/nx2TGkY3yuQb6eQ1PV2hfDrjZDgDB8LUxFdg7hRXhwLzR4ARx10irEw/bkkrjq2XgBe4zCet4gclZutlYn1k4WvmYcbOh69qpIhqZDW7ldMxS+YsOq9YQWyG8plXSS0eGEVqdPEu3Gp8d5jkPjqYu0T54QhM4zCUZ1sL9+CBJDCsst61T0f4veI3bdQzDpDgCNjwSRsd1k4lBgsBA00/faskaze0MdmKWF7AbYUVnuKFSGomHmstmsWOeuhWJZ/g+C9oF9/tADCSKiAe3KE6cNZqE6IVQ7ZUFa0BbX4XOpT7bHxDMCILSzTpzM7RPEPErMV9wKV9ae1UUpoXTVb0IJWz5EyfkzBGqDS/xwi5q3Isjv5quddQEZ5d74mLjTvyCXIbCSu3NTyw16I33UOhQjSjVuJHQCIe5WV3Ii0MzgNfrNvPGvQdGOFSMiQj0cO0nC+ZjnMs= 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)(366016)(23010399003)(52116014)(1800799024)(376014)(22082099003)(38350700014)(18002099003)(10067099003)(56012099006)(5113699003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TWNFYytneERDRUJxdDBXSmI1SXJwME5IMm5IMlBPci9ESlF3aGpscVRnSjc5?= =?utf-8?B?UzMwOU1hYklTUkFmZ2tLS01reWV5QmtKRllWMmlaZjh2eWNkVlVYbmV2ZVR6?= =?utf-8?B?L2hIai9XQTdkOEFYV1Qxb1VzcEpOMkhRZ3dJY0d6eWYzZldtTk9UWW02d1Na?= =?utf-8?B?TUI4azRZSUNDM25IOW9ETnMza2NxR2VVTVVIMFlMRG9nbEUrSkFGTUNpNUVZ?= =?utf-8?B?SDZHOE44MXZJeEdZdTIyM0pwUnMyeHN1alJQamxqcDdBZHJGbFpueVE5V210?= =?utf-8?B?MkhKYjZ4MmJQRlhsS21hV1NQRERlVWdKNU9BNG9wcmtLTS9OaFhjNEkxSDY4?= =?utf-8?B?dm1UYkg2cE1tcmJJQXhQaG9GYlZkQ3NQdVdUaElkS09wbVJRSFlzRUxJN2JD?= =?utf-8?B?MnorMFhocEt5enJ6QXhTUm50YThZSkplUnE5eDc4MUppWHpJNi9JVVZwVlVq?= =?utf-8?B?bWRNT3N3NjFBclJiU1drZndMSmZpSlpWbzFjVHlEUUdsSzNNNnFZR3hVTGFq?= =?utf-8?B?QkFZdUI1ams4OERuSUNNSks2TXBxY0F4bUk1WjhVUE9KZXlUQWJLTTJJSlVK?= =?utf-8?B?U0VmcE5PK0liUmVVOUd0RXFHcUJBSlFkejdwTWZSWlk4dkFtaGR6eWZxVTFl?= =?utf-8?B?dkpMcWM2RW1lQVJIVGpVR3p3Wklrd3VCNUtsQUxJKzNmaTlub3dHYXZCMnh3?= =?utf-8?B?VjJBYVo2ME9WUkxUZWdGeVZlcktDMzlRN2xxUTNmcFpCMWlIVXY2cWJCc05s?= =?utf-8?B?bC9tcFN2K2dKTjl4UEJIZFdLNnE2bTZ3VWlrTDJOWnNyTThQK2w3cXJvdW0v?= =?utf-8?B?bDR6R0ZUOUFCSWhsK01iMlErN1EzSWFmWURnQ3kyRU03b1pPODNILzBFcUkv?= =?utf-8?B?UENiaTdYbXpxL25kdmxXTWw4K1Q1ck9tc1RuUkVHSmRXSkE1MzM5TlJjTlJn?= =?utf-8?B?L0hqOU96bnd1SnF3YW8xZDM1ODNDQjZuT2x0dkJEOGRsRFlZZW94UGNxTXFL?= =?utf-8?B?bzlNWDZqZmJCMytIUmtoWGV0YWpjQ2hKYUtESWlQenVqRGp4Ry8vYnA5ZEMr?= =?utf-8?B?MW8xNUFwS2Q3WkFQdWdZbGplT0VLSTRUQjl3d1hqYVRvUUFqTEd3aVNvVWhY?= =?utf-8?B?bCtnck90Q0tKbTN0L2xqWFVhbENnSmtTYkFLWDhGcksyTGU1MklyVFZrZnQw?= =?utf-8?B?djJvWGc2SkVvVmFlaFZvRWRXRGhWSnVFeDZIUXdoeFpRNkNyaG0vdHphY0lx?= =?utf-8?B?d0p4QkxZR3JxWVNoTUwvRzBMWkxxdWRnRE9qY1dMeGpmdktoejBhMGZOeUpt?= =?utf-8?B?M1BBamFaUUxULzJFNGVzZFphMVExb211ZUdvVE9EMWJQeTBYVnUzTjdETG81?= =?utf-8?B?c09ZYnNMd0xGWU5GSHZSSVRnZ3ZGc1pGYVhScUhya3JtdUJCWGsxKzhwNkFR?= =?utf-8?B?dDRwUythS01tbXV6MkVHM3QycEx6MUMwZnNzTmxqTE5HU0VDY0tvY1JtR2la?= =?utf-8?B?UW1CWmxMS2pjZE9zTW1DRXY3ZUQ1bFZpVWIxRjI4ZDlLWU16SDU0RDQydGJH?= =?utf-8?B?dmxFSnl6cWZjMHhqNjZKLzI0azJaNzlUTytzV0puQ0NLaENZODhXdXJ2dVYw?= =?utf-8?B?NzI2Y2pmWXhKUGZ0WS9jN05pOVBvNWtUU2J5Zkd2L1VFM3JrSHlqV3l4dG1O?= =?utf-8?B?REc1Nzc2aXpFN1pFQmpjTTNHc1laNklPQVV5bHRub1BPKzZhRDZ0bzBrYXVK?= =?utf-8?B?K29qZ1FrMUlsUFdrNUNObmlXY2dLZGhQNm42cWJaL3BBSDJuVm9xWVQ2eEw3?= =?utf-8?B?ZnU4VGdDUXpOQVZXcFNrelowMmd6cUFEOENLdlpocjNrUEtaVTFVS2ZhekpE?= =?utf-8?B?SDhtcnJUQW9YQlBsWktUZXJaaHZSNkxud3UrV0Zubk5ybUhEZFY0MDY5S2Jp?= =?utf-8?B?ZnhndS9RUndhRVZUYkZMUk5pNEtLVCtEaE5FcW5mMHI2V2x4L29STGdvL3lW?= =?utf-8?B?SVoxUUFaYTlkR0RjdXgySTJ5a0hmYU1KTVZyWjJncDFxQitzY1VxRnlmL1ZR?= =?utf-8?B?UThpMFhkelFzRFNzNU1WMGNsTmdSL0ZlSVE0bWR4K0JwakJUQmdBRnVieXdR?= =?utf-8?B?ZmpGZUdiaEtiYzRxa0UvenNaKzA4MHlZaGdXRUdTT1IyQ2JSbEFKNzlQVEJD?= =?utf-8?B?L1l4UmRndXV3ZU1SWHlqSHQ4OG1yUmVSK29oWmpkVUdob3hGUy9ZMVYvcHJW?= =?utf-8?B?dlh1WXRBMW9TUHpTV3hiS2M4MFc0dnhXTEs5dWNhSUVSU0wxTzRNc3RpMVRN?= =?utf-8?B?dTlFdE14cTQyN3BSTmhIL3lzWkFYVnB2NSs5MzR4Sk1Nc1JLRGkxOUN5RGlh?= =?utf-8?Q?wzkHn0/WQaP9c6Eo=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c561077-a484-4768-da89-08df23956821 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2026 10:34:31.5049 (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: I+f873PAQ7Ahf7AF8nu6YKVkKtSACNBruVxIXNsCSNAJ9YTu68ffRCU7Wopa25bGrSYlWhjlt+OFFyTGhzwVVSy2DgowEB/aaHuiYWQdqYc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5515 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 83645fbe0ce..770bdaca4c8 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