From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11023111.outbound.protection.outlook.com [52.101.72.111]) by lore.virtuozzo.com (Postfix) with ESMTPS id E0462802A7 for ; Tue, 6 Oct 2026 11:49:14 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WPGi7ayLQ92ZSiRsap4lEiQbD7r41YFhGwgZgkfnfp5rDAwImwipH9rkc0QV1f3TJcreeq+M+z1NcJsuTOKi1szhrM9H7iGIfOV2tKb5Scv7jA21zb/ng8npoiej0gn2gaDeliomy18hIhOvb62YSDu1ZJdFGZCXbq6DSCFhojrdJvG6RuzFz6WJi+zPtBCG7rg7T2BjP/1uBN8nCaoZMKVzcQvGp0equIwpumwZi82MuDM/8GcpQnURkjWqZZSaBiOQ7dr52Eb35K2KTFX1t599eS+0u+0XqkRIRbeRZWuvJ+o8ygXlnkJOnJ0uApne6dWPPCJpIiBLJnvwDwbCQw== 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=gFa77Mx+qljhkIa/YF78izyPKo5riOEDHjxA6iHoWh0=; b=qVfDPU8pmYwuzal4KCdwuvuMGXc4fDYq/JLTWh+jhr1AXMbea/vVGpqR33fdVsOlP42SwPd8nk3a4fE/avXU14C/4CHcyyoKep+uIi212GJ2jNt3ETkS5dgtnyy0MmP+gzSru5N99bnCjat10ZxNXmsuA6N3ATJ3HvH6jDn1FPEE/+UFGuxFAP83/xTWupjVlSf1rBa16ASLlJTP/o2L3ZckGiKw5gCW3deShP44cLxEpO6ZGWIu/mc9YcGv+Vjnga1yWzUiDzat1jqM/uhscUSA1fcbGJYWYR0HXRhiSQMXrkmfaxxvqUwEb7UMJBQv61eIYu/ewiqqhC57fJCk9A== 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=gFa77Mx+qljhkIa/YF78izyPKo5riOEDHjxA6iHoWh0=; b=Wr2i2Dr1QTPfn5pYLvs0uwc+Bn2JcpXzt44/dGXGgR2UjTnUaC7E+CSETdr/TysZ3o6mF5y7kWA++Z/PXL420OmhtwEQ7wKqr59ngYJsRfqqJJanOpH+OlQAOXgVx2j2DzmWi5G2igAsmC/nka0btWv7WB2N1IiO/VVev4OSpxZkrWlDQO1tcLb0hxbGgbMQ0sVgAvKHCy0o/ynx2a9ssZc00cO3kEMhU9ZOGDh7MlMOlU1H4/Stmz20bCDOfWwLpImGnZrSSMLaitpLq059RHWo9Nhdd5PciVDjR4Xc3yC6oKeKD+05MbEBzRnbaWIF8K1FwOOMQTcaUI77AKJ7eA== 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 VI0PR08MB11406.eurprd08.prod.outlook.com (2603:10a6:800:2fe::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.496.15; Tue, 6 Oct 2026 11:49:12 +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 11:49:12 +0000 Message-ID: Date: Tue, 6 Oct 2026 14:49:11 +0300 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH QEMU HCI-8.0 v6 00/12] usb-host: support CPR migration To: svt-core@virtuozzo.com Cc: den@openvz.org References: <20261006-usb-host_v3-v6-0-8688ec9576d1@virtuozzo.com> Content-Language: en-US From: Andrey Drobyshev In-Reply-To: <20261006-usb-host_v3-v6-0-8688ec9576d1@virtuozzo.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR4P281CA0061.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:ce::7) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|VI0PR08MB11406:EE_ X-MS-Office365-Filtering-Correlation-Id: b1ad6134-8ad6-48db-16c1-08df239fd6a3 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|366016|1800799024|56012099006|10067099003|5113699003|6133799003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: UHtK412Enl4St22PS5eELTRdVuc9Z+N0y7X94OoaQWU20y+7a9AeFaFQacedWtMNBeDW5STGU9mLN6PV0wQ8NsF5CfUAwSF7ZS+6XqR7WJhNC9fpcrnFdj4Z9nOTarqGnAuKUPJVf6wUUuztH0QZ8ifUxQjhTEhn9zJTAY2KxKDOSX/XkRApi1aWkhzrc11d7r8j00h6Kfr+CizOEG2zlrfxPd0jel4h85kL7UEZw/aLmyJ8Nc1XQVh6J+AzCj12nSA9HJE+LFg/Ky+F7V3AeegCexgcY7sTTVHEXB3vLcmjVXRd1ygTGchJdHU0pTxAtoX3sQB9d5iZNGxrLKCMoT+hlRuWc+gAK30yGPesEl52wWXAIFPFxuwLK14PlLfk3WpyJQs5rinKDvKX79CUEiaSSSn6yOvc9o20LBJ+0bPRrM3SVKqcjRUREOfVxrd7drzMqEkBq2fknUW0sXFN2YJ+quQ55Byv9Qo6m7xDTE6W6utNRB2UDxA/5gkaH+6EKRjFHMjyzYkMIQ/XzvrD+zZxOICRWsPPCx5him8PCAlncbjA8pZ7K57WAQhesm6bduL4HSnQeX4PQ71iM/iWJiM4De9rZL1BENL4mq7NN2hcf7aCiX1UlDyykV3LF90s 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)(366016)(1800799024)(56012099006)(10067099003)(5113699003)(6133799003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Um95K1U5S3hFZnJGZFB6WU1JQ1o5SmJnRTIwTlcrME85MWMyUEJZTDJvQ095?= =?utf-8?B?WHp1L1o3SXhhQ3lpK1VjWkJka09oNkpQbEF5dzBEMFZobSsvVS9PcEVIZG1v?= =?utf-8?B?N010VmVTcE1BMjhtd0pEMUsxZmp6bFphd3NmdytHdkIzNlRwdENvdjVuUE9s?= =?utf-8?B?N3NXRlF5R3RUejZPWnBaTW1VbnhNNzBVdW1XWXRvTWo1MXdpZ2RuUk16QlJO?= =?utf-8?B?Y2FSK09SQi9XYm4xQWo3aEw2VWlzUk1IVXpwbzZFc2M5TFc5Wk1uUkVRdFdZ?= =?utf-8?B?KzA5TWo2OEJiNFdTdXVrMHJoS3hUazhTZEVwRlByNVdkaGJpVnpjTWZEY0xE?= =?utf-8?B?cGp1bDVRb1JpNTZLYU16amJDeFFneldCRVFQblVMaDVqSGxKZzdENjJxVDVx?= =?utf-8?B?U3RTTWRLVHNBOGk0MnlqRDM2N2JvczlvTHJwS01SeTVaVFBLRmp2SzJwaXhU?= =?utf-8?B?SGpHTkcrWnhZek9nVmU3Z1Z4NUdwaWtlSGh2b1R1L0RQSDFkb0VtWXlWOUlW?= =?utf-8?B?ZDdYR2J5RDhQQUdwQWVSa0Fhc2JIVlNKcHcweHR6aExTZVhMZVBnc2h3VlR6?= =?utf-8?B?dkszM1k2eWk0QmN4aEZqRy9PVWljbEFyNGlXRnIxdmhuLzkvOGJETzlicVg3?= =?utf-8?B?eWY0alZOeGYrTkJHZVhZOEI2enFpblYxbTdpRURYeTJubmxBVWV0UTY1cnFQ?= =?utf-8?B?d01UZm5HbWIweC9JVFBZd0NBZnJ4UTEwc2xiclZvOU1xRWpncDBLSFV1N0Jh?= =?utf-8?B?NXVkMEx5UHdwY1ZOVC80b2R1Y1orWkRscGJOT3JkZVFiN2lsQXBFZ2RFN2Yw?= =?utf-8?B?SFdXc0ZINm9qTDduYndkREVOTDdOSERZWnd2elRjNjRLSGh0amtib1BCdzBD?= =?utf-8?B?NEp0V2F2RTJyaXFFU0JTZmRDV2t6TnBKV0RaMkNwN2dmVWdpL2xVUGhoakpq?= =?utf-8?B?QzBlcTdCanlZRVFQMk03VC9YOXl4ai8rRG1UUnNCQk5WcnZzWGpFUzl6QjVm?= =?utf-8?B?NDBXbmt4ZzNMTHZIMTNDb0Fadm5aTEZrTXdxNDNmYXA1RGQ0WHdhSXRsRFlE?= =?utf-8?B?TWlDaGEzOHZKc2pnWFhybWtKT3ZDZlB1eXFIUytQa1ltVUJnbDNBUWpycXVJ?= =?utf-8?B?WFdEbGhORTMxU005QlM0a1R6eVJQdjBsMUhzUCs2c2ZlUVdTY1BEWnlLVFpJ?= =?utf-8?B?NHowQW9NQnd5VkVIR2YwNmZGVDlVWjcyNHZSS29lNXJGbGhlV09LeHB0WUFz?= =?utf-8?B?OGtLbUd6Z2ZqMFNFZ0pEYThVcmxPRmR4cDZUK0d5N3ZYOSs4Wk52UzhqSGhG?= =?utf-8?B?TjcwNTkzRDNJNXdyb3N1N0MwVW5EK1JGWUpiaFVMM2JrdW1Ec0FFWTZ0ZFZK?= =?utf-8?B?dS9YcEkvQmtVRFFlSXB5MU5udU1CQkwySHdzaEk2b2JqS0kwUmVjR0RRSDJX?= =?utf-8?B?SlJ3ZXlhcTM5ckdZTHlUc09ZRVRsemsrbjdnbE9MeG5CQ3hkcUFZVnpJSHJL?= =?utf-8?B?QUcvaHJIODByQTg5Q3lkVGlvak94Z1JJVmRxRzZ4YlJrUVNOR1pyWVpId0h5?= =?utf-8?B?clY5Z0tiNmVzRnE4bWpxWTd1STdYQlJZdkUyV0hBTWtDRzZxUmV6MXNDTUFn?= =?utf-8?B?WTI1M3ZIQXBiZExYZkE1SlNpRXIyOExmaEYxSWJNV0FTVTRGaUtrSFlZWkRZ?= =?utf-8?B?djFtZHNYR0tYREIxTm9UaklHamo1WnBCZ050d3dkUTdaT2crMks1dHZmL0xY?= =?utf-8?B?elJzVmRJdllLTURiV1NtUTBpd05PdWJ3YkJka1NCZFFsUGdSQzFZZFBDUXNx?= =?utf-8?B?c0VRNFVwMUZwaEdRaTFaanNQb3BkRHZJT012eEU2T3lrUUhDemg5N1l0TW1P?= =?utf-8?B?NU1GRWE0Smd0K0ZQdXBlWkZiclZyeGlpTkt3UGtiVCtabERwWTZsNjJ0RE5j?= =?utf-8?B?Zyt1bkpDaDI3dFZ4RUZUUEpFL3orM0d1a0VGOXRIQmdCRGlJMlpML3MwK0JT?= =?utf-8?B?VTYzRjRCU3lQUDB4dlN5N2d0WWEyM24vNE93R1VJZjM2dlA2NFFhVjloVWla?= =?utf-8?B?NUV5VWZuKzlvbjRxTHZxMDhOeU80ZkliV3k0aDdXU0NpU01pbUE3OUorby9r?= =?utf-8?B?RWJNRjM0dytGSjczUW9uSERvUXRjS3ZKeXNseVU2a1JZNmcyMnJmT2JkVlRq?= =?utf-8?B?bC9XQU80WExnSVV6QjBhcnpCRkRtbGlOTGVoSEJnZHlHTGF2L2xSNnYwV1Zu?= =?utf-8?B?V2hGUU9jbHlIQVloeDUrWVFRdGVCSzA5d3hrNGozL2ttZ3BWcFFXT05kT3FH?= =?utf-8?B?eTg1Y3B3MXBQV3ZBV0NsckRIN1VJNzJTODV4OXZ3QXZsYUh4K20waGp1a0cz?= =?utf-8?Q?AqUsa32hKteJY/NQ=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1ad6134-8ad6-48db-16c1-08df239fd6a3 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2026 11:49:11.9026 (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: hvHh1fJA0V6lGCfO423z9k82mmm6zAgMEqjsrt0FTmVAej87pNlcQWJSvdR83qzl8xl5x/X/dQK1mu6tU9FK6c8ekV47agOqep88gWF+W30= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11406 Some of the issues reported by Sashiko appear to be real, I'll fix them. On 10/6/26 1:34 PM, Andrey Drobyshev wrote: > v5 -> v6: > > Substantial changes: > > * Drain each usb-host from a vm-state change handler when the VM stops > for CPR (RUN_STATE_FINISH_MIGRATE), before the device and interrupt > controller are snapshotted. A completion raised during the drain now > lands in the still-live interrupt controller and is migrated, instead > of being lost as it was when the drain ran from .pre_save() after the > snapshot. > > * Deliver a cancelled transfer that moved some data as a short transfer > instead of dropping it; a zero-progress one is suppressed for the > target to replay from the start of the TD. A VM already paused when > migration starts keeps a suppress-all drain in .pre_save() as a > fallback. > > Minor changes (refactoring/cleanup): > > * Group the per-device CPR fields into one struct block; factor the > drain-and-handoff tail into usb_host_cpr_quiesce(); fold the > altsetting range check into the interface reclaim (one config > descriptor read); register the exit notifier and vm-state handler > only after the blocker, shrinking the realize error path. > > * Commit message and comment rewording, forward-declaration placement, > and a checkpatch line-length fix. No functional change. > > v5: http://lore.virtuozzo.com/qemu/20260925-usb-host_v3-v5-0-e5b21724db4d@virtuozzo.com/ > > Signed-off-by: Andrey Drobyshev > --- > Andrey Drobyshev (12): > 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: 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 | 525 +++++++++++++++++++++++++++++++++++++++++++++++---- > 3 files changed, 542 insertions(+), 39 deletions(-) > --- > base-commit: f3c1d9ef263edfab8d2a273078493bb766dcf8f8 > change-id: 20260914-usb-host_v3-bbfea86d1dad > > Best regards, > -- > Andrey Drobyshev >