All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko@kernel.org>
To: Shuah Khan <skhan@linuxfoundation.org>
Cc: x86@kernel.org, linux-sgx@vger.kernel.org,
	linux-kernel@vger.kernel.org, Shuah Khan <shuah@kernel.org>,
	linux-kselftest@vger.kernel.org,
	Jethro Beekman <jethro@fortanix.com>,
	akpm@linux-foundation.org, andriy.shevchenko@linux.intel.com,
	asapek@google.com, bp@alien8.de, cedric.xing@intel.com,
	chenalexchen@google.com, conradparker@google.com,
	cyhanish@google.com, dave.hansen@intel.com,
	haitao.huang@intel.com, kai.huang@intel.com, kai.svahn@intel.com,
	kmoy@google.com, ludloff@google.com, luto@kernel.org,
	nhorman@redhat.com, npmccallum@redhat.com, puiterwijk@redhat.com,
	rientjes@google.com, sean.j.christopherson@intel.com,
	tglx@linutronix.de, yaozhangx@google.com, mikko.ylinen@intel.com
Subject: Re: [PATCH v41 20/24] selftests/x86: Add a selftest for SGX
Date: Tue, 17 Nov 2020 21:42:17 +0200	[thread overview]
Message-ID: <20201117194217.GG10393@kernel.org> (raw)
In-Reply-To: <e58ee564-597a-336e-53dc-7c4d172d51f5@linuxfoundation.org>

On Mon, Nov 16, 2020 at 11:19:12AM -0700, Shuah Khan wrote:
> On 11/12/20 3:01 PM, Jarkko Sakkinen wrote:
> > Add a selftest for SGX. It is a trivial test where a simple enclave copies
> > one 64-bit word of memory between two memory locations, but ensures that
> > all SGX hardware and software infrastructure is functioning.
> > 
> > Cc: Shuah Khan <shuah@kernel.org>
> > Cc: linux-kselftest@vger.kernel.org
> > Acked-by: Jethro Beekman <jethro@fortanix.com> # v40
> > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > ---
> > Changes from v40:
> > * Remove $(OUTPUT)/test_encl.elf from TEST_CUSTOM_PROGS, as otherwise
> >    run_tests tries to execute it. Add it as a build dependency.
> > * Use the correct device path, /dev/sgx_enclave, instead of
> >    /dev/sgx/enclave.
> > * Return kselftest framework expected return codes.
> > 
> >   tools/testing/selftests/Makefile              |   1 +
> >   tools/testing/selftests/sgx/.gitignore        |   2 +
> >   tools/testing/selftests/sgx/Makefile          |  53 +++
> >   tools/testing/selftests/sgx/call.S            |  44 ++
> >   tools/testing/selftests/sgx/defines.h         |  21 +
> >   tools/testing/selftests/sgx/load.c            | 277 +++++++++++++
> >   tools/testing/selftests/sgx/main.c            | 246 +++++++++++
> >   tools/testing/selftests/sgx/main.h            |  38 ++
> >   tools/testing/selftests/sgx/sigstruct.c       | 391 ++++++++++++++++++
> >   tools/testing/selftests/sgx/test_encl.c       |  20 +
> >   tools/testing/selftests/sgx/test_encl.lds     |  40 ++
> >   .../selftests/sgx/test_encl_bootstrap.S       |  89 ++++
> >   12 files changed, 1222 insertions(+)
> >   create mode 100644 tools/testing/selftests/sgx/.gitignore
> >   create mode 100644 tools/testing/selftests/sgx/Makefile
> >   create mode 100644 tools/testing/selftests/sgx/call.S
> >   create mode 100644 tools/testing/selftests/sgx/defines.h
> >   create mode 100644 tools/testing/selftests/sgx/load.c
> >   create mode 100644 tools/testing/selftests/sgx/main.c
> >   create mode 100644 tools/testing/selftests/sgx/main.h
> >   create mode 100644 tools/testing/selftests/sgx/sigstruct.c
> >   create mode 100644 tools/testing/selftests/sgx/test_encl.c
> >   create mode 100644 tools/testing/selftests/sgx/test_encl.lds
> >   create mode 100644 tools/testing/selftests/sgx/test_encl_bootstrap.S
> > 
> > diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
> > index d9c283503159..aa06e3ea0250 100644
> > --- a/tools/testing/selftests/Makefile
> > +++ b/tools/testing/selftests/Makefile
> > @@ -68,6 +68,7 @@ TARGETS += user
> >   TARGETS += vm
> >   TARGETS += x86
> >   TARGETS += zram
> > +TARGETS += sgx
> >   #Please keep the TARGETS list alphabetically sorted
> 
> Please keep the list sorted alphabetically as stated
> in the comment above.
> 
> 
> > +}
> > +
> > +int main(int argc, char *argv[], char *envp[])
> > +{
> > +	struct sgx_enclave_run run;
> > +	struct vdso_symtab symtab;
> > +	Elf64_Sym *eenter_sym;
> > +	uint64_t result = 0;
> > +	struct encl encl;
> > +	unsigned int i;
> > +	void *addr;
> > +	int ret;
> > +
> > +	memset(&run, 0, sizeof(run));
> > +
> > +	if (!encl_load("test_encl.elf", &encl)) {
> > +		encl_delete(&encl);
> > +		ksft_exit_skip("cannot load enclaves\n");
> > +	}
> > +
> > +	if (!encl_measure(&encl))
> > +		goto err;
> > +
> > +	if (!encl_build(&encl))
> > +		goto err;
> > +
> > +	/*
> > +	 * An enclave consumer only must do this.
> > +	 */
> > +	for (i = 0; i < encl.nr_segments; i++) {
> > +		struct encl_segment *seg = &encl.segment_tbl[i];
> > +
> > +		addr = mmap((void *)encl.encl_base + seg->offset, seg->size,
> > +			    seg->prot, MAP_SHARED | MAP_FIXED, encl.fd, 0);
> > +		if (addr == MAP_FAILED) {
> > +			fprintf(stderr, "mmap() failed, errno=%d.\n", errno);
> > +			exit(1);
> 
> This should be KSFT_FAIL.
> 
> thanks,
> -- Shuah

Thanks.

/Jarkko

  parent reply	other threads:[~2020-11-17 19:43 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-12 22:01 [PATCH v41 00/24] Intel SGX foundations Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 01/24] x86/sgx: Add SGX architectural data structures Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 02/24] x86/sgx: Add wrappers for ENCLS functions Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 03/24] x86/cpufeatures: x86/msr: Add Intel SGX hardware bits Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] x86/cpufeatures: " tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 04/24] x86/cpufeatures: x86/msr: Add Intel SGX Launch Control " Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] x86/{cpufeatures,msr}: " tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 05/24] x86/sgx: Initialize metadata for Enclave Page Cache (EPC) sections Jarkko Sakkinen
