All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Andi Kleen <andi@firstfloor.org>
Cc: Ingo Molnar <mingo@elte.hu>,
	tglx@linutronix.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH REPOST for 2.6.25] Use an own random generator for pageattr-test.c
Date: Mon, 10 Mar 2008 19:39:55 -0700	[thread overview]
Message-ID: <20080310193955.9f30bf20.akpm@linux-foundation.org> (raw)
In-Reply-To: <20080311013014.GA28682@basil.nowhere.org>

On Tue, 11 Mar 2008 02:30:14 +0100 Andi Kleen <andi@firstfloor.org> wrote:

> Use an own random generator for pageattr-test.c
> 
> [Repost. Please ack/nack. This is a bug fix and imho a .25 late merge 
> candidate because it fixes a subtle bug]

An Ingo/Thomas thing.

> pageattr-test attempts to be repeatable and uses srandom32 to get a 
> repeatable random number sequence.
> 
> Using srandom32() wasn't a good idea for various reasons:
> - it is per cpu and if the cpu changes on a preemptible kernel it gets lost
> - networking and random32 puts in some own state
> - srandom32() does not actually reset the state, but just adds bits to 
> it
> 
> Instead use a very simple private standard rnd that gives repeatable
> results. I took the reference rand() from ISO-C.
> 
> Signed-off-by: Andi Kleen <ak@suse.de>
> 
> ---
>  arch/x86/mm/pageattr-test.c |   11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> Index: linux/arch/x86/mm/pageattr-test.c
> ===================================================================
> --- linux.orig/arch/x86/mm/pageattr-test.c
> +++ linux/arch/x86/mm/pageattr-test.c
> @@ -101,6 +101,14 @@ static int print_split(struct split_stat
>  static unsigned long addr[NTEST];
>  static unsigned int len[NTEST];
>  
> +static int next = 100;
> +
> +static unsigned my_rand(void)
> +{
> +	next = next * 1103515245 + 12345;
> +	return next;
> +}

`next' should be local to my_rand().

>  /* Change the global bit on random pages in the direct mapping */
>  static int pageattr_test(void)
>  {
> @@ -123,10 +131,9 @@ static int pageattr_test(void)
>  	memset(bm, 0, (max_pfn_mapped + 7) / 8);
>  
>  	failed += print_split(&sa);
> -	srandom32(100);
>  
>  	for (i = 0; i < NTEST; i++) {
> -		unsigned long pfn = random32() % max_pfn_mapped;
> +		unsigned long pfn = my_rand() % max_pfn_mapped;
>  
>  		addr[i] = (unsigned long)__va(pfn << PAGE_SHIFT);
>  		len[i] = random32() % 100;

  reply	other threads:[~2008-03-11  2:40 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-11  1:30 [PATCH REPOST for 2.6.25] Use an own random generator for pageattr-test.c Andi Kleen
2008-03-11  2:39 ` Andrew Morton [this message]
2008-03-11  8:25 ` Thomas Gleixner
2008-03-11 10:45   ` Andi Kleen
2008-03-11 11:41     ` Thomas Gleixner
2008-03-11 11:48       ` Andi Kleen
2008-03-11 21:08         ` Thomas Gleixner
2008-03-11 21:49           ` Andi Kleen
2008-03-11 21:59             ` Thomas Gleixner
2008-03-11 22:11               ` Andi Kleen

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=20080310193955.9f30bf20.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    /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.