From: Maciej Wieczor-Retman <[email protected]>

After the default tag width in LAM (Linear Address Masking) is set to 4
bits, the value isn't strictly related to the CPU features like LAM_U57
or LAM_U48. To emphasise this, remove mentions of _U57 from the selftest
and update the bit width.

Signed-off-by: Maciej Wieczor-Retman <[email protected]>
---
Changelog v3:
- Redo the patch after the removal of the debugfs part.

 tools/testing/selftests/x86/lam.c | 86 +++++++++++++++----------------
 1 file changed, 43 insertions(+), 43 deletions(-)

diff --git a/tools/testing/selftests/x86/lam.c 
b/tools/testing/selftests/x86/lam.c
index 1919fa6daec0..d8f75387b931 100644
--- a/tools/testing/selftests/x86/lam.c
+++ b/tools/testing/selftests/x86/lam.c
@@ -26,9 +26,9 @@
 
 /* LAM modes, these definitions were copied from kernel code */
 #define LAM_NONE                0
-#define LAM_U57_BITS            6
+#define LAM_BITS                4
 
-#define LAM_U57_MASK            (0x3fULL << 57)
+#define LAM_MASK                (0xfULL << 57)
 /* arch prctl for LAM */
 #define ARCH_GET_UNTAG_MASK     0x4001
 #define ARCH_ENABLE_TAGGED_ADDR 0x4002
@@ -175,7 +175,7 @@ static int set_lam(unsigned long lam)
        int ret = 0;
        uint64_t ptr = 0;
 
-       if (lam != LAM_U57_BITS && lam != LAM_NONE)
+       if (lam != LAM_BITS && lam != LAM_NONE)
                return -1;
 
        /* Skip check return */
@@ -185,8 +185,8 @@ static int set_lam(unsigned long lam)
        syscall(SYS_arch_prctl, ARCH_GET_UNTAG_MASK, &ptr);
 
        /* Check mask returned is expected */
-       if (lam == LAM_U57_BITS)
-               ret = (ptr != ~(LAM_U57_MASK));
+       if (lam == LAM_BITS)
+               ret = (ptr != ~(LAM_MASK));
        else if (lam == LAM_NONE)
                ret = (ptr != -1ULL);
 
