Go to file
Christoffer Dall 8d999995e4 arm_gic: Fix GIC pending behavior
The existing implementation of the pending behavior in gic_set_irq,
gic_complete_irq, and the distributor pending set/clear registers does
not follow the semantics of the GICv2.0 specs, but may implement the
11MPCore support.  Therefore, maintain the existing semantics for
11MPCore and v7M NVIC and change the behavior to be in accordance with
the GICv2.0 specs for "generic implementations" (s->revision == 1 ||
s->revision == 2).

Generic implementations distinguish between setting a level-triggered
interrupt pending through writes to the GICD_ISPENDR and when hardware
raises the interrupt line.  Writing to the GICD_ICPENDR will not cause
the interrupt to become non-pending if the line is still active, and
conversely, if the line is deactivated but the interrupt is marked as
pending through a write to GICD_ISPENDR, the interrupt remains pending.
Handle this situation in the GIC_TEST_PENDING (which now becomes a
static inline named gic_test_pending) and let the 'pending' field
correspond only to the latched state of the D-flip flop in the GICv2.0
specs Figure 4-10.

The following changes are added:

gic_test_pending:
Make this a static inline and split out the 11MPCore from the generic
behavior.  For the generic behavior, consider interrupts pending if:
    ((s->irq_state[irq].pending & (cm) != 0) ||
       (!GIC_TEST_EDGE_TRIGGER(irq) && GIC_TEST_LEVEL(irq, cm))

gic_set_irq:
Split out the 11MPCore from the generic behavior.  For the generic
behavior, always GIC_SET_LEVEL() on positive level, but only
GIC_SET_PENDING for edge-triggered interrupts and always simply
GIC_CLEAR_LEVEL() on negative level.

gic_complete_irq:
Only resample the line for line-triggered interrupts on an 11MPCore.
Generic implementations will sample the line directly in
gic_test_pending().

Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2014-02-08 14:47:28 +00:00
audio Add the ability to vary Spice playback and record rates, to facilitate Opus support. 2014-02-03 11:05:15 +01:00
backends virtio_rng: replace custom backend API with UserCreatable.complete() callback 2014-01-28 12:47:11 -05:00
block block/vhdx: Error checking fixes 2014-01-31 22:05:03 +01:00
bsd-user *-user: Improve documentation for lock_user function 2013-09-20 20:09:24 +04:00
default-configs default-configs: Add config for aarch64-linux-user 2014-01-08 19:07:21 +00:00
disas disas/i386.c: disassemble movbe instruction 2014-01-25 14:12:17 -08:00
docs acpi,pci,pc,virtio fixes and enhancements 2014-01-31 00:23:27 +00:00
dtc@bc895d6d09 dtc: add submodule 2013-04-18 13:50:53 +02:00
fpu softfloat: Add support for ties-away rounding 2014-01-08 19:07:22 +00:00
fsdev fsdev: Fix potential memory leak 2013-07-09 13:38:56 -05:00
gdb-xml target-arm: Support fp registers in gdb stub 2013-12-17 19:42:32 +00:00
hw arm_gic: Fix GIC pending behavior 2014-02-08 14:47:28 +00:00
include migration/next for 20140204 2014-02-08 13:12:50 +00:00
libcacard vscclient: do not add a socket watch if there is not data to send 2013-12-16 10:12:19 +01:00
linux-headers kvm: add support for hyper-v timers 2014-02-03 17:33:55 +01:00
linux-user linux-user: Fix trampoline code for CRIS 2014-02-03 14:04:00 +00:00
net tap-linux: Get features once and use it many times 2014-01-27 15:44:06 +01:00
pc-bios Update seabios to 1.7.4 2014-02-07 16:42:13 +00:00
pixman@97336fad32 qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
po po: Update all *.po files 2013-08-07 12:48:00 -05:00
qapi qapi: fix memleak by adding implict struct functions in dealloc visitor 2013-11-05 19:58:38 -08:00
qga qga: Fix two format strings for MinGW 2013-11-25 20:35:28 -08:00
qobject qapi: extend qdict_flatten() for QLists 2014-01-22 12:07:17 +01:00
qom add optional 2nd stage initialization to -object/object-add commands 2014-01-28 12:47:02 -05:00
roms Update seabios to 1.7.4 2014-02-07 16:42:13 +00:00
scripts Tracing pull request 2014-01-31 11:13:08 +00:00
slirp misc: Spelling and grammar fixes in comments 2013-10-26 13:06:45 +04:00
stubs Merge remote-tracking branch 'kiszka/queues/slirp' into staging 2013-09-17 10:01:24 -05:00
sysconfigs/target
target-alpha misc: Replace 'struct QEMUTimer' by 'QEMUTimer' 2013-12-02 21:03:39 +04:00
target-arm target-arm: Add support for AArch32 64bit VCVTB and VCVTT 2014-02-08 14:47:28 +00:00
target-cris cris: Add interrupt signals to the CPU device 2014-02-03 14:03:59 +00:00
target-i386 target-i386: Move KVM default-vendor hack to instance_init 2014-02-03 17:33:55 +01:00
target-lm32 target: Include softmmu_exec.h where forgotten 2013-09-02 09:08:30 -07:00
target-m68k Merge remote-tracking branch 'rth/tcg-pull' into staging 2013-10-11 09:36:52 -07:00
target-microblaze Microblaze: Convert Microblaze-pic handling to GPIOs 2014-01-14 11:08:36 +10:00
target-mips target-mips: Use new qemu_ld/st opcodes 2013-12-21 16:42:11 +01:00
target-moxie cpu: Drop cpu_model_str from CPU_COMMON 2013-10-07 11:48:47 +02:00
target-openrisc openrisc: Fix spelling in comment (transaltion -> translation) 2013-12-23 16:02:19 +04:00
target-ppc PPC: Fix compilation with TCG debug 2013-12-22 19:15:55 +01:00
target-s390x s390x/kvm: cleanup partial register handling 2014-01-31 09:43:44 +01:00
target-sh4 target-sh4: Use new qemu_ld/st opcodes 2013-12-21 16:42:15 +01:00
target-sparc SPARC: Fix LEON3 power down instruction 2014-01-15 15:37:33 +10:00
target-unicore32 Merge remote-tracking branch 'rth/tcg-pull' into staging 2013-10-11 09:36:52 -07:00
target-xtensa target-xtensa: add missing DEBUG section to dc233c config 2013-11-08 09:26:07 +04:00
tcg tcg: Add TCGV_UNUSED_PTR, TCGV_IS_UNUSED_PTR, TCGV_EQUAL_PTR 2014-02-08 14:46:55 +00:00
tests qtest resource cleanup patches 2014-02-07 16:03:13 +00:00
trace trace: add glib 2.32+ static GMutex support 2014-01-27 15:49:39 +01:00
ui gtk: Support keyboard translation for hosts running Windows 2014-01-20 19:30:28 +01:00
util osdep: drop unused #include "trace.h" 2014-02-01 13:42:38 +04:00
.exrc
.gitignore .gitignore: Ignore config.status 2013-12-02 21:02:57 +04:00
.gitmodules Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
.mailmap Update mailmap 2013-09-05 09:40:31 -05:00
.travis.yml .travis.yml: Add aarch64-* targets 2014-01-08 19:07:20 +00:00
aio-posix.c aio: make aio_poll(ctx, true) block with no fds 2013-12-06 16:53:51 +01:00
aio-win32.c aio: make aio_poll(ctx, true) block with no fds 2013-12-06 16:53:51 +01:00
arch_init.c Don't abort on memory allocation error 2014-02-04 16:50:37 +01:00
async.c aio / timers: aio_ctx_prepare sets timeout from AioContext timers 2013-08-22 19:10:28 +02:00
balloon.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
block-migration.c block: per caller dirty bitmap 2013-11-29 13:40:33 +01:00
block.c block: Switch bdrv_io_limits_intercept() to byte granularity 2014-01-24 17:40:28 +01:00
blockdev-nbd.c nbd: use BlockDriverState refcnt 2013-09-06 15:25:08 +02:00
blockdev.c qmp: Allow to take external snapshots on bs graphs node. 2014-01-24 16:07:08 +01:00
blockjob.c qapi: make use of new BlockJobType 2013-10-11 10:52:54 +02:00
bt-host.c sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
bt-vhci.c sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
Changelog Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
CODING_STYLE
configure configure: added acpi unit-test files 2014-01-26 13:06:49 +02:00
COPYING
COPYING.LIB
coroutine-gthread.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
coroutine-sigaltstack.c Merge remote-tracking branch 'kwolf/for-anthony' into staging 2013-02-26 07:44:39 -06:00
coroutine-ucontext.c Fix warnings suppressors to honor --disable-werror 2013-04-17 10:28:04 -05:00
coroutine-win32.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
cpu-exec.c QOM CPUState refactorings / X86CPU 2014-01-10 11:04:31 -08:00
cpus.c target-i386: Move apic_state field from CPUX86State to X86CPU 2013-12-23 16:30:40 +01:00
cputlb.c memory: split cpu_physical_memory_* functions to its own include 2014-01-13 14:04:54 +01:00
device_tree.c device_tree: qemu_fdt_setprop: Rename val_array arg 2013-12-20 01:58:12 +01:00
device-hotplug.c hw: move device-hotplug.o to toplevel, compile it once 2013-03-01 13:57:13 +01:00
disas.c disas: Implement fallback to dump object code as hex 2013-08-24 07:26:45 +02:00
dma-helpers.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
dump.c dump-guest-memory: Check for the correct return value 2013-10-25 23:25:48 +02:00
exec.c address_space_translate: do not cross page boundaries 2014-01-30 14:20:45 +00:00
gdbstub.c vl: allow "cont" from panicked state 2013-11-04 15:39:41 +02:00
HACKING HACKING: Document vaddr type usage 2013-07-23 02:41:31 +02:00
hmp-commands.hx block: update block commit documentation regarding image truncation 2014-01-24 16:12:49 +01:00
hmp.c qmp: Allow to take external snapshots on bs graphs node. 2014-01-24 16:07:08 +01:00
hmp.h monitor: add object-add (QMP) and object_add (HMP) command 2014-01-06 13:45:47 -05:00
iohandler.c iohandler: switch to GPollFD 2013-02-21 16:17:31 -06:00
ioport.c portio: Allow to mark portio lists as coalesced MMIO flushing 2013-10-17 17:24:15 +02:00
kvm-all.c Merge remote-tracking branch 'remotes/kvm/uq/master' into staging 2014-02-06 23:51:24 +00:00
kvm-stub.c kvm irqfd: support direct msimessage to irq translation 2013-09-20 12:37:52 +02:00
LICENSE LICENSE: clarify 2013-08-12 09:15:12 -05:00
main-loop.c slirp: set mainloop timeout with more precise value 2013-09-17 12:26:05 +02:00
MAINTAINERS MAINTAINERS: add self as virtio co-maintainer 2014-01-26 13:11:45 +02:00
Makefile Add bios-256k.bin to BLOBS on Makefile 2014-01-15 23:34:17 +04:00
Makefile.objs readline: move readline to a generic location 2014-01-22 12:07:17 +01:00
Makefile.target default-configs/: CONFIG_GDBSTUB_XML removed 2013-10-16 18:21:01 +02:00
memory_mapping.c cpu: Use QTAILQ for CPU list 2013-09-03 12:25:55 +02:00
memory.c memory: split cpu_physical_memory_* functions to its own include 2014-01-13 14:04:54 +01:00
migration-exec.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
migration-fd.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
migration-rdma.c rdma: constify ram_chunk_{index, start, end} 2013-09-24 13:22:50 +02:00
migration-tcp.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
migration-unix.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
migration.c XBZRLE cache size should not be larger than guest memory size 2014-02-04 16:49:28 +01:00
monitor.c trivial patches for 2014-02-02 2014-02-05 16:37:26 +00:00
nbd.c nbd: don't change socket block during negotiate 2013-12-16 10:12:20 +01:00
os-posix.c Add option to mlock qemu and guest memory 2013-04-22 08:52:23 -05:00
os-win32.c qemu-timer: move timeBeginPeriod/timeEndPeriod to os-win32 2013-04-12 18:27:16 +02:00
page_cache.c Don't abort on memory allocation error 2014-02-04 16:50:37 +01:00
qapi-schema.json blkdebug: Make required alignment configurable 2014-01-24 17:40:03 +01:00
qdev-monitor.c Merge remote branch 'luiz/queue/qmp' into qmpq 2014-01-14 12:10:08 +10:00
qdict-test-data.txt
qemu-bridge-helper.c qemu-bridge-helper: force usage of a very high MAC address for the bridge 2013-03-28 12:58:52 -05:00
qemu-char.c misc: Use macro ARRAY_SIZE where possible 2013-12-23 16:02:19 +04:00
qemu-coroutine-io.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
qemu-coroutine-lock.c coroutine: remove qemu_co_queue_wait_insert_head 2013-12-02 17:11:49 +01:00
qemu-coroutine-sleep.c coroutine: add co_aio_sleep_ns() to allow sleep in block drivers 2013-10-30 12:22:09 +01:00
qemu-coroutine.c coroutine: add ./configure --disable-coroutine-pool 2013-09-12 10:12:48 +02:00
qemu-doc.texi Describe flaws in qcow/qcow2 encryption in the docs 2014-01-31 22:05:03 +01:00
qemu-file.c qemu-file: Move QEMUFile code to qemu-file.c 2014-01-13 12:39:49 +01:00
qemu-img-cmds.hx qemu-img: add -l for snapshot in convert 2013-12-04 15:19:00 +01:00
qemu-img.c qemu-option: Remove qemu_opts_create_nofail 2014-01-06 15:02:30 -05:00
qemu-img.texi Describe flaws in qcow/qcow2 encryption in the docs 2014-01-31 22:05:03 +01:00
qemu-io-cmds.c qemu-io: New command 'sleep' 2014-01-24 17:40:03 +01:00
qemu-io.c readline: Add missing GCC_FMT_ATTR 2014-02-01 13:46:06 +04:00
qemu-log.c qemu-log: default to stderr for logging output 2013-02-26 13:31:47 -06:00
qemu-nbd.c qemu-nbd: add doc for option -f 2013-12-04 15:19:00 +01:00
qemu-nbd.texi qemu-nbd: add doc for option -f 2013-12-04 15:19:00 +01:00
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx doc: Mention chardev:id in available devices for -serial 2014-01-01 18:03:55 +04:00
qemu-seccomp.c seccomp: add some basic shared memory syscalls to the whitelist 2014-01-20 11:19:34 -02:00
qemu-tech.texi
qemu-timer.c timer: add timer_mod_anticipate and timer_mod_anticipate_ns 2013-10-17 17:31:00 +02:00
qemu.nsi nsis: Improved support for parallel installation of 32 and 64 bit code 2013-11-07 07:02:44 +01:00
qemu.sasl Fix command example in qemu.sasl 2013-07-19 12:52:03 +04:00
qmp-commands.hx block: update block commit documentation regarding image truncation 2014-01-24 16:12:49 +01:00
qmp.c add optional 2nd stage initialization to -object/object-add commands 2014-01-28 12:47:02 -05:00
qtest.c qtest: split configuration of qtest accelerator and chardev 2013-12-10 12:29:56 +02:00
README Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
rules.mak rules.mak: New string testing functions 2013-10-16 18:21:00 +02:00
savevm.c savevm: Small comment about why timer QEMUFile/VMState code is in savevm.c 2014-01-13 12:39:49 +01:00
spice-qemu-char.c spice: hook qemu_chr_fe_set_open() event to ports 2014-02-03 11:05:15 +01:00
tcg-runtime.c tcg: Implement multiword multiply helpers 2013-02-23 17:25:28 +00:00
tci.c misc: Use new rotate functions 2013-09-25 21:23:05 +02:00
thread-pool.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
thunk.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
tpm.c tpm.c: Don't try to put -1 in a variable of type TpmModel 2013-07-29 10:37:10 -05:00
trace-events usb: add support for microsoft os descriptors 2014-01-16 12:59:59 +01:00
translate-all.c kvm: initialize qemu_host_page_size 2014-01-17 11:12:07 -07:00
translate-all.h split definitions for exec.c and translate-all.c radix trees 2013-12-10 12:29:56 +02:00
user-exec.c linux-user: fix segmentation fault passing with h2g(x) != x 2013-07-23 17:28:28 +03:00
VERSION Open 2.0 development tree 2013-11-27 14:02:45 -08:00
version.rc Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
vl.c Merge remote-tracking branch 'qmp-unstable/queue/qmp' into staging 2014-02-01 23:32:31 +00:00
vmstate.c vmstate: Move VMState code to vmstate.c 2014-01-13 12:39:49 +01:00
xbzrle.c Move XBZRLE encoding code to a separate file to allow testing 2013-02-01 08:32:20 +01:00
xen-all.c xen: fix two errors when debug is enabled 2013-12-01 18:25:48 +00:00
xen-mapcache.c hw: move headers to include/ 2013-04-08 18:13:10 +02:00
xen-stub.c pc: Initializing ram_memory under Xen. 2013-09-09 16:22:19 +00:00

Read the documentation in qemu-doc.html or on http://wiki.qemu-project.org

- QEMU team