Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | |
| 10 | /* |
| 11 | ** I/O SAPIC init function |
| 12 | ** Caller knows where an I/O SAPIC is. LBA has an integrated I/O SAPIC. |
| 13 | ** Call setup as part of per instance initialization. |
| 14 | ** (ie *not* init_module() function unless only one is present.) |
| 15 | ** fixup_irq is to initialize PCI IRQ line support and |
| 16 | ** virtualize pcidev->irq value. To be called by pci_fixup_bus(). |
| 17 | */ |
| 18 | extern void *iosapic_register(unsigned long hpa); |
| 19 | extern int iosapic_fixup_irq(void *obj, struct pci_dev *pcidev); |
| 20 | |
| 21 | |
| 22 | #ifdef __IA64__ |
| 23 | /* |
| 24 | ** PA: PIB (Processor Interrupt Block) is handled by Runway bus adapter. |
| 25 | ** and is hardcoded to 0xfeeNNNN0 where NNNN is id_eid field. |
| 26 | ** |
| 27 | ** IA64: PIB is handled by "Local SAPIC" (integrated in the processor). |
| 28 | */ |
| 29 | struct local_sapic_info { |
| 30 | struct local_sapic_info *lsi_next; /* point to next CPU info */ |
| 31 | int *lsi_cpu_id; /* point to logical CPU id */ |
| 32 | unsigned long *lsi_id_eid; /* point to IA-64 CPU id */ |
| 33 | int *lsi_status; /* point to CPU status */ |
| 34 | void *lsi_private; /* point to special info */ |
| 35 | }; |
| 36 | |
| 37 | /* |
| 38 | ** "root" data structure which ties everything together. |
| 39 | ** Should always be able to start with sapic_root and locate |
| 40 | ** the desired information. |
| 41 | */ |
| 42 | struct sapic_info { |
| 43 | struct sapic_info *si_next; /* info is per cell */ |
| 44 | int si_cellid; /* cell id */ |
| 45 | unsigned int si_status; /* status */ |
| 46 | char *si_pib_base; /* intr blk base address */ |
| 47 | local_sapic_info_t *si_local_info; |
| 48 | io_sapic_info_t *si_io_info; |
| 49 | extint_info_t *si_extint_info;/* External Intr info */ |
| 50 | }; |
| 51 | |
| 52 | #endif /* IA64 */ |
| 53 | |