All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dor Laor <dor.laor-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
Cc: kvm-devel
	<kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	virtualization
	<virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
Subject: Re: [PATCH 2/3] virtio ring implementation
Date: Mon, 24 Sep 2007 15:44:33 +0200	[thread overview]
Message-ID: <46F7BF41.9060705@qumranet.com> (raw)
In-Reply-To: <1190625307.27805.203.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>


[-- Attachment #1.1: Type: text/plain, Size: 1872 bytes --]

Rusty Russell wrote:
>
> These helper routines supply most of the virtqueue_ops for hypervisors
> which want to use a ring for virtio.  Unlike the previous lguest
> implementation:
>
> 1) The rings are variable sized (2^n-1 elements).
> 2) They have an unfortunate limit of 65535 bytes per sg element.
> 3) The page numbers are always 64 bit (PAE anyone?)
> 4) They no longer place used[] on a separate page, just a separate
>    cacheline.
> 5) We do a modulo on a variable.  We could be tricky if we cared.
> 6) Interrupts and notifies are suppressed using flags within the rings.
>
> Users need only implement the new_vq and free_vq hooks (KVM wants the
> guest to allocate the rings, lguest does it sanely).
>
> Signed-off-by: Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
>
[snip]
>
> +irqreturn_t vring_interrupt(int irq, void *_vq)
> +{
> +       struct vring_virtqueue *vq = to_vvq(_vq);
> +
> +       pr_debug("virtqueue interrupt for %p\n", vq);
> +
> +       if (unlikely(vq->broken))
> +               return IRQ_HANDLED;
> +
> +       if (more_used(vq)) {
> +               pr_debug("virtqueue callback for %p (%p)\n",
> +                        vq, vq->vq.callback);
> +               if (!vq->vq.callback)
> +                       return IRQ_NONE;
> +               if (!vq->vq.callback(&vq->vq))
> +                       vq->vring.avail->flags |= 
> VRING_AVAIL_F_NO_INTERRUPT;
> +       } else
> +               pr_debug("virtqueue %p no more used\n", vq);
> +
> +       return IRQ_HANDLED;
> +}
> +
>
Seems like there is a problem with shared irq line, the interrupt 
handler always returns IRQ_HANDLED (except for the trivial case
were the callback is null).

It can be solved by having a host irq counter (in the shared ring) and a 
guest irq counter and return
mb(); return (host_counter!=guest_counter)? IRQ_HANDLED:IRQ_NONE;

Dor.

[-- Attachment #1.2: Type: text/html, Size: 3740 bytes --]

[-- Attachment #2: Type: text/plain, Size: 228 bytes --]

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

[-- Attachment #3: Type: text/plain, Size: 186 bytes --]

_______________________________________________
kvm-devel mailing list
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/kvm-devel

  parent reply	other threads:[~2007-09-24 13:44 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-24  9:13 [PATCH 0/3] virtio implementation (draft VI) Rusty Russell
2007-09-24  9:14 ` [PATCH 1/3] virtio interface Rusty Russell
     [not found] ` <1190625194.27805.199.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-09-24  9:14   ` Rusty Russell
2007-09-24  9:15     ` [PATCH 2/3] virtio ring implementation Rusty Russell
     [not found]     ` <1190625256.27805.201.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-09-24  9:15       ` Rusty Russell
     [not found]         ` <1190625307.27805.203.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-09-24  9:16           ` [PATCH 3/3] virtio module alias support Rusty Russell
2007-09-24 16:02             ` Greg KH
     [not found]             ` <1190625394.27805.206.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-09-24 16:02               ` Greg KH
     [not found]                 ` <20070924160221.GB5846-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2007-09-25  0:50                   ` Rusty Russell
     [not found]                     ` <1190681405.27805.243.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-09-25  1:57                       ` Greg KH
     [not found]                         ` <20070925015747.GA16011-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2007-09-25  2:11                           ` Rusty Russell
2007-09-25  3:10                             ` Greg KH
     [not found]                             ` <1190686275.27805.255.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-09-25  3:10                               ` Greg KH
2007-09-25  2:11                         ` Rusty Russell
2007-09-25  1:57                     ` Greg KH
2007-09-25  0:50                 ` Rusty Russell
2007-09-24 13:44           ` Dor Laor [this message]
2007-09-24 23:43             ` [kvm-devel] [PATCH 2/3] virtio ring implementation Rusty Russell
     [not found]             ` <46F7BF41.9060705-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-09-24 23:43               ` Rusty Russell
2007-09-25 13:32               ` Rusty Russell
     [not found]                 ` <1190727156.27805.332.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-09-25 17:15                   ` Dor Laor
2007-09-25 23:37                     ` [kvm-devel] " Rusty Russell
     [not found]                     ` <46F94243.2000602-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-09-25 23:37                       ` Rusty Russell
2007-09-26  9:08                         ` [kvm-devel] " Dor Laor
     [not found]                         ` <1190763475.2227.20.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-09-26  9:08                           ` Dor Laor
2007-09-25 17:15                 ` [kvm-devel] " Dor Laor
2007-09-25 13:32             ` Rusty Russell
2007-09-24  9:16         ` [PATCH 3/3] virtio module alias support Rusty Russell
2007-09-24 13:44         ` [kvm-devel] [PATCH 2/3] virtio ring implementation Dor Laor
2007-09-24 22:18       ` [PATCH 1/3] virtio interface Arnd Bergmann
2007-09-24 23:37         ` [kvm-devel] " Rusty Russell
     [not found]         ` <200709250018.12705.arnd-r2nGTMty4D4@public.gmane.org>
2007-09-24 23:37           ` Rusty Russell
2007-09-25  6:36             ` [kvm-devel] " Arnd Bergmann
     [not found]             ` <1190677058.27805.225.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-09-25  6:36               ` Arnd Bergmann
     [not found]                 ` <200709250836.29451.arnd-r2nGTMty4D4@public.gmane.org>
2007-09-25 10:54                   ` Rusty Russell
2007-09-25 10:54                 ` [kvm-devel] " Rusty Russell
2007-09-25  8:18               ` Cornelia Huck
2007-09-25  8:18             ` [kvm-devel] " Cornelia Huck
2007-09-24 22:18     ` Arnd Bergmann

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=46F7BF41.9060705@qumranet.com \
    --to=dor.laor-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=dor.laor-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org \
    --cc=virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    /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.