summaryrefslogtreecommitdiffstats
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
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.
-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