On Tue, 24 Mar 2020 21:45:32 +0800 Zhenyu Ye <yezhenyu2@xxxxxxxxxx> wrote: > --- a/include/trace/events/mmflags.h > +++ b/include/trace/events/mmflags.h > @@ -130,6 +130,16 @@ IF_HAVE_PG_IDLE(PG_idle, "idle" ) > #define IF_HAVE_VM_SOFTDIRTY(flag,name) > #endif > > +#ifdef CONFIG_64BIT > +#define IF_HAVE_VM_LEVEL_PUD(flag,name) {flag, name} > +#define IF_HAVE_VM_LEVEL_PMD(flag,name) {flag, name} > +#define IF_HAVE_VM_LEVEL_PTE(flag,name) {flag, name} > +#else > +#define IF_HAVE_VM_LEVEL_PUD(flag,name) > +#define IF_HAVE_VM_LEVEL_PMD(flag,name) > +#define IF_HAVE_VM_LEVEL_PTE(flag,name) > +#endif > + > #define __def_vmaflag_names \ > {VM_READ, "read" }, \ > {VM_WRITE, "write" }, \ > @@ -161,7 +171,10 @@ IF_HAVE_VM_SOFTDIRTY(VM_SOFTDIRTY, "softdirty" ) \ > {VM_MIXEDMAP, "mixedmap" }, \ > {VM_HUGEPAGE, "hugepage" }, \ > {VM_NOHUGEPAGE, "nohugepage" }, \ > - {VM_MERGEABLE, "mergeable" } \ > + {VM_MERGEABLE, "mergeable" }, \ > +IF_HAVE_VM_LEVEL_PUD(VM_LEVEL_PUD, "pud-level" ), \ > +IF_HAVE_VM_LEVEL_PMD(VM_LEVEL_PMD, "pmd-level" ), \ > +IF_HAVE_VM_LEVEL_PTE(VM_LEVEL_PTE, "pte-level" ) \ > Have you tested this on 32bit? It looks like you'll get empty commas there. Perhaps the defines need to be: #ifdef CONFIG_64BIT #define IF_HAVE_VM_LEVEL_PUD(flag,name) {flag, name}, #define IF_HAVE_VM_LEVEL_PMD(flag,name) {flag, name}, #define IF_HAVE_VM_LEVEL_PTE(flag,name) {flag, name} #else #define IF_HAVE_VM_LEVEL_PUD(flag,name) #define IF_HAVE_VM_LEVEL_PMD(flag,name) #define IF_HAVE_VM_LEVEL_PTE(flag,name) #endif And leave out the commas in the list. -- Steve