Changes between Version 33 and Version 34 of kernel_interrupts
- Timestamp:
- Jan 5, 2017, 2:28:12 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
kernel_interrupts
v33 v34 6 6 [[PageOutline]] 7 7 8 The GIET_VM interrupt handler supports only the SOCLIB XCU internal interrupt interruptcontroler, and the SOCLIB IOPIC external interrup controler. In a multi-cluster architectures, it must exist one XCU controller in each cluster containing processors.8 The GIET_VM interrupt handler supports only the SOCLIB XCU internal interrupt controler, and the SOCLIB IOPIC external interrup controler. In a multi-cluster architectures, it must exist one XCU controller in each cluster containing processors. 9 9 10 10 A multi-channel XCU component in a given cluster must contain (NB_PROCS_MAX * IRQ_PER_PROCESSOR) channels (one channel = one XCU output IRQ). 11 11 12 There is three interrupt vectors per processor (stored in each processor's scheduler) for the three interrupts types: '''HWI''' (Hardware Interrupt), '''PTI''' (Programmable Timer Interrupt), and '''WTI''' (Write Triggered Interrupt). The '''WTI''' are actually hardware mailboxes, that are used by the GIET-VM to implement two mechanisms: 12 There is three interrupt vectors per processor (stored in each processor's scheduler) for the three interrupts types: '''HWI''' (Hardware Interrupt), '''PTI''' (Programmable Timer Interrupt), and '''WTI''' (Write Triggered Interrupt). 13 14 The '''WTI''' are actually hardware mailboxes, that are used by the GIET-VM to implement two mechanisms: 13 15 * they are used to implement software IPIs (Inter Processor Interrupt). 14 16 * they are used to dynamically route the external IRQs (generated by the external peripherals) to a given processor. … … 23 25 24 26 Regarding the allocation of interrupts to processors (IRQ routing using the XCU_MASK registers), the GIET-VM implement the following policy ('''lpid''' is the local processor index): 25 1. The GIET-VM uses only one XCU output IRQ per processor (with index = lpid * IRQ_PER_PROCESSOR), even if the hardware platform connect more than one IRQ line foreach processor.27 1. The GIET-VM uses only one XCU output IRQ per processor (with index = lpid * IRQ_PER_PROCESSOR), even if the hardware platform connect more than one IRQ line to each processor. 26 28 27 29 2. In each cluster the local '''HWI''' generated by the local peripherals are ''statically'' allocated and distributed to local processors, to share the load between all processors). … … 46 48 47 49 * unsigned int '''_ext_irq_wti'''[GIET_ISR_TYPE_MAX][GIET_ISR_CHANNEL_MAX]; 48 This array contains for each external IRQ, identified by the (is_type,channel) couple, the allocated WTI mailbox identifier. 49 This identifier has the following format (x / y / lpid / wti), with one byte per field. 50 This array contains for each external IRQ, identified by the (is_type,channel) couple, the allocated WTI mailbox identifier. This identifier has the following format (x / y / lpid / wti), with one byte per field. 50 51 51 52 … … 61 62 * '''wti_index''' : return value defining the index of the WTI mailbox allocated to P[x,y,p] 62 63 This function does three things: 63 1. it allocates a WTI mailbox in the XCU of cluster[x,y] to the requesting processor .64 1. it allocates a WTI mailbox in the XCU of cluster[x,y] to the requesting processor, using the XCU masks. 64 65 2. it initializes the IOPIC register associated to the (isr_type / isr_channel) external IRQ. 65 66 3. it initializes the proper entry in the WTI interrupt vector associated to processor P[x,y,p].