qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

nios2: iic: Convert CPU prop to qom link

Add a const qom link between the CPU and the IIC instead
of passing the CPU link through a qom property.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-id: 20170317210627.23532-1-marex@denx.de
Cc: Alexander Graf <agraf@suse.de>
Cc: Chris Wulff <crwulff@gmail.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Jeff Da Silva <jdasilva@altera.com>
Cc: Ley Foon Tan <lftan@altera.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Sandra Loosemore <sandra@codesourcery.com>
Cc: Yves Vandervennet <yvanderv@altera.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

authored by

Marek Vasut and committed by
Peter Maydell
ebedf0f9 96dd9c89

+7 -9
+5 -8
hw/intc/nios2_iic.c
··· 62 62 sysbus_init_irq(SYS_BUS_DEVICE(obj), &pv->parent_irq); 63 63 } 64 64 65 - static Property altera_iic_properties[] = { 66 - DEFINE_PROP_PTR("cpu", AlteraIIC, cpu), 67 - DEFINE_PROP_END_OF_LIST(), 68 - }; 69 - 70 65 static void altera_iic_realize(DeviceState *dev, Error **errp) 71 66 { 72 67 struct AlteraIIC *pv = ALTERA_IIC(dev); 68 + Error *err = NULL; 73 69 70 + pv->cpu = object_property_get_link(OBJECT(dev), "cpu", &err); 74 71 if (!pv->cpu) { 75 - error_setg(errp, "altera,iic: CPU not connected"); 72 + error_setg(errp, "altera,iic: CPU link not found: %s", 73 + error_get_pretty(err)); 76 74 return; 77 75 } 78 76 } ··· 81 79 { 82 80 DeviceClass *dc = DEVICE_CLASS(klass); 83 81 84 - dc->props = altera_iic_properties; 85 - /* Reason: pointer property "cpu" */ 82 + /* Reason: needs to be wired up, e.g. by nios2_10m50_ghrd_init() */ 86 83 dc->cannot_instantiate_with_device_add_yet = true; 87 84 dc->realize = altera_iic_realize; 88 85 }
+2 -1
hw/nios2/10m50_devboard.c
··· 82 82 83 83 /* Register: Internal Interrupt Controller (IIC) */ 84 84 dev = qdev_create(NULL, "altera,iic"); 85 - qdev_prop_set_ptr(dev, "cpu", cpu); 85 + object_property_add_const_link(OBJECT(dev), "cpu", OBJECT(cpu), 86 + &error_abort); 86 87 qdev_init_nofail(dev); 87 88 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, cpu_irq[0]); 88 89 for (i = 0; i < 32; i++) {