All of lore.kernel.org
 help / color / mirror / Atom feed
From: guohanjun@huawei.com (Hanjun Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] EDAC: Add AMD Seattle SoC EDAC
Date: Wed, 21 Oct 2015 09:35:46 +0800	[thread overview]
Message-ID: <5626EBF2.50107@huawei.com> (raw)
In-Reply-To: <5626B199.4050209@amd.com>

On 2015/10/21 5:26, Brijesh Singh wrote:
> Hi Hanjun,
>
> Thanks for review.
>
> -Brijesh 
> On 10/19/2015 09:21 PM, Hanjun Guo wrote:
>> Hi Brijesh,
>>
>> On 2015/10/20 3:23, Brijesh Singh wrote:
[...]
>> The codes above are common for all A57 architectures, other A57 SoCs will use the same
>> code for L1/L2 caches error report, can we put those codes in common place and reused
>> for all A57 architectures?
>>
> Code is generic to A57 and I will follow Mark Rutland suggestion to make it cortex_a57_edac. If you have something else in mind then please let me know.

Sorry, I missed Mark's comments before I sent my email, I'm fine with
the file name suggested.

>
>>> +
>>> +static void cpu_check_errors(void *args)
>>> +{
>>> +	struct edac_device_ctl_info *edev_ctl = args;
>>> +
>>> +	check_cpumerrsr_el1_error(edev_ctl);
>>> +	check_l2merrsr_el1_error(edev_ctl);
>>> +}
>>> +
>>> +static void edac_check_errors(struct edac_device_ctl_info *edev_ctl)
>>> +{
>>> +	int cpu;
>>> +
>>> +	/* read L1 and L2 memory error syndrome register on possible CPU's */
>>> +	for_each_possible_cpu(cpu)
>>> +		smp_call_function_single(cpu, cpu_check_errors, edev_ctl, 0);
>> Seems that error syndrome registers for L2 cache are cluster lever (each cluster share the
>> L2 cache, you can refer to ARM doc: DDI0488D, Cortex-A57 Technical Reference Manual),
>> so for L2 cache, we need to check the error at cluster lever not the cpu core lever.
>>
> Yes L1 seems to be CPU specific and L2 is shared in a cluster. So I am thinking of making the following changes in this function.
>
> static void edac_check_errors(struct edac_device_ctl_info *edev_ctl)
> {
>         int cpu;
>         struct cpumask cluster_mask, old_mask;
>
>         cpumask_clear(&cluster_mask);
>         cpumask_clear(&old_mask);
>
>         for_each_possible_cpu(cpu) {
>                 smp_call_function_single(cpu, check_cpumerrsr_el1_error, 
>                                          edev_ctl, 0); 
>                 cpumask_copy(&cluster_mask, topology_core_cpumask(cpu));
>                 if (cpumask_equal(&cluster_mask, &old_mask))
>                         continue;
>                 cpumask_copy(&old_mask, &cluster_mask);
>                 smp_call_function_any(&cluster_mask, check_l2merrsr_el1_error,
>                                       edev_ctl, 0); 
>         }   
> }
>
> Read L1 on each CPU and L2 once in a cluster. Does this address your feedback ?

Yes, at least it will work as expected :)

Thanks
Hanjun

WARNING: multiple messages have this Message-ID (diff)
From: Hanjun Guo <guohanjun@huawei.com>
To: Brijesh Singh <brijeshkumar.singh@amd.com>,
	<linux-kernel@vger.kernel.org>, <linux-edac@vger.kernel.org>
Cc: <mark.rutland@arm.com>, <pawel.moll@arm.com>,
	<ijc+devicetree@hellion.org.uk>, <dougthompson@xmission.com>,
	<robh+dt@kernel.org>, <bp@alien8.de>,
	<linux-arm-kernel@lists.infradead.org>, <galak@codeaurora.org>,
	<mchehab@osg.samsung.com>, dingtinahong <dingtianhong@huawei.com>,
	Hanjun Guo <hanjun.guo@linaro.org>
Subject: Re: [PATCH] EDAC: Add AMD Seattle SoC EDAC
Date: Wed, 21 Oct 2015 09:35:46 +0800	[thread overview]
Message-ID: <5626EBF2.50107@huawei.com> (raw)
In-Reply-To: <5626B199.4050209@amd.com>

On 2015/10/21 5:26, Brijesh Singh wrote:
> Hi Hanjun,
>
> Thanks for review.
>
> -Brijesh 
> On 10/19/2015 09:21 PM, Hanjun Guo wrote:
>> Hi Brijesh,
>>
>> On 2015/10/20 3:23, Brijesh Singh wrote:
[...]
>> The codes above are common for all A57 architectures, other A57 SoCs will use the same
>> code for L1/L2 caches error report, can we put those codes in common place and reused
>> for all A57 architectures?
>>
> Code is generic to A57 and I will follow Mark Rutland suggestion to make it cortex_a57_edac. If you have something else in mind then please let me know.

Sorry, I missed Mark's comments before I sent my email, I'm fine with
the file name suggested.

