aboutsummaryrefslogtreecommitdiffstats
path: root/hw
diff options
context:
space:
mode:
authorSasha Levin <levinsasha928@gmail.com>2012-07-22 18:29:51 +0200
committerWill Deacon <will.deacon@arm.com>2015-06-01 16:39:52 +0100
commit226e727b202ae046608da36ed7cd05ec15751e33 (patch)
tree2bf08a6a2d7be26663e008c1202cac8a6eb08c5f /hw
parente23415808ae3b6edb24fb0a1afbeae8cbefc7e43 (diff)
downloadkvmtool-226e727b202ae046608da36ed7cd05ec15751e33.tar.gz
kvm tools: support injecting arbitrary sysrqs
Add support to 'lkvm debug' to inject arbitrary sysrqs using a new '-s <sysrq>' argument. Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
Diffstat (limited to 'hw')
-rw-r--r--hw/serial.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/hw/serial.c b/hw/serial.c
index 852aea42..956307c5 100644
--- a/hw/serial.c
+++ b/hw/serial.c
@@ -153,14 +153,13 @@ static void serial8250_update_irq(struct kvm *kvm, struct serial8250_device *dev
}
#define SYSRQ_PENDING_NONE 0
-#define SYSRQ_PENDING_BREAK 1
static int sysrq_pending;
static void serial8250__sysrq(struct kvm *kvm, struct serial8250_device *dev)
{
dev->lsr |= UART_LSR_DR | UART_LSR_BI;
- dev->rxbuf[dev->rxcnt++] = 'p';
+ dev->rxbuf[dev->rxcnt++] = sysrq_pending;
sysrq_pending = SYSRQ_PENDING_NONE;
}
@@ -219,9 +218,9 @@ void serial8250__update_consoles(struct kvm *kvm)
}
}
-void serial8250__inject_sysrq(struct kvm *kvm)
+void serial8250__inject_sysrq(struct kvm *kvm, char sysrq)
{
- sysrq_pending = SYSRQ_PENDING_BREAK;
+ sysrq_pending = sysrq;
}
static struct serial8250_device *find_device(u16 port)