Hi Michael, after your last mail I went back and looked very closely at the set_fs removal and your debug patches below. And one hunk stands out:
static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) { - if (vma->vm_mm == current->active_mm) + if (vma->vm_mm == current->active_mm) { + unsigned long old_fc = force_user_fc_begin(); __flush_tlb_one(addr); + force_user_fc_end(old_fc); + }
This is the only old user of force_uaccess_begin, and the only one where this patch adds back a DFC/SFC access where there was none at at all with the set_fs removal. So I'd be curious if you just add this hunk (plus the supporting infrastructure) on top of my tree for now to see if there were some side effects of the instructions that were important, be that seralization, timing or anything else.