linux-mips
[Top] [All Lists]

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

To: huangpei <huangpei@loongson.cn>
Subject: Re: [PATCH 1/2] MIPS: Loongson, add sync before target of branch between llsc
From: Yunqiang Su <ysu@wavecomp.com>
Date: Sat, 12 Jan 2019 03:41:56 +0000
Accept-language: en-US, zh-CN
Authentication-results: spf=none (sender IP is ) smtp.mailfrom=ysu@wavecomp.com;
Cc: 徐成华 <xuchenghua@loongson.cn>, Paul Burton <pburton@wavecomp.com>, Paul Burton <pburton@wavecomp.com>, "linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>, "chenhc@lemote.com" <chenhc@lemote.com>, "zhangfx@lemote.com" <zhangfx@lemote.com>, "wuzhangjin@gmail.com" <wuzhangjin@gmail.com>, "linux-mips@linux-mips.org" <linux-mips@linux-mips.org>
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=IHbR0ykXKbT2RawICjzV6p4KC/djqn41wZOhyRaczy8=; b=S4Pt/9OICQ2SoMcuVckgwHQb8yydCr6aJ055AP687sGwnKdU9Vi+6GUa7iuR4FMQpg3z/CU7hi7tR5HqH4ow3C7U1DI/IErWaHeItVpj3lCIvml4FUjnUWu5A3rlTasHwUaQqdGU401ZeHI8YQ1xmimlFiHZ8gQuCRcp+aCSty4=
In-reply-to: <20190112112518.4cc0b1d7@ambrosehua-ThinkPad-X201s>
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: <37e1dca1.5987.1683cede2ff.Coremail.xuchenghua@loongson.cn> <20190112112518.4cc0b1d7@ambrosehua-ThinkPad-X201s>
Sender: linux-mips-bounce@linux-mips.org
Spamdiagnosticmetadata: NSPM
Spamdiagnosticoutput: 1:99
Thread-index: AQHUqarpvsCLr64aWEy92ndIbg3Pu6Wq+YsAgAAEpYA=
Thread-topic: [PATCH 1/2] MIPS: Loongson, add sync before target of branch between llsc
>+#define __LS3A_WAR_LLSC               "       .set mips64r2\nsynci 0\n.set 
>mips0\n"
>+#define __ls3a_war_llsc()     __asm__ __volatile__("synci 0" : : :"memory”)

看起来这个只用于1000,所以我觉得名字应该是 __ls3x1k 或者类似的
俩下划线需要么?

> smp_llsc_mb in cmpxchg.h is enought
enought拼写错了

-               __WEAK_LLSC_MB
                "3:                                                     \n"
+               __WEAK_LLSC_MB

这里可能会影响其他CPU的性能?



 #define TX49XX_ICACHE_INDEX_INV_WAR    0
 #define ICACHE_REFILLS_WORKAROUND_WAR  0
 #define R10000_LLSC_WAR                        0
+#define LOONGSON_LLSC_WAR              0
 #define MIPS34K_MISSED_ITLB_WAR                0

这个应该要搞个CONFIG_啥啥啥 ?毕竟以后的芯片很可能没这问题了。


> 在 2019年1月12日,上午11:25,huangpei <huangpei@loongson.cn> 写道:
> 
> hi, this is the patch for ll/sc bug in Loongson3 based on Linux-4.20
> (8fe28cb58bcb235034b64cbbb7550a8a43fd88be)
> 
> +. it cover all loongson3 CPU;
> 
> +. to fix the ll/sc bug *sufficiently and exactly*, this patch shows
> how many places need to touch
> 
> +. it is built ok for on Loongson3 and Cavium/Octeon, old version is
> tested in high pressure test
> 
> 
> On Fri, 11 Jan 2019 20:40:49 +0800 (GMT+08:00)
> 徐成华 <xuchenghua@loongson.cn> wrote:
> 
>> Hi Paul Burton,
>> 
>> For Loongson 3A1000 and 3A3000, when a memory access instruction
>> (load, store, or prefetch)'s executing occurs between the execution
>> of LL and SC, the success or failure of SC is not predictable.
>> Although programmer would not insert memory access instructions
>> between LL and SC, the memory instructions before LL in
>> program-order, may dynamically executed between the execution of
>> LL/SC, so a memory fence(SYNC) is needed before LL/LLD to avoid this
>> situation.
>> 
>> Since 3A3000, we improved our hardware design to handle this case.
>> But we later deduce a rarely circumstance that some speculatively
>> executed memory instructions due to branch misprediction between
>> LL/SC still fall into the above case, so a memory fence(SYNC) at
>> branch-target(if its target is not between LL/SC) is needed for
>> 3A1000 and 3A3000.
>> 
>> Our processor is continually evolving and we aim to to remove all
>> these workaround-SYNCs around LL/SC for new-come processor. 
>> 
>> 北京市海淀区中关村环保科技示范园龙芯产业园2号楼 100095电话: +86 (10)
>> 62546668传真: +86 (10)
>> 62600826www.loongson.cn本邮件及其附件含有龙芯中科技术有限公司的商业秘密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部
>> 分地泄露、复制或散发)本邮件及其附件中的信息。如果您错收本邮件,请您立即电话或邮件通知发件人并删除本邮件。 
>> 
>> This email and its attachments contain confidential information from
>> Loongson Technology Corporation Limited, which is intended only for
>> the person or entity whose address is listed above. Any use of the
>> information contained herein in any way (including, but not limited
>> to, total or partial disclosure, reproduction or dissemination) by
>> persons other than the intended recipient(s) is prohibited. If you
>> receive this email in error, please notify the sender by phone or
>> email immediately and delete it. 
> <0001-loongson64-add-helper-for-ll-sc-bugfix-in-loongson3.patch><0002-loongson64-fix-ll-sc-bug-of-loongson3-in-inline-asm.patch><0003-loongson64-fix-ll-sc-bug-of-Loongson-3-in-handle_tlb.patch>

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