2020-11-16 22:25   ` [PATCH] x86/sgx: clarify 'laundry_list' locking Dave Hansen
2020-11-17 19:29     ` Jarkko Sakkinen
2020-11-18 17:18     ` [tip: x86/sgx] x86/sgx: Clarify " tip-bot2 for Dave Hansen
2020-11-18 17:18   ` [tip: x86/sgx] x86/sgx: Initialize metadata for Enclave Page Cache (EPC) sections tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 06/24] x86/mm: x86/sgx: Signal SIGSEGV with PF_SGX Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] x86/mm: " tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 07/24] x86/cpu/intel: Detect SGX support Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 08/24] x86/cpu/intel: Add nosgx kernel parameter Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] x86/cpu/intel: Add a " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 09/24] x86/sgx: Add SGX page allocator functions Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 10/24] mm: Add 'mprotect' hook to struct vm_operations_struct Jarkko Sakkinen
2020-11-13 10:25   ` Mel Gorman
2020-11-17 18:16     ` Jarkko Sakkinen
2020-11-15 17:08   ` Dr. Greg
2020-11-15 17:32   ` Matthew Wilcox
2020-11-15 18:36     ` Dave Hansen
2020-11-16 10:09       ` Mel Gorman
2020-11-17 19:15         ` Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 11/24] x86/sgx: Add SGX misc driver interface Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] x86/sgx: Add an " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 12/24] x86/sgx: Add SGX_IOC_ENCLAVE_CREATE Jarkko Sakkinen
     [not found]   ` <20201115044044.11040-1-hdanton@sina.com>
2020-11-16 17:54     ` Dave Hansen
2020-11-17  0:34       ` Dave Hansen
2020-11-17 17:40         ` Jarkko Sakkinen
2020-11-17 17:26       ` Jarkko Sakkinen
2020-11-17 17:35     ` Jarkko Sakkinen
     [not found]     ` <20201117024747.216-1-hdanton@sina.com>
