From: John Hubbard <jhubbard@nvidia.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: David Hildenbrand <david@redhat.com>,
Peter Xu <peterx@redhat.com>, "Shuah Khan" <shuah@kernel.org>,
Nathan Chancellor <nathan@kernel.org>, <linux-mm@kvack.org>,
<linux-kselftest@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
John Hubbard <jhubbard@nvidia.com>
Subject: [PATCH v3 02/11] selftests/mm: fix unused variable warnings in hugetlb-madvise.c, migration.c
Date: Tue, 6 Jun 2023 00:16:28 -0700 [thread overview]
Message-ID: <20230606071637.267103-3-jhubbard@nvidia.com> (raw)
In-Reply-To: <20230606071637.267103-1-jhubbard@nvidia.com>
Dummy variables are required in order to make these two (similar)
routines work, so in both cases, declare the variables as volatile in
order to avoid the clang compiler warning.
Furthermore, in order to ensure that each test actually does what is
intended, add an asm volatile invocation (thanks to David Hildenbrand
for the suggestion), with a clarifying comment so that it survives
future maintenance.
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
tools/testing/selftests/mm/hugetlb-madvise.c | 8 ++++++--
tools/testing/selftests/mm/migration.c | 5 ++++-
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/mm/hugetlb-madvise.c b/tools/testing/selftests/mm/hugetlb-madvise.c
index 28426e30d9bc..d55322df4b73 100644
--- a/tools/testing/selftests/mm/hugetlb-madvise.c
+++ b/tools/testing/selftests/mm/hugetlb-madvise.c
@@ -65,11 +65,15 @@ void write_fault_pages(void *addr, unsigned long nr_pages)
void read_fault_pages(void *addr, unsigned long nr_pages)
{
- unsigned long dummy = 0;
+ volatile unsigned long dummy = 0;
unsigned long i;
- for (i = 0; i < nr_pages; i++)
+ for (i = 0; i < nr_pages; i++) {
dummy += *((unsigned long *)(addr + (i * huge_page_size)));
+
+ /* Prevent the compiler from optimizing out the entire loop: */
+ asm volatile("" : "+r" (dummy));
+ }
}
int main(int argc, char **argv)
diff --git a/tools/testing/selftests/mm/migration.c b/tools/testing/selftests/mm/migration.c
index 1cec8425e3ca..379581567f27 100644
--- a/tools/testing/selftests/mm/migration.c
+++ b/tools/testing/selftests/mm/migration.c
@@ -95,12 +95,15 @@ int migrate(uint64_t *ptr, int n1, int n2)
void *access_mem(void *ptr)
{
- uint64_t y = 0;
+ volatile uint64_t y = 0;
volatile uint64_t *x = ptr;
while (1) {
pthread_testcancel();
y += *x;
+
+ /* Prevent the compiler from optimizing out the writes to y: */
+ asm volatile("" : "+r" (y));
}
return NULL;
--
2.40.1
next prev parent reply other threads:[~2023-06-06 7:17 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-06 7:16 [PATCH v3 00/11] A minor flurry of selftest/mm fixes John Hubbard
2023-06-06 7:16 ` [PATCH v3 01/11] selftests/mm: fix uffd-stress unused function warning John Hubbard
2023-06-06 7:46 ` Muhammad Usama Anjum
2023-06-06 7:16 ` John Hubbard [this message]
2023-06-06 7:48 ` [PATCH v3 02/11] selftests/mm: fix unused variable warnings in hugetlb-madvise.c, migration.c Muhammad Usama Anjum
2023-06-06 7:16 ` [PATCH v3 03/11] selftests/mm: fix "warning: expression which evaluates to zero..." in mlock2-tests.c John Hubbard
2023-06-06 7:49 ` Muhammad Usama Anjum
2023-06-06 7:16 ` [PATCH v3 04/11] selftests/mm: fix invocation of tests that are run via shell scripts John Hubbard
2023-06-06 7:51 ` Muhammad Usama Anjum
2023-06-06 7:16 ` [PATCH v3 05/11] selftests/mm: .gitignore: add mkdirty, va_high_addr_switch John Hubbard
2023-06-06 7:52 ` Muhammad Usama Anjum
2023-06-06 7:16 ` [PATCH v3 06/11] selftests/mm: fix two -Wformat-security warnings in uffd builds John Hubbard
2023-06-06 7:54 ` Muhammad Usama Anjum
2023-06-06 7:16 ` [PATCH v3 07/11] selftests/mm: fix a "possibly uninitialized" warning in pkey-x86.h John Hubbard
2023-06-06 7:55 ` Muhammad Usama Anjum
2023-06-06 7:16 ` [PATCH v3 08/11] selftests/mm: fix build failures due to missing MADV_COLLAPSE John Hubbard
2023-06-06 7:55 ` Muhammad Usama Anjum
2023-06-06 7:16 ` [PATCH v3 09/11] selftests/mm: move certain uffd*() routines from vm_util.c to uffd-common.c John Hubbard
2023-06-06 7:56 ` Muhammad Usama Anjum
2023-06-06 7:16 ` [PATCH v3 10/11] Documentation: kselftest: "make headers" is a prerequisite John Hubbard
2023-06-06 7:57 ` Muhammad Usama Anjum
2023-07-10 14:20 ` Mark Brown
2023-06-06 7:16 ` [PATCH v3 11/11] selftests: error out if kernel header files are not yet built John Hubbard
2023-06-06 7:38 ` Muhammad Usama Anjum
2023-06-06 20:10 ` John Hubbard
2023-06-07 5:37 ` Muhammad Usama Anjum
2023-06-06 7:57 ` Muhammad Usama Anjum
2023-11-03 12:16 ` Peter Zijlstra
2023-11-03 12:22 ` David Hildenbrand
2023-11-03 12:46 ` Peter Zijlstra
2023-11-03 12:59 ` David Hildenbrand
2023-11-03 13:00 ` David Hildenbrand
2023-11-03 13:08 ` Peter Zijlstra
2023-12-08 15:14 ` Peter Zijlstra
2023-12-08 15:21 ` David Hildenbrand
2023-12-08 20:29 ` John Hubbard
2023-12-08 22:10 ` Peter Zijlstra
2023-12-09 1:39 ` John Hubbard
2023-12-08 12:44 ` Miroslav Benes
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=20230606071637.267103-3-jhubbard@nvidia.com \
--to=jhubbard@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nathan@kernel.org \
--cc=peterx@redhat.com \
--cc=shuah@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox