linux-mips
[Top] [All Lists]

Re: [PATCH 1/2] MIPS: Loongson, add sync before target of branch between

To: Paul Burton <pburton@wavecomp.com>
Subject: Re: [PATCH 1/2] MIPS: Loongson, add sync before target of branch between llsc
From: Yunqiang Su <ysu@wavecomp.com>
Date: Thu, 10 Jan 2019 01:59:07 +0000
Accept-language: en-US, zh-CN
Authentication-results: spf=none (sender IP is ) smtp.mailfrom=ysu@wavecomp.com;
Cc: YunQiang Su <syq@debian.org>, "linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>, "chehc@lemote.com" <chehc@lemote.com>, "zhangfx@lemote.com" <zhangfx@lemote.com>, "wuzhangjin@gmail.com" <wuzhangjin@gmail.com>, "linux-mips@linux-mips.org" <linux-mips@linux-mips.org>, "paul.hua.gm@gmail.com" <paul.hua.gm@gmail.com>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wavesemi.onmicrosoft.com; s=selector1-wavecomp-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wtHj2ER+I05sb6QczYUrvhMCaf3iCTO9kDiUfwjV84w=; b=UYa63obrsMvONA+SauSZzy5SVZc6IonxeiAyXwqZYCXeLoGkuGF21iu0oUFNydcO2xQQ1V56S8lsfDDYo58UPK7SX6H2UfsIz9o0b4+DHyLkb+0cM2yjc172RSfvPWyVmM0V/aNJOOHpfVTeEPE5BSFyhQV8TG5S4whZtFaNUTU=
In-reply-to: <20190109220844.qk5ufkzjmfwxe5aq@pburton-laptop>
List-archive: <http://www.linux-mips.org/archives/linux-mips/>
List-help: <mailto:ecartis@linux-mips.org?Subject=help>
List-id: linux-mips <linux-mips.eddie.linux-mips.org>
List-owner: <mailto:ralf@linux-mips.org>
List-post: <mailto:linux-mips@linux-mips.org>
List-software: Ecartis version 1.0.0
List-subscribe: <mailto:ecartis@linux-mips.org?subject=subscribe%20linux-mips>
List-unsubscribe: <mailto:ecartis@linux-mips.org?subject=unsubscribe%20linux-mips>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20190105150037.30261-1-syq@debian.org> <20190109220844.qk5ufkzjmfwxe5aq@pburton-laptop>
Sender: linux-mips-bounce@linux-mips.org
Spamdiagnosticmetadata: NSPM
Spamdiagnosticoutput: 1:99
Thread-index: AQHUpQeBO1EnxrgIuU2pvOIUsWAth6WnhbgAgABAWwA=
Thread-topic: [PATCH 1/2] MIPS: Loongson, add sync before target of branch between llsc

> 在 2019年1月10日,上午6:08,Paul Burton <pburton@wavecomp.com> 写道:
> 
> Hi YunQiang,
> 
> On Sat, Jan 05, 2019 at 11:00:36PM +0800, YunQiang Su wrote:
>> Loongson 2G/2H/3A/3B is quite weak sync'ed. If there is a branch,
>> and the target is not in the scope of ll/sc or lld/scd, a sync is
>> needed at the postion of target.
> 
> OK, so is this the same issue that the second patch in the series is
> working around or a different one?
> 
> I'm pretty confused at this point about what the actual bugs are in
> these various Loongson CPUs. Could someone provide an actual errata
> writeup describing the bugs in detail?
> 
> What does "in the scope of ll/sc" mean?
> 

Loongson 3 series has some version, called, 1000, 2000, and 3000.

There are 2 bugs all about LL/SC. Let’s call them bug-1 and bug-2.

BUG-1:  a `sync’ is needed before LL or LLD instruction.
              This bug appears on 1000 only, and I am sure that it has been 
fixed in 3000.

BUG-2: if there is an branch instruction inside LL/SC, and the branch target is 
outside
             of the scope of LL/SC, a `sync’ is needed at the branch target.
             Aka, the first insn of the target branch should be `sync’.
             Loongson said that, we don’t plan fix this problem in short time 
before they
             Designe a totally new core.
              

> What happens if a branch target is not "in the scope of ll/sc”?

At least they said that there won’t be a problem

> How does the sync help?
> 
> Are jumps affected, or just branches?

I am not sure, so CC a Loongson people.
@Paul Hua

> 
> Does this affect userland as well as the kernel?
> 

There is few place can trigger these 2 bugs in kernel.
In user land we have to workaround in binutils:  
   https://www.sourceware.org/ml/binutils/2019-01/msg00025.html

In fact the kernel is the easiest since we can have a flavor build for Loongson.

> ...and probably more questions depending upon the answers to these ones.
> 
>> Loongson doesn't plan to fix this problem in future, so we add the
>> sync here for any condition.
> 
> So are you saying that future Loongson CPUs will all be buggy too, and
> someone there has said that they consider this to be OK..? I really
> really hope that is not true.
> 

Bug is bug. It is not OK.
I blame these Loongson guys here.
Some Loongson guys is not so normal people.
Anyway they are a little more normal now, and anyway again, still abnormal.

> If hardware people say they're not going to fix their bugs then working
> around them is definitely not going to be a priority. It's one thing if
> a CPU designer says "oops, my bad, work around this & I'll fix it next
> time". It's quite another for them to say they're not interested in
> fixing their bugs at all.

They have interests, while I guess the true reason is that they have no enough
people and money to desgin a core, while this bug is quilt hard to fix.

> 
> Thanks,
>    Paul

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