mes_add_queue_pkt.is_kfd_process = input->is_kfd_process;
        mes_add_queue_pkt.trap_en = 1;
 
+       /* For KFD, gds_size is re-used for queue size (needed in MES for AQL queues) */
+       mes_add_queue_pkt.is_aql_queue = input->is_aql_queue;
+       mes_add_queue_pkt.gds_size = input->queue_size;
+
        return mes_v11_0_submit_pkt_and_poll_completion(mes,
                        &mes_add_queue_pkt, sizeof(mes_add_queue_pkt),
                        offsetof(union MESAPI__ADD_QUEUE, api_status));
 
        }
 
        queue_input.is_kfd_process = 1;
+       queue_input.is_aql_queue = (q->properties.format == KFD_QUEUE_FORMAT_AQL);
+       queue_input.queue_size = q->properties.queue_size >> 2;
 
        queue_input.paging = false;
        queue_input.tba_addr = qpd->tba_addr;
 
                        uint32_t map_kiq_utility_queue  : 1;
                        uint32_t is_kfd_process         : 1;
                        uint32_t trap_en                : 1;
-                       uint32_t reserved               : 21;
+                       uint32_t is_aql_queue           : 1;
+                       uint32_t reserved               : 20;
                };
                struct MES_API_STATUS           api_status;
                uint64_t                        tma_addr;