From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/6] arm64: mm: Add __virt_to_idmap() to keep kvm build happy
Date: Fri, 15 Nov 2013 15:29:52 +0000 [thread overview]
Message-ID: <52863DF0.9070200@arm.com> (raw)
In-Reply-To: <52863CE5.3070906@ti.com>
On 15/11/13 15:25, Santosh Shilimkar wrote:
> On Friday 15 November 2013 10:05 AM, Marc Zyngier wrote:
>> On 14/11/13 19:37, Santosh Shilimkar wrote:
>>> ARM kvm code will make use of __virt_to_idmap() on arm32
>>> machines as hardware interconnect supported alias of physical
>>> memory for idmap purposes. The same code is shared with arm64
>>> bit and hence will break the builds. So we add __virt_to_idmap()
>>> which is just __virt_to_phys() on arm64 bit to keep build happy.
>>>
>>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>>> Cc: Will Deacon <will.deacon@arm.com>
>>> Cc: Marc Zyngier <marc.zyngier@arm.com>
>>> Cc: Christoffer Dall <christoffer.dall@linaro.org>
>>>
>>> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
>>> ---
>>> arch/arm64/include/asm/memory.h | 8 ++++++++
>>> 1 file changed, 8 insertions(+)
>>>
>>> diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
>>> index 3776217..d9341ee 100644
>>> --- a/arch/arm64/include/asm/memory.h
>>> +++ b/arch/arm64/include/asm/memory.h
>>> @@ -75,6 +75,14 @@
>>> #define __phys_to_virt(x) ((unsigned long)((x) - PHYS_OFFSET + PAGE_OFFSET))
>>>
>>> /*
>>> + * Added to keep arm64 kvm build working which shares code with
>>> + * 32bit port. ARM kvm code makes use of __virt_to_idmap() on arm32
>>> + * machines as hardware interconnect supported alias of physical
>>> + * memory for idmap purposes.
>>> + */
>>> +#define virt_to_idmap(x) __virt_to_phys(x)
>>> +
>>> +/*
>>> * Convert a physical address to a Page Frame Number and back
>>> */
>>> #define __phys_to_pfn(paddr) ((unsigned long)((paddr) >> PAGE_SHIFT))
>>>
>>
>> I'd rather have a kvm_virt_to_phys() in kvm_mmu.h. That's how we've
>> dealt with that kind of difference so far.
>>
> Are you suggesting something like below ?
Yes, I like it a lot more.
Catalin, what do you think?
M.
>
> ---
> arch/arm/include/asm/kvm_mmu.h | 1 +
> arch/arm/kvm/mmu.c | 8 ++++----
> arch/arm64/include/asm/kvm_mmu.h | 1 +
> 3 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h
> index 9b28c41..fd90efa 100644
> --- a/arch/arm/include/asm/kvm_mmu.h
> +++ b/arch/arm/include/asm/kvm_mmu.h
> @@ -129,6 +129,7 @@ static inline void coherent_icache_guest_page(struct kvm *kvm, gfn_t gfn)
> }
>
> #define kvm_flush_dcache_to_poc(a,l) __cpuc_flush_dcache_area((a), (l))
> +#define kvm_virt_to_phys(x) virt_to_idmap((unsigned long)(x))
>
> #endif /* !__ASSEMBLY__ */
>
> diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c
> index b0de86b..071e535 100644
> --- a/arch/arm/kvm/mmu.c
> +++ b/arch/arm/kvm/mmu.c
> @@ -747,9 +747,9 @@ int kvm_mmu_init(void)
> {
> int err;
>
> - hyp_idmap_start = virt_to_phys(__hyp_idmap_text_start);
> - hyp_idmap_end = virt_to_phys(__hyp_idmap_text_end);
> - hyp_idmap_vector = virt_to_phys(__kvm_hyp_init);
> + hyp_idmap_start = kvm_virt_to_phys(__hyp_idmap_text_start);
> + hyp_idmap_end = kvm_virt_to_phys(__hyp_idmap_text_end);
> + hyp_idmap_vector = kvm_virt_to_phys(__kvm_hyp_init);
>
> if ((hyp_idmap_start ^ hyp_idmap_end) & PAGE_MASK) {
> /*
> @@ -776,7 +776,7 @@ int kvm_mmu_init(void)
> */
> kvm_flush_dcache_to_poc(init_bounce_page, len);
>
> - phys_base = virt_to_phys(init_bounce_page);
> + phys_base = kvm_virt_to_phys(init_bounce_page);
> hyp_idmap_vector += phys_base - hyp_idmap_start;
> hyp_idmap_start = phys_base;
> hyp_idmap_end = phys_base + len;
> diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h
> index efe609c..9ce7c88 100644
> --- a/arch/arm64/include/asm/kvm_mmu.h
> +++ b/arch/arm64/include/asm/kvm_mmu.h
> @@ -130,6 +130,7 @@ static inline void coherent_icache_guest_page(struct kvm *kvm, gfn_t gfn)
> }
>
> #define kvm_flush_dcache_to_poc(a,l) __flush_dcache_area((a), (l))
> +#define kvm_virt_to_phys(x) __virt_to_phys((unsigned long)(x))
>
> #endif /* __ASSEMBLY__ */
> #endif /* __ARM64_KVM_MMU_H__ */
>
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2013-11-15 15:29 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 19:37 [PATCH 0/6] ARM/AMR64: Few patches on kvm and mm code Santosh Shilimkar
2013-11-14 19:37 ` [PATCH 1/6] arm64: mm: Add __virt_to_idmap() to keep kvm build happy Santosh Shilimkar
2013-11-15 13:34 ` Catalin Marinas
2013-11-15 14:55 ` Santosh Shilimkar
2013-11-15 14:58 ` Catalin Marinas
2013-11-15 15:31 ` Santosh Shilimkar
2013-11-15 15:05 ` Marc Zyngier
2013-11-15 15:25 ` Santosh Shilimkar
2013-11-15 15:29 ` Marc Zyngier [this message]
2013-11-15 15:31 ` Catalin Marinas
2013-11-15 15:33 ` Santosh Shilimkar
2013-11-14 19:37 ` [PATCH 2/6] ARM: kvm: Use virt_to_idmap instead of virt_to_phys for idmap mappings Santosh Shilimkar
2013-11-15 0:12 ` Christoffer Dall
2013-11-14 19:37 ` [PATCH 3/6] ARM: mm: Drop the lowmem watermark check from virt_addr_valid() Santosh Shilimkar
2013-11-15 0:22 ` Christoffer Dall
2013-11-15 0:31 ` Santosh Shilimkar
2013-11-15 0:40 ` Christoffer Dall
2013-11-15 11:48 ` Marc Zyngier
2013-11-15 11:43 ` Marc Zyngier
2013-11-15 14:55 ` Santosh Shilimkar
2013-11-15 15:08 ` Marc Zyngier
2013-11-15 15:46 ` Christoffer Dall
2013-11-15 14:20 ` Russell King - ARM Linux
2013-11-15 15:40 ` Santosh Shilimkar
2013-11-14 19:37 ` [PATCH 4/6] arm64: " Santosh Shilimkar
2013-11-15 13:39 ` Catalin Marinas
2013-11-15 14:25 ` Marc Zyngier
2013-11-15 14:57 ` Santosh Shilimkar
2013-11-14 19:37 ` [PATCH 5/6] ARM: kvm: Use phys_addr_t instead of unsigned long in mm code Santosh Shilimkar
2013-11-15 0:09 ` Christoffer Dall
2013-11-15 0:10 ` Santosh Shilimkar
2013-11-15 11:58 ` Marc Zyngier
2013-11-14 19:37 ` [PATCH 6/6] ARM: kvm: TMP: Commit the hyp page tables to main memory Santosh Shilimkar
2013-11-14 22:36 ` Santosh Shilimkar
2013-11-15 0:11 ` Christoffer Dall
2013-11-15 0:15 ` Santosh Shilimkar
2013-11-15 0:27 ` Christoffer Dall
2013-11-15 0:36 ` Santosh Shilimkar
2013-11-15 0:42 ` Christoffer Dall
2013-11-15 1:19 ` Santosh Shilimkar
2013-11-15 1:35 ` 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=52863DF0.9070200@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.