2022-04-06 04:01:58

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH] ALSA: emu10k1: Stop using iommu_present()

On Tue, 05 Apr 2022 14:13:33 +0200,
Robin Murphy wrote:
>
> iommu_get_domain_for_dev() is already perfectly happy to return NULL
> if the given device has no IOMMU. Drop the unnecessary check.
>
> Signed-off-by: Robin Murphy <[email protected]>

This will change the code behavior. The current code does nothing if
no IOMMU is found, but after your removal of the check, the code
reaches to emu->iommu_workaround = true incorrectly.


thanks,

Takashi

> ---
> sound/pci/emu10k1/emu10k1_main.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c
> index 86cc1ca025e4..5ffab343b89c 100644
> --- a/sound/pci/emu10k1/emu10k1_main.c
> +++ b/sound/pci/emu10k1/emu10k1_main.c
> @@ -1751,9 +1751,6 @@ static void snd_emu10k1_detect_iommu(struct snd_emu10k1 *emu)
>
> emu->iommu_workaround = false;
>
> - if (!iommu_present(emu->card->dev->bus))
> - return;
> -
> domain = iommu_get_domain_for_dev(emu->card->dev);
> if (domain && domain->type == IOMMU_DOMAIN_IDENTITY)
> return;
> --
> 2.28.0.dirty
>


2022-04-06 07:46:26

by Robin Murphy

[permalink] [raw]
Subject: Re: [PATCH] ALSA: emu10k1: Stop using iommu_present()

On 2022-04-05 13:29, Takashi Iwai wrote:
> On Tue, 05 Apr 2022 14:13:33 +0200,
> Robin Murphy wrote:
>>
>> iommu_get_domain_for_dev() is already perfectly happy to return NULL
>> if the given device has no IOMMU. Drop the unnecessary check.
>>
>> Signed-off-by: Robin Murphy <[email protected]>
>
> This will change the code behavior. The current code does nothing if
> no IOMMU is found, but after your removal of the check, the code
> reaches to emu->iommu_workaround = true incorrectly.

Ah, right you are - I should have looked more closely at the second
check, where of course "domain &&" wants tweaking to "!domain ||" as
well. I'll send a v2 in a bit...

Thanks,
Robin.

>
>
> thanks,
>
> Takashi
>
>> ---
>> sound/pci/emu10k1/emu10k1_main.c | 3 ---
>> 1 file changed, 3 deletions(-)
>>
>> diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c
>> index 86cc1ca025e4..5ffab343b89c 100644
>> --- a/sound/pci/emu10k1/emu10k1_main.c
>> +++ b/sound/pci/emu10k1/emu10k1_main.c
>> @@ -1751,9 +1751,6 @@ static void snd_emu10k1_detect_iommu(struct snd_emu10k1 *emu)
>>
>> emu->iommu_workaround = false;
>>
>> - if (!iommu_present(emu->card->dev->bus))
>> - return;
>> -
>> domain = iommu_get_domain_for_dev(emu->card->dev);
>> if (domain && domain->type == IOMMU_DOMAIN_IDENTITY)
>> return;
>> --
>> 2.28.0.dirty
>>