Revision history   OpenPOWER Library

 B.5. AFU Deallocate Sequence Example

 The following is a high-level description of the procedure that system software should follow when deallocating an AFU. The following procedure assumes that system software is servicing faults from the PSL during the procedure.

  1. Disable AFU

    1. Write the AFU_CNTL_An[RA] = '1'

    2. Wait for AFU_CNTL_An[RS] = '10'

  2. Suspend PSL

    1. Write the PSL_SCNTL_An[Sc] = '1'

    2. Wait for PSL_SCNTL_An[Ss] = '11'

  3. Purge PSL

    1. Write the PSL_SCNTL_An[Pc] = '1'

    2. Wait for PSL_SCNTL_An[Ps] = '11'

  4. Invalidate TLBs

    Note: This must be performed by the hypervisor.

    1. Write the PSL_LBISEL Register with the PID and LPID (optional depending on the value of PSL_TLBIA[IQ].

    2. EIEIO

    3. Write PSL_TLBIA[IQ] = '00' or '10' or '11' depending on how selective you want to be on TLB invalidates.

    4. Wait until the TLBs have been invalidated.

  5. Invalidate SLBs

    Note: This can also be done by the hypervisor.

    If Hypervisor

    1. Write the PSL_LBISEL Register with the PID and LPID (optional depending on the value of PSL_SLBIA[IQ]).

    2. EIEIO

    3. Write PSL_SLBIA[IH, IQ] depending on how selective you want to be on SLB invalidates.

    4. Wait until the SLBs have been invalidated.

    If OS

    1. Write the SLIBA_An[IH, IQ] depending on how selective you want to be on SLB invalidates.

      Note: The LPID and PID should already be valid.

    2. Wait until the SLBs have been invalidated.

  6. Set the PSL State to require a download of an AFU before allowing an AFU to be enabled.

    1. Write the PSL_SR_An[CR] both to '1'.

  7. Set PSL to Normal operation

    1. Write the PSL_SCNTL_An[Ps, Pc] both to '0'.

    2. Wait until the PSL_SCNTL_An[Ss, Sc] fields are both '00'.


loading table of contents...