hw/sparc64: set iommu_platform=on for virtio devices attached to the sun4u machine
The sun4u machine has an IOMMU and therefore it is possible to program it such that the virtio-device IOVA does not map directly to the CPU physical address. This is not a problem with Linux which always maps the IOVA directly to the CPU physical address, however it is required for the NetBSD virtio driver where this is not the case. Set the sun4u machine defaults for all virtio devices so that disable-legacy=on and iommu_platform=on to ensure a default configuration will allow virtio devices to function correctly on both Linux and NetBSD. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Message-Id: <20240418205730.31396-1-mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
029171b5d6
commit
7c420a4d7c
@ -793,6 +793,12 @@ static void sun4v_init(MachineState *machine)
|
||||
sun4uv_init(get_system_memory(), machine, &hwdefs[1]);
|
||||
}
|
||||
|
||||
static GlobalProperty hw_compat_sparc64[] = {
|
||||
{ "virtio-pci", "disable-legacy", "on", .optional = true },
|
||||
{ "virtio-device", "iommu_platform", "on" },
|
||||
};
|
||||
static const size_t hw_compat_sparc64_len = G_N_ELEMENTS(hw_compat_sparc64);
|
||||
|
||||
static void sun4u_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
@ -810,6 +816,7 @@ static void sun4u_class_init(ObjectClass *oc, void *data)
|
||||
mc->default_nic = "sunhme";
|
||||
mc->no_parallel = !module_object_class_by_name(TYPE_ISA_PARALLEL);
|
||||
fwc->get_dev_path = sun4u_fw_dev_path;
|
||||
compat_props_add(mc->compat_props, hw_compat_sparc64, hw_compat_sparc64_len);
|
||||
}
|
||||
|
||||
static const TypeInfo sun4u_type = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user