2020-11-17 17:41       ` Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 13/24] x86/sgx: Add SGX_IOC_ENCLAVE_ADD_PAGES Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 14/24] x86/sgx: Add SGX_IOC_ENCLAVE_INIT Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 15/24] x86/sgx: Add SGX_IOC_ENCLAVE_PROVISION Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 16/24] x86/vdso: Add support for exception fixup in vDSO functions Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 17/24] x86/fault: Add helper function to sanitize error code Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] x86/fault: Add a " tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 18/24] x86/traps: Attempt to fixup exceptions in vDSO before signaling Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 19/24] x86/vdso: Implement a vDSO for Intel SGX enclave call Jarkko Sakkinen
2020-11-17 13:14   ` Borislav Petkov
2020-11-17 19:41     ` Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Sean Christopherson
2020-11-12 22:01 ` [PATCH v41 20/24] selftests/x86: Add a selftest for SGX Jarkko Sakkinen
2020-11-16 18:19   ` Shuah Khan
2020-11-17 13:22     ` Borislav Petkov
2020-11-17 19:42     ` Jarkko Sakkinen [this message]
2020-11-17 17:26   ` Borislav Petkov
2020-11-17 21:27     ` Jarkko Sakkinen
2020-11-17 21:38     ` Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 21/24] x86/sgx: Add a page reclaimer Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 22/24] x86/sgx: Add ptrace() support for the SGX driver Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 23/24] docs: x86/sgx: Document SGX kernel architecture Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] Documentation/x86: " tip-bot2 for Jarkko Sakkinen
2020-11-12 22:01 ` [PATCH v41 24/24] x86/sgx: Update MAINTAINERS Jarkko Sakkinen
2020-11-18 17:18   ` [tip: x86/sgx] " tip-bot2 for Jarkko Sakkinen
2020-11-16 16:55 ` [PATCH v41 00/24] Intel SGX foundations Borislav Petkov
2020-11-16 17:21   ` Dave Hansen
2020-11-16 17:28     ` Borislav Petkov
2020-11-17 19:20       ` Jarkko Sakkinen
     [not found] ` <20201114084211.5284-1-hdanton@sina.com>
2020-11-16 18:33   ` [PATCH v41 05/24] x86/sgx: Initialize metadata for Enclave Page Cache (EPC) sections Dave Hansen
     [not found] ` <20201115040127.7804-1-hdanton@sina.com>
2020-11-16 21:11   ` [PATCH v41 11/24] x86/sgx: Add SGX misc driver interface Dave Hansen
     [not found] ` <20201114090708.8684-1-hdanton@sina.com>
2020-11-17 18:12   ` [PATCH v41 06/24] x86/mm: x86/sgx: Signal SIGSEGV with PF_SGX Jarkko Sakkinen
     [not found] ` <20201114093256.7800-1-hdanton@sina.com>
2020-11-17 18:14   ` [PATCH v41 09/24] x86/sgx: Add SGX page allocator functions Jarkko Sakkinen
     [not found] ` <20201115030548.1572-1-hdanton@sina.com>
2020-11-17 18:22   ` [PATCH v41 10/24] mm: Add 'mprotect' hook to struct vm_operations_struct Jarkko Sakkinen
2020-12-15  5:38 ` [PATCH v41 00/24] Intel SGX foundations Hui, Chunyang
2020-12-15  5:43 ` Hui, Chunyang
2020-12-15 15:58   ` Jarkko Sakkinen

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=20201117194217.GG10393@kernel.org \
    --to=jarkko@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=asapek@google.com \
    --cc=bp@alien8.de \
    --cc=cedric.xing@intel.com \
    --cc=chenalexchen@google.com \
    --cc=conradparker@google.com \
    --cc=cyhanish@google.com \
    --cc=dave.hansen@intel.com \
    --cc=haitao.huang@intel.com \
    --cc=jethro@fortanix.com \
    --cc=kai.huang@intel.com \
    --cc=kai.svahn@intel.com \
    --cc=kmoy@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-sgx@vger.kernel.org \
    --cc=ludloff@google.com \
    --cc=luto@kernel.org \
    --cc=mikko.ylinen@intel.com \
    --cc=nhorman@redhat.com \
    --cc=npmccallum@redhat.com \
    --cc=puiterwijk@redhat.com \
    --cc=rientjes@google.com \
    --cc=sean.j.christopherson@intel.com \
    --cc=shuah@kernel.org \
    --cc=skhan@linuxfoundation.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=yaozhangx@google.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.