[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v9 26/27] gdbstub: Add support to read a MSR for
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH v9 26/27] gdbstub: Add support to read a MSR for KVM target |
Date: |
Wed, 15 May 2019 18:48:55 +0100 |
User-agent: |
mu4e 1.3.1; emacs 26.1 |
Jon Doron <address@hidden> writes:
> gdb> maint packet qqemu.kvm.Rdmsr:MsrIndex
gdbserver already has a mechanism for exposing system registers see:
commit 200bf5b7ffea635079cc05fdfb363372b9544ce7
Author: Abdallah Bouassida <address@hidden>
Date: Fri May 18 17:48:07 2018 +0100
for an example. As MSR's are very specific to x86 all this should be
handled via target/i386/gdbstub and kept out of the generic code.
>
> Signed-off-by: Jon Doron <address@hidden>
> ---
> gdbstub.c | 38 +++++++++++++++++++++++++++++++++++++-
> 1 file changed, 37 insertions(+), 1 deletion(-)
>
> diff --git a/gdbstub.c b/gdbstub.c
> index 34da10260d..f48c3a2b5f 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -2141,7 +2141,14 @@ static void handle_query_attached(GdbCmdContext
> *gdb_ctx, void *user_ctx)
>
> static void handle_query_qemu_supported(GdbCmdContext *gdb_ctx, void
> *user_ctx)
> {
> - put_packet(gdb_ctx->s, "sstepbits;sstep;PhyMemMode");
> + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf),
> + "sstepbits;sstep;PhyMemMode");
> +
> + if (kvm_enabled()) {
> + pstrcat(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), ";kvm.Rdmsr");
> + }
> +
> + put_packet(gdb_ctx->s, gdb_ctx->str_buf);
> }
>
> static void handle_query_qemu_phy_mem_mode(GdbCmdContext *gdb_ctx,
> @@ -2166,6 +2173,29 @@ static void handle_set_qemu_phy_mem_mode(GdbCmdContext
> *gdb_ctx, void *user_ctx)
> put_packet(gdb_ctx->s, "OK");
> }
>
> +static void handle_query_kvm_read_msr(GdbCmdContext *gdb_ctx, void *user_ctx)
> +{
> + uint64_t msr_val;
> +
> + if (!kvm_enabled()) {
> + return;
> + }
> +
> + if (!gdb_ctx->num_params) {
> + put_packet(gdb_ctx->s, "E22");
> + return;
> + }
> +
> + if (kvm_arch_read_msr(gdbserver_state->c_cpu, gdb_ctx->params[0].val_ul,
> + &msr_val)) {
> + put_packet(gdb_ctx->s, "E00");
> + return;
> + }
> +
> + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "0x%" PRIx64,
> msr_val);
> + put_packet(gdb_ctx->s, gdb_ctx->str_buf);
> +}
> +
> static GdbCmdParseEntry gdb_gen_query_set_common_table[] = {
> /* Order is important if has same prefix */
> {
> @@ -2250,6 +2280,12 @@ static GdbCmdParseEntry gdb_gen_query_table[] = {
> .handler = handle_query_qemu_phy_mem_mode,
> .cmd = "qemu.PhyMemMode",
> },
> + {
> + .handler = handle_query_kvm_read_msr,
> + .cmd = "qemu.kvm.Rdmsr:",
> + .cmd_startswith = 1,
> + .schema = "l0"
> + },
> };
>
> static GdbCmdParseEntry gdb_gen_set_table[] = {
--
Alex Bennée
- Re: [Qemu-devel] [PATCH v9 12/27] gdbstub: Implement read memory (m pkt) with new infra, (continued)
- [Qemu-devel] [PATCH v9 16/27] gdbstub: Implement step (s pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 08/27] gdbstub: Implement remove breakpoint (z pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 11/27] gdbstub: Implement write memory (M pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 23/27] gdbstub: Implement qemu physical memory mode, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 26/27] gdbstub: Add support to read a MSR for KVM target, Jon Doron, 2019/05/02
- Re: [Qemu-devel] [PATCH v9 26/27] gdbstub: Add support to read a MSR for KVM target,
Alex Bennée <=
- [Qemu-devel] [PATCH v9 19/27] gdbstub: Implement generic set (Q pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 18/27] gdbstub: Implement generic query (q pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 05/27] gdbstub: Implement continue with signal (C pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 13/27] gdbstub: Implement write all registers (G pkt) with new infra, Jon Doron, 2019/05/02
- [Qemu-devel] [PATCH v9 24/27] gdbstub: Add another handler for setting qemu.sstep, Jon Doron, 2019/05/02