• L
    hw/i386/pc: reflect any FDC @ ioport 0x3f0 in the CMOS · b86f4613
    Laszlo Ersek 提交于
    With the pc-q35-2.4 machine type, if the user creates an ISA FDC manually:
    
      -device isa-fdc,driveA=drive-fdc0-0-0 \
      -drive file=...,if=none,id=drive-fdc0-0-0,format=raw
    
    then the board-default FDC will be skipped, and only the explicitly
    requested FDC will exist. qtree-wise, this is correct; however such an FDC
    is currently not registered in the CMOS, because that code is only reached
    for the board-default FDC.
    
    The pc_cmos_init_late() one-shot reset handler -- one-shot because the
    CMOS is not reprogrammed during warm reset -- should search for any ISA
    FDC devices, created implicitly (by board code) or explicitly, and set the
    CMOS accordingly to the ISA FDC(s) with iobase=0x3f0:
    
    - if there is no such FDC, report both drives absent,
    - if there is exactly one such FDC, report its drives in the CMOS,
    - if there are more than one such FDCs, then pick one (it is not specified
      which one), and print a warning about the ambiguity.
    
    Cc: Jan Tomko <jtomko@redhat.com>
    Cc: John Snow <jsnow@redhat.com>
    Cc: Markus Armbruster <armbru@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Reported-by: NJan Tomko <jtomko@redhat.com>
    Suggested-by: NMarkus Armbruster <armbru@redhat.com>
    Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
    Reviewed-by: NJohn Snow <jsnow@redhat.com>
    Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
    b86f4613
pc.c 58.5 KB