Re: linux-3.10+: unable to boot 31bit builds

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 21, 2014 at 12:58:36PM +0100, Heiko Carstens wrote:
> On Tue, Jan 21, 2014 at 12:22:52PM +0100, Heiko Carstens wrote:
> > On Tue, Jan 21, 2014 at 04:57:39AM -0500, Mike Frysinger wrote:
> > > hmm, doesn't seem to work for me.  don't get a crash, just a "virtual machine 
> > > is placed in CP mode due to a SIGP initial C".  whatever that means :).
> > 
> > Ah, that probably happened because the kernel failed to mount the
> > root file system and killed all CPUs before printing a nice error message.
> 
> Ok, that's not correct. Just bisected it down to:
> 
> commit 14556b33f2a5d6a3bc75cd33b709452a31555b25
> Author: Sebastian Ott <sebott@xxxxxxxxxxxxxxxxxx>
> Date:   Sat Apr 13 13:03:54 2013 +0200
> 
>     s390/css: introduce cio_register_early_subchannels
>     
>     Use cio_register_early_subchannels to register early subchannels
>     which are already in use. Call this function before we do the
>     actual subchannel scanning loop. This helps us to get rid of some
>     more special cases regarding the console subchannel.
>     
>     Reviewed-by: Peter Oberparleiter <oberpar@xxxxxxxxxxxxxxxxxx>
>     Signed-off-by: Sebastian Ott <sebott@xxxxxxxxxxxxxxxxxx>
>     Signed-off-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx>
> 
> For some non-obvious reason this kills 31 bit with your config under z/VM.

The patch below fixes this for me...
The difference for 64 vs 32 bit was probably that even if cdev->drv was a NULL
pointer, dereferencing cdev->drv->path_event was also NULL by coincidence.
While on 32 bit it is not NULL and the kernel jumped to somehere...

With all three patches within this thread s390 with CONFIG_64BIT=n ipl's
again, and the 32 bit native statfs64 syscall works as well.

However I would strongly suggest to use CONFIG_64BIT=y with CONFIG_COMPAT=y
instead for (now) obvious reasons ;)

diff --git a/drivers/s390/cio/device_fsm.c b/drivers/s390/cio/device_fsm.c
index c7638c543250..b19ab38a5e9a 100644
--- a/drivers/s390/cio/device_fsm.c
+++ b/drivers/s390/cio/device_fsm.c
@@ -484,7 +484,7 @@ static void ccw_device_report_path_events(struct ccw_device *cdev)
 		if (mask & cdev->private->pgid_reset_mask & sch->vpm)
 			path_event[chp] |= PE_PATHGROUP_ESTABLISHED;
 	}
-	if (cdev->online && cdev->drv->path_event)
+	if (cdev->online && cdev->drv && cdev->drv->path_event)
 		cdev->drv->path_event(cdev, path_event);
 }
 

--
To unsubscribe from this list: send the line "unsubscribe linux-s390" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Kernel Development]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Info]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Linux Media]     [Device Mapper]

  Powered by Linux