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-devel

Re: [Xen-devel] [PATCH] Change spec of callback IRQ for PV-on-HVM onIA64

To: "Tian, Kevin" <kevin.tian@xxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] Change spec of callback IRQ for PV-on-HVM onIA64
From: Doi.Tsunehisa@xxxxxxxxxxxxxx
Date: Tue, 21 Nov 2006 17:05:05 +0900
Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, Doi.Tsunehisa@xxxxxxxxxxxxxx, Alex Williamson <alex.williamson@xxxxxx>
Delivery-date: Tue, 21 Nov 2006 00:05:20 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: Your message of Tue, 21 Nov 2006 15:53:58 +0800. <D470B4E54465E3469E2ABBC5AFAC390F0513F8@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <D470B4E54465E3469E2ABBC5AFAC390F0513F8@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Hi Kevin,

You (kevin.tian) said:
>>> Maybe I'm missing something and you can help me understand. :-)
>>> Whatever the value is mangled in pdev->irq, you should always
>>> keep following two instances same:
>>>     if ((ret = request_irq(pdev->irq, evtchn_interrupt, SA_SHIRQ,...
>>> and
>>>     if ((ret = set_callback_irq(pdev->irq)))
>>
>>  In x86-linux, two instances are same. But in IA64-linux, previous one
>>is a external interrupt vector for xen-platform interruption. Although
>>latter one is a hardware IRQ id. Both values are not same in IA64-linux.
> 
> The callback value is the one pending to vIRR, which should be same
> as the one that platform-pci driver binds to. I'm still not sure the exact 
> difference here. It should be arch-independent. You have to draw 
> agreement between two sides.

  In the Linux-world, I agree it. But... In the other OS (like Windows),
we can get only hardware IRQ with its driver interface. Thus I propose
to change the spec of callback IRQ.

>>> Before your patch, say pdev->irq is 0x27 (ISA irq 9), platform-pci
>>> driver binds handler to 0x27 and xen will inject by callback_irq 0x27.
>>> However in your patch, request_irq is still using pdev->irq (0x27)
>>> while set_callback_irq instead wants (0x9). In this case, how can you
>>> still make things working when two sides don't match...
>>
>>  With the modification of hypervisor side, the callback_irq(it's hardware
>>IRQ) becomes to be converted to external interrupt vector with a
>>emulator
>>of IOSAPIC.
> 
> So you are saying:
> 
> Callback_irq (0x9) ----> isa_irq_to_vector(0x27) ----> pending to 0x27 
> bit of IRRs -----> xen injects external interrupt to hvm -----> hvm 
> ia64_handle_irq reads IVR -----> do_IRQ (0x27) ----> evtchn_interrupt
> 
> If this is the case, today's sequence is:
> Callback_irq (0x27) ----> pending to 0x27 bit of IRRs -----> xen 
> Injects external interrupt to hvm -----> hvm ia64_handle_irq reads 
> IVR -----> do_IRQ (0x27) ----> evtchn_interrupt

  Yes. I mean that indeed.

Thanks,
- Tsunehisa Doi


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel