summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2006-07-12 00:49:46 +0000
committerjkim <jkim@FreeBSD.org>2006-07-12 00:49:46 +0000
commit21e00b8d7070c6cac3980116707f1e5007f05fba (patch)
treeec0c5b8ba3a160eda6d965f3e91fa5dda9c653b8 /sys/dev
parent45301dddff45e060b07f601d893065d6c4e33bbb (diff)
downloadFreeBSD-src-21e00b8d7070c6cac3980116707f1e5007f05fba.zip
FreeBSD-src-21e00b8d7070c6cac3980116707f1e5007f05fba.tar.gz
Assume floppy disk is not inserted when we have exhausted retries. This
significantly reduces booting time when there is broken floppy disk drive, controller, cable, BIOS, etc. When the floppy controller interface is correctly implemented, disk change signal (DSKCHG) is reflected in the Digital Input Register (DIR) at 0x3f7. However, there are many cases that the signal is unusable. Moreover, some BIOS does not reserve the port at all. In those cases, the register may not function.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/fdc/fdc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c
index 2bfd4c3..19edf51 100644
--- a/sys/dev/fdc/fdc.c
+++ b/sys/dev/fdc/fdc.c
@@ -758,6 +758,9 @@ fdc_worker(struct fdc_data *fdc)
(fdc->retry >= retries || (fd->options & FDOPT_NORETRY))) {
if ((debugflags & 4))
printf("Too many retries (EIO)\n");
+ mtx_lock(&fdc->fdc_mtx);
+ fd->flags |= FD_EMPTY;
+ mtx_unlock(&fdc->fdc_mtx);
return (fdc_biodone(fdc, EIO));
}
OpenPOWER on IntegriCloud