On Wed, 09 Apr 2014 16:30:33 +0200 Alexander Graf <ag...@suse.de> wrote:
> > On 09.04.14 16:24, Cornelia Huck wrote: > > On Wed, 09 Apr 2014 16:05:00 +0200 > > Alexander Graf <ag...@suse.de> wrote: > > > >> On 09.04.14 13:34, Cornelia Huck wrote: > >>> Register an I/O adapter interrupt source for when virtio-ccw devices start > >>> using adapter interrupts. > >>> > >>> Reviewed-by: Thomas Huth <th...@linux.vnet.ibm.com> > >>> Signed-off-by: Cornelia Huck <cornelia.h...@de.ibm.com> > >>> --- > >>> hw/intc/s390_flic.c | 59 > >>> +++++++++++++++++++++++++++++++++++++++++++++++++ > >>> hw/s390x/css.c | 51 ++++++++++++++++++++++++++++++++++++++++++ > >>> hw/s390x/css.h | 4 ++++ > >>> hw/s390x/virtio-ccw.c | 4 ++++ > >>> hw/s390x/virtio-ccw.h | 1 + > >>> target-s390x/cpu.h | 33 +++++++++++++++++++++++++++ > >>> 6 files changed, 152 insertions(+) > >>> > >>> diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c > >>> index 2bf0af8..1193682 100644 > >>> --- a/hw/s390x/virtio-ccw.c > >>> +++ b/hw/s390x/virtio-ccw.c > >>> @@ -522,6 +522,10 @@ static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw) > >>> dev->thinint_isc = thinint->isc; > >>> dev->ind_bit = thinint->ind_bit; > >>> cpu_physical_memory_unmap(thinint, hw_len, 0, hw_len); > >>> + ret = css_register_io_adapter(CSS_IO_ADAPTER_VIRTIO, > >>> + dev->thinint_isc, true, > >>> false, > >>> + &dev->adapter_id); > >> In all other machines the machine file is the one creating the link > >> between a device and the interrupt controller. Can we do something > >> similar for s390? > > Hm. This would imply we'd need to add a virtio I/O adapter for each isc > > (0-7) at startup, regardless whether the guest enables adapter > > interrupts on any of those iscs. Moreover, we'd need to do the same for > > each type (on each isc) if we add more types of I/O adapters later > > (should we want to support one of the other adapter-interrupt using > > devices). I'd prefer to add an I/O adapter only when needed. > > I'm not sure I can follow you here. Instead of registering the interrupt > vector on the fly, you would still register it on the fly, but after the > virtio-ccw device got created, no? You mean register-at-device-creation instead of register-while-interpreting-ccw? We'd end up with the same problem: We don't know which isc the guest wants to use for adapter interrupts at that point in time, so we would need to register for all iscs. I don't think that is what we want.