Re: [PATCH v1] mm, pagemap: expose hwpoison entry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04.10.21 13:50, Naoya Horiguchi wrote:
From: Naoya Horiguchi <naoya.horiguchi@xxxxxxx>

A hwpoison entry is a non-present page table entry to report
memory error events to userspace. If we have an easy way to know
which processes have hwpoison entries, that might be useful for
user processes to take proper actions. But we don't have it now.
So make pagemap interface expose hwpoison entries to userspace.

Noting that this is only a way to inspect hwpoison set for private anonymous memory. You cannot really identify anything related to shared memory.

Do you also handle private hugetlb pages?


Hwpoison entry for hugepage is also exposed by this patch. The below
example shows how pagemap is visible in the case where a memory error
hit a hugepage mapped to a process.

     $ ./page-types --no-summary --pid $PID --raw --list --addr 0x700000000+0x400
     voffset offset  len     flags
     700000000       12fa00  1       ___U_______Ma__H_G_________________f_______1
     700000001       12fa01  1ff     ___________Ma___TG_________________f_______1
     700000200       12f800  1       __________B________X_______________f______w_
     700000201       12f801  1       ___________________X_______________f______w_   // memory failure hit this page
     700000202       12f802  1fe     __________B________X_______________f______w_

The entries with both of "X" flag (hwpoison flag) and "w" flag (swap
flag) are considered as hwpoison entries.  So all pages in 2MB range
are inaccessible from the process.  We can get actual error location
by page-types in physical address mode.

     $ ./page-types --no-summary --addr 0x12f800+0x200 --raw --list
     offset  len     flags
     12f800  1       __________B_________________________________
     12f801  1       ___________________X________________________
     12f802  1fe     __________B_________________________________

Signed-off-by: Naoya Horiguchi <naoya.horiguchi@xxxxxxx>
---
  fs/proc/task_mmu.c      | 41 ++++++++++++++++++++++++++++++++---------
  include/linux/swapops.h | 13 +++++++++++++
  tools/vm/page-types.c   |  7 ++++++-
  3 files changed, 51 insertions(+), 10 deletions(-)


Please also update the documentation located at

Documentation/admin-guide/mm/pagemap.rst


--
Thanks,

David / dhildenb





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux