qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v10 16/26] intel_iommu: add support for split ir


From: Jan Kiszka
Subject: Re: [Qemu-devel] [PATCH v10 16/26] intel_iommu: add support for split irqchip
Date: Sun, 26 Jun 2016 15:27:50 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

On 2016-06-26 03:48, Peter Xu wrote:
> On Sat, Jun 25, 2016 at 05:18:40PM +0200, Jan Kiszka wrote:
>> On 2016-06-25 15:18, Peter Xu wrote:
>>> On Sat, Jun 25, 2016 at 10:08:10AM +0200, Jan Kiszka wrote:
> 
> [...]
> 
>>> I have a thought on how to implement the "sink" you have mentioned:
>>>
>>> First of all, in KVM, we provide a new KVM_IRQ_ROUTING_* type, maybe
>>> called:
>>>
>>>   KVM_IRQ_ROUTING_EVENTFD
>>
>> Not really, because all sources are either using eventfds, which you can
>> also terminate in user space (already done for vhost and vfio in certain
>> scenarios - IIRC) or originate there anyway (IOAPIC).
> 
> But how should we handle the cases when the interrupt path are all in
> kernel?

There are none which we can't redirect (only full in-kernel irqchip
would have, but that's unsupported anyway).

> 
> For vhost, data should be transfered all inside kernel when split
> irqchip and irqfd are used: when vhost got data, it triggers irqfd to
> deliver the interrupt to KVM. Along the way, we should all in kernel.
> 
> For vfio, we have vfio_msihandler() who handles the hardware IRQ and
> then triggers irqfd as well to KVM. Again, it seems all in kernel
> space, no chance to stop that as well.
> 
> Please correct me if I was wrong.

Look at what vhost is doing e.g.: when a virtqueue is masked, it
installs an event notifier that records incoming events in a pending
state field. When it's unmasked, the corresponding KVM irqfd is installed.

Jan


Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]