lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 17 Mar 2009 19:54:57 -0700
From:	john stultz <johnstul@...ibm.com>
To:	Frans Pop <elendil@...net.nl>, schwidefsky@...ibm.com
Cc:	linux-s390@...r.kernel.org, Roman Zippel <zippel@...ux-m68k.org>,
	Thomas Gleixner <tglx@...utronix.de>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [BUG,2.6.28,s390] Fails to boot in Hercules S/390 emulator -
 hang traced

On Tue, 2009-03-17 at 19:26 -0700, john stultz wrote:
> So two issues that I've found so far:
> 1) do_div() isn't dividing correctly in this case. Not sure why.

Patch to prove this is part of the issue below. Disables the s390
specific __div64_32() implementation and uses the generic code.

Frans: Mind giving this a try to verify the issue goes away with this?

Martin: I'm not sure if the problem here is the __div64_32
implementation or if the emulator is doing something wrong here. Might
need some help from you in sorting this out.



> 2) We *really* shouldn't be using oneshot mode while the jiffies
> clocksource is in use. I believe x86 avoids this specifically, so I'm
> not sure why s390 isn't doing the same. Still have to investigate.

Still working this.

thanks
-john


diff --git a/arch/s390/lib/div64.c b/arch/s390/lib/div64.c
index a5f8300..6c249fa 100644
--- a/arch/s390/lib/div64.c
+++ b/arch/s390/lib/div64.c
@@ -68,7 +68,7 @@ static uint32_t __div64_31(uint64_t *n, uint32_t base)
 	words[1] = reg3;
 	return reg2;
 }
-
+#if 0
 /*
  * Function to divide an unsigned 64 bit integer by an unsigned
  * 32 bit integer using the unsigned 64/31 bit division.
@@ -123,9 +123,9 @@ uint32_t __div64_32(uint64_t *n, uint32_t base)
 	}
 	return r;
 }
-
+#endif
 #else /* MARCH_G5 */
-
+#if 0
 uint32_t __div64_32(uint64_t *n, uint32_t base)
 {
 	register uint32_t reg2 asm("2");
@@ -145,5 +145,5 @@ uint32_t __div64_32(uint64_t *n, uint32_t base)
 	words[1] = reg3;
 	return reg2;
 }
-
+#endif
 #endif /* MARCH_G5 */


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