From: Jarkko Sakkinen <jarkko@kernel.org>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: linux-sgx@vger.kernel.org,
Haitao Huang <haitao.huang@linux.intel.com>,
Vijay Dhanraj <vijay.dhanraj@intel.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
Shuah Khan <shuah@kernel.org>,
"open list:KERNEL SELFTEST FRAMEWORK"
<linux-kselftest@vger.kernel.org>,
open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 5/6] selftests/sgx: retry the ioctls returned with EAGAIN
Date: Wed, 31 Aug 2022 05:31:49 +0300 [thread overview]
Message-ID: <Yw7IFcnjbfm3Xgqk@kernel.org> (raw)
In-Reply-To: <5d19be91-3aef-5cbe-6063-3ff3dbd5572b@intel.com>
On Tue, Aug 30, 2022 at 03:56:29PM -0700, Reinette Chatre wrote:
> Hi Haitao and Jarkko,
>
>
> selftests/sgx: Retry the ioctl()s returned with EAGAIN
>
>
> On 8/29/2022 8:12 PM, Jarkko Sakkinen wrote:
> > From: Haitao Huang <haitao.huang@linux.intel.com>
> >
> > For EMODT and EREMOVE ioctls with a large range, kernel
>
> ioctl()s?
Ioctl is common enough to be considered as noun and is
widely phrased like that in commit messages. I don't
see any added clarity.
>
> > may not finish in one shot and return EAGAIN error code
> > and count of bytes of EPC pages on that operations are
> > finished successfully.
> >
> > Change the unclobbered_vdso_oversubscribed_remove test
> > to rerun the ioctls in a loop, updating offset and length
>
> ioctl()s?
>
> > using the byte count returned in each iteration.
> >
>
> This is a valuable addition, thank you very much.
>
> > Signed-off-by: Haitao Huang <haitao.huang@linux.intel.com>
> > Tested-by: Jarkko Sakkinen <jarkko@kernel.org>
> > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > ---
> > tools/testing/selftests/sgx/main.c | 39 +++++++++++++++++++++++-------
> > 1 file changed, 30 insertions(+), 9 deletions(-)
> >
> > diff --git a/tools/testing/selftests/sgx/main.c b/tools/testing/selftests/sgx/main.c
> > index 867e98502120..3268d8b01b0b 100644
> > --- a/tools/testing/selftests/sgx/main.c
> > +++ b/tools/testing/selftests/sgx/main.c
> > @@ -399,7 +399,7 @@ TEST_F_TIMEOUT(enclave, unclobbered_vdso_oversubscribed_remove, 900)
> > unsigned long total_mem;
> > int ret, errno_save;
> > unsigned long addr;
> > - unsigned long i;
> > + unsigned long i, count;
>
> Reverse fir tree?
+1
>
> >
> > /*
> > * Create enclave with additional heap that is as big as all
> > @@ -461,16 +461,27 @@ TEST_F_TIMEOUT(enclave, unclobbered_vdso_oversubscribed_remove, 900)
> > modt_ioc.offset = heap->offset;
> > modt_ioc.length = heap->size;
> > modt_ioc.page_type = SGX_PAGE_TYPE_TRIM;
> > -
> > + count = 0;
> > TH_LOG("Changing type of %zd bytes to trimmed may take a while ...",
> > heap->size);
> > - ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
> > - errno_save = ret == -1 ? errno : 0;
> > + do {
> > + ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_MODIFY_TYPES, &modt_ioc);
> > + errno_save = ret == -1 ? errno : 0;
> > + if (errno_save == EAGAIN) {
> > + count += modt_ioc.count;
> > + modt_ioc.offset += modt_ioc.count;
> > + modt_ioc.length -= modt_ioc.count;
> > + modt_ioc.result = 0;
>
> As part of the test I think it would be helpful to know if there was a result code
> in here. What do you think of failing the test if it is not zero?
I would not mind doing that.
>
> > + modt_ioc.count = 0;
> > + } else
> > + break;
>
> Watch out for unbalanced braces (also later in patch). This causes
> checkpatch.pl noise.
Again. I did run checkpatch to all of these. Will revisit.
>
> > + } while (modt_ioc.length != 0);
> >
> > EXPECT_EQ(ret, 0);
> > EXPECT_EQ(errno_save, 0);
> > EXPECT_EQ(modt_ioc.result, 0);
> > - EXPECT_EQ(modt_ioc.count, heap->size);
> > + count += modt_ioc.count;
> > + EXPECT_EQ(count, heap->size);
> >
> > /* EACCEPT all removed pages. */
> > addr = self->encl.encl_base + heap->offset;
> > @@ -498,15 +509,25 @@ TEST_F_TIMEOUT(enclave, unclobbered_vdso_oversubscribed_remove, 900)
> >
> > remove_ioc.offset = heap->offset;
> > remove_ioc.length = heap->size;
> > -
> > + count = 0;
> > TH_LOG("Removing %zd bytes from enclave may take a while ...",
> > heap->size);
> > - ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_REMOVE_PAGES, &remove_ioc);
> > - errno_save = ret == -1 ? errno : 0;
> > + do {
> > + ret = ioctl(self->encl.fd, SGX_IOC_ENCLAVE_REMOVE_PAGES, &remove_ioc);
> > + errno_save = ret == -1 ? errno : 0;
> > + if (errno_save == EAGAIN) {
> > + count += remove_ioc.count;
> > + remove_ioc.offset += remove_ioc.count;
> > + remove_ioc.length -= remove_ioc.count;
> > + remove_ioc.count = 0;
> > + } else
> > + break;
> > + } while (remove_ioc.length != 0);
> >
> > EXPECT_EQ(ret, 0);
> > EXPECT_EQ(errno_save, 0);
> > - EXPECT_EQ(remove_ioc.count, heap->size);
> > + count += remove_ioc.count;
> > + EXPECT_EQ(count, heap->size);
> > }
> >
> > TEST_F(enclave, clobbered_vdso)
>
> Reinette
BR, Jarkko
next prev parent reply other threads:[~2022-08-31 2:32 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-30 3:12 [PATCH 0/6] x86/sgx: Test and fixes Jarkko Sakkinen
2022-08-30 3:12 ` [PATCH 1/6] x86/sgx: Do not consider unsanitized pages an error Jarkko Sakkinen
2022-08-30 22:54 ` Reinette Chatre
2022-08-31 1:27 ` Huang, Kai
2022-08-31 2:15 ` jarkko
2022-08-31 2:35 ` Huang, Kai
2022-08-31 2:44 ` jarkko
2022-08-31 2:55 ` Huang, Kai
2022-08-31 2:57 ` jarkko
2022-08-31 3:10 ` Jarkko Sakkinen
2022-08-31 3:28 ` Huang, Kai
2022-08-31 3:40 ` jarkko
2022-08-31 3:17 ` Huang, Kai
2022-08-31 15:18 ` Haitao Huang
2022-08-31 18:28 ` jarkko
2022-08-31 18:35 ` Dave Hansen
2022-08-31 18:44 ` jarkko
2022-08-31 18:45 ` jarkko
2022-08-31 20:42 ` Huang, Kai
2022-09-01 22:27 ` jarkko
2022-09-01 22:41 ` Huang, Kai
2022-09-01 23:58 ` jarkko
2022-09-02 0:26 ` Huang, Kai
2022-08-31 1:55 ` Jarkko Sakkinen
2022-08-31 1:58 ` Jarkko Sakkinen
2022-08-31 2:01 ` Jarkko Sakkinen
2022-08-31 18:08 ` Reinette Chatre
2022-08-30 3:12 ` [PATCH 2/6] x86/sgx: Handle VA page allocation failure for EAUG on PF Jarkko Sakkinen
2022-08-30 22:54 ` Reinette Chatre
2022-08-30 3:12 ` [PATCH 3/6] selftests/sgx: Ignore OpenSSL 3.0 deprecated functions warning Jarkko Sakkinen
2022-08-30 18:18 ` Reinette Chatre
2022-08-31 1:07 ` Jarkko Sakkinen
2022-08-30 3:12 ` [PATCH 4/6] selftests/sgx: Add SGX selftest augment_via_eaccept_long Jarkko Sakkinen
2022-08-30 22:55 ` Reinette Chatre
2022-08-31 2:28 ` Jarkko Sakkinen
2022-08-31 18:09 ` Reinette Chatre
2022-09-01 22:16 ` Jarkko Sakkinen
2022-09-01 23:11 ` Reinette Chatre
2022-09-02 0:00 ` Jarkko Sakkinen
2022-09-02 0:02 ` Jarkko Sakkinen
2022-08-30 3:12 ` [PATCH 5/6] selftests/sgx: retry the ioctls returned with EAGAIN Jarkko Sakkinen
2022-08-30 22:56 ` Reinette Chatre
2022-08-31 2:31 ` Jarkko Sakkinen [this message]
2022-08-31 18:09 ` Reinette Chatre
2022-09-01 22:17 ` Jarkko Sakkinen
2022-08-31 18:14 ` Dave Hansen
2022-09-01 22:18 ` Jarkko Sakkinen
2022-08-30 3:12 ` [PATCH 6/6] selftests/sgx: Add a bpftrace script for tracking allocation errors Jarkko Sakkinen
2022-08-30 22:57 ` Reinette Chatre
2022-08-31 2:33 ` Jarkko Sakkinen
2022-08-31 18:10 ` Reinette Chatre
2022-08-31 18:23 ` Jarkko Sakkinen
2022-08-31 18:23 ` Dave Hansen
2022-09-01 22:20 ` Jarkko Sakkinen
2022-09-01 22:34 ` Dave Hansen
2022-09-01 23:55 ` 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=Yw7IFcnjbfm3Xgqk@kernel.org \
--to=jarkko@kernel.org \
--cc=dave.hansen@linux.intel.com \
--cc=haitao.huang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-sgx@vger.kernel.org \
--cc=reinette.chatre@intel.com \
--cc=shuah@kernel.org \
--cc=vijay.dhanraj@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.