cvs commit: src/sys/dev/fdc fdc_isa.c

Warner Losh imp at
Sun Sep 19 23:12:19 PDT 2004

imp         2004-09-20 06:12:19 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/fdc          fdc_isa.c 
  das@ has a ACPI bios that lists 0x3f0-0x3f1, 0x3f2-0x3f3, 0x3f4-0x3f5
  and 0x3f7.  fdc_isa_alloc_resource() didn't work right in this case
  (it accessed FDOUT correctly due to an overflow of the first resource.
  It accesed FDSTS and FDDATA incorrectly via the second resource (which
  wound up accessing FDOUT and the tape register at 0x3f3) and badly for
  the CTL register (at location 0x3f4).  This is a minimal fix that just
  'eats' the first one if it covers two locations and has an offset of
  0.  This confusion lead the floppy driver to think there'd been a disk
  change, which uncovered a deadlock in the floppy/geom code which lead
  to a panic.  These changes fix that by fixing the underlying resource
  problem, but doesn't address the potential deadlock issue that might
  still be there.
  This is a minimal fix so it can more safely be merged into 5 w/o risk
  for known working configurations (hence the use of the ugly goto,
  which reduces case 8 to case 6 w/o affecting cases 1-7).  A more
  invasive fix that will handle more ACPI resource list diversity is in
  the pipeline that should kill these issues once and for all, while
  staying within the resources that we allocate.
  Tested/Reported by: das
  Reviewed by: njl
  MFC before: re->next_release_name(5.3-BETA5);
  Revision  Changes    Path
  1.15      +14 -4     src/sys/dev/fdc/fdc_isa.c

More information about the cvs-src mailing list