All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@redhat.com>
To: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Cc: pbonzini@redhat.com, gleb@kernel.org, mtosatti@redhat.com,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	bsd@redhat.com, lersek@redhat.com, jordan.l.justen@intel.com,
	edk2-devel@lists.sourceforge.net,
	Xiao Guangrong <guangrong.xiao@intel.com>
Subject: Re: [PATCH 2/3] KVM: MTRR: simplify kvm_mtrr_get_guest_memory_type
Date: Wed, 29 Jul 2015 13:07:13 -0600	[thread overview]
Message-ID: <1438196833.13460.63.camel@redhat.com> (raw)
In-Reply-To: <1436988356-4565-2-git-send-email-guangrong.xiao@linux.intel.com>

Hi Paolo,

Something bad happened to this patch.  This is the version I provided
Tested-by for:

On Thu, 2015-07-16 at 03:25 +0800, Xiao Guangrong wrote:
> From: Xiao Guangrong <guangrong.xiao@intel.com>
> 
> kvm_mtrr_get_guest_memory_type never returns -1 which is implied
> in the current code since if @type = -1 (means no MTRR contains the
> range), iter.partial_map must be true
> 
> Simplify the code to indicate this fact
> 
> Signed-off-by: Xiao Guangrong <guangrong.xiao@intel.com>
> ---
>  arch/x86/kvm/mtrr.c | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c
> index e275013..9e8bf13 100644
> --- a/arch/x86/kvm/mtrr.c
> +++ b/arch/x86/kvm/mtrr.c
> @@ -672,15 +672,16 @@ u8 kvm_mtrr_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn)
>  	if (iter.mtrr_disabled)
>  		return mtrr_disabled_type();
>  
> -	/* It is not covered by MTRRs. */
> -	if (iter.partial_map) {
> -		/*
> -		 * We just check one page, partially covered by MTRRs is
> -		 * impossible.
> -		 */
> -		WARN_ON(type != -1);
> -		type = mtrr_default_type(mtrr_state);
> -	}
> +	/* not contained in any MTRRs. */
> +	if (type == -1)
> +		return mtrr_default_type(mtrr_state);
> +
> +	/*
> +	 * We just check one page, partially covered by MTRRs is
> +	 * impossible.
> +	 */
> +	WARN_ON(iter.partial_map);
> +
>  	return type;
>  }
>  EXPORT_SYMBOL_GPL(kvm_mtrr_get_guest_memory_type);


This is the version that was committed for v4.2-rc4:

commit 3e5d2fdceda172554e681b68c853bf5d08205bbf
Author: Xiao Guangrong <guangrong.xiao@intel.com>
Date:   Thu Jul 16 03:25:55 2015 +0800

    KVM: MTRR: simplify kvm_mtrr_get_guest_memory_type
    
    kvm_mtrr_get_guest_memory_type never returns -1 which is implied
    in the current code since if @type = -1 (means no MTRR contains the
    range), iter.partial_map must be true
    
    Simplify the code to indicate this fact
    
    Signed-off-by: Xiao Guangrong <guangrong.xiao@intel.com>
    Tested-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c
index e275013..dc0a84a 100644
--- a/arch/x86/kvm/mtrr.c
+++ b/arch/x86/kvm/mtrr.c
@@ -672,15 +672,16 @@ u8 kvm_mtrr_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn)
 	if (iter.mtrr_disabled)
 		return mtrr_disabled_type();
 
-	/* It is not covered by MTRRs. */
-	if (iter.partial_map) {
-		/*
-		 * We just check one page, partially covered by MTRRs is
-		 * impossible.
-		 */
-		WARN_ON(type != -1);
-		type = mtrr_default_type(mtrr_state);
-	}
+	/*
+	 * We just check one page, partially covered by MTRRs is
+	 * impossible.
+	 */
+	WARN_ON(iter.partial_map);
+
+	/* not contained in any MTRRs. */
+	if (type == -1)
+		return mtrr_default_type(mtrr_state);
+
 	return type;
 }
 EXPORT_SYMBOL_GPL(kvm_mtrr_get_guest_memory_type);

The WARN_ON() now comes before the type == -1 test and I hit that at
*very* high frequency when trying to test device assignment.  Restoring
the ordering to what Xiao originally proposed resolves the problem.
Thanks,

Alex


WARNING: multiple messages have this Message-ID (diff)
From: Alex Williamson <alex.williamson@redhat.com>
To: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Cc: edk2-devel@lists.sourceforge.net,
	Xiao Guangrong <guangrong.xiao@intel.com>,
	kvm@vger.kernel.org, gleb@kernel.org, mtosatti@redhat.com,
	linux-kernel@vger.kernel.org, bsd@redhat.com,
	pbonzini@redhat.com
Subject: Re: [edk2] [PATCH 2/3] KVM: MTRR: simplify kvm_mtrr_get_guest_memory_type
Date: Wed, 29 Jul 2015 13:07:13 -0600	[thread overview]
Message-ID: <1438196833.13460.63.camel@redhat.com> (raw)
In-Reply-To: <1436988356-4565-2-git-send-email-guangrong.xiao@linux.intel.com>

Hi Paolo,

