[pve-devel] [PATCH qemu-server v2 1/4] fix #6608: expose viommu driver aw-bits option

Daniel Kral d.kral at proxmox.com
Fri Sep 5 13:45:41 CEST 2025


On Fri Sep 5, 2025 at 12:07 PM CEST, Fiona Ebner wrote:
> Am 02.09.25 um 1:23 PM schrieb Daniel Kral:
>> Since QEMU 9.2 [0], the default I/O address space bit width was raised
>> from 39 bits to 48 bits for the Intel vIOMMU driver, which makes the
>> aw-bits check introduced in [1] to trip for host CPUs with less than 48
>
> s/to trip/fail/
>
>> bits physical address width from QEMU 9.2 onwards:
>> 
>> vfio 0000:XX:YY.Z: Failed to set vIOMMU: aw-bits 48 > host aw-bits 39
>> 
>> For VFIO devices where a vIOMMU is in-use, QEMU fetches the IOVA ranges
>> with the iommufd ioctl IOMMU_IOAS_IOVA_RANGES or the vfio_iommu_type1's
>> VFIO_IOMMU_TYPE1_INFO_CAP_IOVA_RANGE info, so 'phys-bits' doesn't change
>> the behavior of the check.
>> 
>> Therefore, expose the 'aw-bits' option of the intel-iommu and
>> virtio-iommu QEMU drivers to allow users to set the value.
>> 
>> [0] https://lore.kernel.org/qemu-devel/20241212083757.605022-17-zhenzhong.duan@intel.com/
>> [1] https://lore.kernel.org/qemu-devel/20240605083043.317831-18-zhenzhong.duan@intel.com/
>> 
>
> Nit: I'd prefer references to qemu commits rather than mails

ACK, but not sure in what format we reference external repos, to the
qemu-project gitlab or just the repo + commit hash + summary?

So

[0] https://gitlab.com/qemu-project/qemu/-/commit/ddd84fd0c1
[1] https://gitlab.com/qemu-project/qemu/-/commit/77f6efc0ab

or

[0] qemu ddd84fd0c1 ("intel_iommu: Set default aw_bits to 48 starting from QEMU 9.2")
[1] qemu 77f6efc0ab ("intel_iommu: Check compatibility with host IOMMU capabilities")

>
>> @@ -112,9 +122,14 @@ sub default_machine_for_arch {
>>  
>>  sub assert_valid_machine_property {
>>      my ($machine_conf) = @_;
>> -    my $q35 = $machine_conf->{type} && ($machine_conf->{type} =~ m/q35/) ? 1 : 0;
>> -    if ($machine_conf->{viommu} && $machine_conf->{viommu} eq "intel" && !$q35) {
>> -        die "to use Intel vIOMMU please set the machine type to q35\n";
>> +    if ($machine_conf->{viommu} && $machine_conf->{viommu} eq "intel") {
>> +        my $q35 = $machine_conf->{type} && ($machine_conf->{type} =~ m/q35/) ? 1 : 0;
>> +        die "to use Intel vIOMMU please set the machine type to q35\n" if !$q35;
>> +
>> +        die "Intel vIOMMU supports only 39 or 48 bits as address width\n"
>> +            if $machine_conf->{'aw-bits'}
>> +            && $machine_conf->{'aw-bits'} != 39
>> +            && $machine_conf->{'aw-bits'} != 48;
>>      }
>
> There should be an error (or at least warning) when aw-bits is set
> without setting a viommu.

ACK will add that




More information about the pve-devel mailing list