> On Nov 27, 2018, at 8:52 AM, Sean Christopherson <sean.j.christopherson@xxxxxxxxx> wrote: > > On Tue, Nov 27, 2018 at 09:36:03AM +0100, Heiko Carstens wrote: >> Use pr_alert_once() instead of pr_alert() if page table misaccounting >> has been detected. >> >> If this happens once it is very likely that there will be numerous >> other occurrence as well, which would flood dmesg and the console with >> hardly any added information. Therefore print the warning only once. >> >> Cc: Kirill A. Shutemov <kirill@xxxxxxxxxxxxx> >> Cc: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> >> Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> >> --- >> kernel/fork.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/kernel/fork.c b/kernel/fork.c >> index 07cddff89c7b..c887e9eba89f 100644 >> --- a/kernel/fork.c >> +++ b/kernel/fork.c >> @@ -647,8 +647,8 @@ static void check_mm(struct mm_struct *mm) >> } >> >> if (mm_pgtables_bytes(mm)) >> - pr_alert("BUG: non-zero pgtables_bytes on freeing mm: %ld\n", >> - mm_pgtables_bytes(mm)); >> + pr_alert_once("BUG: non-zero pgtables_bytes on freeing mm: %ld\n", >> + mm_pgtables_bytes(mm)); > > I found the print-always behavior to be useful when developing a driver > that mucked with PTEs directly via vmf_insert_pfn() and had issues with > racing against exit_mmap(). It was nice to be able to recompile only > the driver and rely on dmesg to let me know when I messed up yet again. > > Would pr_alert_ratelimited() suffice? Actually, I really like that idea. There are certainly times when it is useful to see a cascade of messages, within reason; one there are so many they overflow the dmesg buffer they're of limited usefulness. Something like a pr_alert() that could rate limit to a preset value, perhaps a default of fifty or so, could prove quite useful indeed without being an all or once choice. William Kucharski