linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Fenghua Yu <fenghua.yu@intel.com>
Cc: Dave Hansen <dave.hansen@intel.com>,
	Ingo Molnar <mingo@redhat.com>, H Peter Anvin <hpa@zytor.com>,
	Ashok Raj <ashok.raj@intel.com>, Alan Cox <alan@linux.intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Rafael Wysocki <rafael.j.wysocki@intel.com>,
	Tony Luck <tony.luck@intel.com>,
	Ravi V Shankar <ravi.v.shankar@intel.com>,
	linux-kernel <linux-kernel@vger.kernel.org>, x86 <x86@kernel.org>
Subject: Re: [PATCH v2 2/4] x86/split_lock: Align x86_capability to unsigned long to avoid split locked access
Date: Sat, 30 Jun 2018 08:23:59 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.21.1806300803121.1595@nanos.tec.linutronix.de> (raw)
In-Reply-To: <20180630001411.GD68178@romley-ivt3.sc.intel.com>

On Fri, 29 Jun 2018, Fenghua Yu wrote:
> On Fri, Jun 29, 2018 at 05:00:51PM -0700, Fenghua Yu wrote:

> diff --git a/arch/x86/boot/cpuflags.h b/arch/x86/boot/cpuflags.h
> index 2e20814d3ce3..29de0ff74351 100644
> --- a/arch/x86/boot/cpuflags.h
> +++ b/arch/x86/boot/cpuflags.h
> @@ -9,7 +9,7 @@ struct cpu_features {
>  	int level;		/* Family, or 64 for x86-64 */
>  	int family;		/* Family, always */
>  	int model;
> -	u32 flags[NCAPINTS];
> +	u32 flags[NCAPINTS] __aligned(sizeof(unsigned long));

Lacks a comment WHY this needs the aligned() as Dave already said.

>  };
>  
>  extern struct cpu_features cpu;
> diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
> index 8c7b3e5a2d01..444a2275c1f8 100644
> --- a/arch/x86/include/asm/mce.h
> +++ b/arch/x86/include/asm/mce.h
> @@ -133,7 +133,7 @@ struct mce_log_buffer {
>  	char signature[12]; /* "MACHINECHECK" */
>  	unsigned len;	    /* = MCE_LOG_LEN */
>  	unsigned next;
> -	unsigned flags;
> +	unsigned flags __aligned(sizeof(unsigned long));

And whats wrong with just making that flags field unsigned long and move it
behind recordlen?

flags is at offset 20 so forcing alignement puts it at offset 24 creating a
4 byte hole. While reordering it and making it type unsigned long just
fills the already existing hole and just works w/o the stray aligned()

struct mce_log_buffer {
        char                       signature[12];        /*     0    12 */
        unsigned int               len;                  /*    12     4 */
        unsigned int               next;                 /*    16     4 */
        unsigned int               flags;                /*    20     4 */
        unsigned int               recordlen;            /*    24     4 */

        /* XXX 4 bytes hole, try to pack */

        struct mce                 entry[32];            /*    32  3840 */

The point is, that there is no requirement that flags is unsigned int,
while the u32 type for the capability array has a reason.

So you need to analyse first whether the data type is required or can be
changed to unsigned long which is the right thing to do.

See?

Thanks,

	tglx

  reply	other threads:[~2018-06-30  6:25 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-29 14:33 [PATCH v2 0/4] x86/split_lock: Enable #AC exception for split locked accesses Fenghua Yu
2018-06-29 14:33 ` [PATCH v2 1/4] x86/split_lock: Enumerate #AC exception for split locked access feature Fenghua Yu
2018-06-29 14:56   ` Dave Hansen
2018-06-29 16:23     ` Thomas Gleixner
2018-06-29 16:32       ` Dave Hansen
2018-07-04 20:07       ` Eduardo Habkost
2018-07-10 18:45         ` Fenghua Yu
2018-07-10 18:54           ` Dave Hansen
2018-07-10 19:47             ` Thomas Gleixner
2018-07-11 19:59               ` Dave Hansen
2018-07-12 20:00                 ` Thomas Gleixner
2018-06-29 14:33 ` [PATCH v2 2/4] x86/split_lock: Align x86_capability to unsigned long to avoid split locked access Fenghua Yu
2018-06-29 16:04   ` Dave Hansen
2018-06-29 16:35     ` Thomas Gleixner
2018-06-29 19:03       ` Fenghua Yu
2018-06-29 20:08         ` Thomas Gleixner
2018-06-29 20:38           ` Fenghua Yu
2018-06-29 20:48             ` Dave Hansen
2018-06-29 21:10               ` Fenghua Yu
2018-06-29 21:44               ` Thomas Gleixner
2018-06-30  0:00                 ` Fenghua Yu
2018-06-30  0:14                   ` Fenghua Yu
2018-06-30  6:23                     ` Thomas Gleixner [this message]
2018-07-02 12:18             ` Peter Zijlstra
2018-07-02 14:11               ` Fenghua Yu
2018-06-29 14:33 ` [PATCH v2 3/4] x86/split_lock: Handle #AC exception for split lock Fenghua Yu
2018-06-29 16:29   ` Dave Hansen
2018-06-29 16:33     ` Luck, Tony
2018-06-29 17:16       ` Fenghua Yu
2018-06-29 17:29         ` Dave Hansen
2018-06-29 17:39           ` Fenghua Yu
2018-06-29 17:47             ` Dave Hansen
2018-06-29 14:33 ` [PATCH v2 4/4] x86/split_lock: Disable #AC for split locked accesses Fenghua Yu
2018-06-29 16:31   ` Dave Hansen

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=alpine.DEB.2.21.1806300803121.1595@nanos.tec.linutronix.de \
    --to=tglx@linutronix.de \
    --cc=alan@linux.intel.com \
    --cc=ashok.raj@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=fenghua.yu@intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=ravi.v.shankar@intel.com \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).