Larry Finger <larry.fin...@lwfinger.net> writes: > On 06/23/2017 03:29 PM, Al Viro wrote: >> On Fri, Jun 23, 2017 at 01:49:16PM -0500, Larry Finger wrote: >> >>>> BTW, could you try to check what happens if you kill the >>>> if (__builtin_constant_p(n) && (n <= 8)) >>>> bits in raw_copy_{to,from}_user()? The usefulness of those (in >>>> __copy_from_user() >>>> originally) had always been dubious and the things are simpler without >>>> them. >>>> If _that_ turns out to cure breakage, I would be very surprised, though. >>>> >>> Sorry I was gone so long. Installing jessie on this box resulted in a crash >>> on boot. Lubuntu 14.04 yielded a desktop with a functioning cursor, but >>> nothing else. Finally, Ubuntu 12.04 resulted in a working system. I hate >>> Unity, but I guess I'm stuck for now. >> >> Ho-hum... Jessie is 3.16, so whatever is crashing there, it's something >> different... Ubuntu 12.04 is what, 3.2? >> >>> I know how easy it is to screw up a long bisection by booting the wrong >>> kernel. To help that problem and to work around the yaconf/yboot nonsense on >>> the MAC, my /etc/yaconf has always had generic kernel stanzas with only >>> default, old, and original kernels mentioned. From there I use a local >>> script to finish a kernel installation by moving the default links to the >>> old ones and creating the new default links pointing to the current kernel. >>> With those long-tested scripts, I'm sure that I am booting the one I want. >>> >>> With the new installation, kernel 4.12-rc6 failed, as did 3448890c with the >>> backported 46f401c4 added. >>> >>> Replacing "if (__builtin_constant_p(n) && (n <= 8))" with "if (0)" had no >>> effect. >> >> OK, that simplifies things a bit. Just to make sure we are on the same page: >> >> * f2ed8bebee69 + cherry-pick of 46f401c4 boots (Ubuntu 12.04 userland) >> * 3448890c32c3 + cherry-pick of 46f401c4 fails (Ubuntu 12.04 userland), ditto >> with removal of constant-size bits in raw_copy_..._user(). Failure >> appears >> to be on udev getting EFAULT on some syscalls. >> * straight Ubuntu 12.04 works >> * jessie crashes on boot. > > I made a break through. If I turn off inline copy to/from users for 32-bit > ppc > with the following patch, then the system boots: > > diff --git a/arch/powerpc/include/asm/uaccess.h > b/arch/powerpc/include/asm/uaccess.h > index 5c0d8a8cdae5..1e6a8723f497 100644 > --- a/arch/powerpc/include/asm/uaccess.h > +++ b/arch/powerpc/include/asm/uaccess.h > @@ -267,12 +267,7 @@ do { > \ > extern unsigned long __copy_tofrom_user(void __user *to, > const void __user *from, unsigned long size); > > -#ifndef __powerpc64__ > - > -#define INLINE_COPY_FROM_USER > -#define INLINE_COPY_TO_USE > - > -#else /* __powerpc64__ */ > +#ifdef __powerpc64__ > > static inline unsigned long > raw_copy_in_user(void __user *to, const void __user *from, unsigned long n)
Thanks for debugging this. I just sent a fix based on the above. Let me know if it doesn't work for you. cheers