All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@qumranet.com>
To: Glauber Costa <gcosta@redhat.com>
Cc: kvm-devel@lists.sourceforge.net, chrisw@sous-sol.org
Subject: Re: [PATCH 2/4] [PATCH] cacheline-align kvmclock structures
Date: Thu, 06 Mar 2008 08:45:37 +0200	[thread overview]
Message-ID: <47CF9311.4000506@qumranet.com> (raw)
In-Reply-To: <1204742492-20738-3-git-send-email-gcosta@redhat.com>

Glauber Costa wrote:
> Align the kvm_vcpu_time array to the size of a cacheline.
>
> Signed-off-by: Glauber Costa <gcosta@redhat.com>
> ---
>  arch/x86/kernel/kvmclock.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
> index b8da3bf..d82406a 100644
> --- a/arch/x86/kernel/kvmclock.c
> +++ b/arch/x86/kernel/kvmclock.c
> @@ -36,7 +36,7 @@ early_param("no-kvmclock", parse_no_kvmc
>  struct shared_info shared_info __attribute__((__aligned__(PAGE_SIZE)));
>  
>  /* The hypervisor will put information about time periodically here */
> -static struct kvm_vcpu_time_info hv_clock[NR_CPUS];
> +static struct kvm_vcpu_time_info hv_clock[NR_CPUS] __cacheline_aligned;
>  #define get_clock(cpu, field) hv_clock[cpu].field
>  
>  static inline u64 kvm_get_delta(u64 last_tsc)
>   

I think this will align only the array itself, not members, so any write 
will (and the following reads) will cause a cacheline bounce.

Switching to per_cpu() both clarifies the intent and fixes the issue.  
Still need the 8-byte alignment.  Might be best to stick that on the 
structure declaration, so it applies to all guests.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to panic.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

  parent reply	other threads:[~2008-03-06  6:45 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-05 18:41 [PATCH 0/4] kvmclock fixes Glauber Costa
2008-03-05 18:41 ` [PATCH 1/4] [PATCH] kvmclock: release time_page if msr is rewritten Glauber Costa
2008-03-05 18:41   ` [PATCH 2/4] [PATCH] cacheline-align kvmclock structures Glauber Costa
2008-03-05 18:41     ` [PATCH 3/4] [PATCH] kvmclock: allow it to be turned off Glauber Costa
2008-03-05 18:41       ` [PATCH 4/4] [PATCH] cleanup leftovers Glauber Costa
2008-03-06  6:49         ` Avi Kivity
2008-03-06  6:47       ` [PATCH 3/4] [PATCH] kvmclock: allow it to be turned off Avi Kivity
2008-03-06 12:01         ` Glauber Costa
2008-03-06 12:11           ` Avi Kivity
2008-03-06 12:15             ` Glauber Costa
2008-03-06  6:45     ` Avi Kivity [this message]
2008-03-06  6:42   ` [PATCH 1/4] [PATCH] kvmclock: release time_page if msr is rewritten Avi Kivity

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=47CF9311.4000506@qumranet.com \
    --to=avi@qumranet.com \
    --cc=chrisw@sous-sol.org \
    --cc=gcosta@redhat.com \
    --cc=kvm-devel@lists.sourceforge.net \
    /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.