irq_remapping.h 959 B

123456789101112131415161718192021222324252627282930313233
  1. #ifndef _ASM_X86_IRQ_REMAPPING_H
  2. #define _ASM_X86_IRQ_REMAPPING_H
  3. #define IRTE_DEST(dest) ((x2apic_mode) ? dest : dest << 8)
  4. #ifdef CONFIG_INTR_REMAP
  5. static inline void prepare_irte(struct irte *irte, int vector,
  6. unsigned int dest)
  7. {
  8. memset(irte, 0, sizeof(*irte));
  9. irte->present = 1;
  10. irte->dst_mode = apic->irq_dest_mode;
  11. /*
  12. * Trigger mode in the IRTE will always be edge, and for IO-APIC, the
  13. * actual level or edge trigger will be setup in the IO-APIC
  14. * RTE. This will help simplify level triggered irq migration.
  15. * For more details, see the comments (in io_apic.c) explainig IO-APIC
  16. * irq migration in the presence of interrupt-remapping.
  17. */
  18. irte->trigger_mode = 0;
  19. irte->dlvry_mode = apic->irq_delivery_mode;
  20. irte->vector = vector;
  21. irte->dest_id = IRTE_DEST(dest);
  22. irte->redir_hint = 1;
  23. }
  24. #else
  25. static void prepare_irte(struct irte *irte, int vector, unsigned int dest)
  26. {
  27. }
  28. #endif
  29. #endif /* _ASM_X86_IRQ_REMAPPING_H */