qemu-e2k/hw/intc
Pavel Fedin 4b3cfe72d9 intc/gic: Extract some reusable vGIC code
Some functions previously used only by vGICv2 are useful also for vGICv3
implementation. Untie them from GICState and make accessible from within
other modules:
- kvm_arm_gic_set_irq()
- kvm_gic_supports_attr() - moved to common code and renamed to
  kvm_device_check_attr()
- kvm_gic_access() - turned into GIC-independent kvm_device_access().
  Data pointer changed to void * because some GICv3 registers are
  64-bit wide

Some of these changes are not used right now, but they will be helpful for
implementing live migration.

Actually kvm_dist_get() and kvm_dist_put() could also be made reusable, but
they would require two extra parameters (s->dev_fd and s->num_cpu) as well as
lots of typecasts of 's' to DeviceState * and back to GICState *. This makes
the code very ugly so i decided to stop at this point. I tried also an
approach with making a base class for all possible GICs, but it would contain
only three variables (dev_fd, cpu_num and irq_num), and accessing them through
the rest of the code would be again tedious (either ugly casts or qemu-style
separate object pointer). So i disliked it too.

Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
Tested-by: Ashok kumar <ashoks@broadcom.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 2ef56d1dd64ffb75ed02a10dcdaf605e5b8ff4f8.1441784344.git.p.fedin@samsung.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2015-09-24 01:29:36 +01:00
..
Makefile.objs hw/intc: Implement GIC-500 base class 2015-09-24 01:29:36 +01:00
allwinner-a10-pic.c Convert ffs() != 0 callers to ctz32() 2015-04-28 15:36:08 +02:00
apic.c apic: convert ->busdev.qdev casts to C casts 2015-06-02 15:15:52 -03:00
apic_common.c migration: Use normal VMStateDescriptions for Subsections 2015-06-12 06:53:57 +02:00
arm_gic.c maint: remove double semicolons in many files 2015-09-11 10:21:38 +03:00
arm_gic_common.c hw/intc/arm_gic_common: Configure IRQs as NS if doing direct NS kernel boot 2015-09-08 17:38:43 +01:00
arm_gic_kvm.c intc/gic: Extract some reusable vGIC code 2015-09-24 01:29:36 +01:00
arm_gicv2m.c arm_gicv2m: set kvm_gsi_direct_mapping and kvm_msi_via_irqfd_allowed 2015-06-02 14:56:25 +01:00
arm_gicv3_common.c hw/intc: Implement GIC-500 base class 2015-09-24 01:29:36 +01:00
armv7m_nvic.c armv7m_nvic: Implement ICSR without using internal GIC state 2015-09-08 17:38:42 +01:00
etraxfs_pic.c Fix remaining warnings from Sparse (void return) 2015-03-19 11:11:55 +03:00
exynos4210_combiner.c savevm: Remove all the unneeded version_minimum_id_old (arm) 2014-05-13 16:09:35 +01:00
exynos4210_gic.c hw/intc/exynos4210_gic.c: Fix memory leak by adjusting order 2015-06-03 14:21:24 +03:00
gic_internal.h hw/intc/arm_gic: Change behavior of IAR writes 2015-05-12 11:57:18 +01:00
grlib_irqmp.c hw: cannot_instantiate_with_device_add_yet due to pointer props 2013-12-24 17:27:17 +01:00
heathrow_pic.c savevm: Remove all the unneeded version_minimum_id_old (ppc) 2014-06-16 04:55:26 +02:00
i8259.c hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
i8259_common.c savevm: Remove all the unneeded version_minimum_id_old (x86) 2014-06-16 04:55:26 +02:00
imx_avic.c i.MX: Fix Coding style for AVIC emulator. 2015-08-13 11:26:20 +01:00
ioapic.c qemu: x86: ignore ioapic polarity 2014-03-09 21:09:38 +02:00
ioapic_common.c savevm: Remove all the unneeded version_minimum_id_old (x86) 2014-06-16 04:55:26 +02:00
lm32_pic.c hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
omap_intc.c omap_intc: convert ffs(3) to ctz32() in omap_inth_sir_update() 2015-04-28 15:36:08 +02:00
openpic.c qerror: Clean up QERR_ macros to expand into a single string 2015-06-22 18:20:40 +02:00
openpic_kvm.c KVM_CAP_IRQFD and KVM_CAP_IRQFD_RESAMPLE checks 2014-12-15 12:21:01 +01:00
pl190.c sysbus: Set cannot_instantiate_with_device_add_yet 2013-12-23 00:27:22 +01:00
puv3_intc.c puv3_intc: QOM cast cleanup 2013-07-29 21:06:58 +02:00
realview_gic.c realview_gic: Prepare for QOM embedding 2013-11-05 17:47:30 +01:00
s390_flic.c s390x: Replace unchecked qdev_init() by qdev_init_nofail() 2015-03-16 10:15:44 +01:00
s390_flic_kvm.c s390x/kvm: make setting of in-kernel irq routes more efficient 2015-09-07 16:10:43 +02:00
sh_intc.c cpu: Make first_cpu and next_cpu CPUState 2013-07-09 21:32:54 +02:00
slavio_intctl.c savevm: Remove all the unneeded version_minimum_id_old (rest) 2014-05-14 15:24:51 +02:00
vgic_common.h intc/gic: Extract some reusable vGIC code 2015-09-24 01:29:36 +01:00
xics.c typofixes - v4 2015-09-11 10:45:43 +03:00
xics_kvm.c xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled 2015-07-07 17:44:52 +02:00
xilinx_intc.c intc: xilinx_uartlite: Convert SBD::init -> instance_init 2014-06-09 00:33:03 +02:00