[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [for-4.22][PATCH v2] xen/arm: Fail domain construction if a secondary vCPU cannot be created


  • To: "Halder, Ayan Kumar" <ayankuma@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: "Orzel, Michal" <michal.orzel@xxxxxxx>
  • Date: Thu, 9 Jul 2026 11:43:03 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • 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=faKzvThL6z6bi0qFeVSyIZcETPcOOHYiXWhXty9vtzQ=; b=KOylzzK07y8dGCd5aYD9RzghfN7PKYWaNS14FBwbv8ov/Wq5JkEVhRdFC9Ktw9ZE5sEVWP7WgJGhhMYMPCq2+unYiDlcKy56uxLnRUwIwrmz7GXGQLMKbsrpiR4P55vNBWC6MMBSsnU5ASRzOy/qMyp6d6WeVCvg2k6thHj0gp50ztcj6jW2xBoMMe594x+XFah3ZoA+GxeM7WLHp9oyO9lgg4+jvaVc7ru7bsY+xXOdLTHwmrx8xJ88Wsp+OjOzbUPjmkFLTYzrRwaJj4NEfI2pHBOOVa+IYv6YMhCHB12r8Zv5ZLUpD8/cCwOP605XVlNF6/H0/kJfugObeX5NgA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DASt9umPyCR+ZIyDu5VkzuUhB06mqfSwbOE0XqlbTtYWSLm2N8n1vXxhZWQM9apa6MUSByJixfhYCzlLyAeP0Fddhb279uaLPbvlrzZoh3Y1vBebvnxvC0YEuR7YdNEPhvN+kZssfw4CVy36ZdTR9HfOS1LhHOGIqv7lkB8/B+noBgi3pLeuYnjaSDJf5kb3cWrRmTBYe57w+/A+n3FEpkCNbGVWfOcNl3JnzCdSErM1HydIVSEh6e2g/iOYXZcDfqRYGZ3qPA/T213RMX4p2MlLS2bdk3b/Bk4db5ftCuxF3HXGxPYs5WkaFjFnZJ9FNsWV2QAY7C7srBOHL4Hzgg==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, "Volodymyr Babchuk" <Volodymyr_Babchuk@xxxxxxxx>, <ayan.kumar.halder@xxxxxxx>, "Oleksii Kurochko" <oleksii.kurochko@xxxxxxxxx>
  • Delivery-date: Thu, 09 Jul 2026 09:43:17 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>


On 09-Jul-26 11:32, Halder, Ayan Kumar wrote:
> 
> On 09/07/2026 07:36, Michal Orzel wrote:
>> construct_domain() creates the secondary vCPUs in a loop, but on a
>> vcpu_create() failure it only prints a message and breaks out of the
>> loop returning success. As a result the domain can be partially
>> constructed with fewer vCPUs than d->max_vcpus. This causes two contract
>> violations:
>>   - Xen-Guest: domain's FDT is generated before vCPU creation - Xen exposes
>>     incorrect information (e.g. two vCPUs listed in a device tree while only
>>     one is actually created),
>>   - User-Xen: unlike x86, on Arm port we try to bail out as soon as
>>     possible on unsatisfied user requests (e.g. user requested two vCPUs
>>     for a domain but it was created with only one).
> 
> Unrelated, but just to add my 2 cents wearing a safety hat.
> 
> The user-xen contract comes from a system integrator. Xen should try to 
> follow the contract and if not panic or bail out.
> 
> The Xen-guest contract can be used to enforce the rule that guest should 
> read the contract before doing any safety critical task.
> 
> The most important thing is anything errors that are internal to Xen, 
> should be propagated to the external world (either as panic or return an 
> error to the guest or abort the guest). If there is a degradation is 
> functionality (eg Xen creating a guest with lesser number of vCPUS that 
> what the system integrator provided), then this is safety issue unless 
> we put an assumption on guest to read its device tree and know the final 
> configuration (which may not be always ok).
I agree and this is the reason behind this patch.
> 
>>
>> Return an error instead of breaking out of the loop. Both callers
>> (construct_domU() and construct_hwdom()) already propagate a negative
>> return value and fail domain construction.
>>
>> Fixes: 6b0e8e43348a ("xen/arm: allocate secondaries dom0 vcpus")
>> Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
> Reviewed-by: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
Thanks.

~Michal




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.