From: Jarkko Sakkinen <jarkko@kernel.org>
To: Thomas Tai <thomas.tai@oracle.com>
Cc: tony.luck@intel.com, dave.hansen@linux.intel.com,
reinette.chatre@intel.co, naoya.horiguchi@nec.com,
linmiaohe@huawei.com, akpm@linux-foundation.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] x86/sgx: Add code to inject hwpoison into SGX memory
Date: Sat, 1 Oct 2022 00:44:17 +0300 [thread overview]
Message-ID: <YzdjMeEjflRgfkdD@kernel.org> (raw)
In-Reply-To: <20220927183411.910077-1-thomas.tai@oracle.com>
On Tue, Sep 27, 2022 at 02:34:11PM -0400, Thomas Tai wrote:
> Inspired by commit c6acb1e7bf46 (x86/sgx: Add hook to error injection
> address validation), add a similar code in hwpoison_inject function to
> check if the address is located in SGX Memory. The error will then be
> handled by the arch_memory_failure function in the SGX driver.
>
> Signed-off-by: Thomas Tai <thomas.tai@oracle.com>
> ---
> Documentation/mm/hwpoison.rst | 44 +++++++++++++++++++++++++++++++++++
> mm/hwpoison-inject.c | 3 +++
> 2 files changed, 47 insertions(+)
>
> diff --git a/Documentation/mm/hwpoison.rst b/Documentation/mm/hwpoison.rst
> index b9d5253c1305..8a542aca4744 100644
> --- a/Documentation/mm/hwpoison.rst
> +++ b/Documentation/mm/hwpoison.rst
> @@ -162,6 +162,50 @@ Testing
>
> Some portable hwpoison test programs in mce-test, see below.
>
> +* Special notes for injection into SGX enclaves
> +
> + 1) Determine physical address of enclave page
> +
> + dmesg | grep "sgx: EPC"
> +
> + sgx: EPC section 0x8000c00000-0x807f7fffff
> + sgx: EPC section 0x10000c00000-0x1007fffffff
> +
> + 2) Convert the EPC address to page frame number.
> +
> + For 4K page size, the page frame number for 0x8000c00000 is
> + 0x8000c00000 / 0x1000 = 0x8000c00.
> +
> + 3) Trace memory_failure
> +
> + echo nop > /sys/kernel/tracing/current_tracer
> + echo *memory_failure > /sys/kernel/tracing/set_ftrace_filter
> + echo function > /sys/kernel/tracing/current_tracer
> +
> + 4) Inject a memory error
> +
> + modprobe hwpoison-inject
> + echo "0x8000c00" > /sys/kernel/debug/hwpoison/corrupt-pfn
> +
> + 5) Check the trace output
> +
> + cat /sys/kernel/tracing/trace
> +
> + # tracer: function
> + #
> + # entries-in-buffer/entries-written: 2/2 #P:128
> + #
> + # _-----=> irqs-off
> + # / _----=> need-resched
> + # | / _---=> hardirq/softirq
> + # || / _--=> preempt-depth
> + # ||| / _-=> migrate-disable
> + # |||| / delay
> + # TASK-PID CPU# ||||| TIMESTAMP FUNCTION
> + # | | | ||||| | |
> + bash-12167 [002] ..... 113.136808: memory_failure<-simple_attr_write
> + bash-12167 [002] ..... 113.136810: arch_memory_failure<-memory_failure
> +
> References
> ==========
>
> diff --git a/mm/hwpoison-inject.c b/mm/hwpoison-inject.c
> index 65e242b5a432..8134dc983699 100644
> --- a/mm/hwpoison-inject.c
> +++ b/mm/hwpoison-inject.c
> @@ -21,6 +21,9 @@ static int hwpoison_inject(void *data, u64 val)
> if (!capable(CAP_SYS_ADMIN))
> return -EPERM;
>
> + if (arch_is_platform_page(pfn << PAGE_SHIFT))
> + goto inject;
> +
> if (!pfn_valid(pfn))
> return -ENXIO;
>
> --
> 2.31.1
>
Hey, this is really useful addition. Thanks for doing this.
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
BR, Jarkko
next prev parent reply other threads:[~2022-09-30 21:44 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-27 18:34 [PATCH] x86/sgx: Add code to inject hwpoison into SGX memory Thomas Tai
2022-09-27 20:34 ` Luck, Tony
2022-09-27 21:41 ` Thomas Tai
2022-09-28 7:59 ` Miaohe Lin
2022-09-28 12:23 ` Thomas Tai
2022-09-30 21:44 ` Jarkko Sakkinen [this message]
2022-10-02 14:56 ` Thomas Tai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YzdjMeEjflRgfkdD@kernel.org \
--to=jarkko@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=dave.hansen@linux.intel.com \
--cc=linmiaohe@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=naoya.horiguchi@nec.com \
--cc=reinette.chatre@intel.co \
--cc=thomas.tai@oracle.com \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.