Skip to content
  • John Snow's avatar
    pc/vl: Add units-per-default-bus property · 16026518
    John Snow authored
    
    
    This patch adds the 'units_per_default_bus' property which
    allows individual boards to declare their desired
    index => (bus,unit) mapping for their default HBA, so that
    boards such as Q35 can specify that its default if_ide HBA,
    AHCI, only accepts one unit per bus.
    
    This property only overrides the mapping for drives matching
    the block_default_type interface.
    
    This patch also adds this property to *all* past and present
    Q35 machine types. This retroactive addition is justified
    because the previous erroneous index=>(bus,unit) mappings
    caused by lack of such a property were not utilized due to
    lack of initialization code in the Q35 init routine.
    
    Further, semantically, the Q35 board type has always had the
    property that its default HBA, AHCI, only accepts one unit per
    bus. The new code added to add devices to drives relies upon
    the accuracy of this mapping. Thus, the property is applied
    retroactively to reduce complexity of allowing IDE HBAs with
    different units per bus.
    
    Examples:
    
    Prior to this patch, all IDE HBAs were assumed to use 2 units
    per bus (Master, Slave). When using Q35 and AHCI, however, we
    only allow one unit per bus.
    
    -hdb foo.qcow2 would become index=1, or bus=0,unit=1.
    -hdd foo.qcow2 would become index=3, or bus=1,unit=1.
    -drive file=foo.qcow2,index=5 becomes bus=2,unit=1.
    
    These are invalid for AHCI. They now become, under Q35 only:
    
    -hdb foo.qcow2 --> index=1, bus=1, unit=0.
    -hdd foo.qcow2 --> index=3, bus=3, unit=0.
    -drive file=foo.qcow2,index=5 --> bus=5,unit=0.
    
    The mapping is adjusted based on the fact that the default IF
    for the Q35 machine type is IF_IDE, and units-per-default-bus
    overrides the IDE mapping from its default of 2 units per bus
    to just 1 unit per bus.
    
    Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
    Reviewed-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Message-id: 1412187569-23452-4-git-send-email-jsnow@redhat.com
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    16026518