2 ** This file is private to iosapic driver.
3 ** If stuff needs to be used by another driver, move it to a common file.
5 ** WARNING: fields most data structures here are ordered to make sure
6 ** they pack nicely for 64-bit compilation. (ie sizeof(long) == 8)
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().
18 extern void *iosapic_register(unsigned long hpa
);
19 extern int iosapic_fixup_irq(void *obj
, struct pci_dev
*pcidev
);
24 ** PA: PIB (Processor Interrupt Block) is handled by Runway bus adapter.
25 ** and is hardcoded to 0xfeeNNNN0 where NNNN is id_eid field.
27 ** IA64: PIB is handled by "Local SAPIC" (integrated in the processor).
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 */
38 ** "root" data structure which ties everything together.
39 ** Should always be able to start with sapic_root and locate
40 ** the desired information.
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 */