qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] memory: Use standard log messages for unassigne


From: Stefan Weil
Subject: Re: [Qemu-devel] [PATCH] memory: Use standard log messages for unassigned memory read / write
Date: Thu, 8 Sep 2016 19:40:04 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.2.0

Am 08.09.2016 um 11:37 schrieb Paolo Bonzini:
On 08/09/2016 07:43, Stefan Weil wrote:
Am 07.09.2016 um 23:29 schrieb Peter Maydell:
On 7 September 2016 at 20:13, Stefan Weil <address@hidden> wrote:
The old log messages are implemented by conditional compilation
and not available by default.

The new log messages can be enabled either by a command line option
(-d unimp) or in the QEMU monitor (log unimp).

Signed-off-by: Stefan Weil <address@hidden>
---

The new code is very useful when implementing new platforms or
looking for problems with existing platforms which are only
partially emulated (I use it for Raspberry Pi).

target-sparc/ldst_helper.c also uses DEBUG_UNASSIGNED
and could get similar code.

Regards,
Stefan


 memory.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

[...]

-#ifdef DEBUG_UNASSIGNED
-    printf("Unassigned mem write " TARGET_FMT_plx " =
0x%"PRIx64"\n", addr, val);
-#endif
+    qemu_log_mask(LOG_UNIMP, "%s " TARGET_FMT_plx " = 0x%" PRIx64 "\n",
+                  __func__, addr, val);

Maybe this should be LOG_GUEST_ERROR rather than LOG_UNIMP ?

My first code used LOG_GUEST_ERROR. Of course a guest can try to access
memory which is not available for the real hardware.

For my test object (Raspberry Pi), all unassigned memory accesses were
not guest errors but unimplemented emulation in QEMU – that's why I
changed from LOG_GUEST_ERROR to LOG_UNIMP.

A short test with i386 / x86_64 emulation also detected unassigned
memory accesses (from BIOS) caused by an unimplemented debug device, so
that was also not a guest error.

FWIW, the debug device is optional (-device isa-debugcon), not
unimplemented.  Similarly it's common, or at least it was before ACPI
was introduced, to poke at known ISA ports to detect legacy devices;
it's neither unimplemented nor a guest error in that case.

Perhaps it should just be a tracepoint?

Paolo

Yes, especially for x86 there are several devices which are optional
(e. g. serial and parallel ports). I also found the isa-debugcon device
when I searched for the reason of the unassigned memory access. Maybe isa-debugcon would deserve better documentation.

Regarding using qemu_log_mask or using tracepoints (trace_unassigned_mem_read, trace_unassigned_mem_write?): Both alternatives are fine for me. I just want something which does not need a new build with conditional compilation. It should be possible to enable the log / trace message at any time. I can also prepare a new patch with tracepoints. Any more feedback which variant is preferred?

Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]