All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@gmail.com>
To: Aurelien Jarno <aurelien@aurel32.net>
Cc: Stefan Hajnoczi <stefanha@redhat.com>,
	"open list:All patches CC here" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PULL 2/5] target/sh4: fix reset when using a kernel and an initrd
Date: Tue, 30 May 2017 11:17:46 +0100	[thread overview]
Message-ID: <20170530101746.GA25884@stefanha-x1.localdomain> (raw)
In-Reply-To: <20170529193016.6888-3-aurelien@aurel32.net>

[-- Attachment #1: Type: text/plain, Size: 2294 bytes --]

On Mon, May 29, 2017 at 09:30:13PM +0200, Aurelien Jarno wrote:
> When a masked exception happens, the SH4 CPU generates a non-masked
> reset exception, which then jumps to the reset vector at address
> 0xA0000000. While this is emulated correctly in QEMU, this does not
> work when using a kernel and initrd as this address then contain an
> illegal instruction (and there is no guarantee the kernel and initrd
> haven't been overwritten).
> 
> Therefore call qemu_system_reset_request to reload the kernel and initrd
> and load the program counter to the kernel entry point.
> 
> Reviewed-by: Richard Henderson <rth@twiddle.net>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
> ---
>  target/sh4/helper.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/target/sh4/helper.c b/target/sh4/helper.c
> index 4c024f9529..5296e7cf4e 100644
> --- a/target/sh4/helper.c
> +++ b/target/sh4/helper.c
> @@ -21,6 +21,7 @@
>  #include "cpu.h"
>  #include "exec/exec-all.h"
>  #include "exec/log.h"
> +#include "sysemu/sysemu.h"
>  
>  #if !defined(CONFIG_USER_ONLY)
>  #include "hw/sh4/sh_intc.h"
> @@ -92,7 +93,14 @@ void superh_cpu_do_interrupt(CPUState *cs)
>  
>      if (env->sr & (1u << SR_BL)) {
>          if (do_exp && cs->exception_index != 0x1e0) {
> -            cs->exception_index = 0x000; /* masked exception -> reset */
> +            /* In theory a masked exception generates a reset exception,
> +               which in turn jumps to the reset vector. However this only
> +               works when using a bootloader. When using a kernel and an
> +               initrd, they need to be reloaded and the program counter
> +               should be loaded with the kernel entry point.
> +               qemu_system_reset_request takes care of that.  */
> +            qemu_system_reset_request();
> +            return;

The qemu_system_reset_request() prototype is changing.  There is a
conflict with another merged pull request.  Please rebase onto
https://github.com/stefanha/qemu.git staging.

target/sh4/helper.c:102:39: error: too few arguments to function call, single argument 'reason' was not specified
            qemu_system_reset_request();
            ~~~~~~~~~~~~~~~~~~~~~~~~~ ^

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

  reply	other threads:[~2017-05-30 10:17 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20170529193016.6888-1-aurelien@aurel32.net>
2017-05-29 19:30 ` [Qemu-devel] [PULL 1/5] target/sh4: log unauthorized accesses using qemu_log_mask Aurelien Jarno
2017-05-30  9:52   ` Stefan Hajnoczi
2017-05-30 11:12     ` Aurelien Jarno
2017-05-30 10:18   ` Stefan Hajnoczi
2017-05-30 11:12     ` Aurelien Jarno
2017-05-29 19:30 ` [Qemu-devel] [PULL 2/5] target/sh4: fix reset when using a kernel and an initrd Aurelien Jarno
2017-05-30 10:17   ` Stefan Hajnoczi [this message]
2017-05-30 15:02     ` Eric Blake
2017-05-30 16:21       ` Aurelien Jarno
2017-05-29 19:30 ` [Qemu-devel] [PULL 3/5] target/sh4: introduce DELAY_SLOT_MASK Aurelien Jarno
2017-05-29 19:30 ` [Qemu-devel] [PULL 4/5] target/sh4: ignore interrupts in a delay slot Aurelien Jarno
2017-05-29 19:30 ` [Qemu-devel] [PULL 5/5] target/sh4: fix RTE instruction " Aurelien Jarno

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170530101746.GA25884@stefanha-x1.localdomain \
    --to=stefanha@gmail.com \
    --cc=aurelien@aurel32.net \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.