Revision history   OpenPOWER Library

 4.4.1.3. PSL Procedure for the AFU-Directed Programming Models

 Each PSL assigned to service the scheduled processes is configured with a unique identifier and the identifier of the next PSL in the list of PSLs servicing the processes. In addition, each PSL is identified as either the first PSL, the last PSL, both first and last PSL (only one PSL servicing the queue), or neither first or last PSL. The PSL ID Register contains the PSL unique identifier and the settings for first and last.

 Operations Performed by the First PSL (PSL_ID[L,F] = '01')

 When the add_element MMIO command is received by the first PSL, the PSL performs any operations necessary and sends the add_element command to the next PSL. The PSL does not start any process with a software state of complete, suspend, or terminate. A process element with the suspend flag set can be added to the PSL queue.

  1. The PSL notifies the AFU of the added process element. The AFU performs any necessary operations to prepare for the new process and then acknowledges the new process element. When the acknowledgment is received, the PSL continues with the next substep.

  2. The PSL writes an add_element command to the psl_chained_command doubleword for the next PSL and watches for the add_element to be complete.

    • Write the value (x'00050000' || next_psl_id || link_of_element_to_add) to the psl_chained_command.

 Operations Performed by the Next PSL (PSL_ID[L,F] = '00')

When the add_element command is detected by the next PSL, perform any operations necessary and send the add_element command to the next PSL. The add_element command is detected by monitoring the psl_chained_command doubleword. The PSL does not start any process with a software state of complete, suspend, or terminate. A process element with the suspend flag set can be added to the PSL queue.

  1. The PSL notifies the AFU of the added process element. The AFU performs any necessary operations to prepare for the new process and then acknowledges the new process element. When the acknowledgment is received, the PSL continues with the next substep.

  2. The next PSL writes an add_element command to the psl_chained_command doubleword for the next PSL and watches for the add_element to be complete.

    • Write the value (x'00050000' || next_psl_id || link_of_element_to_add) to the psl_chained_command.

 Operations Performed by the Last PSL (PSL_ID[L] = '1')

 When the add_element MMIO command is received or the add_element command is detected by the last PSL, perform any operations necessary and set the completion status in the software command/status word. The add_element command is detected by monitoring the psl_chained_command doubleword. The PSL does not start any process with a software state of complete, suspend, or terminate. A process element with the suspend flag set can be added to the PSL queue.

  1. The PSL notifies the AFU of the added process element. The AFU performs any necessary operations to prepare for the new process and then acknowledges the new process element. When the acknowledgment is received, the PSL continues with the next substep.

  2. The PSL sets the completion status in the software command/status field to indicate the process has been successfully added.

    • The status field in sw_command_status is set to x'0005' using a caching-inhibited DMA or special memory-update operation that is guaranteed not to corrupt memory if the operation fails. The final value of sw_command_status should be (x'00050005' || first_psl_id || link_of_element_to_add).


loading table of contents...