From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HURHp-0007j8-FX for qemu-devel@nongnu.org; Thu, 22 Mar 2007 13:41:17 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HURHn-0007iK-Lq for qemu-devel@nongnu.org; Thu, 22 Mar 2007 13:41:17 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HURHn-0007iD-GE for qemu-devel@nongnu.org; Thu, 22 Mar 2007 12:41:15 -0500 Received: from mail.windriver.com ([147.11.1.11] helo=mail.wrs.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HURFy-00007w-77 for qemu-devel@nongnu.org; Thu, 22 Mar 2007 13:39:22 -0400 Received: from ALA-MAIL03.corp.ad.wrs.com (ala-mail03 [147.11.57.144]) by mail.wrs.com (8.13.6/8.13.6) with ESMTP id l2MHdKkY015985 for ; Thu, 22 Mar 2007 10:39:20 -0700 (PDT) Message-ID: <4602BF6F.7050608@windriver.com> Date: Thu, 22 Mar 2007 12:39:59 -0500 From: Jason Wessel MIME-Version: 1.0 Subject: Re: [Qemu-devel] Re: Qemu PPC ethernet checksum bug [PATCH] References: <7ED098B05D69FE41B380586BF1474DBA1CBA85@ala-mail08.corp.ad.wrs.com> <1174206229.7316.195.camel@rapid> In-Reply-To: <1174206229.7316.195.camel@rapid> Content-Type: multipart/mixed; boundary="------------020709040201070308030408" Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------020709040201070308030408 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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. > > --------------020709040201070308030408 Content-Type: text/x-patch; name="ppc_addic_fix.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="ppc_addic_fix.patch" 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. */ --------------020709040201070308030408 Content-Type: application/x-bzip; name="csum_test.tar.bz2" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="csum_test.tar.bz2" QlpoOTFBWSZTWaHz3gUAA5z/5MywAgBa////aaffDv////oQAABAAAEACFAFj3vc8Xc2e8cV 5tjTd3RBKImp6mJk1MnkJtNT1TZqBppMQ2kyaBoB5TRoeiCVNABNNIaEZNT0jQNBo0aBoAAA DQBKaITRNEaZT9CaR6mR6gGgAAAAAAAkUKjyjIaBo0eoAGgDQAaDQAaAaASmoVNNiQGCBo0a NGRoDIAB6hiMgaNHcHl7e30YcRUsj9QKxRAWIEEKbVVTlDdRIHLW2Br8+QIkFFwCBMwzgmGw 7vkakEdRylIDVfv2HEUq7QMYMamK1Zjc6NO89mQj6wJwVy3KNwesGhYQthmy+6CSZcnraWo7 KzTyt+pTIi/s3um+/NnyL0urOu5QwnUse+QkTby5pzydwLTYGRDAu0CzIX1z4HXyaNET8DfD w2EDibf3V77ySb1IiCHrUKsktGzrijek1/WuGBNvx3Mzc+lIMouyOTmjViaFpmdqjbmujSc9 iLlw8PFky0jW5jtbNSN6vBofsnPInCumbirWGOlkIZOwv9Xn6kQnNdXaqufpv3aTyvKYya+K PXbeLm03Fi3Rhc0dE5d2DYbDdrfgHlDMcBlsItyYLbzbVVKwXQGG9L3W6Zt6fizuW4nOKIoo qbYxtpHDTw6J6jLV/ARYaG0FV2tC7cpAoMDTN2CSbqWuUUsTJ/B3Xi6sVfNiLXx0x03yqBCU MSzw4Q7POYndMSmsM+6td/Bt1TPl0u+Esu3Lf+jhpdeLmgycVzrrzog8adSiQVwseuTlgJ0p BJOPWrUQTzqgqtCqtBnDCEwYA0RBUCSTBbAUWLfvICkEymCIQRSkyQONcHUBKm2xtCbSQkDJ DHkghl5qe+aTRRg+LbgEgIMgJZckIvTZbhcHFgBAoqwu3qZ6mRj+HNvrVmCKy37oWMVgOMhe 5iuS2tjmPK6I3lQK4oFRROSBFT4jL5zm+Ikg48qwFsmDazHUpSEJPZ3KsaZ8HhpoF2KnGAk4 G3Bjr2Z8TOhsqq6Mivxxwc5ns5S0uhTsd0YxOpTjR+dteBiB0s1Y9bXGmpGtGoqGdW1x7dJX zcwKoPC2Ocy93ztsRFX1ZYkJHrpu7jEhtcLprji4bs7Ywus2GNkPzC1Rj2YWjOnN7VUcVtUq lu/DpmfWJjQRWpW/yrGtMUX28FkUQmlmgwqjboaHnucY7uJyWNlHJkqTaHp+VSDB2ePlCFMr 4Ivh8Exkk4iIGE2pocQt2ec3GlXPOLk3s4ohqcLURKLMhOd1eLHmaOrdZio7b4Pi9soIJqtn AizLIILayBtes6SbRpgqubqWtf/hd2jFe/gDx+QQSKWiC7BwLsxfCg0raxaenS3hrBVtBzYT kiZlTK1B5b5KAoZ1OdZSW1wetWyaaNY6ga6G1xqSZ9PNNZwnMZ3EWBItlEL+HHfOlC4wM1Eh A/xa7eUqhVqySNtqaV0Nk0cyO0GcvIcJhC33LLXElps3qavcrl0CjUMem/91fdxu0OIMeCYW XepeernSJaIKIAgEjjstsJMQSfKry2+UljVFf/QechOSdwcxsjJsq11bGqPY9Zp5zIFCgKUd loDUbizXPi0QuPeY6NZ2ptecxhCisZNDqoZFWm9LkuYPFrLsNUmkG2Ocm+CxlTZjvaDLcamM 6o2lRfqAlDVQZULUgIFmA4HAmZMmECIoa7auMFJ/Urn6kZUo+Tr9GIRaVRhv0JNqIIgakOxr FVXpwq5Nn3eUbFgqFJKIexbFhiu0JxoCN7SJkmGtxFpNyAiASDn+Ci3qd3DyTXYDbz8kJ1rk sNGo9gZUdcsOigzGWq8KRY1MQ4IhvvFXppCRJe8waFK7wnJvPuypV6vFTFXSVGT1ooUsqrWL f/Q/wRW1721PacQh/sFC7OT3Vy5YewSYZmPmmLwhVMiKaNyUpbmIxzamwd9E9qDjwH67MN/x dyRThQkKHz3gUA== --------------020709040201070308030408--