54 lines
1.9 KiB
C
54 lines
1.9 KiB
C
/*
|
|
** This file is private to iosapic driver.
|
|
** If stuff needs to be used by another driver, move it to a common file.
|
|
**
|
|
** WARNING: fields most data structures here are ordered to make sure
|
|
** they pack nicely for 64-bit compilation. (ie sizeof(long) == 8)
|
|
*/
|
|
|
|
|
|
/*
|
|
** I/O SAPIC init function
|
|
** Caller knows where an I/O SAPIC is. LBA has an integrated I/O SAPIC.
|
|
** Call setup as part of per instance initialization.
|
|
** (ie *not* init_module() function unless only one is present.)
|
|
** fixup_irq is to initialize PCI IRQ line support and
|
|
** virtualize pcidev->irq value. To be called by pci_fixup_bus().
|
|
*/
|
|
extern void *iosapic_register(unsigned long hpa);
|
|
extern int iosapic_fixup_irq(void *obj, struct pci_dev *pcidev);
|
|
|
|
|
|
#ifdef __IA64__
|
|
/*
|
|
** PA: PIB (Processor Interrupt Block) is handled by Runway bus adapter.
|
|
** and is hardcoded to 0xfeeNNNN0 where NNNN is id_eid field.
|
|
**
|
|
** IA64: PIB is handled by "Local SAPIC" (integrated in the processor).
|
|
*/
|
|
struct local_sapic_info {
|
|
struct local_sapic_info *lsi_next; /* point to next CPU info */
|
|
int *lsi_cpu_id; /* point to logical CPU id */
|
|
unsigned long *lsi_id_eid; /* point to IA-64 CPU id */
|
|
int *lsi_status; /* point to CPU status */
|
|
void *lsi_private; /* point to special info */
|
|
};
|
|
|
|
/*
|
|
** "root" data structure which ties everything together.
|
|
** Should always be able to start with sapic_root and locate
|
|
** the desired information.
|
|
*/
|
|
struct sapic_info {
|
|
struct sapic_info *si_next; /* info is per cell */
|
|
int si_cellid; /* cell id */
|
|
unsigned int si_status; /* status */
|
|
char *si_pib_base; /* intr blk base address */
|
|
local_sapic_info_t *si_local_info;
|
|
io_sapic_info_t *si_io_info;
|
|
extint_info_t *si_extint_info;/* External Intr info */
|
|
};
|
|
|
|
#endif /* IA64 */
|
|
|