From: Aurelien Jarno <aurelien@aurel32.net>
To: Serge Vakulenko <serge.vakulenko@gmail.com>
Cc: Leon Alrae <leon.alrae@imgtec.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH pic32 v2 2/5] Fixed random index generation for TLBWR instruction. It was not quite random and did not skip Wired entries.
Date: Mon, 6 Jul 2015 10:32:31 +0200 [thread overview]
Message-ID: <20150706083231.GT931@aurel32.net> (raw)
In-Reply-To: <CAJ9hpfEMOumRushBVzUYqp3qDp-=ab2H=dCH9F0kmZv+iiaKUg@mail.gmail.com>
On 2015-07-05 17:03, Serge Vakulenko wrote:
> On Wed, Jul 1, 2015 at 3:11 AM, Aurelien Jarno <aurelien@aurel32.net> wrote:
> > On 2015-06-30 21:12, Serge Vakulenko wrote:
> >> Signed-off-by: Serge Vakulenko <serge.vakulenko@gmail.com>
> >> ---
> >> hw/mips/cputimer.c | 18 +++++-------------
> >> 1 file changed, 5 insertions(+), 13 deletions(-)
> >>
> >> diff --git a/hw/mips/cputimer.c b/hw/mips/cputimer.c
> >> index 4f02a9f..94a29df 100644
> >> --- a/hw/mips/cputimer.c
> >> +++ b/hw/mips/cputimer.c
> >> @@ -25,21 +25,13 @@
> >> #include "qemu/timer.h"
> >> #include "sysemu/kvm.h"
> >>
> >> -#define TIMER_FREQ 100 * 1000 * 1000
> >> -
> >> -/* XXX: do not use a global */
> >> +/* Generate a random TLB index.
> >> + * Skip wired entries. */
> >> uint32_t cpu_mips_get_random (CPUMIPSState *env)
> >> {
> >> - static uint32_t lfsr = 1;
> >> - static uint32_t prev_idx = 0;
> >> - uint32_t idx;
> >> - /* Don't return same value twice, so get another value */
> >> - do {
> >> - lfsr = (lfsr >> 1) ^ (-(lfsr & 1u) & 0xd0000001u);
> >> - idx = lfsr % (env->tlb->nb_tlb - env->CP0_Wired) + env->CP0_Wired;
> >> - } while (idx == prev_idx);
> >> - prev_idx = idx;
> >> - return idx;
> >> + env->CP0_Random = env->CP0_Wired +
> >> + random() % (env->tlb->nb_tlb - env->CP0_Wired);
> >> + return env->CP0_Random;
> >> }
> >>
> >> /* MIPS R4K timer */
> >
> > Can you please give us more details about what issue you are trying to
> > fix there? Especially I don't understand about the "skip wired entries"
> > part. It seems the original code handles the wired entries correctly,
> > and at least your patch doesn't seem to change anything regarded that
> > part.
>
> The original code looks fine by itself. But when you try to run in for
> nb_tlb=16 and CP0_Wired=1, you get a sequence:
>
> 15, 6, 7, 2, 7, 2, 7, 2, 7, 2, 7, 2, 7, 2, 7, 2, 7, 2, 7, 2, 7, 2, 7,
> 2, 7, 2, 7, 2...
>
> This is what happens when 4.4bsd kernel starts on pic32mz processor.
> It makes the VM subsystem a bit crazy. Later the sequence becomes
> better, but I think it makes sense to improve it somehow.
>
Thanks for the explanation, I know understand the issue and I agree it
should be fixed.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://www.aurel32.net
next prev parent reply other threads:[~2015-07-06 8:32 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-01 4:12 [Qemu-devel] [PATCH pic32 v2 0/5] Support for Microchip pic32mx7 and pic32mz microcontrollers Serge Vakulenko
[not found] ` <cover.1435723168.git.serge.vakulenko@gmail.com>
2015-07-01 4:12 ` [Qemu-devel] [PATCH pic32 v2 1/5] Speed of MIPS CPU timer made configurable per platform Serge Vakulenko
2015-07-01 10:02 ` Aurelien Jarno
2015-07-05 23:25 ` Serge Vakulenko
2015-07-06 8:31 ` Aurelien Jarno
2015-07-01 4:12 ` [Qemu-devel] [PATCH pic32 v2 2/5] Fixed random index generation for TLBWR instruction. It was not quite random and did not skip Wired entries Serge Vakulenko
2015-07-01 10:11 ` Aurelien Jarno
2015-07-03 21:39 ` Maciej W. Rozycki
2015-07-06 0:16 ` Serge Vakulenko
2015-07-06 0:03 ` Serge Vakulenko
2015-07-06 8:32 ` Aurelien Jarno [this message]
2015-07-02 7:52 ` Antony Pavlov
2015-07-06 0:06 ` Serge Vakulenko
2015-07-01 4:12 ` [Qemu-devel] [PATCH pic32 v2 3/5] Added support for external interrupt controller (EIC) mode Serge Vakulenko
2015-07-01 11:07 ` Aurelien Jarno
2015-07-06 3:05 ` Serge Vakulenko
2015-07-06 3:31 ` Serge Vakulenko
2015-07-06 9:31 ` Aurelien Jarno
2015-07-06 9:28 ` Aurelien Jarno
2015-07-01 4:12 ` [Qemu-devel] [PATCH pic32 v2 4/5] Two new processor variants: M4K and microAptivP Serge Vakulenko
2015-07-01 13:37 ` Aurelien Jarno
2015-07-03 22:04 ` Maciej W. Rozycki
2015-07-06 4:15 ` Serge Vakulenko
2015-07-06 3:48 ` Serge Vakulenko
2015-07-06 8:40 ` Aurelien Jarno
2015-07-01 4:12 ` [Qemu-devel] [PATCH pic32 v2 5/5] Two new machine platforms: pic32mz7 and pic32mz Serge Vakulenko
2015-07-01 13:41 ` Aurelien Jarno
2015-07-06 4:18 ` Serge Vakulenko
2015-07-06 7:33 ` Antony Pavlov
2015-07-06 18:58 ` Serge Vakulenko
2015-07-06 21:43 ` Peter Crosthwaite
2015-07-07 7:30 ` Antony Pavlov
2015-07-07 14:08 ` Aurelien Jarno
2015-07-02 5:56 ` Antony Pavlov
2015-07-06 4:27 ` Serge Vakulenko
2015-07-06 7:55 ` Antony Pavlov
2015-07-02 5:31 ` [Qemu-devel] [PATCH pic32 v2 0/5] Support for Microchip pic32mx7 and pic32mz microcontrollers Antony Pavlov
2015-07-06 0:39 ` Serge Vakulenko
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=20150706083231.GT931@aurel32.net \
--to=aurelien@aurel32.net \
--cc=leon.alrae@imgtec.com \
--cc=qemu-devel@nongnu.org \
--cc=serge.vakulenko@gmail.com \
/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.