All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Tony Luck <tony.luck@intel.com>
Cc: linux-kernel@vger.kernel.org, Borislav Petkov <bp@amd64.org>,
	"Huang, Ying" <ying.huang@intel.com>,
	Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Subject: Re: [PATCH 4/6] x86, mce: Add mechanism to safely save information in MCE handler
Date: Wed, 14 Dec 2011 08:52:10 +0100	[thread overview]
Message-ID: <20111214075210.GE25232@elte.hu> (raw)
In-Reply-To: <21784ca9d3f0a59c01c9d127a088077561616ba1.1323803130.git.tony.luck@intel.com>


* Tony Luck <tony.luck@intel.com> wrote:

> Machine checks on Intel cpus interrupt execution on all cpus, regardless
> of interrupt masking.  We have a need to save some data about the cause
> of the machine check (physical address) in the machine check handler that
> can be retrieved later to attempt recovery in a more flexible execution
> state.
> 
> Signed-off-by: Tony Luck <tony.luck@intel.com>
> ---
>  arch/x86/kernel/cpu/mcheck/mce.c |   51 ++++++++++++++++++++++++++++++++++++++
>  1 files changed, 51 insertions(+), 0 deletions(-)

Just some cleanliness nits:

> diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
> index 43f22c8..9b83b7d 100644
> --- a/arch/x86/kernel/cpu/mcheck/mce.c
> +++ b/arch/x86/kernel/cpu/mcheck/mce.c
> @@ -887,6 +887,57 @@ static void mce_clear_state(unsigned long *toclear)
>  }
>  
>  /*
> + * Need to save faulting physical address associated with a process
> + * in the machine check handler some place where we can grab it back
> + * later in mce_notify_process()
> + */
> +#define	MAX_MCE_INFO	16
> +struct mce_info {

please separate non-bulk definitons by newlines.

> +	atomic_t		inuse;
> +	struct task_struct	*t;
> +	__u64			paddr;
> +} mce_info[MAX_MCE_INFO];
> +
> +static void mce_save_info(__u64 addr)
> +{
> +	int	i;

that tab looks weird. [there's repeat occurances further below 
as well]

> +
> +	for (i = 0; i < MAX_MCE_INFO; i++)
> +		if (atomic_cmpxchg(&mce_info[i].inuse, 0, 1) == 0) {
> +			mce_info[i].t = current;
> +			mce_info[i].paddr = addr;
> +			return;
> +		}

We typically use curly braces for all multi-line statements - so 
two would be needed above.

> +
> +	mce_panic("Too many concurrent recoverable errors", NULL, NULL);
> +}
> +
> +static int mce_find_info(__u64 *paddr)
> +{
> +	int	i;
> +
> +	for (i = 0; i < MAX_MCE_INFO; i++)
> +		if (atomic_read(&mce_info[i].inuse) &&
> +		    mce_info[i].t == current) {
> +			*paddr = mce_info[i].paddr;
> +			return 1;
> +		}
> +	return 0;
> +}
> +
> +static void mce_clear_info(void)
> +{
> +	int	i;
> +
> +	for (i = 0; i < MAX_MCE_INFO; i++)
> +		if (atomic_read(&mce_info[i].inuse) &&
> +		    mce_info[i].t == current) {

the line-break shows that the code has complexit troubles. Doing 
this in the loop iterator:

	struct mce_info *mi = mce_info + i;

would help make it shorter and more readable.

Thanks,

	Ingo

  reply	other threads:[~2011-12-14  7:54 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-13 19:05 [PATCH 0/6] x86, mce: machine check recovery for applications Tony Luck
2011-12-08 22:49 ` [PATCH 6/6] x86, mce: Recognise machine check bank signature for data path error Tony Luck
2011-12-14 15:47   ` Borislav Petkov
2011-12-12 21:06 ` [PATCH 4/6] x86, mce: Add mechanism to safely save information in MCE handler Tony Luck
2011-12-14  7:52   ` Ingo Molnar [this message]
2011-12-12 21:47 ` [PATCH 5/6] x86, mce: handle "action required" errors Tony Luck
2011-12-14  9:28   ` Chen Gong
2011-12-14 21:30     ` Tony Luck
2011-12-15  2:56       ` Chen Gong
2011-12-14 16:04   ` Borislav Petkov
2011-12-14 19:05     ` Luck, Tony
2011-12-13 17:24 ` [PATCH 1/6] HWPOISON: clean up memory_failure() vs. __memory_failure() Tony Luck
2011-12-14  7:47   ` Ingo Molnar
2011-12-14 16:07     ` Borislav Petkov
2011-12-14 16:55       ` Ingo Molnar
2011-12-14 17:21         ` Luck, Tony
2011-12-15  6:44           ` Ingo Molnar
2011-12-15 18:05             ` Tony Luck
2011-12-15 18:09               ` Ingo Molnar
2011-12-13 17:27 ` [PATCH 2/6] HWPOISON: Add code to handle "action required" errors Tony Luck
2011-12-13 17:48 ` [PATCH 3/6] x86, mce: create helper function to save addr/misc when needed Tony Luck
2011-12-16  0:13   ` Hidetoshi Seto
  -- strict thread matches above, loose matches on Subject: below --
2011-12-15 19:59 [PATCH 0/6] x86, mce: machine check recovery for applications [updated] Tony Luck
2011-12-14 23:55 ` [PATCH 4/6] x86, mce: Add mechanism to safely save information in MCE handler Tony Luck
2011-12-16  0:13   ` Hidetoshi Seto
2011-12-16  8:14   ` Borislav Petkov

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=20111214075210.GE25232@elte.hu \
    --to=mingo@elte.hu \
    --cc=bp@amd64.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=seto.hidetoshi@jp.fujitsu.com \
    --cc=tony.luck@intel.com \
    --cc=ying.huang@intel.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.