[PATCH v2] xen/x86: restrict XENFEAT_pae_pgdir_above_4gb setting to PV guests

Roger Pau Monne posted 1 patch 3 weeks, 1 day ago
There is a newer version of this series
xen/common/kernel.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
[PATCH v2] xen/x86: restrict XENFEAT_pae_pgdir_above_4gb setting to PV guests
Posted by Roger Pau Monne 3 weeks, 1 day ago
XENFEAT_pae_pgdir_above_4gb is only used by 32bit PV guests, hence limit
its setting in XENVER_get_features to the is_pv_domain() guarded section,
with the rest of the PV specific features.

No functional change intended.

Signed-off-by: Roger Pau Monné <roger@xenproject.org>
---
Changes since v1:
 - Just move the conditional but don't merge it.
---
 xen/common/kernel.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index f4bbd8818fa8..6811599f95fd 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -677,8 +677,6 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
                         (1U << XENFEAT_vcpu_time_phys_area) |
 #endif
                         (1U << XENFEAT_runstate_phys_area);
-            if ( VM_ASSIST(d, pae_extended_cr3) )
-                fi.submap |= (1U << XENFEAT_pae_pgdir_above_4gb);
             if ( paging_mode_translate(d) )
                 fi.submap |=
                     (1U << XENFEAT_writable_page_tables) |
@@ -690,9 +688,13 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
 #endif
 #ifdef CONFIG_X86
             if ( is_pv_domain(d) )
+            {
                 fi.submap |= (1U << XENFEAT_mmu_pt_update_preserve_ad) |
                              (1U << XENFEAT_highmem_assist) |
                              (1U << XENFEAT_gnttab_map_avail_bits);
+                if ( VM_ASSIST(d, pae_extended_cr3) )
+                    fi.submap |= (1U << XENFEAT_pae_pgdir_above_4gb);
+            }
             else
                 fi.submap |= (1U << XENFEAT_hvm_safe_pvclock) |
                              (1U << XENFEAT_hvm_callback_vector) |
-- 
2.55.0


Re: [PATCH v2] xen/x86: restrict XENFEAT_pae_pgdir_above_4gb setting to PV guests
Posted by Jan Beulich 3 weeks, 1 day ago
On 01.10.2026 11:19, Roger Pau Monne wrote:
> XENFEAT_pae_pgdir_above_4gb is only used by 32bit PV guests, hence limit
> its setting in XENVER_get_features to the is_pv_domain() guarded section,
> with the rest of the PV specific features.
> 
> No functional change intended.
> 
> Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> ---
> Changes since v1:
>  - Just move the conditional but don't merge it.

And still no CONFIG_PV32 dependency?

Jan

Re: [PATCH v2] xen/x86: restrict XENFEAT_pae_pgdir_above_4gb setting to PV guests
Posted by Roger Pau Monné 3 weeks, 1 day ago
On Thu, Oct 01, 2026 at 01:05:39PM +0200, Jan Beulich wrote:
> On 01.10.2026 11:19, Roger Pau Monne wrote:
> > XENFEAT_pae_pgdir_above_4gb is only used by 32bit PV guests, hence limit
> > its setting in XENVER_get_features to the is_pv_domain() guarded section,
> > with the rest of the PV specific features.
> > 
> > No functional change intended.
> > 
> > Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> > ---
> > Changes since v1:
> >  - Just move the conditional but don't merge it.
> 
> And still no CONFIG_PV32 dependency?

Andrew specifically asked for this form, or at least that was my
understanding.

Regards, Roger.

Re: [PATCH v2] xen/x86: restrict XENFEAT_pae_pgdir_above_4gb setting to PV guests
Posted by Jan Beulich 3 weeks ago
On 01.10.2026 16:05, Roger Pau Monné wrote:
> On Thu, Oct 01, 2026 at 01:05:39PM +0200, Jan Beulich wrote:
>> On 01.10.2026 11:19, Roger Pau Monne wrote:
>>> XENFEAT_pae_pgdir_above_4gb is only used by 32bit PV guests, hence limit
>>> its setting in XENVER_get_features to the is_pv_domain() guarded section,
>>> with the rest of the PV specific features.
>>>
>>> No functional change intended.
>>>
>>> Signed-off-by: Roger Pau Monné <roger@xenproject.org>
>>> ---
>>> Changes since v1:
>>>  - Just move the conditional but don't merge it.
>>
>> And still no CONFIG_PV32 dependency?
> 
> Andrew specifically asked for this form, or at least that was my
> understanding.

Well, Misra-wise you've added unreachable code this way.

Jan

Re: [PATCH v2] xen/x86: restrict XENFEAT_pae_pgdir_above_4gb setting to PV guests
Posted by Teddy Astie 3 weeks, 1 day ago
Le 01/10/2026 à 11:21, Roger Pau Monne a écrit :
> XENFEAT_pae_pgdir_above_4gb is only used by 32bit PV guests, hence limit
> its setting in XENVER_get_features to the is_pv_domain() guarded section,
> with the rest of the PV specific features.
> 
> No functional change intended.
> 
> Signed-off-by: Roger Pau Monné <roger@xenproject.org>
> ---
> Changes since v1:
>   - Just move the conditional but don't merge it.
> ---
>   xen/common/kernel.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/common/kernel.c b/xen/common/kernel.c
> index f4bbd8818fa8..6811599f95fd 100644
> --- a/xen/common/kernel.c
> +++ b/xen/common/kernel.c
> @@ -677,8 +677,6 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>                           (1U << XENFEAT_vcpu_time_phys_area) |
>   #endif
>                           (1U << XENFEAT_runstate_phys_area);
> -            if ( VM_ASSIST(d, pae_extended_cr3) )
> -                fi.submap |= (1U << XENFEAT_pae_pgdir_above_4gb);
>               if ( paging_mode_translate(d) )
>                   fi.submap |=
>                       (1U << XENFEAT_writable_page_tables) |
> @@ -690,9 +688,13 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>   #endif
>   #ifdef CONFIG_X86
>               if ( is_pv_domain(d) )
> +            {
>                   fi.submap |= (1U << XENFEAT_mmu_pt_update_preserve_ad) |
>                                (1U << XENFEAT_highmem_assist) |
>                                (1U << XENFEAT_gnttab_map_avail_bits);
> +                if ( VM_ASSIST(d, pae_extended_cr3) )
> +                    fi.submap |= (1U << XENFEAT_pae_pgdir_above_4gb);
> +            }
>               else
>                   fi.submap |= (1U << XENFEAT_hvm_safe_pvclock) |
>                                (1U << XENFEAT_hvm_callback_vector) |

Reviewed-by: Teddy Astie <teddy.astie@vates.tech>

Teddy
Re: [PATCH v2] xen/x86: restrict XENFEAT_pae_pgdir_above_4gb setting to PV guests
Posted by Andrew Cooper 3 weeks, 1 day ago
On 01/10/2026 10:19 am, Roger Pau Monne wrote:
> XENFEAT_pae_pgdir_above_4gb is only used by 32bit PV guests, hence limit
> its setting in XENVER_get_features to the is_pv_domain() guarded section,
> with the rest of the PV specific features.
>
> No functional change intended.
>
> Signed-off-by: Roger Pau Monné <roger@xenproject.org>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>