Revision history   OpenPOWER Library

 4.4.4.1. Software Procedure

Note: The following sequence is only for a single system-software process managing the linked list. Additional locking and synchronization steps are necessary to allow for multiple system-software processes to concurrently manage the linked list.

  1. Update the system-software implementation-dependent free list and process-element linked list structures to reflect the removal of the process element.

  2. Write a remove_element command to the software command/status field in the linked list area.

    • Store (x'00020000' || first_psl_id || link_of_element_to_remove) to sw_command_status.

  3. Ensure that the remove_element command is visible to all processes.

    • System software running on the host processor must perform a sync instruction.

  4. Issue the remove_element MMIO command to the first PSL.

    • System software performs an MMIO to the PSL Linked List Command Register with the remove_element command and the link of the process being removed. (PSL_LLCMD_An = x'000200000000' || link_of_element_to_remove)

  5. Wait for the PSLs to acknowledge the removal of the process element.

    • The process element is terminated when a load from sw_command_status returns (x'00020002' || first_psl_id || link_of_element_to_remove).

    • If a value of all 1's is returned for the status, an error has occurred. An implementation-dependent recovery procedure should be initiated by hardware.

  6. Invalidate the PSL SLBs and TLBs for the processes being removed.

    • System software performs an MMIO write to the Lookaside Buffer Invalidation Selector with the process ID and logical partition ID of the process being removed. (PSL_LBISEL = PID || LPID).

    • System software performs an MMIO write to invalidate the SLBs (PSL_SLBIA = x'3').

    • System software waits until the SLB invalidate is completed (MMIO read of PSL_SLBIA returns zero in the least significant bit).

    • System software performs an MMIO write to invalidate the TLBs (PSL_TLBIA = x'3').

    • System software waits until the TLB invalidate is completed (MMIO read of PSL_TLBIA returns zero in the least significant bit).

  7. At this point, the memory locations for the process element that was removed can now be reused.


loading table of contents...