All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Alexey Kardashevskiy <aik@ozlabs.ru>
Cc: linuxppc-dev@lists.ozlabs.org,
	David Gibson <david@gibson.dropbear.id.au>,
	Alexander Graf <agraf@suse.de>, Paul Mackerras <paulus@samba.org>,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm-ppc@vger.kernel.org
Subject: Re: [PATCH 4/4] KVM: PPC: Add hugepage support for IOMMU in-kernel handling
Date: Sun, 16 Jun 2013 04:46:42 +0000	[thread overview]
Message-ID: <1371358002.21896.124.camel@pasglop> (raw)
In-Reply-To: <1370412673-1345-5-git-send-email-aik@ozlabs.ru>

On Wed, 2013-06-05 at 16:11 +1000, Alexey Kardashevskiy wrote:

> @@ -185,7 +186,31 @@ static unsigned long kvmppc_realmode_gpa_to_hpa(struct kvm_vcpu *vcpu,
>  	unsigned long hva, hpa, pg_size = 0, offset;
>  	unsigned long gfn = gpa >> PAGE_SHIFT;
>  	bool writing = gpa & TCE_PCI_WRITE;
> +	struct kvmppc_iommu_hugepage *hp;
>  
> +	/*
> +	 * Try to find an already used hugepage.
> +	 * If it is not there, the kvmppc_lookup_pte() will return zero
> +	 * as it won't do get_page() on a huge page in real mode
> +	 * and therefore the request will be passed to the virtual mode.
> +	 */
> +	if (tt) {
> +		spin_lock(&tt->hugepages_lock);
> +		list_for_each_entry(hp, &tt->hugepages, list) {
> +			if ((gpa < hp->gpa) || (gpa >= hp->gpa + hp->size))
> +				continue;
> +
> +			/* Calculate host phys address keeping flags and offset in the page */
> +			offset = gpa & (hp->size - 1);
> +
> +			/* pte_pfn(pte) should return an address aligned to pg_size */
> +			hpa = (pte_pfn(hp->pte) << PAGE_SHIFT) + offset;
> +			spin_unlock(&tt->hugepages_lock);
> +
> +			return hpa;
> +		}
> +		spin_unlock(&tt->hugepages_lock);
> +	}

Wow .... this is run in real mode right ?

spin_lock() and spin_unlock() are a big no-no in real mode. If lockdep
and/or spinlock debugging are enabled and something goes pear-shaped
they are going to bring your whole system down in a blink in quite
horrible ways.

If you are going to do that, you need some kind of custom low-level
lock.

Also, I see that you are basically using a non-ordered list and doing a
linear search in it every time. That's going to COST !

You should really consider a more efficient data structure. You should
also be able to do something that doesn't require locks for readers.

>  	/* Find a KVM memslot */
>  	memslot = search_memslots(kvm_memslots(vcpu->kvm), gfn);
>  	if (!memslot)
> @@ -237,6 +262,10 @@ static long kvmppc_clear_tce_real_mode(struct kvm_vcpu *vcpu,
>  		if (oldtce & TCE_PCI_WRITE)
>  			SetPageDirty(page);
>  
> +		/* Do not put a huge page and continue without error */
> +		if (PageCompound(page))
> +			continue;
> +
>  		if (realmode_put_page(page)) {
>  			ret = H_TOO_HARD;
>  			break;
> @@ -282,7 +311,7 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
>  			if (iommu_tce_put_param_check(tbl, ioba, tce))
>  				return H_PARAMETER;
>  
> -			hpa = kvmppc_realmode_gpa_to_hpa(vcpu, tce, true);
> +			hpa = kvmppc_realmode_gpa_to_hpa(vcpu, tt, tce, true);
>  			if (hpa = ERROR_ADDR) {
>  				vcpu->arch.tce_reason = H_TOO_HARD;
>  				return H_TOO_HARD;
> @@ -295,6 +324,11 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
>  			if (unlikely(ret)) {
>  				struct page *pg = realmode_pfn_to_page(hpa);
>  				BUG_ON(!pg);
> +
> +				/* Do not put a huge page and return an error */
> +				if (!PageCompound(pg))
> +					return H_HARDWARE;
> +
>  				if (realmode_put_page(pg)) {
>  					vcpu->arch.tce_reason = H_HARDWARE;
>  					return H_TOO_HARD;
> @@ -351,7 +385,7 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
>  	vcpu->arch.tce_tmp_num = 0;
>  	vcpu->arch.tce_reason = 0;
>  
> -	tces = (unsigned long *) kvmppc_realmode_gpa_to_hpa(vcpu,
> +	tces = (unsigned long *) kvmppc_realmode_gpa_to_hpa(vcpu, NULL,
>  			tce_list, false);
>  	if ((unsigned long)tces = ERROR_ADDR)
>  		return H_TOO_HARD;
> @@ -374,7 +408,7 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
>  
>  		/* Translate TCEs and go get_page */
>  		for (i = 0; i < npages; ++i) {
> -			unsigned long hpa = kvmppc_realmode_gpa_to_hpa(vcpu,
> +			unsigned long hpa = kvmppc_realmode_gpa_to_hpa(vcpu, tt,
>  					vcpu->arch.tce_tmp[i], true);
>  			if (hpa = ERROR_ADDR) {
>  				vcpu->arch.tce_tmp_num = i;

Cheers,
Ben.



WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Alexey Kardashevskiy <aik@ozlabs.ru>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm-ppc@vger.kernel.org, Alexander Graf <agraf@suse.de>,
	Paul Mackerras <paulus@samba.org>,
	linuxppc-dev@lists.ozlabs.org,
	David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [PATCH 4/4] KVM: PPC: Add hugepage support for IOMMU in-kernel handling
Date: Sun, 16 Jun 2013 14:46:42 +1000	[thread overview]
Message-ID: <1371358002.21896.124.camel@pasglop> (raw)
In-Reply-To: <1370412673-1345-5-git-send-email-aik@ozlabs.ru>

On Wed, 2013-06-05 at 16:11 +1000, Alexey Kardashevskiy wrote:

> @@ -185,7 +186,31 @@ static unsigned long kvmppc_realmode_gpa_to_hpa(struct kvm_vcpu *vcpu,
>  	unsigned long hva, hpa, pg_size = 0, offset;
>  	unsigned long gfn = gpa >> PAGE_SHIFT;
>  	bool writing = gpa & TCE_PCI_WRITE;
> +	struct kvmppc_iommu_hugepage *hp;
>  
> +	/*
> +	 * Try to find an already used hugepage.
> +	 * If it is not there, the kvmppc_lookup_pte() will return zero
> +	 * as it won't do get_page() on a huge page in real mode
> +	 * and therefore the request will be passed to the virtual mode.
> +	 */
> +	if (tt) {
> +		spin_lock(&tt->hugepages_lock);
> +		list_for_each_entry(hp, &tt->hugepages, list) {
> +			if ((gpa < hp->gpa) || (gpa >= hp->gpa + hp->size))
> +				continue;
> +
> +			/* Calculate host phys address keeping flags and offset in the page */
> +			offset = gpa & (hp->size - 1);
> +
> +			/* pte_pfn(pte) should return an address aligned to pg_size */
> +			hpa = (pte_pfn(hp->pte) << PAGE_SHIFT) + offset;
> +			spin_unlock(&tt->hugepages_lock);
> +
> +			return hpa;
> +		}
> +		spin_unlock(&tt->hugepages_lock);
> +	}

Wow .... this is run in real mode right ?

spin_lock() and spin_unlock() are a big no-no in real mode. If lockdep
and/or spinlock debugging are enabled and something goes pear-shaped
they are going to bring your whole system down in a blink in quite
horrible ways.

If you are going to do that, you need some kind of custom low-level
lock.

Also, I see that you are basically using a non-ordered list and doing a
linear search in it every time. That's going to COST !

You should really consider a more efficient data structure. You should
also be able to do something that doesn't require locks for readers.

>  	/* Find a KVM memslot */
>  	memslot = search_memslots(kvm_memslots(vcpu->kvm), gfn);
>  	if (!memslot)
> @@ -237,6 +262,10 @@ static long kvmppc_clear_tce_real_mode(struct kvm_vcpu *vcpu,
>  		if (oldtce & TCE_PCI_WRITE)
>  			SetPageDirty(page);
>  
> +		/* Do not put a huge page and continue without error */
> +		if (PageCompound(page))
> +			continue;
> +
>  		if (realmode_put_page(page)) {
>  			ret = H_TOO_HARD;
>  			break;
> @@ -282,7 +311,7 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
>  			if (iommu_tce_put_param_check(tbl, ioba, tce))
>  				return H_PARAMETER;
>  
> -			hpa = kvmppc_realmode_gpa_to_hpa(vcpu, tce, true);
> +			hpa = kvmppc_realmode_gpa_to_hpa(vcpu, tt, tce, true);
>  			if (hpa == ERROR_ADDR) {
>  				vcpu->arch.tce_reason = H_TOO_HARD;
>  				return H_TOO_HARD;
> @@ -295,6 +324,11 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
>  			if (unlikely(ret)) {
>  				struct page *pg = realmode_pfn_to_page(hpa);
>  				BUG_ON(!pg);
> +
> +				/* Do not put a huge page and return an error */
> +				if (!PageCompound(pg))
> +					return H_HARDWARE;
> +
>  				if (realmode_put_page(pg)) {
>  					vcpu->arch.tce_reason = H_HARDWARE;
>  					return H_TOO_HARD;
> @@ -351,7 +385,7 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
>  	vcpu->arch.tce_tmp_num = 0;
>  	vcpu->arch.tce_reason = 0;
>  
> -	tces = (unsigned long *) kvmppc_realmode_gpa_to_hpa(vcpu,
> +	tces = (unsigned long *) kvmppc_realmode_gpa_to_hpa(vcpu, NULL,
>  			tce_list, false);
>  	if ((unsigned long)tces == ERROR_ADDR)
>  		return H_TOO_HARD;
> @@ -374,7 +408,7 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
>  
>  		/* Translate TCEs and go get_page */
>  		for (i = 0; i < npages; ++i) {
> -			unsigned long hpa = kvmppc_realmode_gpa_to_hpa(vcpu,
> +			unsigned long hpa = kvmppc_realmode_gpa_to_hpa(vcpu, tt,
>  					vcpu->arch.tce_tmp[i], true);
>  			if (hpa == ERROR_ADDR) {
>  				vcpu->arch.tce_tmp_num = i;

Cheers,
Ben.

WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Alexey Kardashevskiy <aik@ozlabs.ru>
Cc: linuxppc-dev@lists.ozlabs.org,
	David Gibson <david@gibson.dropbear.id.au>,
	Alexander Graf <agraf@suse.de>, Paul Mackerras <paulus@samba.org>,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm-ppc@vger.kernel.org
Subject: Re: [PATCH 4/4] KVM: PPC: Add hugepage support for IOMMU in-kernel handling
Date: Sun, 16 Jun 2013 14:46:42 +1000	[thread overview]
Message-ID: <1371358002.21896.124.camel@pasglop> (raw)
In-Reply-To: <1370412673-1345-5-git-send-email-aik@ozlabs.ru>

On Wed, 2013-06-05 at 16:11 +1000, Alexey Kardashevskiy wrote:

> @@ -185,7 +186,31 @@ static unsigned long kvmppc_realmode_gpa_to_hpa(struct kvm_vcpu *vcpu,
>  	unsigned long hva, hpa, pg_size = 0, offset;
>  	unsigned long gfn = gpa >> PAGE_SHIFT;
>  	bool writing = gpa & TCE_PCI_WRITE;
> +	struct kvmppc_iommu_hugepage *hp;
>  
> +	/*
> +	 * Try to find an already used hugepage.
> +	 * If it is not there, the kvmppc_lookup_pte() will return zero
> +	 * as it won't do get_page() on a huge page in real mode
> +	 * and therefore the request will be passed to the virtual mode.
> +	 */
> +	if (tt) {
> +		spin_lock(&tt->hugepages_lock);
> +		list_for_each_entry(hp, &tt->hugepages, list) {
> +			if ((gpa < hp->gpa) || (gpa >= hp->gpa + hp->size))
> +				continue;
> +
> +			/* Calculate host phys address keeping flags and offset in the page */
> +			offset = gpa & (hp->size - 1);
> +
> +			/* pte_pfn(pte) should return an address aligned to pg_size */
> +			hpa = (pte_pfn(hp->pte) << PAGE_SHIFT) + offset;
> +			spin_unlock(&tt->hugepages_lock);
> +
> +			return hpa;
> +		}
> +		spin_unlock(&tt->hugepages_lock);
> +	}

Wow .... this is run in real mode right ?

spin_lock() and spin_unlock() are a big no-no in real mode. If lockdep
and/or spinlock debugging are enabled and something goes pear-shaped
they are going to bring your whole system down in a blink in quite
horrible ways.

If you are going to do that, you need some kind of custom low-level
lock.

Also, I see that you are basically using a non-ordered list and doing a
linear search in it every time. That's going to COST !

You should really consider a more efficient data structure. You should
also be able to do something that doesn't require locks for readers.

>  	/* Find a KVM memslot */
>  	memslot = search_memslots(kvm_memslots(vcpu->kvm), gfn);
>  	if (!memslot)
> @@ -237,6 +262,10 @@ static long kvmppc_clear_tce_real_mode(struct kvm_vcpu *vcpu,
>  		if (oldtce & TCE_PCI_WRITE)
>  			SetPageDirty(page);
>  
> +		/* Do not put a huge page and continue without error */
> +		if (PageCompound(page))
> +			continue;
> +
>  		if (realmode_put_page(page)) {
>  			ret = H_TOO_HARD;
>  			break;
> @@ -282,7 +311,7 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
>  			if (iommu_tce_put_param_check(tbl, ioba, tce))
>  				return H_PARAMETER;
>  
> -			hpa = kvmppc_realmode_gpa_to_hpa(vcpu, tce, true);
> +			hpa = kvmppc_realmode_gpa_to_hpa(vcpu, tt, tce, true);
>  			if (hpa == ERROR_ADDR) {
>  				vcpu->arch.tce_reason = H_TOO_HARD;
>  				return H_TOO_HARD;
> @@ -295,6 +324,11 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
>  			if (unlikely(ret)) {
>  				struct page *pg = realmode_pfn_to_page(hpa);
>  				BUG_ON(!pg);
> +
> +				/* Do not put a huge page and return an error */
> +				if (!PageCompound(pg))
> +					return H_HARDWARE;
> +
>  				if (realmode_put_page(pg)) {
>  					vcpu->arch.tce_reason = H_HARDWARE;
>  					return H_TOO_HARD;
> @@ -351,7 +385,7 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
>  	vcpu->arch.tce_tmp_num = 0;
>  	vcpu->arch.tce_reason = 0;
>  
> -	tces = (unsigned long *) kvmppc_realmode_gpa_to_hpa(vcpu,
> +	tces = (unsigned long *) kvmppc_realmode_gpa_to_hpa(vcpu, NULL,
>  			tce_list, false);
>  	if ((unsigned long)tces == ERROR_ADDR)
>  		return H_TOO_HARD;
> @@ -374,7 +408,7 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
>  
>  		/* Translate TCEs and go get_page */
>  		for (i = 0; i < npages; ++i) {
> -			unsigned long hpa = kvmppc_realmode_gpa_to_hpa(vcpu,
> +			unsigned long hpa = kvmppc_realmode_gpa_to_hpa(vcpu, tt,
>  					vcpu->arch.tce_tmp[i], true);
>  			if (hpa == ERROR_ADDR) {
>  				vcpu->arch.tce_tmp_num = i;

Cheers,
Ben.



  reply	other threads:[~2013-06-16  4:46 UTC|newest]

Thread overview: 160+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-05  6:11 [PATCH 0/4 v3] KVM: PPC: IOMMU in-kernel handling Alexey Kardashevskiy
2013-06-05  6:11 ` Alexey Kardashevskiy
2013-06-05  6:11 ` Alexey Kardashevskiy
2013-06-05  6:11 ` [PATCH 1/4] KVM: PPC: Add support for multiple-TCE hcalls Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-16  4:20   ` Benjamin Herrenschmidt
2013-06-16  4:20     ` Benjamin Herrenschmidt
2013-06-16  4:20     ` Benjamin Herrenschmidt
2013-06-16 22:06   ` Alexander Graf
2013-06-16 22:06     ` Alexander Graf
2013-06-16 22:06     ` Alexander Graf
2013-06-17  7:55     ` Alexey Kardashevskiy
2013-06-17  7:55       ` Alexey Kardashevskiy
2013-06-17  7:55       ` Alexey Kardashevskiy
2013-06-17  8:02       ` Alexander Graf
2013-06-17  8:02         ` Alexander Graf
2013-06-17  8:02         ` Alexander Graf
2013-06-17  8:34         ` Alexey Kardashevskiy
2013-06-17  8:34           ` Alexey Kardashevskiy
2013-06-17  8:34           ` Alexey Kardashevskiy
2013-06-17  8:40           ` Alexander Graf
2013-06-17  8:40             ` Alexander Graf
2013-06-17  8:40             ` Alexander Graf
2013-06-17  8:51             ` Alexey Kardashevskiy
2013-06-17  8:51               ` Alexey Kardashevskiy
2013-06-17  8:51               ` Alexey Kardashevskiy
2013-06-17 10:46               ` Alexander Graf
2013-06-17 10:46                 ` Alexander Graf
2013-06-17 10:46                 ` Alexander Graf
2013-06-17 10:48                 ` Alexander Graf
2013-06-17 10:48                   ` Alexander Graf
2013-06-17 10:48                   ` Alexander Graf
2013-06-17  8:37       ` Benjamin Herrenschmidt
2013-06-17  8:37         ` Benjamin Herrenschmidt
2013-06-17  8:37         ` Benjamin Herrenschmidt
2013-06-17  8:42         ` Alexander Graf
2013-06-17  8:42           ` Alexander Graf
2013-06-17  8:42           ` Alexander Graf
2013-06-05  6:11 ` [PATCH 2/4] powerpc: Prepare to support kernel handling of IOMMU map/unmap Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-16  4:26   ` Benjamin Herrenschmidt
2013-06-16  4:26     ` Benjamin Herrenschmidt
2013-06-16  4:26     ` Benjamin Herrenschmidt
2013-06-16  4:26     ` Benjamin Herrenschmidt
2013-06-16  4:31     ` Benjamin Herrenschmidt
2013-06-16  4:31       ` Benjamin Herrenschmidt
2013-06-16  4:31       ` Benjamin Herrenschmidt
2013-06-16  4:31       ` Benjamin Herrenschmidt
2013-06-17  9:17     ` Alexey Kardashevskiy
2013-06-17  9:17       ` Alexey Kardashevskiy
2013-06-17  9:17       ` Alexey Kardashevskiy
2013-06-17  9:17       ` Alexey Kardashevskiy
2013-06-05  6:11 ` [PATCH 3/4] KVM: PPC: Add support for IOMMU in-kernel handling Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-16  4:39   ` Benjamin Herrenschmidt
2013-06-16  4:39     ` Benjamin Herrenschmidt
2013-06-16  4:39     ` Benjamin Herrenschmidt
2013-06-19  3:17     ` Alexey Kardashevskiy
2013-06-19  3:17       ` Alexey Kardashevskiy
2013-06-19  3:17       ` Alexey Kardashevskiy
2013-06-16 22:25   ` Alexander Graf
2013-06-16 22:25     ` Alexander Graf
2013-06-16 22:25     ` Alexander Graf
2013-06-16 22:39   ` Benjamin Herrenschmidt
2013-06-16 22:39     ` Benjamin Herrenschmidt
2013-06-16 22:39     ` Benjamin Herrenschmidt
2013-06-17  3:13     ` Alex Williamson
2013-06-17  3:13       ` Alex Williamson
2013-06-17  3:13       ` Alex Williamson
2013-06-17  3:56       ` Benjamin Herrenschmidt
2013-06-17  3:56         ` Benjamin Herrenschmidt
2013-06-17  3:56         ` Benjamin Herrenschmidt
2013-06-18  2:32         ` Alex Williamson
2013-06-18  2:32           ` Alex Williamson
2013-06-18  2:32           ` Alex Williamson
2013-06-18  4:38           ` Benjamin Herrenschmidt
2013-06-18  4:38             ` Benjamin Herrenschmidt
2013-06-18  4:38             ` Benjamin Herrenschmidt
2013-06-18 14:48             ` Alex Williamson
2013-06-18 14:48               ` Alex Williamson
2013-06-18 14:48               ` Alex Williamson
2013-06-18 21:58               ` Benjamin Herrenschmidt
2013-06-18 21:58                 ` Benjamin Herrenschmidt
2013-06-18 21:58                 ` Benjamin Herrenschmidt
2013-06-19  3:35           ` Rusty Russell
2013-06-19  3:47             ` Rusty Russell
2013-06-19  3:35             ` Rusty Russell
2013-06-19  4:59             ` Benjamin Herrenschmidt
2013-06-19  4:59               ` Benjamin Herrenschmidt
2013-06-19  4:59               ` Benjamin Herrenschmidt
2013-06-19  9:58               ` Alexander Graf
2013-06-19  9:58                 ` Alexander Graf
2013-06-19  9:58                 ` Alexander Graf
2013-06-19 14:50                 ` Benjamin Herrenschmidt
2013-06-19 14:50                   ` Benjamin Herrenschmidt
2013-06-19 14:50                   ` Benjamin Herrenschmidt
2013-06-19 15:49                   ` Alex Williamson
2013-06-19 15:49                     ` Alex Williamson
2013-06-19 15:49                     ` Alex Williamson
2013-06-20  4:58                     ` Alexey Kardashevskiy
2013-06-20  4:58                       ` Alexey Kardashevskiy
2013-06-20  4:58                       ` Alexey Kardashevskiy
2013-06-20  5:28                       ` David Gibson
2013-06-20  5:28                         ` David Gibson
2013-06-20  5:28                         ` David Gibson
2013-06-20  7:47                         ` Benjamin Herrenschmidt
2013-06-20  7:47                           ` Benjamin Herrenschmidt
2013-06-20  7:47                           ` Benjamin Herrenschmidt
2013-06-20  8:48                           ` Alexey Kardashevskiy
2013-06-20  8:48                             ` Alexey Kardashevskiy
2013-06-20  8:48                             ` Alexey Kardashevskiy
2013-06-20 14:55                             ` Alex Williamson
2013-06-20 14:55                               ` Alex Williamson
2013-06-20 14:55                               ` Alex Williamson
2013-06-22  8:25                               ` Alexey Kardashevskiy
2013-06-22  8:25                                 ` Alexey Kardashevskiy
2013-06-22  8:25                                 ` Alexey Kardashevskiy
2013-06-22 12:03                               ` David Gibson
2013-06-22 12:03                                 ` David Gibson
2013-06-22 12:03                                 ` David Gibson
2013-06-22 14:28                                 ` Alex Williamson
2013-06-22 14:28                                   ` Alex Williamson
2013-06-22 14:28                                   ` Alex Williamson
2013-06-24  3:52                                   ` David Gibson
2013-06-24  3:52                                     ` David Gibson
2013-06-24  3:52                                     ` David Gibson
2013-06-24  3:52                                     ` David Gibson
2013-06-24  4:41                                     ` Alex Williamson
2013-06-24  4:41                                       ` Alex Williamson
2013-06-24  4:41                                       ` Alex Williamson
2013-06-27 11:01                                       ` David Gibson
2013-06-27 11:01                                         ` David Gibson
2013-06-27 11:01                                         ` David Gibson
2013-06-22 23:28                                 ` Benjamin Herrenschmidt
2013-06-22 23:28                                   ` Benjamin Herrenschmidt
2013-06-22 23:28                                   ` Benjamin Herrenschmidt
2013-06-24  3:54                                   ` David Gibson
2013-06-24  3:54                                     ` David Gibson
2013-06-24  3:54                                     ` David Gibson
2013-06-24  3:58                                     ` Benjamin Herrenschmidt
2013-06-24  3:58                                       ` Benjamin Herrenschmidt
2013-06-24  3:58                                       ` Benjamin Herrenschmidt
2013-06-05  6:11 ` [PATCH 4/4] KVM: PPC: Add hugepage " Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-05  6:11   ` Alexey Kardashevskiy
2013-06-16  4:46   ` Benjamin Herrenschmidt [this message]
2013-06-16  4:46     ` Benjamin Herrenschmidt
2013-06-16  4:46     ` Benjamin Herrenschmidt
2013-06-17 16:35   ` Paolo Bonzini
2013-06-17 16:35     ` Paolo Bonzini
2013-06-17 16:35     ` Paolo Bonzini
2013-06-12  3:14 ` [PATCH 0/4 v3] KVM: PPC: " Benjamin Herrenschmidt
2013-06-12  3:14   ` Benjamin Herrenschmidt
2013-06-12  3:14   ` Benjamin Herrenschmidt
  -- strict thread matches above, loose matches on Subject: below --
2013-05-21  3:06 [PATCH 0/4 v2] " Alexey Kardashevskiy
2013-05-21  3:06 ` [PATCH 4/4] KVM: PPC: Add hugepage support for " Alexey Kardashevskiy
2013-05-21  3:06   ` Alexey Kardashevskiy
2013-05-21  3:06   ` Alexey Kardashevskiy

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=1371358002.21896.124.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=david@gibson.dropbear.id.au \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=paulus@samba.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 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.