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

Re: [PATCH] domain: move vmtrace_alloc_buffer() invocation in vcpu_create()


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Mon, 16 Feb 2026 17:17:10 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • 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=N8v7YWmhWIamdMqlza1rHuYAV9Gi3X3n48TiklmYYUk=; b=PzEgX6FHE4rHBE/3Jz46WWLG2oRYTv4mxDhEa5hwERnylJKRBcHLUQWzLxxL01Q/ZduKrxHXmOeZZGvH7YnaaUc/2lU63noKcb4W75H6hGZGOcSA2Ken5PfLCdxk9NwsIDZJzwxm5K0jMNuGJsXasrUZscPZHirVKJl3RvwinCpFN62rfntE6bqChHWAafoAUl89sjYB41I06TNRXr76PwDiblK/17361qVPEk2oEzLwJCVB+p0CpNrk94LNJoMSl3DA8fCv3WbHD0nr/9LOeHeFm8rw/FvG2ybn4wj8CnM6kjyEGc3Wv0zjl2VuIOkx51UHZKrYsS0vgSF7wmQNjw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xW3Qod58U5NPvJGZG/P0wYotnT5h+P5v1n+jpxX86g9Ql1OB8HSqcEUxXr2Ck2lOmDH3BqHJfJuXL0Y9iGtgAeUeS5xGjjUL/vtvJWG0/LKoyulgK7zpgL/WIO/2fV1ff2Evm5tFnIzZhIskYPcuKQ1zX3HsUo39TDMG3oH23xl3ra5gU/zLLXl5VJchZnXKrR9j22ip0nGDlKV3dRe5P3v6bWEtY3MLgli/REu5ZcuNkf6AZQt+2PzOqr4a8P20D/ad8QphAKNcP6gYVcw3hJiRW3YVSLIFrHd93nCXw2IfzrmUdxPWKtSFpxj+nfm68UiFk0nwG1bsJvdHujE0MA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 16 Feb 2026 17:17:29 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 16/02/2026 4:39 pm, Jan Beulich wrote:
> On 16.02.2026 17:29, Andrew Cooper wrote:
>> On 16/02/2026 3:51 pm, Jan Beulich wrote:
>>> The label used upon the function failing is wrong.
>> Is it?  Which label do you think it ought to be?
> fail_sched, as Roger did point out in reply to the original other patch.
> After all ...
>
>>>  Instead of correcting
>>> the label, move the invocation up a little, to also avoid it altogether
>>> for the idle domain (where ->vmtrace_size would be zero, and hence the
>>> function would bail right away anyway).
>>>
>>> Fixes: 217dd79ee292 ("xen/domain: Add vmtrace_size domain creation 
>>> parameter")
>>> Reported-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
>>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>>>
>>> --- a/xen/common/domain.c
>>> +++ b/xen/common/domain.c
>>> @@ -493,14 +493,14 @@ struct vcpu *vcpu_create(struct domain *
>>>          set_bit(_VPF_down, &v->pause_flags);
>>>          vcpu_info_reset(v);
>>>          init_waitqueue_vcpu(v);
>>> +
>>> +        if ( vmtrace_alloc_buffer(v) != 0 )
>>> +            goto fail_wq;
>>>      }
>>>  
>>>      if ( sched_init_vcpu(v) != 0 )
>>>          goto fail_wq;
> ... this comes first, and ...
>
>>> -    if ( vmtrace_alloc_buffer(v) != 0 )
>>> -        goto fail_wq;
>>> -
>>>      if ( arch_vcpu_create(v) != 0 )
>>>          goto fail_sched;
> ... here the correct label is used.

Eww, yes.  So multiple observations.

1) This only functions in the first place because
destroy_waitqueue_vcpu() is idempotent to v->waitqueue_vcpu being NULL
which covers the idle case where init_waitqueue_vcpu() was never called.

2) sched_destroy_vcpu() can be made idempotent against v->sched_unit.

Then we don't need multiple labels and this all gets a lot easier to
untangle.

~Andrew



 


Rackspace

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