• Philippe De Muyter's avatar
    floppy: request and release only the ports we actually use · 5a74db06
    Philippe De Muyter authored
    The floppy driver requests an I/O port it doesn't need, and sometimes this
    causes a conflict with a motherboard device reported by PNPBIOS.
    
    This patch makes the floppy driver request and release only the ports it
    actually uses.  It also factors out the request/release stuff and the
    io-ports list so they're all in one place now.
    
    The current floppy driver uses only these ports:
    
        0x3f2 (FD_DOR)
        0x3f4 (FD_STATUS)
        0x3f5 (FD_DATA)
        0x3f7 (FD_DCR/FD_DIR)
    
    but it requests 0x3f2-0x3f5 and 0x3f7, which includes the unused port
    0x3f3.
    
    Some BIOSes report 0x3f3 as a motherboard resource.  The PNP system driver
    reserves that, which causes a conflict when the floppy driver requests
    0x3f2-0x3f5 later.
    
    Philippe reported that this conflict broke the floppy driver between
    2.6.11 and 2.6.22.  His PNPBIOS reports these devices:
    
        $ cat 00:07/id 00:07/resources	# motherboard device
        PNP0c02
        state = active
        io 0x80-0x80
        io 0x10-0x1f
        io 0x22-0x3f
        io 0x44-0x5f
        io 0x90-0x9f
        io 0xa2-0xbf
        io 0x3f0-0x3f1
        io 0x3f3-0x3f3
    
        $ cat 00:03/id 00:03/resources	# floppy device
        PNP0700
        state = active
        io 0x3f4-0x3f5
        io 0x3f2-0x3f2
    
    Reference:
        http://lkml.org/lkml/2009/1/31/162Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: default avatarPhilippe De Muyter <phdm@macqel.be>
    Reported-by: default avatarPhilippe De Muyter <phdm@macqel.be>
    Tested-by: default avatarPhilippe De Muyter <phdm@macqel.be>
    Cc: Adam M Belay <abelay@mit.edu>
    Cc: Robert Hancock <hancockrwd@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5a74db06
floppy.c 117 KB