WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

[PATCH] Allow xen to share device with domain (RE: [PATCH] RE: [Xen-ia64

To: "Tian, Kevin" <kevin.tian@xxxxxxxxx>, "Alex Williamson" <alex.williamson@xxxxxx>
Subject: [PATCH] Allow xen to share device with domain (RE: [PATCH] RE: [Xen-ia64-devel] xencons interrupt problem)
From: "Tian, Kevin" <kevin.tian@xxxxxxxxx>
Date: Mon, 3 Jul 2006 16:23:11 +0800
Cc: xen-ia64-devel <xen-ia64-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Mon, 03 Jul 2006 01:25:00 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-ia64-devel-request@lists.xensource.com?subject=help>
List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>
List-post: <mailto:xen-ia64-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcacdhlwSl4QWPxRTPiB/SpEXID2HgB5oXfwAAbKO+A=
Thread-topic: [PATCH] Allow xen to share device with domain (RE: [PATCH] RE: [Xen-ia64-devel] xencons interrupt problem)
Hi, Alex,
        Attached is an updated patch on top of yours, to address issues 
found by far. Please review and check whether working on your box, 
and I only did simple validation on my box since adding logic doesn't 
affect boxes out of such scenario.

        A major change is to convert into a mutual mapping between xen 
vector and guest vector, and thus to address injection and EOI issues.

Signed-off-by Alex Williamson <alex.williamson@xxxxxx>
Signed-off-by Kevin Tian <kevin.tian@xxxxxxxxx>

Thanks,
Kevin

>-----Original Message-----
>From: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
>[mailto:xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of
>Tian, Kevin
>Sent: 2006年7月3日 13:34
>To: Alex Williamson
>Cc: xen-ia64-devel
>Subject: RE: [PATCH] RE: [Xen-ia64-devel] xencons interrupt problem
>
>>From: Alex Williamson [mailto:alex.williamson@xxxxxx]
>>Sent: 2006年7月1日 2:50
>>
>>   I have something working, please tell me what you think.
>Modifying
>>assign_irq_vector() to pass in a GSI seemed rather intrusive to the
>>guest, so I took a different approach.  Instead I recognize the guest
>>trying to overwrite a Xen owned vector, store the guest vector in an
>>array and set it up as a "Xen redirect" vector.  These vectors are
>>serviced from __do_IRQ after the Xen handler.  There is only one
>>redirect vector allowed per Xen vector, but that seems sufficient at
>>this point.  This allows full use of both the PCI UART (owned by Xen)
>>and the PCI NIC (owned by the guest) sharing a physical RTE.  Let
>me
>>know if you think this approach is acceptable.  Thanks,
>>
>>      Alex
>>
>>Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
>
>Hi, Alex,
>       The idea is basically good, but I do see several issues with your
>patch as following:
>
>1.
>out:
>+      if (guest_vector[irq].enabled) {
>+              irq_desc_t *guest_desc = irq_desc + guest_vector[irq].vector;
>+
>+              if (likely(guest_desc->status & IRQ_GUEST)) {
>+                      spin_lock(&guest_desc->lock);
>+                      __do_IRQ_guest(guest_vector[irq].vector);
>+                      spin_unlock(&guest_desc->lock);
>+              }
>+      }
>
>Ack() and End() are always been issued before and after above code
>piece, which is not desired for devices owned by guest since
>__do_IRQ_guest only sets pending event bit without wait and guest
>hasn't got chance to handle the irq. EOI is only issued when guest
>hypercalls to notify.
>
>2. pirq_guest_eoi needs to convert guest vector to xen vector and then
>to issue real end method under xen vector. Maybe a reverse array is
>required here for performance
>
>3. Same conversion is also required in pirq_guest_unbind, to flush
>pending irqs.
>
>4. Add your new hw interrupt controller type in pirq_acktype which
>decides whether guest EOI notification is required
>
>5. For change in iosapic_guest_write, we shouldn't warning when
>guest_vector[xen_vector].vector exists since it's possible for guest
>to mask/unmask existing RTE entry. We can only warn when existing
>vector doesn't match new rte value.
>
>6. I'd like to see a comment to emphasize so-called guest vector
>actually occupies a vector in xen vector space, which means such
>xen-guest shared irq line always consumes two xen vectors. Or else
>it's ambiguous a bit.
>
>Thanks
>Kevins
>
>_______________________________________________
>Xen-ia64-devel mailing list
>Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
>http://lists.xensource.com/xen-ia64-devel

Attachment: xen_irq_redirect_new.patch
Description: xen_irq_redirect_new.patch

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
<Prev in Thread] Current Thread [Next in Thread>