[PATCH 06/19] KVM: PPC: Book3S HV: add a GET_ESB_FD control to the XIVE native device
Cédric Le Goater
clg at kaod.org
Sat Feb 9 20:41:38 AEDT 2019
On 2/8/19 10:53 PM, Paul Mackerras wrote:
> On Fri, Feb 08, 2019 at 08:58:14AM +0100, Cédric Le Goater wrote:
>> On 2/8/19 6:15 AM, David Gibson wrote:
>>> On Thu, Feb 07, 2019 at 10:03:15AM +0100, Cédric Le Goater wrote:
>>>> That's the plan I have in mind as suggested by Paul if I understood it well.
>>>> The mechanics are more complex than the patch zapping the PTEs from the VMA
>>>> but it's also safer.
>>>
>>> Well, yes, where "safer" means "has the possibility to be correct".
>>
>> Well, the only problem with the kernel approach is keeping a pointer on
>> the VMA. If we could call find_vma(), it would be perfectly safe and much
>> more simpler.
>
> You seem to be assuming that the kernel can easily work out a single
> virtual address which will be the only place where a given set of
> interrupt pages are mapped. But that is really not possible in the
> general case, because userspace could have mapped the fd at many
> different offsets in many different places.
>
> QEMU doesn't do that; in QEMU, the mmaps are sufficiently limited that
> it can work out a single virtual address that needs to be changed.
> The way that QEMU should tell the kernel what that address is and what
> the mapping should be changed to, is via the existing munmap()/mmap()
> interface.
Yes. We agreed on that. QEMU should handle these mappings somewhere in
VFIO. It's me grumbling, that's all.
The discussion has moved to the mmap() interface of the KVM device. The
current proposal adds controls on the device creating fds to mmap() the
TIMA pages and the ESB pages. David is proposing to use directly the fd
of the KVM device to mmap() these pages with a different offset for each
set.
I think that should work pretty well, for passthrough also. The fault
handler should take care of populating the VMA(s) with the appropriate
pages.
We might support END notification one day, so we should have room for
these pages. And nested might require IRQ space extensions at L1.
something to keep in mind.
C.
More information about the Linuxppc-dev
mailing list