Message ID | 1306237507-19189-4-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
On Tue, May 24, 2011 at 01:45:07PM +0200, Paolo Bonzini wrote: > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > Cc: Alexander Graf <agraf@suse.de> > Cc: David Gibson <david@gibson.dropbear.id.au> > --- > hw/spapr_vio.c | 8 +++++++- > 1 files changed, 7 insertions(+), 1 deletions(-) > > diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c > index be535d6..fee4c46 100644 > --- a/hw/spapr_vio.c > +++ b/hw/spapr_vio.c > @@ -52,6 +52,10 @@ > static struct BusInfo spapr_vio_bus_info = { > .name = "spapr-vio", > .size = sizeof(VIOsPAPRBus), > + .props = (Property[]) { > + DEFINE_PROP_UINT32("irq", VIOsPAPRDevice, vio_irq_num, 0), \ > + DEFINE_PROP_END_OF_LIST(), > + }, > }; I don't see what the point of this is. Absolute irq numbers have no special meaning in the XICS context, and the guest kernel will remap them to virtual irqs anyway. > VIOsPAPRDevice *spapr_vio_find_by_reg(VIOsPAPRBus *bus, uint32_t reg) > @@ -604,7 +608,9 @@ static int spapr_vio_busdev_init(DeviceState *qdev, DeviceInfo *qinfo) > } > > dev->qdev.id = id; > - dev->vio_irq_num = bus->irq++; > + if (!dev->vio_irq_num) { > + dev->vio_irq_num = bus->irq++; > + } > dev->qirq = xics_find_qirq(spapr->icp, dev->vio_irq_num); > > rtce_init(dev);
On 05/25/2011 12:14 AM, David Gibson wrote: > I don't see what the point of this is. Absolute irq numbers have no > special meaning in the XICS context, and the guest kernel will remap > them to virtual irqs anyway. It allows you to see the irq in "info qtree" for example. Paolo
David Gibson <david@gibson.dropbear.id.au> writes: > On Tue, May 24, 2011 at 01:45:07PM +0200, Paolo Bonzini wrote: >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> >> Cc: Alexander Graf <agraf@suse.de> >> Cc: David Gibson <david@gibson.dropbear.id.au> >> --- >> hw/spapr_vio.c | 8 +++++++- >> 1 files changed, 7 insertions(+), 1 deletions(-) >> >> diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c >> index be535d6..fee4c46 100644 >> --- a/hw/spapr_vio.c >> +++ b/hw/spapr_vio.c >> @@ -52,6 +52,10 @@ >> static struct BusInfo spapr_vio_bus_info = { >> .name = "spapr-vio", >> .size = sizeof(VIOsPAPRBus), >> + .props = (Property[]) { >> + DEFINE_PROP_UINT32("irq", VIOsPAPRDevice, vio_irq_num, 0), \ >> + DEFINE_PROP_END_OF_LIST(), >> + }, >> }; > > I don't see what the point of this is. Absolute irq numbers have no > special meaning in the XICS context, and the guest kernel will remap > them to virtual irqs anyway. Are the irq numbers guest-visible? If yes, a property may be required to keep them stable across migration. Especially when hot-plug comes into play. [...]
On Wed, May 25, 2011 at 09:30:22AM +0200, Paolo Bonzini wrote: > On 05/25/2011 12:14 AM, David Gibson wrote: > >I don't see what the point of this is. Absolute irq numbers have no > >special meaning in the XICS context, and the guest kernel will remap > >them to virtual irqs anyway. > > It allows you to see the irq in "info qtree" for example. Hm, I see.
On Wed, May 25, 2011 at 05:13:40PM +0200, Markus Armbruster wrote: > David Gibson <david@gibson.dropbear.id.au> writes: > > > On Tue, May 24, 2011 at 01:45:07PM +0200, Paolo Bonzini wrote: > >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > >> Cc: Alexander Graf <agraf@suse.de> > >> Cc: David Gibson <david@gibson.dropbear.id.au> > >> --- > >> hw/spapr_vio.c | 8 +++++++- > >> 1 files changed, 7 insertions(+), 1 deletions(-) > >> > >> diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c > >> index be535d6..fee4c46 100644 > >> --- a/hw/spapr_vio.c > >> +++ b/hw/spapr_vio.c > >> @@ -52,6 +52,10 @@ > >> static struct BusInfo spapr_vio_bus_info = { > >> .name = "spapr-vio", > >> .size = sizeof(VIOsPAPRBus), > >> + .props = (Property[]) { > >> + DEFINE_PROP_UINT32("irq", VIOsPAPRDevice, vio_irq_num, 0), \ > >> + DEFINE_PROP_END_OF_LIST(), > >> + }, > >> }; > > > > I don't see what the point of this is. Absolute irq numbers have no > > special meaning in the XICS context, and the guest kernel will remap > > them to virtual irqs anyway. > > Are the irq numbers guest-visible? Yes. > If yes, a property may be required > to keep them stable across migration. Especially when hot-plug comes > into play. Ah, yes, that's a point.
diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c index be535d6..fee4c46 100644 --- a/hw/spapr_vio.c +++ b/hw/spapr_vio.c @@ -52,6 +52,10 @@ static struct BusInfo spapr_vio_bus_info = { .name = "spapr-vio", .size = sizeof(VIOsPAPRBus), + .props = (Property[]) { + DEFINE_PROP_UINT32("irq", VIOsPAPRDevice, vio_irq_num, 0), \ + DEFINE_PROP_END_OF_LIST(), + }, }; VIOsPAPRDevice *spapr_vio_find_by_reg(VIOsPAPRBus *bus, uint32_t reg) @@ -604,7 +608,9 @@ static int spapr_vio_busdev_init(DeviceState *qdev, DeviceInfo *qinfo) } dev->qdev.id = id; - dev->vio_irq_num = bus->irq++; + if (!dev->vio_irq_num) { + dev->vio_irq_num = bus->irq++; + } dev->qirq = xics_find_qirq(spapr->icp, dev->vio_irq_num); rtce_init(dev);
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Cc: Alexander Graf <agraf@suse.de> Cc: David Gibson <david@gibson.dropbear.id.au> --- hw/spapr_vio.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)