Changes between Version 33 and Version 34 of kernel_interrupts


Ignore:
Timestamp:
Jan 5, 2017, 2:28:12 PM (7 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • kernel_interrupts

    v33 v34  
    66[[PageOutline]]
    77
    8 The GIET_VM interrupt handler supports only the SOCLIB XCU internal interrupt 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.
     8The 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.
    99
    1010A multi-channel XCU component in a given cluster must contain (NB_PROCS_MAX * IRQ_PER_PROCESSOR) channels  (one channel = one XCU output IRQ).
    1111
    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:
     12There 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
     14The '''WTI''' are actually hardware mailboxes, that are used by the GIET-VM to implement two mechanisms:
    1315 * they are used to implement software IPIs (Inter Processor Interrupt).
    1416 * they are used to dynamically route the external IRQs (generated by the external peripherals) to a given processor.
     
    2325
    2426Regarding 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 for each 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.
    2628
    2729 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).
     
    4648
    4749 * 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.
     50This 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.
    5051
    5152
     
    6162 * '''wti_index''' : return value defining the index of the WTI mailbox allocated to P[x,y,p]
    6263This 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.
    6465 2. it initializes the IOPIC register associated to the (isr_type / isr_channel) external IRQ.
    6566 3. it initializes the proper entry in the WTI interrupt vector associated to processor P[x,y,p].