On Thu, Jun 16, 2022 at 11:08:07AM +0200, Peter Zijlstra wrote: > Either use that one spare byte, or find room elsewhere I suppose. Okay, I will put into the byte after invalidate_other and modify tlbstate_lam_cr3_mask() and set_tlbstate_lam_cr3_mask() to shift it accordingly. It looks like this: struct tlb_state { struct mm_struct * loaded_mm; /* 0 8 */ union { struct mm_struct * last_user_mm; /* 8 8 */ unsigned long last_user_mm_spec; /* 8 8 */ }; /* 8 8 */ union { struct mm_struct * last_user_mm; /* 0 8 */ unsigned long last_user_mm_spec; /* 0 8 */ }; u16 loaded_mm_asid; /* 16 2 */ u16 next_asid; /* 18 2 */ bool invalidate_other; /* 20 1 */ u8 lam; /* 21 1 */ unsigned short user_pcid_flush_mask; /* 22 2 */ unsigned long cr4; /* 24 8 */ struct tlb_context ctxs[6]; /* 32 96 */ /* size: 128, cachelines: 2, members: 9 */ }; -- Kirill A. Shutemov