Re: [PATCH v7 03/11] iommu/vt-d: Add custom allocator for IOASID

From: Lu Baolu
Date: Mon Oct 28 2019 - 22:25:27 EST


Hi,

On 10/29/19 6:49 AM, Jacob Pan wrote:
I'm not sure whether tying above logic to SVA is the right
approach. If vcmd interface doesn't work, the whole SM mode
doesn't make sense which is based on PASID-granular protection
(SVA is only one usage atop). If the only remaining usage of SM
is to map gIOVA using reserved PASID#0, then why not disabling SM
and just fallback to legacy mode?

Based on that I prefer to disabling the SM mode completely (better
through an interface), and move the logic out of CONFIG_INTEL_
IOMMU_SVM
Unfortunately, it is dangerous to disable SM after boot. SM uses
different root/device contexts and pasid table formats. Disabling SM
after boot requires changing above from SM format into legacy
format.
You are correct.

Since ioasid registration failure is a rare case. How about moving
this part of code up to the early stage of intel_iommu_init() and
returning error if hardware present vcmd capability but software
fails to register a custom ioasid allocator?
It makes sense to me.

sounds good to me too, the earlier the less to clean up.

Actually, we even could return error directly and abort the iommu
initialization. The registration of custom ioasid allocator fails only
when memory runs out or software is buggy. In either cases, we should
abort iommu initialization.

Best regards,
baolu