[PATCH] hw/i386/x86-iommu: Add missing stubs

Philippe Mathieu-Daudé posted 1 patch 4 years, 4 months ago
Test asan failed
Test checkpatch failed
Test FreeBSD failed
Test docker-mingw@fedora failed
Test docker-clang@ubuntu failed
Test docker-quick@centos7 failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20191220154225.25879-1-philmd@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, "Michael S. Tsirkin" <mst@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>, Richard Henderson <rth@twiddle.net>
hw/i386/x86-iommu-stub.c | 9 +++++++++
1 file changed, 9 insertions(+)
[PATCH] hw/i386/x86-iommu: Add missing stubs
Posted by Philippe Mathieu-Daudé 4 years, 4 months ago
In commit 6c730e4af9 we introduced a stub to build the MicroVM
machine without Intel IOMMU. This stub is incomplete for the
other PC machines. Add the missing stubs.

Fixes: 6c730e4af9
Reported-by: Travis-CI
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/i386/x86-iommu-stub.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/hw/i386/x86-iommu-stub.c b/hw/i386/x86-iommu-stub.c
index 03576cdccb..c5ba077f9d 100644
--- a/hw/i386/x86-iommu-stub.c
+++ b/hw/i386/x86-iommu-stub.c
@@ -32,3 +32,12 @@ X86IOMMUState *x86_iommu_get_default(void)
     return NULL;
 }
 
+bool x86_iommu_ir_supported(X86IOMMUState *s)
+{
+    return false;
+}
+
+IommuType x86_iommu_get_type(void)
+{
+    abort();
+}
-- 
2.21.0


Re: [PATCH] hw/i386/x86-iommu: Add missing stubs
Posted by Paolo Bonzini 4 years, 4 months ago
On 20/12/19 16:42, Philippe Mathieu-Daudé wrote:
> In commit 6c730e4af9 we introduced a stub to build the MicroVM
> machine without Intel IOMMU. This stub is incomplete for the
> other PC machines. Add the missing stubs.

In other words, without this patch you cannot build without Q35 (which
brings in the IOMMU, at least unless building
--without-default-devices).  Is this correct?

Paolo

> 
> Fixes: 6c730e4af9
> Reported-by: Travis-CI
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  hw/i386/x86-iommu-stub.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/hw/i386/x86-iommu-stub.c b/hw/i386/x86-iommu-stub.c
> index 03576cdccb..c5ba077f9d 100644
> --- a/hw/i386/x86-iommu-stub.c
> +++ b/hw/i386/x86-iommu-stub.c
> @@ -32,3 +32,12 @@ X86IOMMUState *x86_iommu_get_default(void)
>      return NULL;
>  }
>  
> +bool x86_iommu_ir_supported(X86IOMMUState *s)
> +{
> +    return false;
> +}
> +
> +IommuType x86_iommu_get_type(void)
> +{
> +    abort();
> +}
> 


Re: [PATCH] hw/i386/x86-iommu: Add missing stubs
Posted by Philippe Mathieu-Daudé 4 years, 3 months ago
On 12/22/19 11:31 AM, Paolo Bonzini wrote:
> On 20/12/19 16:42, Philippe Mathieu-Daudé wrote:
>> In commit 6c730e4af9 we introduced a stub to build the MicroVM
>> machine without Intel IOMMU. This stub is incomplete for the
>> other PC machines. Add the missing stubs.
> 
> In other words, without this patch you cannot build without Q35 (which
> brings in the IOMMU, at least unless building
> --without-default-devices).  Is this correct?

No, this is the same, selecting either CONFIG_I440FX or CONFIG_Q35:

   LINK    x86_64-softmmu/qemu-system-x86_64
/usr/bin/ld: hw/i386/pc.o: in function `pc_machine_done':
hw/i386/pc.c:869: undefined reference to `x86_iommu_ir_supported'
/usr/bin/ld: hw/i386/acpi-build.o: in function `acpi_build':
hw/i386/acpi-build.c:2844: undefined reference to `x86_iommu_get_type'
/usr/bin/ld: hw/i386/acpi-build.o: in function `build_dmar_q35':
hw/i386/acpi-build.c:2478: undefined reference to `x86_iommu_ir_supported'
/usr/bin/ld: hw/i386/acpi-build.o: in function `build_amd_iommu':
hw/i386/acpi-build.c:2665: undefined reference to `x86_iommu_ir_supported'
/usr/bin/ld: hw/i386/acpi-build.c:2700: undefined reference to 
`x86_iommu_ir_supported'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:206: qemu-system-x86_64] Error 1
make: *** [Makefile:483: x86_64-softmmu/all] Error 2

> Paolo
> 
>>
>> Fixes: 6c730e4af9
>> Reported-by: Travis-CI
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>>   hw/i386/x86-iommu-stub.c | 9 +++++++++
>>   1 file changed, 9 insertions(+)
>>
>> diff --git a/hw/i386/x86-iommu-stub.c b/hw/i386/x86-iommu-stub.c
>> index 03576cdccb..c5ba077f9d 100644
>> --- a/hw/i386/x86-iommu-stub.c
>> +++ b/hw/i386/x86-iommu-stub.c
>> @@ -32,3 +32,12 @@ X86IOMMUState *x86_iommu_get_default(void)
>>       return NULL;
>>   }
>>   
>> +bool x86_iommu_ir_supported(X86IOMMUState *s)
>> +{
>> +    return false;
>> +}
>> +
>> +IommuType x86_iommu_get_type(void)
>> +{
>> +    abort();
>> +}
>>
> 


Re: [PATCH] hw/i386/x86-iommu: Add missing stubs
Posted by Wainer dos Santos Moschetta 4 years, 3 months ago
On 12/20/19 1:42 PM, Philippe Mathieu-Daudé wrote:
> In commit 6c730e4af9 we introduced a stub to build the MicroVM
> machine without Intel IOMMU. This stub is incomplete for the
> other PC machines. Add the missing stubs.
>
> Fixes: 6c730e4af9
> Reported-by: Travis-CI
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>   hw/i386/x86-iommu-stub.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
>
> diff --git a/hw/i386/x86-iommu-stub.c b/hw/i386/x86-iommu-stub.c
> index 03576cdccb..c5ba077f9d 100644
> --- a/hw/i386/x86-iommu-stub.c
> +++ b/hw/i386/x86-iommu-stub.c
> @@ -32,3 +32,12 @@ X86IOMMUState *x86_iommu_get_default(void)
>       return NULL;
>   }
>   
> +bool x86_iommu_ir_supported(X86IOMMUState *s)
> +{
> +    return false;
> +}
> +
> +IommuType x86_iommu_get_type(void)
> +{
> +    abort();
> +}

I cannot say the fix is correct, but I can attest - with it - I no 
longer see the build fail when --without-default-devices --disable-user.

Tested-by: Wainer dos Santos Moschetta <wainersm@redhat.com>