As discussed in PL Kernel Properties, within the Vitis environment kernels can be defined as software controllable, or non-software controlled. This means that the kernel is controlled through software such as the host application; or the kernel is managed by the hardware and can be purely data driven, or is controlled through starter logic in the kernel.
In the software controlled mode the kernel follows the C-semantics in which the function is meant to be "called" by the main or host application, and "returned" when the function is complete. However, the software controlled kernel includes a subset of kernels that automatically restart and keep running until reset. The execution and completion of the kernel are dependent on data availability on the interface, and the host application does not explicitly start and stop the kernel for every execution. Instead the host application starts the kernel one time and the kernel runs for a specified number of iterations, or runs continuously until it is reset or explicitly stopped by the host application. This auto-restarting kernel is useful for data-driven designs with streaming data coming from and going to the I/O pins (Ethernet, SerDes) of the FPGA, or streamed from or to a different kernel (kernel-to-kernel streaming).