From: Jun Sun <jsun@mvista.com>
To: Justin Carlson <justin@cs.cmu.edu>
Cc: linux-mips@oss.sgi.com
Subject: Re: Atomicity & preemptive kernels
Date: Mon, 10 Jun 2002 15:14:13 -0700 [thread overview]
Message-ID: <3D0524B5.403@mvista.com> (raw)
In-Reply-To: 1023738247.1133.56.camel@localhost.localdomain
Justin Carlson wrote:
> I know we're not there yet, but I'm trying to understand some issues
> with rml's preemptive kernel and ASID's.
>
> While doing a virtually-tagged hit invalidate of a cache, I was going to
> write code something like this;
>
> set_entryhi(CPU_CONTEXT(cpu, mm->vm_mm));
> hit_invalidate_range(start, end);
> set_entryhi(CPU_CONTEXT(cpu, current->mm));
>
> Insofar as I understand current kernel scheduling guarantees, this is
> safe because we won't reschedule while running in kernel mode. But, if
> I'm looking ahead to the preemptive kernel, then I think there is a
> slight window for a race in between the reading of current->mm and
> the setting of entryhi. Something like this:
>
> current->mm->context is read
> * kernel reschedules.
> * switch_mm() called
> * current->mm->context changes on return to this process
> entryhi is set to the wrong context.
>
> Is this a real race?
I am not sure if I am following your logic, but I don't see a race condition here.
Once current->mm is read into a register, the register is saved into stack
when an interrupt happens (which later incurs a reschedule presumbably). When
the current preempted process comes back later, it goes back to the "tail" of
do_IRQ(), followed by restoring the registers. Since the register now holds
the right value, set_entryhi() should be correct.
BTW, I have preemptiable kernel working fine under both UP and SMP. If there
is much interestes, I will publish it on the list.
Jun
next prev parent reply other threads:[~2002-06-10 22:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-10 19:44 Atomicity & preemptive kernels Justin Carlson
2002-06-10 22:14 ` Jun Sun [this message]
2002-06-11 0:00 ` Justin Carlson
2002-06-11 18:44 ` Jun Sun
2002-06-11 19:56 ` Justin Carlson
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=3D0524B5.403@mvista.com \
--to=jsun@mvista.com \
--cc=justin@cs.cmu.edu \
--cc=linux-mips@oss.sgi.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox