On Tue, 1 May 2012 14:14:57 -0400 KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxx> wrote: > On Tue, May 1, 2012 at 2:05 PM, Konstantin Khlebnikov > <khlebnikov@xxxxxxxxxx> wrote: > > KOSAKI Motohiro wrote: > >> > >> On Mon, Apr 30, 2012 at 7:29 AM, Konstantin Khlebnikov > >> <khlebnikov@xxxxxxxxxx> __wrote: > >>> > >>> This patch adds line "HWPoinson:<size> __kB" into /proc/pid/smaps if > >>> CONFIG_MEMORY_FAILURE=y and some HWPoison pages were found. > >>> This may be useful for searching applications which use a broken memory. > >> > >> > >> I dislike "maybe useful" claim. If we don't know exact motivation of a > >> feature, > >> we can't maintain them especially when a bugfix can't avoid ABI change. > >> > >> Please write down exact use case. > > > > I don't know how to exactly use this hw-poison stuff, but smaps suppose to > > export state of ptes in vma. It seems to rational to show also hw-poisoned > > ptes, > > since kernel has this feature and pte can be in hw-poisoned state. > > > > and now everyone can easily find them: > > # sudo grep HWPoison /proc/*/smaps > > First, I don't think "we can expose it" is good reason. Second, hw-poisoned mean > such process is going to be killed at next page touch. But I can't > imagine anyone can > use its information because it's racy against process kill. I think > admin should use mce log. > > So, until we find a good use case, I don't ack this. Yes, I think I'll drop this patch for now. If we can later produce a good reason for expanding the kernel API in this fashion then please resend. From: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxx> Subject: proc/smaps: show amount of hwpoison pages Add the line "HWPoinson: <size> kB" into /proc/pid/smaps if CONFIG_MEMORY_FAILURE=y and some HWPoison pages were found. This may be useful for searching applications which use a broken memory. Signed-off-by: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxx> Acked-by: Andi Kleen <ak@xxxxxxxxxxxxxxx> Cc: Pavel Emelyanov <xemul@xxxxxxxxxxxxx> Cc: Alexey Dobriyan <adobriyan@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/proc/task_mmu.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff -puN fs/proc/task_mmu.c~proc-smaps-show-amount-of-hwpoison-pages fs/proc/task_mmu.c --- a/fs/proc/task_mmu.c~proc-smaps-show-amount-of-hwpoison-pages +++ a/fs/proc/task_mmu.c @@ -394,6 +394,7 @@ struct mem_size_stats { unsigned long anonymous_thp; unsigned long swap; unsigned long nonlinear; + unsigned long hwpoison; u64 pss; }; @@ -416,6 +417,8 @@ static void smaps_pte_entry(pte_t ptent, mss->swap += ptent_size; else if (is_migration_entry(swpent)) page = migration_entry_to_page(swpent); + else if (is_hwpoison_entry(swpent)) + mss->hwpoison += ptent_size; } else if (pte_file(ptent)) { if (pte_to_pgoff(ptent) != pgoff) mss->nonlinear += ptent_size; @@ -430,6 +433,9 @@ static void smaps_pte_entry(pte_t ptent, if (page->index != pgoff) mss->nonlinear += ptent_size; + if (PageHWPoison(page)) + mss->hwpoison += ptent_size; + mss->resident += ptent_size; /* Accumulate the size in pages that have been accessed. */ if (pte_young(ptent) || PageReferenced(page)) @@ -535,6 +541,10 @@ static int show_smap(struct seq_file *m, seq_printf(m, "Nonlinear: %8lu kB\n", mss.nonlinear >> 10); + if (IS_ENABLED(CONFIG_MEMORY_FAILURE) && mss.hwpoison) + seq_printf(m, "HWPoison: %8lu kB\n", + mss.hwpoison >> 10); + if (m->count < m->size) /* vma is copied successfully */ m->version = (vma != get_gate_vma(task->mm)) ? vma->vm_start : 0; _ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>