KVM: arm64: Teach ptdump about FEAT_XNX permissions

Although KVM doesn't make direct use of the feature, guest hypervisors
can use FEAT_XNX which influences the permissions of the shadow stage-2.
Update ptdump to separately print the privileged and unprivileged
execute permissions.

Reviewed-by: Marc Zyngier <maz@kernel.org>
Tested-by: Marc Zyngier <maz@kernel.org>
Link: https://msgid.link/20251124190158.177318-5-oupton@kernel.org
Signed-off-by: Oliver Upton <oupton@kernel.org>
This commit is contained in:
Oliver Upton
2025-11-24 11:01:46 -08:00
parent d93febe2ed
commit 6b49f70022

View File

@@ -31,27 +31,46 @@ static const struct ptdump_prot_bits stage2_pte_bits[] = {
.val = PTE_VALID, .val = PTE_VALID,
.set = " ", .set = " ",
.clear = "F", .clear = "F",
}, { },
{
.mask = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R, .mask = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R,
.val = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R, .val = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R,
.set = "R", .set = "R",
.clear = " ", .clear = " ",
}, { },
{
.mask = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W, .mask = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W,
.val = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W, .val = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W,
.set = "W", .set = "W",
.clear = " ", .clear = " ",
}, { },
{
.mask = KVM_PTE_LEAF_ATTR_HI_S2_XN, .mask = KVM_PTE_LEAF_ATTR_HI_S2_XN,
.val = KVM_PTE_LEAF_ATTR_HI_S2_XN, .val = 0b00UL << __bf_shf(KVM_PTE_LEAF_ATTR_HI_S2_XN),
.set = "NX", .set = "px ux ",
.clear = "x ", },
}, { {
.mask = KVM_PTE_LEAF_ATTR_HI_S2_XN,
.val = 0b01UL << __bf_shf(KVM_PTE_LEAF_ATTR_HI_S2_XN),
.set = "PXNux ",
},
{
.mask = KVM_PTE_LEAF_ATTR_HI_S2_XN,
.val = 0b10UL << __bf_shf(KVM_PTE_LEAF_ATTR_HI_S2_XN),
.set = "PXNUXN",
},
{
.mask = KVM_PTE_LEAF_ATTR_HI_S2_XN,
.val = 0b11UL << __bf_shf(KVM_PTE_LEAF_ATTR_HI_S2_XN),
.set = "px UXN",
},
{
.mask = KVM_PTE_LEAF_ATTR_LO_S2_AF, .mask = KVM_PTE_LEAF_ATTR_LO_S2_AF,
.val = KVM_PTE_LEAF_ATTR_LO_S2_AF, .val = KVM_PTE_LEAF_ATTR_LO_S2_AF,
.set = "AF", .set = "AF",
.clear = " ", .clear = " ",
}, { },
{
.mask = PMD_TYPE_MASK, .mask = PMD_TYPE_MASK,
.val = PMD_TYPE_SECT, .val = PMD_TYPE_SECT,
.set = "BLK", .set = "BLK",