qemu/hw/i386
John Snow 1602651833 pc/vl: Add units-per-default-bus property
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: John Snow <jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Message-id: 1412187569-23452-4-git-send-email-jsnow@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2014-10-03 10:30:33 +01:00
..
kvm kvmclock: Ensure time in migration never goes backward 2014-09-16 11:11:38 +02:00
xen qemu: support xen hvm direct kernel boot 2014-08-01 15:58:12 +00:00
Makefile.objs intel-iommu: introduce Intel IOMMU (VT-d) emulation 2014-08-28 23:10:22 +02:00
acpi-build.c acpi-build: Set FORCE_APIC_CLUSTER_MODEL bit for FADT flags 2014-09-03 16:41:05 +03:00
acpi-build.h i386: ACPI table generation code from seabios 2013-10-14 17:48:57 +03:00
acpi-defs.h intel-iommu: add DMAR table to ACPI tables 2014-08-28 23:10:22 +02:00
acpi-dsdt-cpu-hotplug.dsl dsdt: tweak ACPI ID for hotplug resource device 2014-04-08 15:22:59 +03:00
acpi-dsdt-dbug.dsl i386: add ACPI table files from seabios 2013-10-14 17:48:51 +03:00
acpi-dsdt-hpet.dsl ACPI: Remove commented-out code from HPET._CRS 2014-02-10 11:09:33 +02:00
acpi-dsdt-isa.dsl ACPI: Fix AppleSMC _STA size 2014-01-26 13:06:48 +02:00
acpi-dsdt-pci-crs.dsl pc: Q35 DSDT: exclude CPU hotplug IO range from PCI bus resources 2014-01-26 13:11:44 +02:00
acpi-dsdt.dsl hw:i386: typo fix: MEMORY_HOPTLUG_DEVICE -> MEMORY_HOTPLUG_DEVICE 2014-08-14 13:20:49 +02:00
acpi-dsdt.hex.generated hw:i386: typo fix: MEMORY_HOPTLUG_DEVICE -> MEMORY_HOTPLUG_DEVICE 2014-08-14 13:20:49 +02:00
bios-linker-loader.c i386: Add missing include file for QEMU_PACKED 2014-02-01 13:43:52 +04:00
bios-linker-loader.h i386: add bios linker/loader 2013-10-14 17:48:52 +03:00
intel_iommu.c intel-iommu: add IOTLB using hash table 2014-08-28 23:10:22 +02:00
intel_iommu_internal.h intel-iommu: add IOTLB using hash table 2014-08-28 23:10:22 +02:00
kvmvapic.c kvmvapic: fix migration when VM paused and when not running Windows 2014-09-26 13:32:04 +02:00
multiboot.c multiboot: Calculate upper_mem in the ROM 2013-06-28 14:01:52 -05:00
multiboot.h refer to FWCfgState explicitly 2013-06-02 18:14:02 +03:00
pc.c pc/vl: Add units-per-default-bus property 2014-10-03 10:30:33 +01:00
pc_piix.c pc: reserve more memory for ACPI for new machine types 2014-08-25 00:16:06 +02:00
pc_q35.c pc/vl: Add units-per-default-bus property 2014-10-03 10:30:33 +01:00
pc_sysfw.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
q35-acpi-dsdt.dsl hw:i386: typo fix: MEMORY_HOPTLUG_DEVICE -> MEMORY_HOTPLUG_DEVICE 2014-08-14 13:20:49 +02:00
q35-acpi-dsdt.hex.generated acpi: update generated files 2014-06-19 16:41:52 +03:00
smbios.c smbios: use g_free directly on NULL pointers 2014-06-10 19:39:34 +04:00
ssdt-mem.dsl hw:i386: typo fix: MEMORY_HOPTLUG_DEVICE -> MEMORY_HOTPLUG_DEVICE 2014-08-14 13:20:49 +02:00
ssdt-mem.hex.generated acpi: update generated files 2014-06-19 16:41:52 +03:00
ssdt-misc.dsl hw:i386: typo fix: MEMORY_HOPTLUG_DEVICE -> MEMORY_HOTPLUG_DEVICE 2014-08-14 13:20:49 +02:00
ssdt-misc.hex.generated acpi: update generated files 2014-06-19 16:41:52 +03:00
ssdt-pcihp.dsl acpi-build: append description for non-hotplug 2014-03-09 21:09:30 +02:00
ssdt-pcihp.hex.generated acpi: update generated files 2014-06-19 16:41:52 +03:00
ssdt-proc.dsl ssdt: fix PBLK length 2013-10-14 17:48:57 +03:00
ssdt-proc.hex.generated acpi: update generated files 2014-06-19 16:41:52 +03:00
ssdt-tpm.dsl Add ACPI tables for TPM 2014-08-25 00:16:06 +02:00
ssdt-tpm.hex.generated ssdt-tpm: add generated hex file to git 2014-08-25 00:16:06 +02:00