.deactivate = irq_remapping_deactivate,
 };
 
+static void __amd_iommu_update_ga(struct irte_ga *entry, int cpu)
+{
+       if (cpu >= 0) {
+               entry->lo.fields_vapic.destination =
+                                       APICID_TO_IRTE_DEST_LO(cpu);
+               entry->hi.fields.destination =
+                                       APICID_TO_IRTE_DEST_HI(cpu);
+               entry->lo.fields_vapic.is_run = true;
+       } else {
+               entry->lo.fields_vapic.is_run = false;
+       }
+}
+
+/*
+ * Update the pCPU information for an IRTE that is configured to post IRQs to
+ * a vCPU, without issuing an IOMMU invalidation for the IRTE.
+ *
+ * If the vCPU is associated with a pCPU (@cpu >= 0), configure the Destination
+ * with the pCPU's APIC ID and set IsRun, else clear IsRun.  I.e. treat vCPUs
+ * that are associated with a pCPU as running.  This API is intended to be used
+ * when a vCPU is scheduled in/out (or stops running for any reason), to do a
+ * fast update of IsRun and (conditionally) Destination.
+ *
+ * Per the IOMMU spec, the Destination, IsRun, and GATag fields are not cached
+ * and thus don't require an invalidation to ensure the IOMMU consumes fresh
+ * information.
+ */
+int amd_iommu_update_ga(int cpu, void *data)
+{
+       struct amd_ir_data *ir_data = (struct amd_ir_data *)data;
+       struct irte_ga *entry = (struct irte_ga *) ir_data->entry;
+
+       if (!AMD_IOMMU_GUEST_IR_VAPIC(amd_iommu_guest_ir) ||
+           !entry || !entry->lo.fields_vapic.guest_mode)
+               return 0;
+
+       if (!ir_data->iommu)
+               return -ENODEV;
+
+       __amd_iommu_update_ga(entry, cpu);
+
+       return __modify_irte_ga(ir_data->iommu, ir_data->irq_2_irte.devid,
+                               ir_data->irq_2_irte.index, entry);
+}
+EXPORT_SYMBOL(amd_iommu_update_ga);
+
 int amd_iommu_activate_guest_mode(void *data)
 {
        struct amd_ir_data *ir_data = (struct amd_ir_data *)data;
 
        return 0;
 }
-
-/*
- * Update the pCPU information for an IRTE that is configured to post IRQs to
- * a vCPU, without issuing an IOMMU invalidation for the IRTE.
- *
- * If the vCPU is associated with a pCPU (@cpu >= 0), configure the Destination
- * with the pCPU's APIC ID and set IsRun, else clear IsRun.  I.e. treat vCPUs
- * that are associated with a pCPU as running.  This API is intended to be used
- * when a vCPU is scheduled in/out (or stops running for any reason), to do a
- * fast update of IsRun and (conditionally) Destination.
- *
- * Per the IOMMU spec, the Destination, IsRun, and GATag fields are not cached
- * and thus don't require an invalidation to ensure the IOMMU consumes fresh
- * information.
- */
-int amd_iommu_update_ga(int cpu, void *data)
-{
-       struct amd_ir_data *ir_data = (struct amd_ir_data *)data;
-       struct irte_ga *entry = (struct irte_ga *) ir_data->entry;
-
-       if (!AMD_IOMMU_GUEST_IR_VAPIC(amd_iommu_guest_ir) ||
-           !entry || !entry->lo.fields_vapic.guest_mode)
-               return 0;
-
-       if (!ir_data->iommu)
-               return -ENODEV;
-
-       if (cpu >= 0) {
-               entry->lo.fields_vapic.destination =
-                                       APICID_TO_IRTE_DEST_LO(cpu);
-               entry->hi.fields.destination =
-                                       APICID_TO_IRTE_DEST_HI(cpu);
-               entry->lo.fields_vapic.is_run = true;
-       } else {
-               entry->lo.fields_vapic.is_run = false;
-       }
-
-       return __modify_irte_ga(ir_data->iommu, ir_data->irq_2_irte.devid,
-                               ir_data->irq_2_irte.index, entry);
-}
-EXPORT_SYMBOL(amd_iommu_update_ga);
 #endif