qemu-e2k/hw/core
Pavel Fedin 6c76b37742 qdev: Do not use slow [*] expansion for GPIO creation
Expansion of [*] suffix is very slow because index expansion is done using
trial and error strategy, starting every time from zero and retrying with
the next index until insertion succeeds. With large number of already added
properties this process takes huge amount of time (O(n^2) complexity).

Some architectures (like ARM) use very large amount of IRQ pins in interrupt
controller models. This flaw makes machine startup extremely slow
(~20 seconds for ARM64 with 32 CPUs). This patch decreases this time down to
~10 seconds.

Also in qdev_init_gpio_out_named() memset() is now called only once for the
whole array instead of per-cell cleaning

Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
2015-09-19 08:10:12 +02:00
..
empty_slot.c empty_slot: QOM cast cleanup 2013-07-29 21:06:37 +02:00
fw-path-provider.c fw_cfg: fix typos in comments: patch -> path 2015-02-10 09:27:19 +03:00
hotplug.c qdev: HotplugHandler: Provide unplug callback 2014-10-15 05:03:13 +02:00
irq.c irq: Remove qemu_irq_intercept_out 2014-10-23 16:41:25 +02:00
loader.c loader: Fix memory_region_init_resizeable_ram() error handling 2015-09-18 14:39:35 +02:00
machine.c xen, gfx passthrough: basic graphics passthrough support 2015-09-10 12:04:28 +00:00
Makefile.objs Create specific config option for "platform-bus" 2015-02-27 15:17:42 +01:00
nmi.c qerror: Clean up QERR_ macros to expand into a single string 2015-06-22 18:20:40 +02:00
null-machine.c machine: Conversion of QEMUMachineInitArgs to MachineState 2014-05-28 17:35:01 +02:00
platform-bus.c Include monitor/monitor.h exactly where needed 2015-06-22 18:20:41 +02:00
ptimer.c hw/ptimer: Do not artificially limit timers when using icount 2015-05-08 17:15:23 +10:00
qdev-properties-system.c qdev-properties-system: Improve error message for drive assignment conflict 2015-06-26 14:22:36 +01:00
qdev-properties.c maint: avoid useless "if (foo) free(foo)" pattern 2015-09-11 10:21:38 +03:00
qdev.c qdev: Do not use slow [*] expansion for GPIO creation 2015-09-19 08:10:12 +02:00
stream.c stream: Remove app argument hack 2013-04-16 10:04:23 +02:00
sysbus.c sysbus: add irq_routing_notifier 2015-07-06 12:15:14 -06:00
uboot_image.h