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)
@@ -135,14 +135,13 @@ 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
_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to