I have configured the Digital Pre-Distortion (DPD) IP to run in AMP with PetaLinux as the OS in CPU0. I turn Dynamic Control Layer (DCL) on and leave it for continuous operation over an extended period of time.
Operating DPD with Dynamic Control Layer (DCL) continuously on for extended periods of time with the Zynq PS in Asymmetric Multi-Processor (AMP) configuration and when running PetaLinux can result in the PS locking up.
This condition has been detected when running PetaLinux 2015.4 and the root cause is being investigated. The time at which the lockup can occur varies from hours to days of continuous operation.
The root cause of the problem is the part of the Linux kernel initialization in CPU0 that disables 'unused' clocks in the PS. This affects the operation of DPD execution in CPU1.
The initialization function clk_disable_unused() disables peripheral clocks in the SLCR registers based on references to the clock output names in the 'clk' node of the Zynq device tree.
Because the PS is being configured for independent operation of CPU1 from CPU0 in AMP, the device clock tree does not contain all of the information on the peripherals that are being used by the DPD application.
As a result, some clocks are disabled, which causes the failure.
The solution to this problem is to prevent the Linux kernel initialization from disabling unused clocks. To do this, add the following argument to the Linux kernel 'bootargs':
This recommendation to add the clk_ignore_unused as part of the Linux bootargs is documented in the DPD Product Guide.