Problems exist in the Chinese translation of io_ordering.txt.
Partly for the difference between Chinese and English character
encoding format, and the others are of the failure to comply
with the ReST markups.
Signed-off-by: Wang Wenhu <[email protected]>
---
v2: resend for the failure of delivering.
.../translations/zh_CN/io_ordering.txt | 72 ++++++++++++-------
1 file changed, 46 insertions(+), 26 deletions(-)
diff --git a/Documentation/translations/zh_CN/io_ordering.txt b/Documentation/translations/zh_CN/io_ordering.txt
index 1f8127bdd415..080ed2911db0 100644
--- a/Documentation/translations/zh_CN/io_ordering.txt
+++ b/Documentation/translations/zh_CN/io_ordering.txt
@@ -29,39 +29,59 @@ Documentation/io_ordering.txt 的中文翻译
这也可以保证后面的写操作只在前面的写操作之后到达设备(这非常类似于内存
屏障操作,mb(),不过仅适用于I/O)。
+A more concrete example from a hypothetical device driver::
+
+ ...
+ CPU A: spin_lock_irqsave(&dev_lock, flags)
+ CPU A: val = readl(my_status);
+ CPU A: ...
+ CPU A: writel(newval, ring_ptr);
+ CPU A: spin_unlock_irqrestore(&dev_lock, flags)
+ ...
+ CPU B: spin_lock_irqsave(&dev_lock, flags)
+ CPU B: val = readl(my_status);
+ CPU B: ...
+ CPU B: writel(newval2, ring_ptr);
+ CPU B: spin_unlock_irqrestore(&dev_lock, flags)
+ ...
+
+
假设一个设备驱动程的具体例子:
+::
+ ...
+ CPU A: spin_lock_irqsave(&dev_lock, flags)
+ CPU A: val = readl(my_status);
+ CPU A: ...
+ CPU A: writel(newval, ring_ptr);
+ CPU A: spin_unlock_irqrestore(&dev_lock, flags)
+ ...
+ CPU B: spin_lock_irqsave(&dev_lock, flags)
+ CPU B: val = readl(my_status);
+ CPU B: ...
+ CPU B: writel(newval2, ring_ptr);
+ CPU B: spin_unlock_irqrestore(&dev_lock, flags)
...
-CPU A: spin_lock_irqsave(&dev_lock, flags)
-CPU A: val = readl(my_status);
-CPU A: ...
-CPU A: writel(newval, ring_ptr);
-CPU A: spin_unlock_irqrestore(&dev_lock, flags)
- ...
-CPU B: spin_lock_irqsave(&dev_lock, flags)
-CPU B: val = readl(my_status);
-CPU B: ...
-CPU B: writel(newval2, ring_ptr);
-CPU B: spin_unlock_irqrestore(&dev_lock, flags)
- ...
+
上述例子中,设备可能会先接收到newval2的值,然后接收到newval的值,问题就
发生了。不过很容易通过下面方法来修复:
+::
- ...
-CPU A: spin_lock_irqsave(&dev_lock, flags)
-CPU A: val = readl(my_status);
-CPU A: ...
-CPU A: writel(newval, ring_ptr);
-CPU A: (void)readl(safe_register); /* 配置寄存器?*/
-CPU A: spin_unlock_irqrestore(&dev_lock, flags)
- ...
-CPU B: spin_lock_irqsave(&dev_lock, flags)
-CPU B: val = readl(my_status);
-CPU B: ...
-CPU B: writel(newval2, ring_ptr);
-CPU B: (void)readl(safe_register); /* 配置寄存器?*/
-CPU B: spin_unlock_irqrestore(&dev_lock, flags)
+ ...
+ CPU A: spin_lock_irqsave(&dev_lock, flags)
+ CPU A: val = readl(my_status);
+ CPU A: ...
+ CPU A: writel(newval, ring_ptr);
+ CPU A: (void)readl(safe_register); /* 配置寄存器?*/
+ CPU A: spin_unlock_irqrestore(&dev_lock, flags)
+ ...
+ CPU B: spin_lock_irqsave(&dev_lock, flags)
+ CPU B: val = readl(my_status);
+ CPU B: ...
+ CPU B: writel(newval2, ring_ptr);
+ CPU B: (void)readl(safe_register); /* 配置寄存器?*/
+ CPU B: spin_unlock_irqrestore(&dev_lock, flags)
在解决方案中,读取safe_register寄存器,触发IO芯片清刷未处理的写操作,
再处理后面的读操作,防止引发数据不一致问题。
--
2.17.1
On Sat, 14 Mar 2020 23:08:55 -0700
Wang Wenhu <[email protected]> wrote:
> Problems exist in the Chinese translation of io_ordering.txt.
> Partly for the difference between Chinese and English character
> encoding format, and the others are of the failure to comply
> with the ReST markups.
So I feel like I'm missing something here...
> Signed-off-by: Wang Wenhu <[email protected]>
> ---
> v2: resend for the failure of delivering.
>
> .../translations/zh_CN/io_ordering.txt | 72 ++++++++++++-------
> 1 file changed, 46 insertions(+), 26 deletions(-)
>
> diff --git a/Documentation/translations/zh_CN/io_ordering.txt b/Documentation/translations/zh_CN/io_ordering.txt
> index 1f8127bdd415..080ed2911db0 100644
> --- a/Documentation/translations/zh_CN/io_ordering.txt
> +++ b/Documentation/translations/zh_CN/io_ordering.txt
> @@ -29,39 +29,59 @@ Documentation/io_ordering.txt 的中文翻译
> 这也可以保证后面的写操作只在前面的写操作之后到达设备(这非常类似于内存
> 屏障操作,mb(),不过仅适用于I/O)。
>
> +A more concrete example from a hypothetical device driver::
> +
> + ...
> + CPU A: spin_lock_irqsave(&dev_lock, flags)
> + CPU A: val = readl(my_status);
> + CPU A: ...
> + CPU A: writel(newval, ring_ptr);
> + CPU A: spin_unlock_irqrestore(&dev_lock, flags)
> + ...
> + CPU B: spin_lock_irqsave(&dev_lock, flags)
> + CPU B: val = readl(my_status);
> + CPU B: ...
> + CPU B: writel(newval2, ring_ptr);
> + CPU B: spin_unlock_irqrestore(&dev_lock, flags)
> + ...
> +
> +
> 假设一个设备驱动程的具体例子:
> +::
>
> + ...
> + CPU A: spin_lock_irqsave(&dev_lock, flags)
> + CPU A: val = readl(my_status);
> + CPU A: ...
> + CPU A: writel(newval, ring_ptr);
> + CPU A: spin_unlock_irqrestore(&dev_lock, flags)
> + ...
> + CPU B: spin_lock_irqsave(&dev_lock, flags)
> + CPU B: val = readl(my_status);
> + CPU B: ...
> + CPU B: writel(newval2, ring_ptr);
> + CPU B: spin_unlock_irqrestore(&dev_lock, flags)
It sure looks like you're adding the same text twice here...?
Thanks,
jon
From: Jonathan Corbet <[email protected]>
Date: 2020-03-21 07:24:26
To: Wang Wenhu <[email protected]>
Cc: Harry Wei <[email protected]>,Alex Shi <[email protected]>,[email protected],[email protected],[email protected]
Subject: Re: [PATCH v2,RESEND] doc: zh_CN: fix style problems for io_ordering.txt>On Sat, 14 Mar 2020 23:08:55 -0700
>Wang Wenhu <[email protected]> wrote:
>
>> Problems exist in the Chinese translation of io_ordering.txt.
>> Partly for the difference between Chinese and English character
>> encoding format, and the others are of the failure to comply
>> with the ReST markups.
>
>So I feel like I'm missing something here...
Some style modification, such as "::" field added within a newline indicating
start of a block. Because of the difference between encoding of Chinese and
English, it did not work well for Chinese to just put it after some Chinese
characters within the same line.
The file is currently a txt file(none rst), so it's OK just ignore the modifactions.
>
>> Signed-off-by: Wang Wenhu <[email protected]>
>> ---
>> v2: resend for the failure of delivering.
>>
>> .../translations/zh_CN/io_ordering.txt | 72 ++++++++++++-------
>> 1 file changed, 46 insertions(+), 26 deletions(-)
>>
>> diff --git a/Documentation/translations/zh_CN/io_ordering.txt b/Documentation/translations/zh_CN/io_ordering.txt
>> index 1f8127bdd415..080ed2911db0 100644
>> --- a/Documentation/translations/zh_CN/io_ordering.txt
>> +++ b/Documentation/translations/zh_CN/io_ordering.txt
>> @@ -29,39 +29,59 @@ Documentation/io_ordering.txt 的中文翻译
>> 这也可以保证后面的写操作只在前面的写操作之后到达设备(这非常类似于内存
>> 屏障操作,mb(),不过仅适用于I/O)。
>>
>> +A more concrete example from a hypothetical device driver::
>> +
>> + ...
>> + CPU A: spin_lock_irqsave(&dev_lock, flags)
>> + CPU A: val = readl(my_status);
>> + CPU A: ...
>> + CPU A: writel(newval, ring_ptr);
>> + CPU A: spin_unlock_irqrestore(&dev_lock, flags)
>> + ...
>> + CPU B: spin_lock_irqsave(&dev_lock, flags)
>> + CPU B: val = readl(my_status);
>> + CPU B: ...
>> + CPU B: writel(newval2, ring_ptr);
>> + CPU B: spin_unlock_irqrestore(&dev_lock, flags)
>> + ...
>> +
>> +
>> 假设一个设备驱动程的具体例子:
>> +::
>>
>> + ...
>> + CPU A: spin_lock_irqsave(&dev_lock, flags)
>> + CPU A: val = readl(my_status);
>> + CPU A: ...
>> + CPU A: writel(newval, ring_ptr);
>> + CPU A: spin_unlock_irqrestore(&dev_lock, flags)
>> + ...
>> + CPU B: spin_lock_irqsave(&dev_lock, flags)
>> + CPU B: val = readl(my_status);
>> + CPU B: ...
>> + CPU B: writel(newval2, ring_ptr);
>> + CPU B: spin_unlock_irqrestore(&dev_lock, flags)
>
>It sure looks like you're adding the same text twice here...?
As I mentioned below the sign-off area, delivery failure happened so
this is just a resent version.
>
>Thanks,
>
>jon
>