THE VF STATE MACHINE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… The VF state machine

okay so welcome to The VF state machine(9) from the Kernel API Manual β€” yes bestie, we are doing state-machine lore today and it’s genuinely iconic πŸŽ€

the simplified VF state machine can be drawn like this, no cap:

                           pause--------------------------o
                          /                               |
                         /                                v
                  (READY)<------------------resume-----(PAUSED)
                     ^                                /    /
                     |                               /    /
                     |     stop---->(STOPPED)<----stop    /
                     |                  /                /
                     |                 /                /
                     o--------<-----flr                /
                                                     /
                       o------<--------------------flr

where the cast is:

  • READY β€” a state where the VF is fully operable. main character energy, everything works ✨
  • PAUSED β€” a state where VF activity is temporarily suspended. it’s on a little break, not gone πŸ’…
  • STOPPED β€” a state where VF activity is definitely halted. like fully logged off, periodt.
  • pause β€” a request to temporarily suspend VF activity.
  • resume β€” a request to resume VF activity.
  • stop β€” a request to definitely halt VF activity.
  • flr β€” a request to perform VF FLR to restore VF activity. yes that’s the whole vibe πŸ¦‹

but bestie, each state transition is not just a little walk in the park β€” it requires extra steps that involve communication with GuC, and those steps might fail or be interrupted by other requests. so here’s the WIP diagram, and it’s giving very intricate:

                               .................................WIP....
                               :                                      :
                      pause--------------------->PAUSE_WIP----------------------------o
                     /         :                /                    :               |
                    /          :    o----<---stop          flr--o     :               |
                   /           :    |                    /     |     :               V
            (READY,RESUMED)<--------+------------RESUME_WIP<----+--<-----resume--(PAUSED)
              ^              :    |                           |     :          /   /
              |              :    |                           |     :         /   /
              |              :    |                           |     :        /   /
              |              :    o----<----------------------+--<-------stop   /
              |              :    |                           |     :          /
              |              :    V                           |     :         /
              |         stop----->STOP_WIP---------flr--->-----o     :        /
              |               :    |                           |     :       /
              |               :    |                           V     :      /
              |          flr--------+----->----------------->FLR_WIP<-----flr
              |                :    |                        /  ^     :
              |                :    |                       /   |     :
              o--------<-------:----+-----<----------------o    |     :
                               :    |                           |     :
                               :....|...........................|.....:
                                    |                           |
                                    V                           |
                                 (STOPPED)--------------------flr

for details about each internal WIP state machine, see:

  • The VF PAUSE state machine_
  • The VF RESUME state machine_
  • The VF STOP state machine_
  • The VF FLR state machine_

πŸ‘€ SEE ALSO

Kernel file ./drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c β€” yes, that’s the file, bestie 🫢

okay that’s the whole page, bestie πŸ’– final footer vibe: source/version ./drivers/gpu/drm/xe, date October 2026, and the page title is The VF state machine(9). periodt ✨

πŸ“¦ where this page comes from