All of lore.kernel.org
 help / color / mirror / Atom feed
From: "J. Mayer" <l_indien@magic.fr>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] qemu-system-ppc problem with PVR access from user space
Date: Fri, 02 Nov 2007 14:38:50 +0100	[thread overview]
Message-ID: <1194010730.16781.510.camel@rapid> (raw)
In-Reply-To: <472B2044.9080601@windriver.com>

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


On Fri, 2007-11-02 at 08:04 -0500, Jason Wessel wrote:
> The typical kernel + user space I boot on the prep machine no longer
> boots due to an issue accessing the PVR special purpose register.  When
> the PVR is accessed from user space, it should generate an exception
> with the PC set to the instruction that it occurred at when it saves to
> the stack.  In the latest CVS, it is off by 4 bytes.  With out the fix
> /sbin/init gets killed because the kernel's trap handler which does the
> userspace emulation of the instruction does not clean up the trap.
> 
> I am using the attached patch to work around the problem, but I wonder
> if there is a more generic problem that was introduced as a regression
> with all ppc merges in the last month or so, given this used to work
> fine through the generic handler.
> 
> Any insight into this would certainly be useful.

Seems like I made a mistake for program exception generation while
fixing floating-point ones, I'm sorry. Your patch is incorrect but the
one attached should fix the problem. Could you please check it in your
case ?

-- 
J. Mayer <l_indien@magic.fr>
Never organized

[-- Attachment #2: ppc_excp.diff --]
[-- Type: text/x-patch, Size: 1134 bytes --]

Index: target-ppc/helper.c
===================================================================
RCS file: /sources/qemu/qemu/target-ppc/helper.c,v
retrieving revision 1.85
diff -u -d -d -p -r1.85 helper.c
--- target-ppc/helper.c	28 Oct 2007 00:55:05 -0000	1.85
+++ target-ppc/helper.c	2 Nov 2007 13:35:52 -0000
@@ -2146,10 +2145,9 @@ static always_inline void powerpc_excp (
                 new_msr |= (target_ulong)1 << MSR_HV;
 #endif
             msr |= 0x00100000;
-            if (msr_fe0 != msr_fe1) {
-                msr |= 0x00010000;
-                goto store_current;
-            }
+            if (msr_fe0 == msr_fe1)
+                goto store_next;
+            msr |= 0x00010000;
             break;
         case POWERPC_EXCP_INVAL:
 #if defined (DEBUG_EXCEPTIONS)
@@ -2187,7 +2185,7 @@ static always_inline void powerpc_excp (
                       env->error_code);
             break;
         }
-        goto store_next;
+        goto store_current;
     case POWERPC_EXCP_FPU:       /* Floating-point unavailable exception     */
         new_msr &= ~((target_ulong)1 << MSR_RI);
 #if defined(TARGET_PPC64H)

  reply	other threads:[~2007-11-02 13:38 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-02 13:04 [Qemu-devel] qemu-system-ppc problem with PVR access from user space Jason Wessel
2007-11-02 13:38 ` J. Mayer [this message]
2007-11-02 13:57   ` Jason Wessel
2007-11-02 16:23     ` Jocelyn Mayer
2007-11-02 20:46       ` Daniel Jacobowitz
2007-11-02 22:10         ` J. Mayer

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=1194010730.16781.510.camel@rapid \
    --to=l_indien@magic.fr \
    --cc=qemu-devel@nongnu.org \
    /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.