On 7/08/26 03:31, Wandun wrote:
> I found there are false positives in this reproducer.
> I modified the program a little, the diff is as follows,
> the problem can still be reproduced
>
>
> diff --git a/repro.c b/repro.c
> index b1b34d5..59cb417 100644
> --- a/repro.c
> +++ b/repro.c
> @@ -15,6 +15,7 @@ static void *worker_fn(void *arg)
> int fd = (long)arg;
> size_t len = NR_PAGES * PAGE_SIZE;
>
> + mlockall(MCL_ONFAULT | MCL_FUTURE | MCL_CURRENT);
> while (1) {
> if (ftruncate(fd, 0) < 0) {}
> if (ftruncate(fd, len) < 0) {}
> @@ -24,8 +25,6 @@ static void *worker_fn(void *arg)
> if (p == MAP_FAILED)
> continue;
>
> - mlockall(MCL_ONFAULT | MCL_FUTURE);
> -
> for (int i = 0; i < NR_PAGES; i++) {
> for (int j = 0; j < PAGE_SIZE; j++) {
No worries, I can reproduce with that program,
but I still think this is different.
The reproducer passes the MCL_ONFAULT flag to mlockall(),
delaying the actual memory allocation.
However, this is not what I would do in realtime programs and if I do,
these faults are basically memory allocations, where I can
not expect realtime performance guarantees.
If I remove MCL_ONFAULT, I did not manage to hit the migration_entry_wait
with the reproducer.
My guess is, that it only triggers when using CMA,
but I'm not deep enough into that topic to proof that.
--
KUKA Deutschland GmbH Board of Directors: Michael Jürgens (Chairman), Johan
Naten, Hui Zhang Registered Office: Augsburg HRB 14914
This e-mail may contain confidential and/or privileged information. If you are
not the intended recipient (or have received this e-mail in error) please
notify the sender immediately and destroy this e-mail. Any unauthorized
copying, disclosure or distribution of contents of this e-mail is strictly
forbidden.
Please consider the environment before printing this e-mail.