qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qemu: msi irq allocation api


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH] qemu: msi irq allocation api
Date: Wed, 20 May 2009 23:18:56 +0300

On 5/20/09, Michael S. Tsirkin <address@hidden> wrote:
> On Wed, May 20, 2009 at 09:38:58PM +0300, Blue Swirl wrote:
>  > On 5/20/09, Michael S. Tsirkin <address@hidden> wrote:
>  > > On Wed, May 20, 2009 at 08:44:31PM +0300, Blue Swirl wrote:
>  > >  > On 5/20/09, Michael S. Tsirkin <address@hidden> wrote:
>  > >  > > On Wed, May 20, 2009 at 08:21:01PM +0300, Blue Swirl wrote:
>  > >  > >  > On 5/20/09, Michael S. Tsirkin <address@hidden> wrote:
>  > >  > >  > > define api for allocating/setting up msi-x irqs, and for 
> updating them
>  > >  > >  > >  with msi-x vector information, supply implementation in 
> ioapic. Please
>  > >  > >  > >  comment on this API: I intend to port my msi-x patch to work 
> on top of
>  > >  > >  > >  it.
>  > >  > >  > >
>  > >  > >  > >  Signed-off-by: Michael S. Tsirkin <address@hidden>
>  > >  > >  >
>  > >  > >  > Sparc64 also uses packets ("mondos", not implemented yet) for
>  > >  > >  > interrupt vector data, there the packet size is 8 * 64 bits.
>  > >  > >  > I think we should aim for a more generic API that covers this 
> case also.
>  > >  > >
>  > >  > >
>  > >  > > Are you sure this is a good idea? MSI is tied to PCI, and PCI only 
> has
>  > >  > >  MSI, not "mondos". What code would benefit from this abstraction?
>  > >  >
>  > >  > Sparc64 emulation, of course. I think also the API would be neater.
>  > >
>  > >
>  > > Since "mondos" are not interrupts, why use irqs for them?
>  >
>  > I just said above that they are used for interrupt vector data. What
>  > makes you think they are not interrupts?
>
>
> I'm sorry, I don't really know anything about sparc.
>  All I am saying is that in PCI, interrupts never pass data,
>  so qemu_set_irq as it is now, is a good API to send them.
>
>  For the sparc feature you describe, you probably want to add
>  a message data parameter to qemu_set_irq, but it's not
>  really useful for MSI.

But maybe this API would be useful for both MSI and mondo packets:
/* Get vector data stored in the irq */
void *qemu_irq_get_data(qemu_irq irq);

/* Set vector data stored in the irq */
void qemu_irq_set_data(qemu_irq irq, void *data);

You'd use a struct msi_state as the opaque (not using the array
indexed by irq number), I'd use some kind of
struct mondo {
 uint64_t packet[8];
};

Instead of ioapic_update_msi(), you'd call qemu_irq_set_data().




reply via email to

[Prev in Thread] Current Thread [Next in Thread]