Hi,
The following 2 patches are needed to fix build warnings on Debian/m68k
4.0.
However, after wiring up the mlock2 syscall, the test fails with:
# ./mlock2-tests
fread kpageflags: Success
#
as the fread() call returns 0, not 1.
The original commit description for the test said "Note that the limit
test needs to be run a normal user.". But running it as a non-root user
also fails:
$ ./mlock2-tests
fopen kpageflags: Permission denied
$ ls -l /proc/kpageflags
-r-------- 1 root root 0 Nov 9 11:05 /proc/kpageflags
$
What am I missing?
Thanks!
Geert Uytterhoeven (2):
selftests/mlock2: Add missing #define _GNU_SOURCE
selftests/mlock2: Add ULL prefix to 64-bit constants
tools/testing/selftests/vm/mlock2-tests.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--
1.9.1
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On glibc 2.3.6:
mlock2-tests.c: In function 'seek_to_smaps_entry':
mlock2-tests.c:158: warning: implicit declaration of function 'getline'
According to the manpage of getline(), it needs _GNU_SOURCE before glibc
2.10.
Signed-off-by: Geert Uytterhoeven <[email protected]>
---
tools/testing/selftests/vm/mlock2-tests.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/vm/mlock2-tests.c b/tools/testing/selftests/vm/mlock2-tests.c
index 4431994aade2ef6f..cb247219f1f72889 100644
--- a/tools/testing/selftests/vm/mlock2-tests.c
+++ b/tools/testing/selftests/vm/mlock2-tests.c
@@ -1,3 +1,4 @@
+#define _GNU_SOURCE
#include <sys/mman.h>
#include <stdint.h>
#include <stdio.h>
--
1.9.1
On 32-bit (e.g. m68k):
mlock2-tests.c: In function 'lock_check':
mlock2-tests.c:293: warning: integer constant is too large for 'long' type
mlock2-tests.c:294: warning: integer constant is too large for 'long' type
mlock2-tests.c:299: warning: integer constant is too large for 'long' type
mlock2-tests.c:300: warning: integer constant is too large for 'long' type
mlock2-tests.c: In function 'unlock_lock_check':
mlock2-tests.c:329: warning: integer constant is too large for 'long' type
mlock2-tests.c:330: warning: integer constant is too large for 'long' type
mlock2-tests.c: In function 'onfault_check':
mlock2-tests.c:398: warning: integer constant is too large for 'long' type
mlock2-tests.c:398: warning: integer constant is too large for 'long' type
mlock2-tests.c:408: warning: integer constant is too large for 'long' type
mlock2-tests.c:411: warning: integer constant is too large for 'long' type
mlock2-tests.c:416: warning: integer constant is too large for 'long' type
mlock2-tests.c: In function 'unlock_onfault_check':
mlock2-tests.c:443: warning: integer constant is too large for 'long' type
mlock2-tests.c: In function 'test_lock_onfault_of_present':
mlock2-tests.c:528: warning: integer constant is too large for 'long' type
mlock2-tests.c:529: warning: integer constant is too large for 'long' type
Signed-off-by: Geert Uytterhoeven <[email protected]>
---
tools/testing/selftests/vm/mlock2-tests.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/vm/mlock2-tests.c b/tools/testing/selftests/vm/mlock2-tests.c
index cb247219f1f72889..02ca5e0177c539c7 100644
--- a/tools/testing/selftests/vm/mlock2-tests.c
+++ b/tools/testing/selftests/vm/mlock2-tests.c
@@ -277,8 +277,8 @@ out:
return ret;
}
-#define PRESENT_BIT 0x8000000000000000
-#define PFN_MASK 0x007FFFFFFFFFFFFF
+#define PRESENT_BIT 0x8000000000000000ULL
+#define PFN_MASK 0x007FFFFFFFFFFFFFULL
#define UNEVICTABLE_BIT (1UL << 18)
static int lock_check(char *map)
--
1.9.1
On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:
> Hi,
>
> The following 2 patches are needed to fix build warnings on Debian/m68k
> 4.0.
>
> However, after wiring up the mlock2 syscall, the test fails with:
>
> # ./mlock2-tests
> fread kpageflags: Success
> #
>
> as the fread() call returns 0, not 1.
This would fail is the index into the kpageflags file is not being
calculated properly. This tests works on x86_64 (I am in the process of
testing x86 incase this is a 32bit issue). I am fairly sure that I
tested it on x86, but it has been a while.
>
> The original commit description for the test said "Note that the limit
> test needs to be run a normal user.". But running it as a non-root user
> also fails:
The original commit says that the on-fault-limit test needs to be run as
a regular user becuase it relies on enforcing memory limits.
mlock2-tests has to be run as root to get access to the various files
under /proc it needs to verify things are working.
>
> $ ./mlock2-tests
> fopen kpageflags: Permission denied
> $ ls -l /proc/kpageflags
> -r-------- 1 root root 0 Nov 9 11:05 /proc/kpageflags
> $
>
> What am I missing?
>
> Thanks!
>
> Geert Uytterhoeven (2):
> selftests/mlock2: Add missing #define _GNU_SOURCE
> selftests/mlock2: Add ULL prefix to 64-bit constants
>
> tools/testing/selftests/vm/mlock2-tests.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> --
> 1.9.1
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds
On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:
> On glibc 2.3.6:
>
> mlock2-tests.c: In function 'seek_to_smaps_entry':
> mlock2-tests.c:158: warning: implicit declaration of function 'getline'
>
> According to the manpage of getline(), it needs _GNU_SOURCE before glibc
> 2.10.
>
> Signed-off-by: Geert Uytterhoeven <[email protected]>
Acked-by: Eric B Munson <[email protected]>
> ---
> tools/testing/selftests/vm/mlock2-tests.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tools/testing/selftests/vm/mlock2-tests.c b/tools/testing/selftests/vm/mlock2-tests.c
> index 4431994aade2ef6f..cb247219f1f72889 100644
> --- a/tools/testing/selftests/vm/mlock2-tests.c
> +++ b/tools/testing/selftests/vm/mlock2-tests.c
> @@ -1,3 +1,4 @@
> +#define _GNU_SOURCE
> #include <sys/mman.h>
> #include <stdint.h>
> #include <stdio.h>
> --
> 1.9.1
>
On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:
> On 32-bit (e.g. m68k):
>
> mlock2-tests.c: In function 'lock_check':
> mlock2-tests.c:293: warning: integer constant is too large for 'long' type
> mlock2-tests.c:294: warning: integer constant is too large for 'long' type
> mlock2-tests.c:299: warning: integer constant is too large for 'long' type
> mlock2-tests.c:300: warning: integer constant is too large for 'long' type
> mlock2-tests.c: In function 'unlock_lock_check':
> mlock2-tests.c:329: warning: integer constant is too large for 'long' type
> mlock2-tests.c:330: warning: integer constant is too large for 'long' type
> mlock2-tests.c: In function 'onfault_check':
> mlock2-tests.c:398: warning: integer constant is too large for 'long' type
> mlock2-tests.c:398: warning: integer constant is too large for 'long' type
> mlock2-tests.c:408: warning: integer constant is too large for 'long' type
> mlock2-tests.c:411: warning: integer constant is too large for 'long' type
> mlock2-tests.c:416: warning: integer constant is too large for 'long' type
> mlock2-tests.c: In function 'unlock_onfault_check':
> mlock2-tests.c:443: warning: integer constant is too large for 'long' type
> mlock2-tests.c: In function 'test_lock_onfault_of_present':
> mlock2-tests.c:528: warning: integer constant is too large for 'long' type
> mlock2-tests.c:529: warning: integer constant is too large for 'long' type
>
> Signed-off-by: Geert Uytterhoeven <[email protected]>
Acked-by: Eric B Munson <[email protected]>
> ---
> tools/testing/selftests/vm/mlock2-tests.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/vm/mlock2-tests.c b/tools/testing/selftests/vm/mlock2-tests.c
> index cb247219f1f72889..02ca5e0177c539c7 100644
> --- a/tools/testing/selftests/vm/mlock2-tests.c
> +++ b/tools/testing/selftests/vm/mlock2-tests.c
> @@ -277,8 +277,8 @@ out:
> return ret;
> }
>
> -#define PRESENT_BIT 0x8000000000000000
> -#define PFN_MASK 0x007FFFFFFFFFFFFF
> +#define PRESENT_BIT 0x8000000000000000ULL
> +#define PFN_MASK 0x007FFFFFFFFFFFFFULL
> #define UNEVICTABLE_BIT (1UL << 18)
>
> static int lock_check(char *map)
> --
> 1.9.1
>
On Mon, 09 Nov 2015, Eric B Munson wrote:
> On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:
>
> > Hi,
> >
> > The following 2 patches are needed to fix build warnings on Debian/m68k
> > 4.0.
> >
> > However, after wiring up the mlock2 syscall, the test fails with:
> >
> > # ./mlock2-tests
> > fread kpageflags: Success
> > #
> >
> > as the fread() call returns 0, not 1.
>
> This would fail is the index into the kpageflags file is not being
> calculated properly. This tests works on x86_64 (I am in the process of
> testing x86 incase this is a 32bit issue). I am fairly sure that I
> tested it on x86, but it has been a while.
I can confirm that this test works on x86 as well as x86_64.
Unfortunately, I do not have access to m68k hardware to help debug this.
>
> >
> > The original commit description for the test said "Note that the limit
> > test needs to be run a normal user.". But running it as a non-root user
> > also fails:
>
> The original commit says that the on-fault-limit test needs to be run as
> a regular user becuase it relies on enforcing memory limits.
> mlock2-tests has to be run as root to get access to the various files
> under /proc it needs to verify things are working.
>
> >
> > $ ./mlock2-tests
> > fopen kpageflags: Permission denied
> > $ ls -l /proc/kpageflags
> > -r-------- 1 root root 0 Nov 9 11:05 /proc/kpageflags
> > $
> >
> > What am I missing?
> >
> > Thanks!
> >
> > Geert Uytterhoeven (2):
> > selftests/mlock2: Add missing #define _GNU_SOURCE
> > selftests/mlock2: Add ULL prefix to 64-bit constants
> >
> > tools/testing/selftests/vm/mlock2-tests.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > --
> > 1.9.1
> >
> > Gr{oetje,eeting}s,
> >
> > Geert
> >
> > --
> > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
> >
> > In personal conversations with technical people, I call myself a hacker. But
> > when I'm talking to journalists I just say "programmer" or something like that.
> > -- Linus Torvalds
Hi Eric,
[CC linux-arch for more architecture-specific breakage]
On Mon, Nov 9, 2015 at 4:48 PM, Eric B Munson <[email protected]> wrote:
> On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:
>> The following 2 patches are needed to fix build warnings on Debian/m68k
>> 4.0.
>>
>> However, after wiring up the mlock2 syscall, the test fails with:
>>
>> # ./mlock2-tests
>> fread kpageflags: Success
>> #
>>
>> as the fread() call returns 0, not 1.
>
> This would fail is the index into the kpageflags file is not being
> calculated properly. This tests works on x86_64 (I am in the process of
> testing x86 incase this is a 32bit issue). I am fairly sure that I
> tested it on x86, but it has been a while.
Found it: /proc/kpageflags is always empty, as m68k doesn't set up max_pfn.
After fixing that, the test is working fine.
Funny how we managed to survive that long without setting it ;-)
Note that several other architectures also don't set max_pfn. Some may
be nommu, and are thus not affected, but others probably are:
hexagon
mn10300
nios2
score
And a few of the others (e.g. avr32, didn't check all of them) assign to a
local max_pfn variable instead of the global one, so it won't work on those
neither.
>> The original commit description for the test said "Note that the limit
>> test needs to be run a normal user.". But running it as a non-root user
>> also fails:
>
> The original commit says that the on-fault-limit test needs to be run as
> a regular user becuase it relies on enforcing memory limits.
> mlock2-tests has to be run as root to get access to the various files
> under /proc it needs to verify things are working.
Ah, I just used "git log -p" on mlock2-tests.c, and didn't notice the commit
actually added two tests.
Thanks!
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds