From: Amos Kong <akong@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: aliguori@us.ibm.com, stefanha@linux.vnet.ibm.com,
kvm@vger.kernel.org, mtosatti@redhat.com, qemu-devel@nongnu.org,
avi@redhat.com
Subject: Re: [Qemu-devel] [PATCH 1/2] return available ioeventfds count in kvm_has_many_ioeventfds()
Date: Tue, 13 Mar 2012 20:00:24 +0800 [thread overview]
Message-ID: <4F5F36D8.9050800@redhat.com> (raw)
In-Reply-To: <4F5F34A2.6070301@siemens.com>
On 13/03/12 19:50, Jan Kiszka wrote:
> Please tag uq/master patches with "PATCH uq/master".
>
> On 2012-03-13 11:42, Amos Kong wrote:
>> Older kernels have a 6 device limit on the KVM io bus.
>> This patch makes kvm_has_many_ioeventfds() return available
>> ioeventfd count. ioeventfd will be disabled if there is
>> no 7 available ioeventfds.
>>
>> Signed-off-by: Amos Kong<akong@redhat.com>
>> ---
>> hw/virtio-pci.c | 2 +-
>> kvm-all.c | 9 +++------
>> 2 files changed, 4 insertions(+), 7 deletions(-)
>>
>> diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
>> index a0fb7c1..d63f303 100644
>> --- a/hw/virtio-pci.c
>> +++ b/hw/virtio-pci.c
>> @@ -678,7 +678,7 @@ void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev)
>> pci_register_bar(&proxy->pci_dev, 0, PCI_BASE_ADDRESS_SPACE_IO,
>> &proxy->bar);
>>
>> - if (!kvm_has_many_ioeventfds()) {
>> + if (kvm_has_many_ioeventfds() != 7) {
>> proxy->flags&= ~VIRTIO_PCI_FLAG_USE_IOEVENTFD;
>> }
>>
>> diff --git a/kvm-all.c b/kvm-all.c
>> index 3c6b4f0..d12694b 100644
>> --- a/kvm-all.c
>> +++ b/kvm-all.c
>> @@ -78,7 +78,6 @@ struct KVMState
>> int pit_in_kernel;
>> int pit_state2;
>> int xsave, xcrs;
>> - int many_ioeventfds;
>> int irqchip_inject_ioctl;
>> #ifdef KVM_CAP_IRQ_ROUTING
>> struct kvm_irq_routing *irq_routes;
>> @@ -510,8 +509,8 @@ static int kvm_check_many_ioeventfds(void)
>> }
>> }
>>
>> - /* Decide whether many devices are supported or not */
>> - ret = i == ARRAY_SIZE(ioeventfds);
>> + /* If i equals to 7, many devices are supported */
>> + ret = i;
>>
>> while (i--> 0) {
>> kvm_set_ioeventfd_pio_word(ioeventfds[i], 0, i, false);
>> @@ -1078,8 +1077,6 @@ int kvm_init(void)
>> kvm_state = s;
>> memory_listener_register(&kvm_memory_listener, NULL);
>>
>> - s->many_ioeventfds = kvm_check_many_ioeventfds();
>> -
>> cpu_interrupt_handler = kvm_handle_interrupt;
>>
>> return 0;
>> @@ -1407,7 +1404,7 @@ int kvm_has_many_ioeventfds(void)
>> if (!kvm_enabled()) {
>> return 0;
>> }
>> - return kvm_state->many_ioeventfds;
>> + return kvm_check_many_ioeventfds();
>
> And why are you dropping the caching of the kvm_check_many_ioeventfds()
> return value? Is kvm_has_many_ioeventfds not used outside init scopes?
Hi Jan,
In the past, kvm_state->many_ioeventfds is only updated once at the
beginning,
I want to use kvm_check_many_ioeventfds() to check if available
ioeventfd exists
before starting ioeventfd each time.
--
Amos.
next prev parent reply other threads:[~2012-03-13 12:00 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-13 10:42 [PATCH 0/2] virtio-pci: fix abort when fail to allocate ioeventfd Amos Kong
2012-03-13 10:42 ` [Qemu-devel] " Amos Kong
2012-03-13 10:42 ` [PATCH 1/2] return available ioeventfds count in kvm_has_many_ioeventfds() Amos Kong
2012-03-13 10:42 ` [Qemu-devel] " Amos Kong
2012-03-13 11:50 ` Jan Kiszka
2012-03-13 11:50 ` [Qemu-devel] " Jan Kiszka
2012-03-13 12:00 ` Amos Kong [this message]
2012-03-13 12:24 ` Jan Kiszka
2012-03-13 13:05 ` Amos Kong
2012-03-13 10:42 ` [PATCH 2/2] virtio-pci: fallback to userspace when there is no enough available ioeventfd Amos Kong
2012-03-13 10:42 ` [Qemu-devel] " Amos Kong
2012-03-13 11:23 ` [PATCH 0/2] virtio-pci: fix abort when fail to allocate ioeventfd Stefan Hajnoczi
2012-03-13 11:23 ` [Qemu-devel] " Stefan Hajnoczi
2012-03-13 11:51 ` Amos Kong
2012-03-13 11:51 ` Amos Kong
2012-03-13 14:30 ` Stefan Hajnoczi
2012-03-13 14:30 ` Stefan Hajnoczi
2012-03-13 14:47 ` Amos Kong
2012-03-13 14:47 ` Amos Kong
2012-03-13 16:36 ` Stefan Hajnoczi
2012-03-13 16:36 ` Stefan Hajnoczi
2012-03-14 0:30 ` Amos Kong
2012-03-14 0:30 ` Amos Kong
2012-03-14 8:57 ` Stefan Hajnoczi
2012-03-14 8:57 ` Stefan Hajnoczi
2012-03-14 9:22 ` Avi Kivity
2012-03-14 9:22 ` [Qemu-devel] " Avi Kivity
2012-03-14 9:59 ` Stefan Hajnoczi
2012-03-14 9:59 ` [Qemu-devel] " Stefan Hajnoczi
2012-03-14 10:05 ` Avi Kivity
2012-03-14 10:05 ` [Qemu-devel] " Avi Kivity
2012-03-14 10:39 ` Stefan Hajnoczi
2012-03-14 10:39 ` [Qemu-devel] " Stefan Hajnoczi
2012-03-14 10:46 ` Avi Kivity
2012-03-14 10:46 ` [Qemu-devel] " Avi Kivity
2012-03-14 11:46 ` Stefan Hajnoczi
2012-03-14 11:46 ` [Qemu-devel] " Stefan Hajnoczi
2012-03-16 8:59 ` Amos Kong
2012-03-16 8:59 ` [Qemu-devel] " Amos Kong
2012-03-19 8:21 ` Stefan Hajnoczi
2012-03-19 8:21 ` [Qemu-devel] " Stefan Hajnoczi
2012-03-19 10:11 ` Avi Kivity
2012-03-19 10:11 ` [Qemu-devel] " Avi Kivity
-- strict thread matches above, loose matches on Subject: below --
2012-03-13 10:35 [Qemu-devel] [PATCH 1/2] return available ioeventfds count in kvm_has_many_ioeventfds() Amos Kong
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=4F5F36D8.9050800@redhat.com \
--to=akong@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=avi@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.ibm.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 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.