Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
target-arm: Use MemoryListener to identify GIC base address for KVM
When using an in-kernel GIC with KVM, we need to tell the kernel where the GIC's memory mapped registers live. Do this by registering a MemoryListener which tracks where the board model maps the A15's private peripherals, so we can finish the GIC initialisation when the GIC is actually mapped. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
- Loading branch information
Showing
2 changed files
with
119 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* | ||
* QEMU KVM support -- ARM specific functions. | ||
* | ||
* Copyright (c) 2012 Linaro Limited | ||
* | ||
* This work is licensed under the terms of the GNU GPL, version 2 or later. | ||
* See the COPYING file in the top-level directory. | ||
* | ||
*/ | ||
|
||
#ifndef QEMU_KVM_ARM_H | ||
#define QEMU_KVM_ARM_H | ||
|
||
#include "sysemu/kvm.h" | ||
#include "exec/memory.h" | ||
|
||
/** | ||
* kvm_arm_register_device: | ||
* @mr: memory region for this device | ||
* @devid: the KVM device ID | ||
* | ||
* Remember the memory region @mr, and when it is mapped by the | ||
* machine model, tell the kernel that base address using the | ||
* KVM_SET_DEVICE_ADDRESS ioctl. @devid should be the ID of | ||
* the device as defined by KVM_SET_DEVICE_ADDRESS. | ||
* The machine model may map and unmap the device multiple times; | ||
* the kernel will only be told the final address at the point | ||
* where machine init is complete. | ||
*/ | ||
void kvm_arm_register_device(MemoryRegion *mr, uint64_t devid); | ||
|
||
#endif |