iosapic.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. ** This file is private to iosapic driver.
  3. ** If stuff needs to be used by another driver, move it to a common file.
  4. **
  5. ** WARNING: fields most data structures here are ordered to make sure
  6. ** they pack nicely for 64-bit compilation. (ie sizeof(long) == 8)
  7. */
  8. /*
  9. ** I/O SAPIC init function
  10. ** Caller knows where an I/O SAPIC is. LBA has an integrated I/O SAPIC.
  11. ** Call setup as part of per instance initialization.
  12. ** (ie *not* init_module() function unless only one is present.)
  13. ** fixup_irq is to initialize PCI IRQ line support and
  14. ** virtualize pcidev->irq value. To be called by pci_fixup_bus().
  15. */
  16. extern void *iosapic_register(unsigned long hpa);
  17. extern int iosapic_fixup_irq(void *obj, struct pci_dev *pcidev);
  18. #ifdef __IA64__
  19. /*
  20. ** PA: PIB (Processor Interrupt Block) is handled by Runway bus adapter.
  21. ** and is hardcoded to 0xfeeNNNN0 where NNNN is id_eid field.
  22. **
  23. ** IA64: PIB is handled by "Local SAPIC" (integrated in the processor).
  24. */
  25. struct local_sapic_info {
  26. struct local_sapic_info *lsi_next; /* point to next CPU info */
  27. int *lsi_cpu_id; /* point to logical CPU id */
  28. unsigned long *lsi_id_eid; /* point to IA-64 CPU id */
  29. int *lsi_status; /* point to CPU status */
  30. void *lsi_private; /* point to special info */
  31. };
  32. /*
  33. ** "root" data structure which ties everything together.
  34. ** Should always be able to start with sapic_root and locate
  35. ** the desired information.
  36. */
  37. struct sapic_info {
  38. struct sapic_info *si_next; /* info is per cell */
  39. int si_cellid; /* cell id */
  40. unsigned int si_status; /* status */
  41. char *si_pib_base; /* intr blk base address */
  42. local_sapic_info_t *si_local_info;
  43. io_sapic_info_t *si_io_info;
  44. extint_info_t *si_extint_info;/* External Intr info */
  45. };
  46. #endif /* IA64 */