@@ -204,8 +204,8 @@ static unsigned long get_default_tag_bits(void)
                perror("Fork failed.");
        } else if (pid == 0) {
                /* Set LAM mode in child process */
-               if (set_lam(LAM_U57_BITS) == 0)
-                       lam = LAM_U57_BITS;
+               if (set_lam(LAM_BITS) == 0)
+                       lam = LAM_BITS;
                else
                        lam = LAM_NONE;
                exit(lam);
@@ -230,8 +230,8 @@ static int get_lam(void)
                return -1;
 
        /* Check mask returned is expected */
-       if (ptr == ~(LAM_U57_MASK))
-               ret = LAM_U57_BITS;
+       if (ptr == ~(LAM_MASK))
+               ret = LAM_BITS;
        else if (ptr == -1ULL)
                ret = LAM_NONE;
 
@@ -247,10 +247,10 @@ static uint64_t set_metadata(uint64_t src, unsigned long 
lam)
        srand(time(NULL));
 
        switch (lam) {
-       case LAM_U57_BITS: /* Set metadata in bits 62:57 */
+       case LAM_BITS: /* Set metadata in bits 62:57 */
                /* Get a random non-zero value as metadata */
-               metadata = (rand() % ((1UL << LAM_U57_BITS) - 1) + 1) << 57;
-               metadata |= (src & ~(LAM_U57_MASK));
+               metadata = (rand() % ((1UL << LAM_BITS) - 1) + 1) << 57;
+               metadata |= (src & ~(LAM_MASK));
                break;
        default:
                metadata = src;
@@ -291,7 +291,7 @@ int handle_max_bits(struct testcases *test)
        unsigned long bits = 0;
 
        if (exp_bits != LAM_NONE)
-               exp_bits = LAM_U57_BITS;
+               exp_bits = LAM_BITS;
 
        /* Get LAM max tag bits */
        if (syscall(SYS_arch_prctl, ARCH_GET_MAX_TAG_BITS, &bits) == -1)
@@ -719,8 +719,8 @@ int do_uring(unsigned long lam)
                        uint64_t addr = ((uint64_t)fi->iovecs[i].iov_base);
 
                        switch (lam) {
-                       case LAM_U57_BITS: /* Clear bits 62:57 */
-                               addr = (addr & ~(LAM_U57_MASK));
+                       case LAM_BITS: /* Clear bits 62:57 */
+                               addr = (addr & ~(LAM_MASK));
                                break;
                        }
                        free((void *)addr);
@@ -937,14 +937,14 @@ static void run_test(struct testcases *test, int count)
 static struct testcases uring_cases[] = {
        {
                .later = 0,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_uring,
-               .msg = "URING: LAM_U57. Dereferencing pointer with metadata\n",
+               .msg = "URING: LAM. Dereferencing pointer with metadata\n",
        },
        {
                .later = 1,
                .expected = 1,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_uring,
                .msg = "URING:[Negative] Disable LAM. Dereferencing pointer 
with metadata.\n",
        },
@@ -953,14 +953,14 @@ static struct testcases uring_cases[] = {
 static struct testcases malloc_cases[] = {
        {
                .later = 0,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_malloc,
-               .msg = "MALLOC: LAM_U57. Dereferencing pointer with metadata\n",
+               .msg = "MALLOC: LAM. Dereferencing pointer with metadata\n",
        },
        {
                .later = 1,
                .expected = 2,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_malloc,
                .msg = "MALLOC:[Negative] Disable LAM. Dereferencing pointer 
with metadata.\n",
        },
@@ -976,41 +976,41 @@ static struct testcases bits_cases[] = {
 static struct testcases syscall_cases[] = {
        {
                .later = 0,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_syscall,
-               .msg = "SYSCALL: LAM_U57. syscall with metadata\n",
+               .msg = "SYSCALL: LAM. syscall with metadata\n",
        },
        {
                .later = 1,
                .expected = 1,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_syscall,
                .msg = "SYSCALL:[Negative] Disable LAM. Dereferencing pointer 
with metadata.\n",
        },
        {
                .later = GET_USER_USER,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = get_user_syscall,
                .msg = "GET_USER: get_user() and pass a properly tagged user 
pointer.\n",
        },
        {
                .later = GET_USER_KERNEL_TOP,
                .expected = 1,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = get_user_syscall,
                .msg = "GET_USER:[Negative] get_user() with a kernel pointer 
and the top bit cleared.\n",
        },
        {
                .later = GET_USER_KERNEL_BOT,
                .expected = 1,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = get_user_syscall,
                .msg = "GET_USER:[Negative] get_user() with a kernel pointer 
and the bottom sign-extension bit cleared.\n",
        },
        {
                .later = GET_USER_KERNEL,
                .expected = 1,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = get_user_syscall,
                .msg = "GET_USER:[Negative] get_user() and pass a kernel 
pointer.\n",
        },
@@ -1020,60 +1020,60 @@ static struct testcases mmap_cases[] = {
        {
                .later = 1,
                .expected = 0,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .addr = HIGH_ADDR,
                .test_func = handle_mmap,
-               .msg = "MMAP: First mmap high address, then set LAM_U57.\n",
+               .msg = "MMAP: First mmap high address, then set LAM.\n",
        },
        {
                .later = 0,
                .expected = 0,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .addr = HIGH_ADDR,
                .test_func = handle_mmap,
-               .msg = "MMAP: First LAM_U57, then High address.\n",
+               .msg = "MMAP: First LAM, then High address.\n",
        },
        {
                .later = 0,
                .expected = 0,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .addr = LOW_ADDR,
                .test_func = handle_mmap,
-               .msg = "MMAP: First LAM_U57, then Low address.\n",
+               .msg = "MMAP: First LAM, then Low address.\n",
        },
 };
 
 static struct testcases inheritance_cases[] = {
        {
                .expected = 0,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_inheritance,
-               .msg = "FORK: LAM_U57, child process should get LAM mode same 
as parent\n",
+               .msg = "FORK: LAM, child process should get LAM mode same as 
parent\n",
        },
        {
                .expected = 0,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_thread,
-               .msg = "THREAD: LAM_U57, child thread should get LAM mode same 
as parent\n",
+               .msg = "THREAD: LAM, child thread should get LAM mode same as 
parent\n",
        },
        {
                .expected = 1,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_thread_enable,
                .msg = "THREAD: [NEGATIVE] Enable LAM in child.\n",
        },
        {
                .expected = 1,
                .later = 1,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_thread,
                .msg = "THREAD: [NEGATIVE] Enable LAM in parent after thread 
created.\n",
        },
        {
                .expected = 0,
-               .lam = LAM_U57_BITS,
+               .lam = LAM_BITS,
                .test_func = handle_execve,
-               .msg = "EXECVE: LAM_U57, child process should get disabled LAM 
mode\n",
+               .msg = "EXECVE: LAM, child process should get disabled LAM 
mode\n",
        },
 };
 
@@ -1224,7 +1224,7 @@ int handle_pasid(struct testcases *test)
                if (tmp & 0x1) {
                        /* run set lam mode*/
                        if ((runed & 0x1) == 0) {
-                               err = set_lam(LAM_U57_BITS);
+                               err = set_lam(LAM_BITS);
                                runed = runed | 0x1;
                        } else
                                err = 1;
-- 
2.53.0



Reply via email to