From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/6] arm/arm64: KVM: add 'writable' parameter to kvm_phys_addr_ioremap
Date: Thu, 09 Oct 2014 14:07:49 +0100 [thread overview]
Message-ID: <543688A5.9020300@arm.com> (raw)
In-Reply-To: <1410990981-665-4-git-send-email-ard.biesheuvel@linaro.org>
On 17/09/14 22:56, Ard Biesheuvel wrote:
> Add support for read-only MMIO passthrough mappings by adding a
> 'writable' parameter to kvm_phys_addr_ioremap. For the moment,
> mappings will be read-write even if 'writable' is false, but once
> the definition of PAGE_S2_DEVICE gets changed, those mappings will
> be created read-only.
>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
> arch/arm/kvm/mmu.c | 5 ++++-
> arch/arm64/include/asm/kvm_mmu.h | 2 +-
> virt/kvm/arm/vgic.c | 3 ++-
> 3 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c
> index c093e95ff7ef..fe53c3a30383 100644
> --- a/arch/arm/kvm/mmu.c
> +++ b/arch/arm/kvm/mmu.c
> @@ -674,7 +674,7 @@ static int stage2_set_pte(struct kvm *kvm, struct kvm_mmu_memory_cache *cache,
> * @size: The size of the mapping
> */
> int kvm_phys_addr_ioremap(struct kvm *kvm, phys_addr_t guest_ipa,
> - phys_addr_t pa, unsigned long size)
> + phys_addr_t pa, unsigned long size, bool writable)
> {
> phys_addr_t addr, end;
> int ret = 0;
> @@ -687,6 +687,9 @@ int kvm_phys_addr_ioremap(struct kvm *kvm, phys_addr_t guest_ipa,
> for (addr = guest_ipa; addr < end; addr += PAGE_SIZE) {
> pte_t pte = pfn_pte(pfn, PAGE_S2_DEVICE);
>
> + if (writable)
> + kvm_set_s2pte_writable(&pte);
> +
> ret = mmu_topup_memory_cache(&cache, 2, 2);
> if (ret)
> goto out;
> diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h
> index 737da742b293..7474e611bb2a 100644
> --- a/arch/arm64/include/asm/kvm_mmu.h
> +++ b/arch/arm64/include/asm/kvm_mmu.h
> @@ -78,7 +78,7 @@ void free_hyp_pgds(void);
> int kvm_alloc_stage2_pgd(struct kvm *kvm);
> void kvm_free_stage2_pgd(struct kvm *kvm);
> int kvm_phys_addr_ioremap(struct kvm *kvm, phys_addr_t guest_ipa,
> - phys_addr_t pa, unsigned long size);
> + phys_addr_t pa, unsigned long size, bool writable);
I'm afraid you missed the equivalent 32bit declaration.
>
> int kvm_handle_guest_abort(struct kvm_vcpu *vcpu, struct kvm_run *run);
>
> diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c
> index 73eba793b17f..c2bdbf4e25c2 100644
> --- a/virt/kvm/arm/vgic.c
> +++ b/virt/kvm/arm/vgic.c
> @@ -1628,7 +1628,8 @@ int kvm_vgic_init(struct kvm *kvm)
> }
>
> ret = kvm_phys_addr_ioremap(kvm, kvm->arch.vgic.vgic_cpu_base,
> - vgic->vcpu_base, KVM_VGIC_V2_CPU_SIZE);
> + vgic->vcpu_base, KVM_VGIC_V2_CPU_SIZE,
> + true);
> if (ret) {
> kvm_err("Unable to remap VGIC CPU to VCPU\n");
> goto out;
>
Thanks,
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2014-10-09 13:07 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-17 21:56 [PATCH 0/6] KVM: handling of MMIO pass-through regions Ard Biesheuvel
2014-09-17 21:56 ` [PATCH 1/6] arm/arm64: KVM: use __GFP_ZERO not memset() to get zeroed pages Ard Biesheuvel
2014-09-29 13:02 ` Christoffer Dall
2014-10-09 12:59 ` Marc Zyngier
2014-09-17 21:56 ` [PATCH 2/6] arm/arm64: KVM: fix potential NULL dereference in user_mem_abort() Ard Biesheuvel
2014-09-29 13:01 ` Christoffer Dall
2014-10-09 13:05 ` Marc Zyngier
2014-10-09 13:10 ` Ard Biesheuvel
2014-10-09 13:11 ` Christoffer Dall
2014-10-09 13:13 ` Marc Zyngier
2014-09-17 21:56 ` [PATCH 3/6] arm/arm64: KVM: add 'writable' parameter to kvm_phys_addr_ioremap Ard Biesheuvel
2014-09-25 0:03 ` Mario Smarduch
2014-09-29 12:23 ` Christoffer Dall
2014-09-29 18:02 ` Mario Smarduch
2014-09-29 18:26 ` Christoffer Dall
2014-09-29 12:59 ` Christoffer Dall
2014-10-09 13:07 ` Marc Zyngier [this message]
2014-10-09 13:11 ` Ard Biesheuvel
2014-10-09 13:46 ` Marc Zyngier
2014-09-17 21:56 ` [PATCH 4/6] ARM: kvm: define PAGE_S2_DEVICE as read-only by default Ard Biesheuvel
2014-09-29 13:05 ` Christoffer Dall
2014-10-09 13:10 ` Marc Zyngier
2014-09-17 21:56 ` [PATCH 5/6] arm64: " Ard Biesheuvel
2014-09-29 13:06 ` Christoffer Dall
2014-09-29 13:34 ` Will Deacon
2014-10-09 13:10 ` Marc Zyngier
2014-09-17 21:56 ` [PATCH 6/6] arm/arm64: KVM: map MMIO regions at creation time Ard Biesheuvel
2014-09-29 12:52 ` Christoffer Dall
2014-09-29 13:07 ` [PATCH 0/6] KVM: handling of MMIO pass-through regions Christoffer Dall
2014-10-01 5:36 ` Ard Biesheuvel
2014-10-10 11:08 ` Christoffer Dall
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=543688A5.9020300@arm.com \
--to=marc.zyngier@arm.com \
--cc=linux-arm-kernel@lists.infradead.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.