5.3-BETA6 boot-time hang
M. Warner Losh
imp at bsdimp.com
Tue Oct 5 00:37:32 PDT 2004
In message: <1096952687.972.7.camel at localhost>
"Bruce A. Mah" <bmah at freebsd.org> writes:
: On Mon, 2004-10-04 at 21:12, M. Warner Losh wrote:
: > In message: <20041005040604.GB875 at tomcat.kitchenlab.org>
: > "Bruce A. Mah" <bmah at freebsd.org> writes:
: > : No joy...booting with the 5.3-BETA7 bootonly CD-ROM produces the same
: > : symptoms.
:
: [snip]
:
: > What does your fdc line say?
:
: (Copied by hand onto another machine...transcription errors possible...)
:
: fdc0: <floppy drive controller> port 0x3f7,0x3f4-0x3f5,0x3f0-0x3f3 irq 6
: drq 2 acpi0
: fdc0: ic_type 90 part_id 80
: fdc0: [MPSAFE]
: fdc0: [FAST]
: fd0: <1440-KB 3.5" drive> on fdc0 drive 0
:
: Oh, waitasec. I remember someone on this list having some other bizarro
: hardware with the port number ranges similarly fragmented. Could this
: be the cause?
Yes. Try the following patch. It should fix your problem.
Index: fdc_isa.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/fdc/fdc_isa.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- fdc_isa.c 20 Sep 2004 06:12:19 -0000 1.15
+++ fdc_isa.c 5 Oct 2004 07:18:11 -0000 1.16
@@ -99,8 +100,7 @@
nports);
return (ENXIO);
}
- if ((rman_get_start(fdc->res_ioport) & 0x7) == 0 &&
- rman_get_size(fdc->res_ioport) == 2) {
+ if ((rman_get_end(fdc->res_ioport) & 0x7) == 1) {
/* Case 8 */
bus_release_resource(dev, SYS_RES_IOPORT, fdc->rid_ioport,
fdc->res_ioport);
@@ -116,9 +116,9 @@
fdc->port_off = -(fdc->porth & 0x7);
/*
- * Deal with case 6, 7, and 8: FDSTS and FDSATA are in rid 1.
+ * Deal with case 6-9: FDSTS and FDDATA.
*/
- if (rman_get_size(fdc->res_ioport) == 2) {
+ if ((rman_get_end(fdc->res_ioport) & 0x7) == 3) {
fdc->rid_sts = fdc->rid_ioport + 1;
fdc->res_sts = bus_alloc_resource_any(dev, SYS_RES_IOPORT,
&fdc->rid_sts, RF_ACTIVE);
Warner
More information about the freebsd-current
mailing list