STRUCT DEVICE_QUEUE_MANAGER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

struct device_queue_manager β€” bestie, the NAME line is literally blank in the original, no cap. It's the struct and that's the whole vibe ✨

(this page is from the Kernel API Manual, and yes it's struct device_queue_manager(9) β€” section 9, kernel API, we're fancy like that πŸŽ€)


✨ SYNOPSIS ✨

okay so here's the whole struct, copied exactly, character for character, do not touch πŸ’…

struct device_queue_manager {
    struct device_queue_manager_ops ops;
    struct device_queue_manager_asic_ops asic_ops;
    struct mqd_manager      *mqd_mgrs[KFD_MQD_TYPE_MAX];
    struct packet_manager   packet_mgr;
    struct kfd_node         *dev;
    struct mutex            lock_hidden;
    struct list_head        queues;
    unsigned int            saved_flags;
    unsigned int            processes_count;
    unsigned int            active_queue_count;
    unsigned int            active_cp_queue_count;
    unsigned int            gws_queue_count;
    unsigned int            total_queue_count;
    unsigned int            next_pipe_to_allocate;
    unsigned int            *allocated_queues;
    unsigned long sdma_bitmap[BITS_TO_LONGS( KFD_MAX_SDMA_QUEUES)];
    unsigned long xgmi_sdma_bitmap[BITS_TO_LONGS( KFD_MAX_SDMA_QUEUES)];
    uint16_t vmid_pasid[VMID_NUM];
    uint64_t pipelines_addr;
    uint64_t fence_gpu_addr;
    uint64_t *fence_addr;
    struct kfd_mem_obj      *fence_mem;
    bool active_runlist;
    int sched_policy;
    uint32_t trap_debug_vmid;
    bool is_hws_hang;
    bool is_resetting;
    struct kfd_mem_obj      hiq_sdma_mqd;
    bool sched_running;
    bool sched_halt;
    uint32_t current_logical_xcc_start;
    uint32_t wait_times;
    wait_queue_head_t destroy_wait;
    struct dqm_detect_hang_info *detect_hang_info;
    size_t detect_hang_info_size;
    int detect_hang_count;
    u32 *hung_db_array;
    struct amdgpu_mes_hung_queue_hqd_info *hqd_info;
 };

🌸 DESCRIPTION 🌸

Members

so the "Members" bit of the original page is just the heading before the good stuff β€” the members are the fields listed up there in the synopsis, and ngl the looooong list is right there for you to scroll back to πŸ”₯ (also no per-field blurbs in the source, so I'm not gonna make any up β€” iykyk πŸ™ˆ)

Description

okay bestie, here's the tea, and it's genuinely iconic:

This struct is a base class for the kfd queues scheduler in the device level. 🫢

The device base class should expose the basic operations for queue creation and queue destruction.

This base class hides the scheduling mode of the driver and the specific implementation of the concrete device. ✨ (so it's giving mystery, main character energy, all the messy details stay backstage πŸŽ€)

This class is the only class in the queues scheduler that configures the H/W. πŸ‘‘

fr fr read that again β€” only class in the queues scheduler that configures the H/W. That's a lot of responsibility for one struct, and she's carrying it beautifully πŸ’…

πŸ¦‹ SEE ALSO πŸ¦‹

  • Kernel file ./drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
  • struct device_queue_manager_ops(9)

⭐ and that's the whole page, bestie, you ate that 🌈

πŸ’œ little sign-off: this cutie lives at ./drivers/gpu/drm/amd/amdkfd, dated October 2026, and it's struct device_queue_manager(9) β€” go be obsessed, periodt πŸ’–πŸŽ€

πŸ“¦ where this page comes from