This patch adds support for breakpoint and single-step exception hooks.
v3 version of this patch is published and reviewed with arm64 kdgb and kprobes patch series [1] and [2]
[1] http://lwn.net/Articles/570648/
[2] https://lwn.net/Articles/571063/
Changes v3 -> v4:
-Incorporated review comments: http://lists.infradead.org/pipermail/linux-arm-kernel/2013-October/207372.h…
-Removed unnecessary comments
-Added comments for breakpoint re-entrancy & rw locks
- Rebased on top of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64.git Branch:upstream
commit ID: dc1ccc48159d63eca5089e507c82c7d22ef60839 (Linux 3.13-rc2)
- CCing Jason Wessel, since arm64 kgdb patchset is dependant on this.
Sandeepa Prabhu (1):
arm64: support single-step and breakpoint handler hooks
arch/arm64/include/asm/debug-monitors.h | 21 ++++++++
arch/arm64/kernel/debug-monitors.c | 88 ++++++++++++++++++++++++++++++++-
arch/arm64/kernel/entry.S | 2 +
3 files changed, 110 insertions(+), 1 deletion(-)
--
1.8.1.2
From: Hanjun Guo <hanjun.guo(a)linaro.org>
In order to implement both topology and ACPI support we need to define
per-CPU data.
Signed-off-by: Graeme Gregory <graeme.gregory(a)linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo(a)linaro.org>
Signed-off-by: Mark Brown <broonie(a)linaro.org>
---
arch/arm64/include/asm/cpu.h | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100644 arch/arm64/include/asm/cpu.h
diff --git a/arch/arm64/include/asm/cpu.h b/arch/arm64/include/asm/cpu.h
new file mode 100644
index 000000000000..d67ff011d361
--- /dev/null
+++ b/arch/arm64/include/asm/cpu.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2004-2005 ARM Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef __ASM_ARM64_CPU_H
+#define __ASM_ARM64_CPU_H
+
+#include <linux/percpu.h>
+#include <linux/cpu.h>
+#include <linux/topology.h>
+
+struct cpuinfo_arm {
+ struct cpu cpu;
+ u64 cpuid;
+#ifdef CONFIG_SMP
+ unsigned int loops_per_jiffy;
+#endif
+};
+
+DECLARE_PER_CPU(struct cpuinfo_arm, cpu_data);
+
+#endif
--
1.8.5.1
From: Al Stone <al.stone(a)linaro.org>
In acpi_processor_resume(), the variable resumed_bm_rld is being
used without being initialized, so initialize it.
Signed-off-by: Al Stone <al.stone(a)linaro.org>
---
drivers/acpi/processor_idle.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 597cdab..86d11a6 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -213,7 +213,7 @@ static int acpi_processor_suspend(void)
static void acpi_processor_resume(void)
{
- u32 resumed_bm_rld;
+ u32 resumed_bm_rld = 0;
acpi_read_bit_register(ACPI_BITREG_BUS_MASTER_RLD, &resumed_bm_rld);
if (resumed_bm_rld == saved_bm_rld)
--
1.8.3.1
Implement save/restore of the VGIC state using the newer KVM Device
Control API. This requries some number of changes to existing code in
addition to actually supporting save/restore of the necessary state.
The first patches (01-03) support creating the VGIC using the Device
Control API. This change is necessary because there are no other
suitable KVM APIs that we can leverage to access the VGIC state from
user space and the device control API was crafted exactly for this
purpose.
Subsequent patches add the missing infrastructure and user space API
pieces necessary to actually save and restore the VGIC state. The GIC
v2.0 architecture specification already specifies registers that can be
used to save and restore the complete VGIC state for suspend/resume
purposes on real hardware, and we can reuse this interface for the
VGIC. The API is therefore based on the memory-mapped register accesses
defined in the specs. See the individual patches for details.
The patches are based on kvm-arm-next with the arch timers save/restore
patches applied:
git://git.linaro.org/people/cdall/linux-kvm-arm.git timer-migrate-v4
This patch series based on the above can be cloned from:
git://git.linaro.org/people/cdall/linux-kvm-arm.git vgic-migrate-v4
User space patches for QEMU have also been posted on the list, but an
updated version is underway. Tested on Versatile Express TC2.
Changelogs in the individual patches.
Christoffer Dall (10):
ARM: KVM: Allow creating the VGIC after VCPUs
KVM: arm-vgic: Support KVM_CREATE_DEVICE for VGIC
KVM: arm-vgic: Set base addr through device API
irqchip: arm-gic: Define additional MMIO offsets and masks
KVM: arm-vgic: Make vgic mmio functions more generic
arm/arm64: kvm: Set vcpu->cpu to -1 on vcpu_put
KVM: arm-vgic: Add vgic reg access from dev attr
KVM: arm-vgic: Support unqueueing of LRs to the dist
KVM: arm-vgic: Add GICD_SPENDSGIR and GICD_CPENDSGIR handlers
KVM: arm-vgic: Support CPU interface reg access
Documentation/virtual/kvm/api.txt | 7 +-
Documentation/virtual/kvm/devices/arm-vgic.txt | 73 ++++
arch/arm/include/uapi/asm/kvm.h | 8 +
arch/arm/kvm/arm.c | 17 +-
include/kvm/arm_vgic.h | 2 +-
include/linux/irqchip/arm-gic.h | 12 +
include/linux/kvm_host.h | 1 +
include/uapi/linux/kvm.h | 1 +
virt/kvm/arm/vgic.c | 581 +++++++++++++++++++++++--
virt/kvm/kvm_main.c | 6 +-
10 files changed, 670 insertions(+), 38 deletions(-)
create mode 100644 Documentation/virtual/kvm/devices/arm-vgic.txt
--
1.8.4.3