When vCPU affinity of an IRTE which already has is_run == false, is updated and the update also sets is_run to false, there is nothing to do. The goal of this patch is to make a call to 'amd_iommu_update_ga()' to be relatively cheap if there is nothing to do. Signed-off-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> --- drivers/iommu/amd/iommu.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 95bd7c25ba6f366..10bcd436e984672 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -3774,6 +3774,15 @@ int amd_iommu_update_ga(int cpu, bool is_run, void *data) entry->hi.fields.destination = APICID_TO_IRTE_DEST_HI(cpu); } + + if (!is_run && !entry->lo.fields_vapic.is_run) { + /* + * No need to notify the IOMMU about an entry which + * already has is_run == False + */ + return 0; + } + entry->lo.fields_vapic.is_run = is_run; return modify_irte_ga(ir_data->iommu, ir_data->irq_2_irte.devid, -- 2.26.3