LGTM, ack. Thanks, Tao Liu
On Tue, Oct 28, 2025 at 5:40 AM Mikhail Zaslonko <[email protected]> wrote: > > Translate and print the IEP (Instruction Execution Protection) flag for > Region-Third-Table entries and Segment-Table entries of Format > Control 1 and also for Page-Table entries. Display the flags in s390x 'vtop' > command output like shown below: > > STE: 0000000033be8ac0 => 0000000015803503 (flags = 03503) > flags in binary : AV=0; ACC=0011; F=0; FC=1; P=0; IEP=1; I=0; CS=0; > TT=0 > or > PTE: 00000000031c6fd8 => 000000000842e13d (flags = 13d) > flags in binary : I=0; P=0; IEP=1 > > Suggested-by: Heiko Carstens <[email protected]> > Signed-off-by: Mikhail Zaslonko <[email protected]> > Reviewed-by: Heiko Carstens <[email protected]> > --- > s390x.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/s390x.c b/s390x.c > index 0e8e2b3..8c0bba4 100644 > --- a/s390x.c > +++ b/s390x.c > @@ -29,6 +29,7 @@ > #define S390X_PTE_FLAG_BITS 0xfffULL /* Page table entry flag bits */ > #define S390X_PAGE_PRESENT 0x001ULL /* set: loaded in physical memory > * clear: not loaded in physical > mem */ > +#define S390X_PAGE_IEP 0x100ULL /* Instruction-execution protection > */ > #define S390X_PAGE_RO 0x200ULL /* HW read-only */ > #define S390X_PAGE_INVALID 0x400ULL /* HW invalid */ > #define S390X_PAGE_INVALID_MASK 0x601ULL /* for linux 2.6 */ > @@ -65,6 +66,7 @@ > #define S390X_RTE_TF 0xc0ULL > #define S390X_RTE_TF_10 0x80ULL > #define S390X_RTE_TF_01 0x40ULL > +#define S390X_RTE_IEP 0x100ULL > #define S390X_RTE_P 0x200ULL > #define S390X_RTE_FC 0x400ULL > #define S390X_RTE_F 0x800ULL > @@ -82,6 +84,7 @@ > #define S390X_STE_TT_01 0x4ULL > #define S390X_STE_CS 0x10ULL > #define S390X_STE_I 0x20ULL > +#define S390X_STE_IEP 0x100ULL > #define S390X_STE_P 0x200ULL > #define S390X_STE_FC 0x400ULL > #define S390X_STE_F 0x800ULL > @@ -979,7 +982,7 @@ static inline int s390x_pte_present(unsigned long x){ > /* Print flags of Segment-Table entry with format control = 1 */ > static void print_segment_entry_fc1(ulong val) > { > - fprintf(fp, "AV=%u; ACC=%u%u%u%u; F=%u; FC=%u; P=%u; I=%u; CS=%u; > TT=%u%u\n", > + fprintf(fp, "AV=%u; ACC=%u%u%u%u; F=%u; FC=%u; P=%u; IEP=%u; I=%u; > CS=%u; TT=%u%u\n", > !!(val & S390X_STE_AV), > !!(val & S390X_STE_ACC_1000), > !!(val & S390X_STE_ACC_0100), > @@ -988,6 +991,7 @@ static void print_segment_entry_fc1(ulong val) > !!(val & S390X_STE_F), > !!(val & S390X_STE_FC), > !!(val & S390X_STE_P), > + !!(val & S390X_STE_IEP), > !!(val & S390X_STE_I), > !!(val & S390X_STE_CS), > !!(val & S390X_STE_TT_10), > @@ -1009,7 +1013,7 @@ static void print_segment_entry_fc0(ulong val) > /* Print flags of Region-Third-Table entry with format control = 1 */ > static void print_region_third_entry_fc1(ulong val) > { > - fprintf(fp, "AV=%u; ACC=%u%u%u%u; F=%u; FC=%u; P=%u; I=%u; CR=%u; > TT=%u%u\n", > + fprintf(fp, "AV=%u; ACC=%u%u%u%u; F=%u; FC=%u; P=%u; IEP=%u; I=%u; > CR=%u; TT=%u%u\n", > !!(val & S390X_RTE_AV), > !!(val & S390X_RTE_ACC_1000), > !!(val & S390X_RTE_ACC_0100), > @@ -1018,6 +1022,7 @@ static void print_region_third_entry_fc1(ulong val) > !!(val & S390X_RTE_F), > !!(val & S390X_RTE_FC), > !!(val & S390X_RTE_P), > + !!(val & S390X_RTE_IEP), > !!(val & S390X_RTE_I), > !!(val & S390X_RTE_CR), > !!(val & S390X_RTE_TT_10), > @@ -1151,8 +1156,10 @@ static ulong _kl_pg_table_deref_s390x(ulong vaddr, > ulong table, int verbose) > if (verbose) { > fprintf(fp, "%5s: %016lx => %016lx (flags = %03llx)\n", > "PTE", addr, entry, entry & S390X_PTE_FLAG_BITS); > - fprintf(fp, " flags in binary : I=%u; P=%u\n", > - !!(entry & S390X_PAGE_INVALID), !!(entry & > S390X_PAGE_RO)); > + fprintf(fp, " flags in binary : I=%u; P=%u; IEP=%u\n", > + !!(entry & S390X_PAGE_INVALID), > + !!(entry & S390X_PAGE_RO), > + !!(entry & S390X_PAGE_IEP)); > fprintf(fp, "%5s: %016llx\n", "PAGE", entry & > ~S390X_PTE_FLAG_BITS); > } > /* > -- > 2.49.0 > -- Crash-utility mailing list -- [email protected] To unsubscribe send an email to [email protected] https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/ Contribution Guidelines: https://github.com/crash-utility/crash/wiki
