Re: kvm_phys_addr_ioremap

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/11/12 13:24, Anton Romanov wrote:
> On Thu, Nov 8, 2012 at 3:03 PM, Christoffer Dall
> <c.dall@xxxxxxxxxxxxxxxxxxxxxx <mailto:c.dall@xxxxxxxxxxxxxxxxxxxxxx>>
> wrote:
> 
>     On Thu, Nov 8, 2012 at 1:57 PM, Anton Romanov <theli.ua@xxxxxxxxx
>     <mailto:theli.ua@xxxxxxxxx>> wrote:
>     >
>     >
>     >
>     > On Thu, Nov 8, 2012 at 2:28 PM, Christoffer Dall
>     > <c.dall@xxxxxxxxxxxxxxxxxxxxxx
>     <mailto:c.dall@xxxxxxxxxxxxxxxxxxxxxx>> wrote:
>     >>
>     >> On Thu, Nov 8, 2012 at 1:14 PM, Anton Romanov <theli.ua@xxxxxxxxx
>     <mailto:theli.ua@xxxxxxxxx>> wrote:
>     >> > On Wed, Nov 7, 2012 at 6:11 PM, Marc Zyngier
>     <marc.zyngier@xxxxxxx <mailto:marc.zyngier@xxxxxxx>>
>     >> > wrote:
>     >> >>
>     >> >> On 07/11/12 16:04, Anton Romanov wrote:
>     >> >> > What is the proper way for removing mapping created by
>     >> >> > kvm_phys_addr_ioremap so that the same guest address could be
>     >> >> > remapped
>     >> >> > to different physical one?
>     >> >>
>     >> >> So far, we only have static mappings (we don't expect the
>     hardware to
>     >> >> be
>     >> >> dynamically removed).
>     >> >>
>     >> >> To support this, you'll have to carefully remove the mapping from
>     >> >> stage-2 and flush the corresponding TLBs after synchronizing
>     the CPUs.
>     >> >> Patches welcome.
>     >> >>
>     >> > Is the following enough or should I do that differently before
>     >> > submitting
>     >> > patch?
>     >>
>     >> you can send a patch using git to get it correctly formatted, but I
>     >> would like to see motivation and upstream use cases before merging
>     >> this code.
>     >
>     > I was asking about the code, not about formatting :)
>     >>
>     >> >
>     >> > This is how it currently works for me (TLB is invalidated in
>     >> > stage2_clear_pte
>     >>
>     >> > if needed):
>     >> >
>     >> > /**
>     >> >  * @brief  - unmap a device range from guest IPA
>     >>
>     >> brief?
>     >>
>     >> >  *
>     >> >  * @kvm:    The KVM pointer
>     >> >  * @guest_ipa:    The IPA at which to insert the mapping
>     >> >  * @size:    The size of the mapping
>     >> >  */
>     >> > void kvm_phys_addr_unmap(struct kvm *kvm, phys_addr_t guest_ipa,
>     >> >               unsigned long size)
>     >> > {
>     >> >     phys_addr_t addr, end;
>     >> >
>     >> >     end = (guest_ipa + size + PAGE_SIZE - 1) & PAGE_MASK;
>     >> >
>     >> >     for (addr = guest_ipa; addr < end; addr += PAGE_SIZE) {
>     >> >         spin_lock(&kvm->mmu_lock);
>     >> >         stage2_clear_pte(kvm, addr);
>     >> >         spin_unlock(&kvm->mmu_lock);
>     >> >     }
>     >> >
>     >> > }
>     >> >
>     >>
>     >> why do you need to explicitly unmap first? Can't you just
>     redirect the
>     >> mappings if you wish calling ste_stage2_pte with a new physical
>     >> address and possibly tweak it so it doesn't error out for existing io
>     >> mappings?
>     >>
>     > I don't need to explicitly unmap. Remapping works fine for me too.
>     > However I felt that
>     >     if (iomap && pte_present(*pte))
>     >         return -EFAULT;
>     > wasn't sure about the reasoning behind that check.
> 
>     the use case is to avoid unintentional overlapping IO regions. You
>     could change the iomap flag to be something like overlap_check.
> 
> I see. Thanks. Will take that into account.

I'd also like to see a compelling use case for such a feature.

	M.
-- 
Jazz is not dead. It just smells funny...


_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm


[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux