From: Avi Kivity <avi@qumranet.com>
To: Ben-Ami Yassour <benami@il.ibm.com>
Cc: "Han, Weidong" <weidong.han@intel.com>,
amit.shah@qumranet.com, kvm@vger.kernel.org,
Muli Ben-Yehuda <muli@il.ibm.com>,
anthony@codemonkey.ws
Subject: Re: [PATCH 3/8] KVM: Handle device assignment to guests
Date: Thu, 17 Jul 2008 11:31:29 +0300 [thread overview]
Message-ID: <487F0361.1050106@qumranet.com> (raw)
In-Reply-To: <1216283021.31546.325.camel@cluwyn.haifa.ibm.com>
Ben-Ami Yassour wrote:
>>>>> +
>>>>> +/* FIXME: Implement the OR logic needed to make shared interrupts
>>>>> on + * this line behave properly + */
>>>>>
>>>>>
>>>>>
>>>> Isn't this a showstopper? There is no easy way for a user to avoid
>>>> sharing, especially as we have only three pci irqs at present.
>>>>
> What do you mean by only 3 (for passthrough we use whatever interrupt
> the host is using for that device)?
>
>
There are two issue:
- shared host interrupts
- shared guest interrupts
For shared host interrupts, I don't think there's a cost-effective
solution, especially as hosts are transitioning to MSI. But the problem
the comment describes is shared guest interrupts, where the assigned
device's interrupt is shared with another device (assigned or virtual).
And currently we only have three shareable interrupts: 5, 10, and 11.
See qemu's pci_set_irq() for the logic used to share interrupts.
>>>>
>>>>
>>> Currently it's not easy to avoid sharing. I think we can support MSI for
>>> assgined device to solve sharing problem.
>>>
>>>
>> MSI is definitely the right direction, but we also need to support
>> the
>> OR logic for guests that do not support MSI.
>>
>>
>
> The main problems that I am ware of with shared interrupt are as
> follows:
>
> 1. Protection
> A bad guest can keep the interrupt line up, and if its shared then it
> interferes with other devices that might not be assigned to this guest.
>
> 2. Performance
> The current implementation disables the irq when the interrupt is
> received on the host and re-enables it when the guest acks the interrupt
> on the virtual ioapic.
>
> Clearly its not nice to do that when other devices uses the same irq...
>
> When removing the enable-disable of the irq, it causes serious
> performance degradation.
> The throughput goes down from 700 to 400 Mb/sec.
> The number of interrupts per second on the host (from the NIC) is 130000
> (compared to 22200 before).
>
>
These are all shared host interrupt problems.
> Regardless, I think that the right way to go would be to merge the
> current code (with the non-shared interrupt limitation) and then
> continue to work on additional features like shared interrupts support.
> Do you agree?
>
The current code will be incredibly easy to break; all you need is more
than three pci devices. I think the sharing code can be easily added
(as a separate patch); all that's needed is to make sure the API is good.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2008-07-17 8:31 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-16 13:16 PCI passthrough with VT-d - native performance Ben-Ami Yassour
2008-07-16 13:16 ` [PATCH 1/8] KVM: Introduce a callback routine for IOAPIC ack handling Ben-Ami Yassour
2008-07-16 13:16 ` [PATCH 2/8] KVM: Introduce a callback routine for PIC " Ben-Ami Yassour
2008-07-16 13:17 ` [PATCH 3/8] KVM: Handle device assignment to guests Ben-Ami Yassour
2008-07-16 13:17 ` [PATCH 4/8] KVM: PCIPT: fix interrupt handling Ben-Ami Yassour
2008-07-16 13:17 ` [PATCH 5/8] KVM: PCIPT: change order of device release Ben-Ami Yassour
2008-07-16 13:17 ` [PATCH 6/8] VT-d: changes to support KVM Ben-Ami Yassour
2008-07-16 13:17 ` [PATCH 7/8] KVM: PCIPT: VT-d support Ben-Ami Yassour
2008-07-16 13:17 ` [PATCH 8/8] KVM: PCIPT: VT-d: dont map mmio memory slots Ben-Ami Yassour
2008-07-16 13:21 ` PCI passthrough with VT-d - native performance Ben-Ami Yassour
2008-07-16 13:21 ` [PATCH 1/2] KVM/userspace: Support for assigning PCI devices to guest Ben-Ami Yassour
2008-07-16 13:21 ` [PATCH 2/2] PCIPT: direct mmio Ben-Ami Yassour
2008-07-17 7:52 ` [PATCH 1/2] KVM/userspace: Support for assigning PCI devices to guest Han, Weidong
2008-07-22 12:28 ` Ben-Ami Yassour
2008-07-22 12:44 ` [PATCH 1/2] KVM/userspace: Support for assigning PCI devicesto guest Han, Weidong
2008-07-16 15:06 ` [PATCH 5/8] KVM: PCIPT: change order of device release Avi Kivity
2008-07-16 15:06 ` [PATCH 4/8] KVM: PCIPT: fix interrupt handling Avi Kivity
2008-07-23 13:37 ` Amit Shah
2008-07-24 11:28 ` Ben-Ami Yassour
2008-07-24 13:31 ` Amit Shah
2008-07-24 14:24 ` Ben-Ami Yassour
2008-07-16 15:04 ` [PATCH 3/8] KVM: Handle device assignment to guests Avi Kivity
2008-07-17 2:09 ` Han, Weidong
2008-07-17 2:29 ` Yang, Sheng
2008-07-17 6:02 ` Avi Kivity
2008-07-17 8:23 ` Ben-Ami Yassour
2008-07-17 8:31 ` Avi Kivity [this message]
2008-07-17 18:01 ` Ben-Ami Yassour
2008-07-17 18:07 ` Avi Kivity
2008-07-17 9:34 ` Ben-Ami Yassour
2008-07-17 9:50 ` Avi Kivity
2008-07-17 17:40 ` Ben-Ami Yassour
2008-07-17 18:04 ` Avi Kivity
2008-07-16 14:36 ` PCI passthrough with VT-d - native performance Avi Kivity
2008-07-16 15:18 ` Ben-Ami Yassour
2008-07-16 15:22 ` Avi Kivity
2008-07-16 15:23 ` Anthony Liguori
2008-07-16 16:13 ` Ben-Ami Yassour
2008-07-16 16:57 ` Avi Kivity
2008-07-17 6:24 ` Ben-Ami Yassour
2008-07-17 3:20 ` Han, Weidong
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=487F0361.1050106@qumranet.com \
--to=avi@qumranet.com \
--cc=amit.shah@qumranet.com \
--cc=anthony@codemonkey.ws \
--cc=benami@il.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=muli@il.ibm.com \
--cc=weidong.han@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox