diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2014-12-04 15:02:24 +0000 |
---|---|---|
committer | Christoffer Dall <christoffer.dall@linaro.org> | 2014-12-13 14:15:52 +0100 |
commit | 6d3cfbe21bef5b66530b50ad16c88fdc71a04c35 (patch) | |
tree | b5f375258f0273acdab23d900ac9b06c642a8e5f /arch/arm/tools | |
parent | 957db105c99792ae8ef61ffc9ae77d910f6471da (diff) | |
download | blackbird-op-linux-6d3cfbe21bef5b66530b50ad16c88fdc71a04c35.tar.gz blackbird-op-linux-6d3cfbe21bef5b66530b50ad16c88fdc71a04c35.zip |
arm/arm64: KVM: vgic: move reset initialization into vgic_init_maps()
VGIC initialization currently happens in three phases:
(1) kvm_vgic_create() (triggered by userspace GIC creation)
(2) vgic_init_maps() (triggered by userspace GIC register read/write
requests, or from kvm_vgic_init() if not already run)
(3) kvm_vgic_init() (triggered by first VM run)
We were doing initialization of some state to correspond with the
state of a freshly-reset GIC in kvm_vgic_init(); this is too late,
since it will overwrite changes made by userspace using the
register access APIs before the VM is run. Move this initialization
earlier, into the vgic_init_maps() phase.
This fixes a bug where QEMU could successfully restore a saved
VM state snapshot into a VM that had already been run, but could
not restore it "from cold" using the -loadvm command line option
(the symptoms being that the restored VM would run but interrupts
were ignored).
Finally rename vgic_init_maps to vgic_init and renamed kvm_vgic_init to
kvm_vgic_map_resources.
[ This patch is originally written by Peter Maydell, but I have
modified it somewhat heavily, renaming various bits and moving code
around. If something is broken, I am to be blamed. - Christoffer ]
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Eric Auger <eric.auger@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Diffstat (limited to 'arch/arm/tools')
0 files changed, 0 insertions, 0 deletions