[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] qemu-system-tricore: segfault when entering "x
From: |
Thomas Huth |
Subject: |
Re: [Qemu-devel] [PATCH] qemu-system-tricore: segfault when entering "x 0" on the monitor |
Date: |
Thu, 27 Jul 2017 15:36:32 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 |
Hi Eduardo,
Meta comment: Please always put the maintainer(s) and qemu-devel on CC:
On 27.07.2017 14:37, Eduardo Otubo wrote:
> Starting Qemu with "qemu-system-tricore -nographic -M tricore_testboard
> -S" and entering "x 0" at the monitor prompt leads to Segmentation
> fault. This happens because tricore_cpu_get_phys_page_debug() is not
> implemented yet, this is a temporary workaround to avoid the crash do
> just abort the execution with exit(1).
>
> Signed-off-by: Eduardo Otubo <address@hidden>
> ---
> target/tricore/cpu.c | 10 ++++++++++
> target/tricore/cpu.h | 3 +++
> 2 files changed, 13 insertions(+)
>
> diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
> index 08f50e2ba7..822c7f4092 100644
> --- a/target/tricore/cpu.c
> +++ b/target/tricore/cpu.c
> @@ -22,6 +22,15 @@
> #include "cpu.h"
> #include "qemu-common.h"
> #include "exec/exec-all.h"
> +#include "qemu/error-report.h"
> +
> +hwaddr tricore_cpu_get_phys_page_attrs_debug(CPUState *cpu, vaddr addr,
> + MemTxAttrs *attrs)
> +{
> + error_report("function cpu_get_phys_page_attrs_debug not"
> + "implemented, aborting");
> + exit(1);
Looking at the description in include/qom/cpu.h and the callers in
exec.c, it seems like it is OK if these functions return -1 if the page
could not be found. I think you should do that here, too, instead of
exiting - it's always a little bit annoying for the users if QEMU exits
unexpectedly, so we should try to avoid that if possible.
> +}
>
> static inline void set_feature(CPUTriCoreState *env, int feature)
> {
> @@ -176,6 +185,7 @@ static void tricore_cpu_class_init(ObjectClass *c, void
> *data)
> cc->dump_state = tricore_cpu_dump_state;
> cc->set_pc = tricore_cpu_set_pc;
> cc->synchronize_from_tb = tricore_cpu_synchronize_from_tb;
> + cc->get_phys_page_attrs_debug = tricore_cpu_get_phys_page_attrs_debug;
> }
>
> static void cpu_register(const TriCoreCPUInfo *info)
> diff --git a/target/tricore/cpu.h b/target/tricore/cpu.h
> index a3493a123c..c374ed3213 100644
> --- a/target/tricore/cpu.h
> +++ b/target/tricore/cpu.h
> @@ -224,6 +224,9 @@ static inline TriCoreCPU
> *tricore_env_get_cpu(CPUTriCoreState *env)
> #define ENV_OFFSET offsetof(TriCoreCPU, env)
>
> hwaddr tricore_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
I think you could also remove that prototype above now - since there is
no implementation for this.
> +hwaddr tricore_cpu_get_phys_page_attrs_debug(CPUState *cpu, vaddr addr,
> + MemTxAttrs *attrs);
> +
> void tricore_cpu_dump_state(CPUState *cpu, FILE *f,
> fprintf_function cpu_fprintf, int flags);
>
>
Thomas
- Re: [Qemu-devel] [PATCH] qemu-system-tricore: segfault when entering "x 0" on the monitor,
Thomas Huth <=