|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 0/2] VT-d: correct / extend workaround(s) leaving an IOMMU disabled [and 1 more messages]
On 11.10.2021 12:56, Ian Jackson wrote:
> Jan Beulich writes ("[PATCH 0/2] VT-d: correct / extend workaround(s) leaving
> an IOMMU disabled"):
>> Ian - I'm also Cc-ing you since this feels like being on the edge
>> between a new feature and a bug fix.
>
> Thanks.
>
> I think 2/ is a new quirk (or, new behaviour for an existing quirk).
> I think I am happy to treat that as a bugfix, assuming we are
> reasonably confident that most systems (including in particular all
> systems without the quirk) will take unchanged codepaths. Is that
> right ?
Yes. According to Linux there's exactly one BIOS flavor known to
exhibit the issue.
> I don't understand 1/. It looks bugfixish to me but I am really not
> qualified. I am inclined to defer to your judgement, but it would
> help me if you explicitly addressed the overall risks/benefits.
Right now our documentation claims similarity to a Linux workaround
without the similarity actually existing in the general case. A
common case (a single integrated graphics device) is handled, but the
perhaps yet more common case of a single add-in graphics devices is
not. Plus the criteria by which a device is determined to be a
graphics one was completely flawed. Hence people in need of the
workaround may find it non-functional. However, since our doc tells
people to report if they have a need to use the option engaging the
workaround, and since we didn't have any such reports in a number
of years, I guess both benefits and possible risks here are of
purely theoretical nature. Note that I've specifically said "possible"
because I can't really see any beyond me not having properly matched
Linux'es equivalent workaround - that workaround has been in place
unchanged for very many years.
> But when reading the patch I did notice one thing that struck me as
> undesriable:
>
>> --- a/xen/drivers/passthrough/vtd/iommu.c
>> +++ b/xen/drivers/passthrough/vtd/iommu.c
>> @@ -750,27 +750,43 @@ static void iommu_enable_translation(str
>> if ( force_iommu )
>> - panic("BIOS did not enable IGD for VT properly, crash Xen
>> for security purpose\n");
>> + panic(crash_fmt, msg);
> ...
>> + if ( force_iommu )
>> + panic(crash_fmt, msg);
>
> Does this really mean that every exit path from
> iommu_enable_translation that doesn't enable the iommu has to have a
> check for force_iommu ?
>
> That seems like a recipe for missing one. And I think a missed one
> would be an XSA. Could we not structure the code some way to avoid
> this foreseeable human error ?
I'm afraid I don't see a good way to do so, as imo it's desirable to
have separate log messages. IOW something like
if ( ... )
{
msg = "...";
goto dead;
}
doesn't look any better to me. Also leaving individual IOMMUs disabled
should really be the exception anyway.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |