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

Re: [PATCH] x86: Add Kconfig option for log-dirty tracking


  • To: Alejandro Vallejo <alejandro.garciavallejo@xxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Tue, 10 Feb 2026 13:21:47 +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=nMmK2gPcK1bTqKukorZZ6WFimKCpnQxihGzN3sKnAKg=; b=XXFyLzIUkIRtR1buO4MiDLyshJy7+scT5+Ab7zmJJNAusOO3LOpzifjpCBReBdnEE5sGOfNwHiW25hsGeqLFe15Bw8Iy3C3K7n64GQbWhFvGrf/wfz6yjZm19jb83w9Unlnwmdno9/lP2xrdD5Rw35Bxj09lZHfIestYZHAs9xg3pezeSpUJ30JpV8tb1lipeQRClCi4kHukhooCM9entDl50AursFxccs6oofhZdUroODTi8BEhl8AwMqTodYDZyCbKlT7en00jqdVZDCzAbsyuIa4QiJYS1B21VMrXOPCFPdVAuqrXBYoOJ4MjXdUrmC0v4p7kP2bSIAb719G4ng==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MUAj5nFAF4wlmaWhBMFp/AxwMouhB4ScJFNLwxQ9jXvT9+0dr/TC4r4snNCuNt+4oIfBR+VElAsPyX+lazxd9WrhSUw9oatpxuMfFZsx3OvXBy+eQJVwADmK77vE3EeoMK8uUhEtjma6NSP9IHPxnVbRxK4AV9BE43C+kT2ewr5JzJX7paE4R5LNzQJG3dx3gohuV33o4wtHOFuT0Wqi6XpM8R/WkIUMQhrN4+Ui22TK39Vezhus/t0F7vSwP77e3Dp793boBo17SIhjj0HnIbaETBWPeTB2wn+y4+g3fMt1qdLFKOUOpu8IPRbl6XMlcT60KBBQ2s7YgfkalI2B2g==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Tue, 10 Feb 2026 13:22:05 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 10/02/2026 1:13 pm, Alejandro Vallejo wrote:
> On Mon Feb 9, 2026 at 4:55 PM CET, Jan Beulich wrote:
>> On 09.02.2026 16:24, Alejandro Vallejo wrote:
>>> On Mon Feb 9, 2026 at 3:48 PM CET, Jan Beulich wrote:
>>>> On 09.02.2026 11:31, Alejandro Vallejo wrote:
>>>>> --- a/xen/arch/x86/Kconfig
>>>>> +++ b/xen/arch/x86/Kconfig
>>>>> @@ -146,6 +146,7 @@ config XEN_IBT
>>>>>  config SHADOW_PAGING
>>>>>   bool "Shadow Paging"
>>>>>   default !PV_SHIM_EXCLUSIVE
>>>>> + select LOG_DIRTY
>>>>>   depends on PV || HVM
>>>>>   help
>>>> Why would this be? IOW why would shadow imply log-dirty, but HAP wouldn't?
>>> The logic is rather opaque. I admit I'm a bit fuzzy on the uses of logdirty.
>>>
>>> I know what it's for and I could navigate the code if a problem arose, but 
>>> I'm
>>> less clear about which other elements of the hypervisor rely on it (pod? 
>>> nsvm?
>>> vvmx? shadow? hap?).
>>>
>>> If it's strictly toolstack/DM-driven maybe it'd be more apt to have a 
>>> separate
>>> LIVE_MIGRATION and SAVE_RESTORE configs where LM selects SAVE_RESTORE, which
>>> selects LOG_DIRTY. That's also improve some defaults auto-downgraded from 
>>> the
>>> max policy just in case a VM is migrated.
>> It's save (not restore) for both PV and HVM, and VRAM dirty tracking for HVM
>> only. Ordinary HVM guests will want VRAM tracking, so compiling out support
>> for it will imo want mentioning in the Kconfig help text.
> ack.
>
>>>>> --- a/xen/arch/x86/domctl.c
>>>>> +++ b/xen/arch/x86/domctl.c
>>>>> @@ -220,15 +220,15 @@ long arch_do_domctl(
>>>>>      {
>>>>>  
>>>>>      case XEN_DOMCTL_shadow_op:
>>>>> -#ifdef CONFIG_PAGING
>>>>> +        ret = -EOPNOTSUPP;
>>>>> +        if ( !IS_ENABLED(CONFIG_LOG_DIRTY) )
>>>>> +            break;
>>>>> +
>>>>>          ret = paging_domctl(d, &domctl->u.shadow_op, u_domctl, 0);
>>>>>          if ( ret == -ERESTART )
>>>>>              return hypercall_create_continuation(
>>>>>                         __HYPERVISOR_paging_domctl_cont, "h", u_domctl);
>>>>>          copyback = true;
>>>>> -#else
>>>>> -        ret = -EOPNOTSUPP;
>>>>> -#endif
>>>>>          break;
>>>> Can a HVM-only hypervisor create any guests with this? I simply fail to
>>>> see how XEN_DOMCTL_SHADOW_OP_SET_ALLOCATION would then make it through to
>>>> hap_domctl().
>>> xl doesn't seem to call it at all. hap_set_allocation() is implicitly called
>>> through paging_enable() -> hap_enable() -> hap_set_allocation()
>> xl must be calling it, at least in the case where the paging pool size is
>> explicitly set in the guest config. The important point is - not all of
>> XEN_DOMCTL_shadow_op's sub-ops are log-dirty related.
>>
>> It's also odd that you did make changes at the call site here, but then
>> left the called function (and its sibling paging_domctl_cont()) in place.
>>
>> Jan
> That goes through DOMCTL_set_paging_mempool_size.

This DOMCTL was added in an XSA because ARM needed the functionality,
hence no cleanup.

I didn't get around to cleaning up
XEN_DOMCTL_SHADOW_OP_{GET,SET}_ALLOCATION, but please do.  We should not
have multiple ways of configuring this, and it simplifies the your patch.

~Andrew



 


Rackspace

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