Re: boot with floppy enabled doesn't.....

From: John Baldwin <jhb_at_freebsd.org>
Date: Wed, 04 May 2016 06:54:34 -0700
On Wednesday, May 04, 2016 09:51:45 AM Joel Dahl wrote:
> On Tue, May 03, 2016 at 03:52:43PM -0700, John Baldwin wrote:
> > On Tuesday, May 03, 2016 10:20:21 PM Joel Dahl wrote:
> > > On Tue, May 03, 2016 at 12:58:15PM -0700, John Baldwin wrote:
> > > > On Tuesday, May 03, 2016 03:37:27 PM Michael Butler wrote:
> > > > > On 05/03/16 11:21, Larry Rosenman wrote:
> > > > > > On 2016-05-03 05:49, Joel Dahl wrote:
> > > > > >> On Sat, Apr 30, 2016 at 10:36:53PM -0500, Larry Rosenman wrote:
> > > > > >>> On a current -CURRENT if my Floppy disk controller and device are
> > > > > >>> ENABLED, we do NOT pass mount root, and the floppy disk
> > > > > >>> light is ON.
> > > > > >>
> > > > > >> Just a "me too". But this is with VMware Fusion. If I disable the
> > > > > >> floppy from
> > > > > >> BIOS, the virtual machine boots. If I leave it enabled, it hangs.
> > > > > > Thanks for posting that I'm not the only one, and it's not flakey hardware.
> > > > > > 
> > > > > 
> > > > > I have an, otherwise extremely reliable but ancient, Intel TR440BXA
> > > > > motherboard doing this :-(
> > > > > 
> > > > > What drove me mad for a while is that I have an identical machine, with
> > > > > exception of 10k RPM SCSI disks, which doesn't hang. I simply optioned
> > > > > out "device fdc" and it's behaved ever since,
> > > > 
> > > > Larry wasn't able to get into DDB when his box hung, are either of you able
> > > > to get into DDB when it hangs?
> > > 
> > > Um, ctrl-alt-backspace doesn't work for me, but ctrl-alt-esc does.
> > > 
> > > I uploaded a few screenshots here: https://www.vnode.se/files/freebsd/
> > 
> > Thanks.  It seems like the fdc worker thread isn't there and GEOM is stuck
> > waiting for that thread to do something (well waiting for the commands
> > that thread handles to be executed).
> > 
> > First step would be just add a 'panic' to fdc_start_worker() in fdc.c at
> > the end to make sure it is getting called.  (And when it drops you into ddb
> > you should be able to see the fdc0 kproc in 'ps' output).
> 
> I did this, but no change. It hangs at the same place, so I guess the added
> panic() is never called.

The logic in fdc_acpi.c is a bit odd to follow, it sometimes goes to 'out' in
the success case which is unusual.  As a result, if your fdc device doesn't
have an _FDE entry in the ACPI namespace we wouldn't start the worker thread.
Try this change:

Index: fdc_acpi.c
===================================================================
--- fdc_acpi.c	(revision 298950)
+++ fdc_acpi.c	(working copy)
_at__at_ -135,14 +135,13 _at__at_ fdc_acpi_attach(device_t dev)
 	obj = buf.Pointer;
 	error = fdc_acpi_probe_children(bus, dev, obj->Buffer.Pointer);
 
-	if (error == 0)
-		fdc_start_worker(dev);
-
 out:
 	if (buf.Pointer)
 		free(buf.Pointer, M_TEMP);
 	if (error != 0)
 		fdc_release_resources(sc);
+	else
+		fdc_start_worker(dev);
 
 	return (error);
 }

> 
> 


-- 
John Baldwin
Received on Wed May 04 2016 - 11:54:41 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:04 UTC