All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nikolay Borisov <nik.borisov@suse.com>
To: Yazen Ghannam <yazen.ghannam@amd.com>, linux-edac@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, tony.luck@intel.com,
	x86@kernel.org, avadhut.naik@amd.com, john.allen@amd.com
Subject: Re: [PATCH v2 4/5] x86/mce: Define mce_prep_record() helpers for common and per-CPU fields
Date: Tue, 25 Jun 2024 16:19:40 +0300	[thread overview]
Message-ID: <bbdf9caa-7c0f-44d1-a69d-a5cecc7cd4fa@suse.com> (raw)
In-Reply-To: <20240624212008.663832-5-yazen.ghannam@amd.com>



On 25.06.24 г. 0:20 ч., Yazen Ghannam wrote:
> Generally, MCA information for an error is gathered on the CPU that
> reported the error. In this case, CPU-specific information from the
> running CPU will be correct.
> 
> However, this will be incorrect if the MCA information is gathered while
> running on a CPU that didn't report the error. One example is creating
> an MCA record using mce_prep_record() for errors reported from ACPI.
> 
> Split mce_prep_record() so that there is a helper function to gather
> common, i.e. not CPU-specific, information and another helper for
> CPU-specific information.
> 
> Leave mce_prep_record() defined as-is for the common case when running
> on the reporting CPU.
> 
> Get MCG_CAP in the global helper even though the register is per-CPU.
> This value is not already cached per-CPU like other values. And it does
> not assist with any per-CPU decoding or handling.
> 
> Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
> ---
> Link:
> https://lkml.kernel.org/r/20240521125434.1555845-3-yazen.ghannam@amd.com
> 
> v1->v2:
> * No change.
> 
>   arch/x86/kernel/cpu/mce/core.c     | 34 ++++++++++++++++++++----------
>   arch/x86/kernel/cpu/mce/internal.h |  2 ++
>   2 files changed, 25 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
> index dd5192ef52e0..0133f88dfffb 100644
> --- a/arch/x86/kernel/cpu/mce/core.c
> +++ b/arch/x86/kernel/cpu/mce/core.c
> @@ -117,20 +117,32 @@ static struct irq_work mce_irq_work;
>    */
>   BLOCKING_NOTIFIER_HEAD(x86_mce_decoder_chain);
>   
> -/* Do initial initialization of a struct mce */
> -void mce_prep_record(struct mce *m)
> +void mce_prep_record_common(struct mce *m)
>   {
>   	memset(m, 0, sizeof(struct mce));
> -	m->cpu = m->extcpu = smp_processor_id();
> +
> +	m->cpuid	= cpuid_eax(1);
> +	m->cpuvendor	= boot_cpu_data.x86_vendor;
> +	m->mcgcap	= __rdmsr(MSR_IA32_MCG_CAP);
>   	/* need the internal __ version to avoid deadlocks */
> -	m->time = __ktime_get_real_seconds();
> -	m->cpuvendor = boot_cpu_data.x86_vendor;
> -	m->cpuid = cpuid_eax(1);
> -	m->socketid = cpu_data(m->extcpu).topo.pkg_id;
> -	m->apicid = cpu_data(m->extcpu).topo.initial_apicid;
> -	m->mcgcap = __rdmsr(MSR_IA32_MCG_CAP);
> -	m->ppin = cpu_data(m->extcpu).ppin;
> -	m->microcode = boot_cpu_data.microcode;
> +	m->time		= __ktime_get_real_seconds();
> +}
> +
> +void mce_prep_record_per_cpu(unsigned int cpu, struct mce *m)
> +{
> +	m->cpu		= cpu;
> +	m->extcpu	= cpu;
> +	m->apicid	= cpu_data(m->extcpu).topo.initial_apicid;
> +	m->microcode	= cpu_data(m->extcpu).microcode;
> +	m->ppin		= cpu_data(m->extcpu).ppin;

nit: Similar to tglx's feedback for patch 2 you could use topology_ppin()

> +	m->socketid	= cpu_data(m->extcpu).topo.pkg_id;
nit: topology_physical_package_id()


> +}
> +


<snip>

  reply	other threads:[~2024-06-25 13:19 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-24 21:20 [PATCH v2 0/5] Rework mce_setup() Yazen Ghannam
2024-06-24 21:20 ` [PATCH v2 1/5] x86/topology: Export helper to get CPU number from APIC ID Yazen Ghannam
2024-06-25  6:50   ` Thomas Gleixner
2024-06-26  1:42     ` Yazen Ghannam
2024-06-28  8:37       ` Borislav Petkov
2024-06-28 14:15         ` Yazen Ghannam
2024-06-28 14:45           ` Borislav Petkov
2024-07-01 17:51             ` Yazen Ghannam
2024-07-01 19:07               ` Borislav Petkov
2024-07-12 14:28                 ` Yazen Ghannam
2024-06-24 21:20 ` [PATCH v2 2/5] x86/mce: Fixup APIC ID search for x86 CPER decoding Yazen Ghannam
2024-06-25  6:50   ` Thomas Gleixner
2024-06-26  1:44     ` Yazen Ghannam
2024-06-24 21:20 ` [PATCH v2 3/5] x86/mce: Rename mce_setup() to mce_prep_record() Yazen Ghannam
2024-06-24 21:20 ` [PATCH v2 4/5] x86/mce: Define mce_prep_record() helpers for common and per-CPU fields Yazen Ghannam
2024-06-25 13:19   ` Nikolay Borisov [this message]
2024-06-26  1:45     ` Yazen Ghannam
2024-06-24 21:20 ` [PATCH v2 5/5] x86/mce: Use mce_prep_record() helpers for apei_smca_report_x86_error() Yazen Ghannam

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=bbdf9caa-7c0f-44d1-a69d-a5cecc7cd4fa@suse.com \
    --to=nik.borisov@suse.com \
    --cc=avadhut.naik@amd.com \
    --cc=john.allen@amd.com \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    --cc=yazen.ghannam@amd.com \
    /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.