NvDVMS#

NvDVMS is introduced in DriveOS to support functional state and power state transition for DriveOS components.

Platform Support#

NvDVMS provides interfaces for triggering power state transitions. Internally it interact with Linux kernel interfaces to perform the required state transition.

VM State Machine#

The diagram below shows the state transitions.

VM State Machine
  • Blue VM states can be pushed by the LCM Client application to NvDVMS.

  • Green internal VM states are required for DriveOS VM state manager internal usage. The application layer cannot push internal states to the VM state manager.

All states in the above diagram are visible to the application layer when it reads the VM state.

VM States Description#

VM States#

State

Trigger

Description

Init

Power on

The VM state during which DriveOS processes initialize. End of Init state occurs when DriveOS transitions to the InitDone state.

InitDone

Set by VM State Manager when DriveOS boot completes. Requested by DriveOS user application layer (via REINIT).

The VM moves to this state when DriveOS has booted up and all its processes have initialized. All functionalities of DriveOS are available for use by the application layer.

Suspend

Requested by DriveOS user application layer.

Puts the VM (and system) into Suspend to RAM state (low power state). The start of the suspend transition is marked by Suspend_Start.

Resume

Wake signal (timer/GPIO from MCU).

The VM states when DriveOS is resuming from Suspend to RAM. The start of the resume transition is marked by Resume_Start. Resume state end when DRIVEOS transitions to InitDone state post completion of resume.

Run/Operational

Requested by the DriveOS user application layer.

DriveOS returns error on the invocation of any INIT/DEINIT phase API/functions during operational/run state. This prevents any resource allocations/deallocations from happening in this state.

Deinit Prepare

Requested by DriveOS user application layer.

Instructs DriveOS VM State Manager to prepare for the start of the application layer deinitialization. INIT/DEINIT APIs are allowed at this point as DriveOS is out of Operational State.

DeInit

Requested by DriveOS user application layer.

The VM state during the process of shutdown. Terminates with the VM (and System) shutting down.

Reinit

Requested by DriveOS user application layer.

With SC7 support, the system reinits from deinit prepare to reach init done. Required for runtime suspend.