All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wessel <jason.wessel@windriver.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Re: Qemu PPC ethernet checksum bug [PATCH]
Date: Thu, 22 Mar 2007 12:39:59 -0500	[thread overview]
Message-ID: <4602BF6F.7050608@windriver.com> (raw)
In-Reply-To: <1174206229.7316.195.camel@rapid>

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

Attached is a patch as well as an example program, where I took the code 
from the from the linux kernel and made a call in with a dummy packet.

It appears the problem is the addic translation does not correctly 
set/reset the carry bit, and this is a regression vs the source base on 
3/7/2007.  With the change here, I can boot the ppc-prep machine again 
and use ethernet.

If you would like a pre-compiled binary of the test case, let me know 
because it was too big to send to the list.

signed-off-by: jason.wessel@windriver.com

Jason.

J. Mayer wrote:
> Hi,
>
> My concern is I cannot reproduce your problem for the following reasons:
> - the PREP machine (and the heathrow too...) is broken and cannot even
> boot. PCI and/or IRQ are broken, so the Linux kernel hangs.
> - when using the "known to work" Linux distributions on the mac99
> machine (please take a look at the STATUS file), I am able to download a
> kernel from www.kernel.org, which makes me think TCP packets are sent
> and received correctly, with valid checksums.
>
> Then, it would be a great thing if you could isolate the failing routine
> and, for example, make a test case usable with linux-user emulation.
> This would be a great help to solve this issue.
>
> Thanks by advance.
>
>   


[-- Attachment #2: ppc_addic_fix.patch --]
[-- Type: text/x-patch, Size: 770 bytes --]

Index: qemu/target-ppc/translate.c
===================================================================
--- qemu.orig/target-ppc/translate.c
+++ qemu/target-ppc/translate.c
@@ -772,16 +772,14 @@ GEN_HANDLER(addic, 0x0C, 0xFF, 0xFF, 0x0
     target_long simm = SIMM(ctx->opcode);
 
     gen_op_load_gpr_T0(rA(ctx->opcode));
-    if (likely(simm != 0)) {
-        gen_op_move_T2_T0();
-        gen_op_addi(simm);
+    gen_op_move_T2_T0();
+    gen_op_addi(simm);
 #if defined(TARGET_PPC64)
-        if (ctx->sf_mode)
-            gen_op_check_addc_64();
-        else
+    if (ctx->sf_mode)
+        gen_op_check_addc_64();
+    else
 #endif
-            gen_op_check_addc();
-    }
+        gen_op_check_addc();
     gen_op_store_T0_gpr(rD(ctx->opcode));
 }
 /* addic. */

[-- Attachment #3: csum_test.tar.bz2 --]
[-- Type: application/x-bzip, Size: 1468 bytes --]

  parent reply	other threads:[~2007-03-22 17:41 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-17 14:02 [Qemu-devel] qemu/target-ppc cpu.h exec.h helper.c op.c op_h Jocelyn Mayer
2007-03-17 14:53 ` Wessel, Jason
2007-03-18  8:23   ` [Qemu-devel] Re: Qemu PPC ethernet checksum bug J. Mayer
2007-03-21  5:33     ` Jason Wessel
2007-03-22 17:39     ` Jason Wessel [this message]
2007-03-22 19:19       ` [Qemu-devel] Re: Qemu PPC ethernet checksum bug [PATCH] 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=4602BF6F.7050608@windriver.com \
    --to=jason.wessel@windriver.com \
    --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.