>
>>> +
>>> +static void cpu_check_errors(void *args)
>>> +{
>>> +	struct edac_device_ctl_info *edev_ctl = args;
>>> +
>>> +	check_cpumerrsr_el1_error(edev_ctl);
>>> +	check_l2merrsr_el1_error(edev_ctl);
>>> +}
>>> +
>>> +static void edac_check_errors(struct edac_device_ctl_info *edev_ctl)
>>> +{
>>> +	int cpu;
>>> +
>>> +	/* read L1 and L2 memory error syndrome register on possible CPU's */
>>> +	for_each_possible_cpu(cpu)
>>> +		smp_call_function_single(cpu, cpu_check_errors, edev_ctl, 0);
>> Seems that error syndrome registers for L2 cache are cluster lever (each cluster share the
>> L2 cache, you can refer to ARM doc: DDI0488D, Cortex-A57 Technical Reference Manual),
>> so for L2 cache, we need to check the error at cluster lever not the cpu core lever.
>>
> Yes L1 seems to be CPU specific and L2 is shared in a cluster. So I am thinking of making the following changes in this function.
>
> static void edac_check_errors(struct edac_device_ctl_info *edev_ctl)
> {
>         int cpu;
>         struct cpumask cluster_mask, old_mask;
>
>         cpumask_clear(&cluster_mask);
>         cpumask_clear(&old_mask);
>
>         for_each_possible_cpu(cpu) {
>                 smp_call_function_single(cpu, check_cpumerrsr_el1_error, 
>                                          edev_ctl, 0); 
>                 cpumask_copy(&cluster_mask, topology_core_cpumask(cpu));
>                 if (cpumask_equal(&cluster_mask, &old_mask))
>                         continue;
>                 cpumask_copy(&old_mask, &cluster_mask);
>                 smp_call_function_any(&cluster_mask, check_l2merrsr_el1_error,
>                                       edev_ctl, 0); 
>         }   
> }
>
> Read L1 on each CPU and L2 once in a cluster. Does this address your feedback ?

Yes, at least it will work as expected :)

Thanks
Hanjun


  reply	other threads:[~2015-10-21  1:35 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-19 19:23 [PATCH] EDAC: Add AMD Seattle SoC EDAC Brijesh Singh
2015-10-19 19:23 ` Brijesh Singh
2015-10-19 20:14 ` Borislav Petkov
2015-10-19 20:14   ` Borislav Petkov
2015-10-19 20:52 ` Mark Rutland
2015-10-19 20:52   ` Mark Rutland
2015-10-20 16:44   ` Brijesh Singh
2015-10-20 16:44     ` Brijesh Singh
2015-10-20 16:44     ` Brijesh Singh
2015-10-20 16:57     ` Borislav Petkov
2015-10-20 16:57       ` Borislav Petkov
2015-10-20 16:57       ` Borislav Petkov
2015-10-20 17:26       ` Mark Rutland
2015-10-20 17:26         ` Mark Rutland
2015-10-20 17:26         ` Mark Rutland
2015-10-20 17:36         ` Borislav Petkov
2015-10-20 17:36           ` Borislav Petkov
2015-10-20 17:41           ` Mark Rutland
2015-10-20 17:41             ` Mark Rutland
2015-10-20 17:41             ` Mark Rutland
2015-10-20 19:16             ` Brijesh Singh
2015-10-20 19:16               ` Brijesh Singh
2015-10-20 19:16               ` Brijesh Singh
2015-10-21  1:55           ` Hanjun Guo
2015-10-21  1:55             ` Hanjun Guo
2015-10-21  1:55             ` Hanjun Guo
2015-10-21  9:35             ` Borislav Petkov
2015-10-21  9:35               ` Borislav Petkov
2015-10-21  9:35               ` Borislav Petkov
2015-10-21 10:01               ` Andre Przywara
2015-10-21 10:01                 ` Andre Przywara
2015-10-21 10:01                 ` Andre Przywara
2015-10-21 16:22                 ` Brijesh Singh
2015-10-21 16:22                   ` Brijesh Singh
2015-10-21 16:22                   ` Brijesh Singh
2015-10-23  1:38               ` Hanjun Guo
2015-10-23  1:38                 ` Hanjun Guo
2015-10-23  1:38                 ` Hanjun Guo
2015-10-20 17:25     ` Mark Rutland
2015-10-20 17:25       ` Mark Rutland
2015-10-20 17:25       ` Mark Rutland
2015-10-21  1:45       ` Hanjun Guo
2015-10-21  1:45         ` Hanjun Guo
2015-10-21  1:45         ` Hanjun Guo
2015-10-20  2:21 ` Hanjun Guo
2015-10-20  2:21   ` Hanjun Guo
2015-10-20 21:26   ` Brijesh Singh
2015-10-20 21:26     ` Brijesh Singh
2015-10-21  1:35     ` Hanjun Guo [this message]
2015-10-21  1:35       ` Hanjun Guo

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=5626EBF2.50107@huawei.com \
    --to=guohanjun@huawei.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.