From: Paolo Bonzini <pbonzini@redhat.com>
To: Yang Zhang <yang.z.zhang@intel.com>
Cc: kvm@vger.kernel.org, alex.williamson@redhat.com, gleb@redhat.com,
patrick.lu@intel.com
Subject: Re: [PATCH] KVM: Mapping IOMMU pages after updating memslot
Date: Mon, 28 Oct 2013 13:57:32 +0100 [thread overview]
Message-ID: <526E5F3C.1060300@redhat.com> (raw)
In-Reply-To: <1382579799-13273-1-git-send-email-yang.z.zhang@intel.com>
Il 24/10/2013 03:56, Yang Zhang ha scritto:
> From: Yang Zhang <yang.z.zhang@Intel.com>
>
> In kvm_iommu_map_pages(), we need to know the page size via call
> kvm_host_page_size(). And it will check whether the target slot
> is valid before return the right page size.
> Currently, we will map the iommu pages when creating a new slot.
> But we call kvm_iommu_map_pages() during preparing the new slot.
> At that time, the new slot is not visible by domain(still in preparing).
> So we cannot get the right page size from kvm_host_page_size() and
> this will break the IOMMU super page logic.
> The solution is to map the iommu pages after we insert the new slot
> into domain.
>
> Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
> Tested-by: Patrick Lu <patrick.lu@intel.com>
> ---
> virt/kvm/kvm_main.c | 29 ++++++++++++++---------------
> 1 files changed, 14 insertions(+), 15 deletions(-)
>
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index d469114..9ec60a2 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -873,21 +873,6 @@ int __kvm_set_memory_region(struct kvm *kvm,
> goto out_free;
> }
>
> - /*
> - * IOMMU mapping: New slots need to be mapped. Old slots need to be
> - * un-mapped and re-mapped if their base changes. Since base change
> - * unmapping is handled above with slot deletion, mapping alone is
> - * needed here. Anything else the iommu might care about for existing
> - * slots (size changes, userspace addr changes and read-only flag
> - * changes) is disallowed above, so any other attribute changes getting
> - * here can be skipped.
> - */
> - if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) {
> - r = kvm_iommu_map_pages(kvm, &new);
> - if (r)
> - goto out_slots;
> - }
> -
> /* actual memory is freed via old in kvm_free_physmem_slot below */
> if (change == KVM_MR_DELETE) {
> new.dirty_bitmap = NULL;
> @@ -901,6 +886,20 @@ int __kvm_set_memory_region(struct kvm *kvm,
> kvm_free_physmem_slot(&old, &new);
> kfree(old_memslots);
>
> + /*
> + * IOMMU mapping: New slots need to be mapped. Old slots need to be
> + * un-mapped and re-mapped if their base changes. Since base change
> + * unmapping is handled above with slot deletion, mapping alone is
> + * needed here. Anything else the iommu might care about for existing
> + * slots (size changes, userspace addr changes and read-only flag
> + * changes) is disallowed above, so any other attribute changes getting
> + * here can be skipped.
> + */
> + if ((change == KVM_MR_CREATE) || (change == KVM_MR_MOVE)) {
> + r = kvm_iommu_map_pages(kvm, &new);
> + return r;
> + }
> +
> return 0;
>
> out_slots:
>
Applied to kvm.git queue, thanks.
Paolo
next prev parent reply other threads:[~2013-10-28 12:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-24 1:56 [PATCH] KVM: Mapping IOMMU pages after updating memslot Yang Zhang
2013-10-28 12:57 ` Paolo Bonzini [this message]
2013-10-28 19:25 ` Alex Williamson
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=526E5F3C.1060300@redhat.com \
--to=pbonzini@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=gleb@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=patrick.lu@intel.com \
--cc=yang.z.zhang@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.