arm/xilinx_zynq: Always instantiate the GEMs
Don't conditionalise GEM instantiation on networking attachments. The device should always be present even if not attached to a network. This allows for probing of the device by expectant guests (such as OS's). This is needed because sysbus (or AXI in Xilinx's real hw case) is not self identifying so the guest has no dynamic way of detecting device absence. Also allows for testing of the GEM in loopback mode with -net none. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 55649779a68ee3ff54b24c339b6fdbdccd1f0ed7.1388800598.git.peter.crosthwaite@xilinx.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
afb2530fe3
commit
7fcd57e80d
@ -49,9 +49,11 @@ static void gem_init(NICInfo *nd, uint32_t base, qemu_irq irq)
|
|||||||
DeviceState *dev;
|
DeviceState *dev;
|
||||||
SysBusDevice *s;
|
SysBusDevice *s;
|
||||||
|
|
||||||
qemu_check_nic_model(nd, "cadence_gem");
|
|
||||||
dev = qdev_create(NULL, "cadence_gem");
|
dev = qdev_create(NULL, "cadence_gem");
|
||||||
qdev_set_nic_properties(dev, nd);
|
if (nd->used) {
|
||||||
|
qemu_check_nic_model(nd, "cadence_gem");
|
||||||
|
qdev_set_nic_properties(dev, nd);
|
||||||
|
}
|
||||||
qdev_init_nofail(dev);
|
qdev_init_nofail(dev);
|
||||||
s = SYS_BUS_DEVICE(dev);
|
s = SYS_BUS_DEVICE(dev);
|
||||||
sysbus_mmio_map(s, 0, base);
|
sysbus_mmio_map(s, 0, base);
|
||||||
@ -113,7 +115,6 @@ static void zynq_init(QEMUMachineInitArgs *args)
|
|||||||
DeviceState *dev;
|
DeviceState *dev;
|
||||||
SysBusDevice *busdev;
|
SysBusDevice *busdev;
|
||||||
qemu_irq pic[64];
|
qemu_irq pic[64];
|
||||||
NICInfo *nd;
|
|
||||||
Error *err = NULL;
|
Error *err = NULL;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
@ -190,14 +191,8 @@ static void zynq_init(QEMUMachineInitArgs *args)
|
|||||||
sysbus_create_varargs("cadence_ttc", 0xF8002000,
|
sysbus_create_varargs("cadence_ttc", 0xF8002000,
|
||||||
pic[69-IRQ_OFFSET], pic[70-IRQ_OFFSET], pic[71-IRQ_OFFSET], NULL);
|
pic[69-IRQ_OFFSET], pic[70-IRQ_OFFSET], pic[71-IRQ_OFFSET], NULL);
|
||||||
|
|
||||||
for (n = 0; n < nb_nics; n++) {
|
gem_init(&nd_table[0], 0xE000B000, pic[54-IRQ_OFFSET]);
|
||||||
nd = &nd_table[n];
|
gem_init(&nd_table[1], 0xE000C000, pic[77-IRQ_OFFSET]);
|
||||||
if (n == 0) {
|
|
||||||
gem_init(nd, 0xE000B000, pic[54-IRQ_OFFSET]);
|
|
||||||
} else if (n == 1) {
|
|
||||||
gem_init(nd, 0xE000C000, pic[77-IRQ_OFFSET]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dev = qdev_create(NULL, "generic-sdhci");
|
dev = qdev_create(NULL, "generic-sdhci");
|
||||||
qdev_init_nofail(dev);
|
qdev_init_nofail(dev);
|
||||||
|
Loading…
Reference in New Issue
Block a user