qemu/hw
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
..
9pfs virtio: get_features() can fail 2015-07-27 18:11:53 +03:00
acpi hw/acpi/ich9: clean up stale comment about KVM not supporting SMM 2015-07-27 22:44:47 +03:00
alpha hw/alpha/typhoon.c: Fix misusing qemu_allocate_irqs for single irq 2015-06-03 14:21:24 +03:00
arm Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
audio typofixes - v4 2015-09-11 10:45:43 +03:00
block Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
bt maint: avoid useless "if (foo) free(foo)" pattern 2015-09-11 10:21:38 +03:00
char maint: avoid useless "if (foo) free(foo)" pattern 2015-09-11 10:21:38 +03:00
core qdev: Do not use slow [*] expansion for GPIO creation 2015-09-19 08:10:12 +02:00
cpu hw/cpu/{a15mpcore, a9mpcore}: Handle missing has_el3 CPU props gracefully 2015-09-14 14:39:49 +01:00
cris Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
display Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
dma * Support for jemalloc 2015-09-14 16:13:16 +01:00
gpio i.MX: Add GPIO device 2015-09-14 14:39:49 +01:00
i2c i.MX: Add I2C controller emulator 2015-09-07 10:39:30 +01:00
i386 Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
ide ahci: clean up initial d2h semantics 2015-09-18 10:58:56 -04:00
input Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
intc typofixes - v4 2015-09-11 10:45:43 +03:00
ipack pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
isa i8257: remove cpu_request_exit irq 2015-09-09 15:34:53 +02:00
lm32 hw/lm32/milkymist.c: Fix misusing qemu_allocate_irqs for single irq 2015-06-03 14:21:24 +03:00
m68k Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
mem numa,pc-dimm: Store pc-dimm memory information in numa_info 2015-07-03 17:47:58 -03:00
microblaze Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
mips Error reporting patches 2015-09-18 14:41:53 +01:00
misc * Support for jemalloc 2015-09-14 16:13:16 +01:00
moxie Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
net Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
nvram maint: avoid useless "if (foo) free(foo)" pattern 2015-09-11 10:21:38 +03:00
openrisc Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
pci Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
pci-bridge hw/pci-bridge: format special OFW unit address for PXB host 2015-06-23 22:58:36 +02:00
pci-host Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
pcmcia hmp: Remove "info pcmcia" 2014-10-24 12:19:11 +01:00
ppc Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
s390x Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
scsi * Support for jemalloc 2015-09-14 16:13:16 +01:00
sd typofixes - v4 2015-09-11 10:45:43 +03:00
sh4 Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
smbios smbios: add smbios 3.0 support 2015-09-07 10:39:28 +01:00
sparc Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
sparc64 Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
ssi arm: Use g_new() & friends where that makes obvious sense 2015-09-07 10:39:27 +01:00
timer i.MX: KZM: use standalone i.MX31 SOC support 2015-09-07 10:39:30 +01:00
tpm maint: remove unused include for dirent.h 2015-09-11 10:21:38 +03:00
tricore Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
unicore32 Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
usb maint: avoid useless "if (foo) free(foo)" pattern 2015-09-11 10:21:38 +03:00
vfio typofixes - v4 2015-09-11 10:45:43 +03:00
virtio hw/virtio/virtio-pci: Remove meaningless blank Property 2015-09-11 11:03:42 +03:00
watchdog i6300esb: fix timer overflow 2015-09-11 10:21:38 +03:00
xen typofixes - v4 2015-09-11 10:45:43 +03:00
xenpv hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
xtensa Fix bad error handling after memory_region_init_ram() 2015-09-18 14:39:29 +02:00
Makefile.objs smbios: move smbios code into a common folder 2015-08-13 14:08:30 +03:00