linux-mips
[Top] [All Lists]

Re: [PATCH 8/12] cerr-printk-not-prom-printf

To: Dominic Sweetman <dom@mips.com>
Subject: Re: [PATCH 8/12] cerr-printk-not-prom-printf
From: Ralf Baechle <ralf@linux-mips.org>
Date: Thu, 20 Oct 2005 12:17:11 +0100
Cc: Andrew Isaacson <adi@broadcom.com>, linux-mips@linux-mips.org
In-reply-to: <17239.31049.107570.828550@arsenal.mips.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20051020065320.GA23857@broadcom.com> <20051020065757.GH23899@broadcom.com> <20051020104902.GA9491@linux-mips.org> <17239.31049.107570.828550@arsenal.mips.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.4.2.1i
On Thu, Oct 20, 2005 at 12:02:33PM +0100, Dominic Sweetman wrote:

> > The reason for this old commit was that this code is running
> > uncached, so the operation of ll/sc in the spinlocks is undefined
> > according to the MIPS64 spec...
> 
> The answer is more complicated.  MIPS64 (elsewhere) requires that the
> ll/sc "link" is broken on an exceptin - in fact on an 'eret'
> instruction.

But in case of the code in question no eret will be executed between taking
the cache error exception and printk trying to take the lock.

> So ll/sc on an uncached location works just fine in a uniprocessor.  
> However, it's unlikely that any cache-coherent mulitprocessor system
> will snoop uncached reads and writes, so it won't work in an SMP
> system.

Fine - but at that point we could have two processors messing with the
same buffers.  Bad Thing (TM).

  Ralf

<Prev in Thread] Current Thread [Next in Thread>