Something bad happened to this patch.  This is the version I provided
Tested-by for:

On Thu, 2015-07-16 at 03:25 +0800, Xiao Guangrong wrote:
> From: Xiao Guangrong <guangrong.xiao@intel.com>
> 
> kvm_mtrr_get_guest_memory_type never returns -1 which is implied
> in the current code since if @type = -1 (means no MTRR contains the
> range), iter.partial_map must be true
> 
> Simplify the code to indicate this fact
> 
> Signed-off-by: Xiao Guangrong <guangrong.xiao@intel.com>
> ---
>  arch/x86/kvm/mtrr.c | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c
> index e275013..9e8bf13 100644
> --- a/arch/x86/kvm/mtrr.c
> +++ b/arch/x86/kvm/mtrr.c
> @@ -672,15 +672,16 @@ u8 kvm_mtrr_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn)
>  	if (iter.mtrr_disabled)
>  		return mtrr_disabled_type();
>  
> -	/* It is not covered by MTRRs. */
> -	if (iter.partial_map) {
> -		/*
> -		 * We just check one page, partially covered by MTRRs is
> -		 * impossible.
> -		 */
> -		WARN_ON(type != -1);
> -		type = mtrr_default_type(mtrr_state);
> -	}
> +	/* not contained in any MTRRs. */
> +	if (type == -1)
> +		return mtrr_default_type(mtrr_state);
> +
> +	/*
> +	 * We just check one page, partially covered by MTRRs is
> +	 * impossible.
> +	 */
> +	WARN_ON(iter.partial_map);
> +
>  	return type;
>  }
>  EXPORT_SYMBOL_GPL(kvm_mtrr_get_guest_memory_type);


This is the version that was committed for v4.2-rc4:

commit 3e5d2fdceda172554e681b68c853bf5d08205bbf
Author: Xiao Guangrong <guangrong.xiao@intel.com>
Date:   Thu Jul 16 03:25:55 2015 +0800

    KVM: MTRR: simplify kvm_mtrr_get_guest_memory_type
    
    kvm_mtrr_get_guest_memory_type never returns -1 which is implied
    in the current code since if @type = -1 (means no MTRR contains the
    range), iter.partial_map must be true
    
    Simplify the code to indicate this fact
    
    Signed-off-by: Xiao Guangrong <guangrong.xiao@intel.com>
    Tested-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c
index e275013..dc0a84a 100644
--- a/arch/x86/kvm/mtrr.c
+++ b/arch/x86/kvm/mtrr.c
@@ -672,15 +672,16 @@ u8 kvm_mtrr_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn)
 	if (iter.mtrr_disabled)
 		return mtrr_disabled_type();
 
-	/* It is not covered by MTRRs. */
-	if (iter.partial_map) {
-		/*
-		 * We just check one page, partially covered by MTRRs is
-		 * impossible.
-		 */
-		WARN_ON(type != -1);
-		type = mtrr_default_type(mtrr_state);
-	}
+	/*
+	 * We just check one page, partially covered by MTRRs is
+	 * impossible.
+	 */
+	WARN_ON(iter.partial_map);
+
+	/* not contained in any MTRRs. */
+	if (type == -1)
+		return mtrr_default_type(mtrr_state);
+
 	return type;
 }
 EXPORT_SYMBOL_GPL(kvm_mtrr_get_guest_memory_type);

The WARN_ON() now comes before the type == -1 test and I hit that at
*very* high frequency when trying to test device assignment.  Restoring
the ordering to what Xiao originally proposed resolves the problem.
Thanks,

Alex


------------------------------------------------------------------------------

  reply	other threads:[~2015-07-29 19:07 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-15 19:25 [PATCH 1/3] KVM: MTRR: fix memory type handling if MTRR is completely disabled Xiao Guangrong
2015-07-15 19:25 ` [PATCH 2/3] KVM: MTRR: simplify kvm_mtrr_get_guest_memory_type Xiao Guangrong
2015-07-29 19:07   ` Alex Williamson [this message]
2015-07-29 19:07     ` [edk2] " Alex Williamson
2015-07-30  7:21     ` Paolo Bonzini
2015-07-15 19:25 ` [PATCH 3/3] KVM: x86: quirkily apply WB to all memory if cache is disabled Xiao Guangrong
2015-07-23  5:56   ` Paolo Bonzini
2015-07-23  6:03     ` Xiao Guangrong
2015-07-16  4:10 ` [PATCH 1/3] KVM: MTRR: fix memory type handling if MTRR is completely disabled Alex Williamson
2015-07-23  6:21   ` Paolo Bonzini
2015-07-23  6:21     ` [edk2] " Paolo Bonzini
2015-07-23  6:29     ` Xiao Guangrong
2015-07-23  7:18       ` Paolo Bonzini

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=1438196833.13460.63.camel@redhat.com \
    --to=alex.williamson@redhat.com \
    --cc=bsd@redhat.com \
    --cc=edk2-devel@lists.sourceforge.net \
    --cc=gleb@kernel.org \
    --cc=guangrong.xiao@intel.com \
    --cc=guangrong.xiao@linux.intel.com \
    --cc=jordan.l.justen@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=lersek@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.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.