[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs
From: |
Paul Brook |
Subject: |
Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs |
Date: |
Sat, 12 Jun 2010 16:58:58 +0100 |
User-agent: |
KMail/1.13.3 (Linux/2.6.33-2-amd64; KDE/4.4.4; x86_64; ; ) |
> I think message passing interrupts
> are only used in bus based systems, like PCI or UPA/JBUS etc. I don't
> know how LAPIC/IOAPIC bus works, it could be similar.
PCI Message Signalled Interrupts use a regular data write, and we model it
exactly that way. Under normal circumstances you program the device to write
to memory mapped APIC control registers, but there's no real reason why you
couldn't write to RAM.
LAPIC/IOAPIC have their own bus. On some hardware this is multiplexed over the
main system bus, but logically it is a separate interconnect.
The fact that these a bus based systems suggests against using qemu_irq, which
is an inherently point-point system.
> > How is a
> > receiver meant to know for format of the message being delivered, and who
> > it's intended for?
>
> This depends on the architecture. On Sparc64 the message is specified
> by the guest or OF.
>...
> In real HW (MSI or Sparc64 mondo interrupts) a bus delivers the
> message. But our buses only handle address and data lines.
IIUC you're trying to use qemu_irq as a generic interconnect between devices.
I think that's going to cause more problems than it solves. If a bus has
additional message passing capabilities then this can be part of the bus
interface.
If two devices need a private communication channel then we probably want some
implementation agnostic way of defining this link. Connecting LAPIC to IOAPIC
is a potential example of this. However this needs to be done in a type-safe
manner. DMA channels may be another potential use of this linking. We'd want
to avoid connecting a DMA channel to an APIC.
[*] A simple unidirectional dma request line is suitable for qmu_irq. A DMA
system that transfers data outside of memory read/write transactions is not.
e.g. ISA effectively defines a regular memory bus plus 8 bidirectional data
streams (aka DMA channels). These are multiplexed over the same physical pins,
but logically distinct. The DMA channels could either be bundled up into the
ISA bus interface, or modelled as links between devices and the DMA
controller.
> > TBH I preferred the original system whereby the source can query the
> > state of the sink (i.e "are you ignoring this line?"). Note that
> > conceptually this should be querying state, not responding to an event.
>
> It's simple, but I think too simple. It would work for the coalescing
> interrupt hack but useless for other things.
I'm not convinced making qemu_irq do "other things" is a good idea.
Paul
- [Qemu-devel] [PATCH 03/16] hpet: Silence warning on write to running main counter, (continued)
- [Qemu-devel] [PATCH 03/16] hpet: Silence warning on write to running main counter, Jan Kiszka, 2010/06/06
- [Qemu-devel] [PATCH 07/16] monitor/QMP: Drop info hpet / query-hpet, Jan Kiszka, 2010/06/06
- [Qemu-devel] [PATCH 02/16] hpet: Coding style cleanups and some refactorings, Jan Kiszka, 2010/06/06
- [Qemu-devel] [PATCH 06/16] hpet: Start/stop timer when HPET_TN_ENABLE is modified, Jan Kiszka, 2010/06/06
- [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Jan Kiszka, 2010/06/06
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Paul Brook, 2010/06/12
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Jan Kiszka, 2010/06/12
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Blue Swirl, 2010/06/12
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Paul Brook, 2010/06/12
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Blue Swirl, 2010/06/12
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs,
Paul Brook <=
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Blue Swirl, 2010/06/12
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Paul Brook, 2010/06/12
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Blue Swirl, 2010/06/12
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Blue Swirl, 2010/06/13
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Paul Brook, 2010/06/13
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Blue Swirl, 2010/06/13
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Paul Brook, 2010/06/13
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Blue Swirl, 2010/06/13
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Paul Brook, 2010/06/13
- Re: [Qemu-devel] [PATCH 09/16] Enable message delivery via IRQs, Paul Brook, 2010/06/13