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

Nate Lawson nate at root.org
Sun Sep 19 23:33:00 PDT 2004


Warner Losh wrote:
> imp         2004-09-20 06:12:19 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/dev/fdc          fdc_isa.c 
>   Log:
>   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

Thanks for you and phk working on this.

-Nate



More information about the cvs-all mailing list