	.file	"extr_kfd_device_queue_manager.c_device_queue_manager_init.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"Loading device queue manager\n"
.LC1:
	.string	"Invalid scheduling policy %d\n"
.LC2:
	.string	"Unexpected ASIC family %u"
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC3:
	.string	"Failed to allocate hiq sdma mqd trunk buffer\n"
	.text
	.p2align 4
	.globl	device_queue_manager_init
	.type	device_queue_manager_init, @function
device_queue_manager_init:
.LFB0:
	.cfi_startproc
	endbr64
	push	r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	push	rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	mov	rbx, rdi
	lea	rdi, .LC0[rip]
	sub	rsp, 8
	.cfi_def_cfa_offset 32
	call	pr_debug@PLT
	mov	esi, DWORD PTR GFP_KERNEL[rip]
	mov	edi, 128
	call	kzalloc@PLT
	mov	r12, rax
	test	rax, rax
	je	.L1
	mov	rax, QWORD PTR [rbx]
	mov	edx, DWORD PTR [rax]
	cmp	edx, 135
	je	.L3
	cmp	edx, 142
	je	.L3
	mov	esi, DWORD PTR sched_policy[rip]
	mov	QWORD PTR 120[r12], rbx
	mov	DWORD PTR [r12], esi
	cmp	esi, 128
	je	.L5
	lea	eax, -129[rsi]
	cmp	eax, 1
	ja	.L6
	mov	eax, DWORD PTR create_queue_cpsch[rip]
	mov	DWORD PTR 92[r12], eax
	mov	rax, QWORD PTR initialize_cpsch@GOTPCREL[rip]
	mov	QWORD PTR 8[r12], rax
	mov	eax, DWORD PTR start_cpsch[rip]
	mov	DWORD PTR 100[r12], eax
	mov	eax, DWORD PTR stop_cpsch[rip]
	mov	DWORD PTR 96[r12], eax
	mov	eax, DWORD PTR destroy_queue_cpsch[rip]
	mov	DWORD PTR 88[r12], eax
	mov	rax, QWORD PTR update_queue[rip]
	mov	QWORD PTR 80[r12], rax
	mov	rax, QWORD PTR register_process[rip]
	mov	QWORD PTR 72[r12], rax
	mov	rax, QWORD PTR unregister_process[rip]
	mov	QWORD PTR 64[r12], rax
	mov	rax, QWORD PTR uninitialize[rip]
	mov	QWORD PTR 56[r12], rax
	mov	eax, DWORD PTR create_kernel_queue_cpsch[rip]
	mov	DWORD PTR 108[r12], eax
	mov	eax, DWORD PTR destroy_kernel_queue_cpsch[rip]
	mov	DWORD PTR 104[r12], eax
	mov	rax, QWORD PTR set_cache_memory_policy[rip]
	mov	QWORD PTR 48[r12], rax
	mov	rax, QWORD PTR set_trap_handler[rip]
	mov	QWORD PTR 40[r12], rax
	mov	eax, DWORD PTR process_termination_cpsch[rip]
	mov	DWORD PTR 32[r12], eax
	mov	eax, DWORD PTR evict_process_queues_cpsch[rip]
	mov	DWORD PTR 28[r12], eax
	mov	eax, DWORD PTR restore_process_queues_cpsch[rip]
	mov	DWORD PTR 24[r12], eax
	mov	rax, QWORD PTR get_wave_state[rip]
	mov	QWORD PTR 16[r12], rax
.L7:
	lea	eax, -131[rdx]
	cmp	eax, 14
	ja	.L9
	lea	rdx, .L11[rip]
	lea	rdi, 112[r12]
	movsx	rax, DWORD PTR [rdx+rax*4]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L11:
	.long	.L13-.L11
	.long	.L10-.L11
	.long	.L10-.L11
	.long	.L10-.L11
	.long	.L13-.L11
	.long	.L10-.L11
	.long	.L13-.L11
	.long	.L13-.L11
	.long	.L13-.L11
	.long	.L16-.L11
	.long	.L15-.L11
	.long	.L14-.L11
	.long	.L13-.L11
	.long	.L12-.L11
	.long	.L10-.L11
	.text
	.p2align 4,,10
	.p2align 3
.L6:
	lea	rdi, .LC1[rip]
	xor	eax, eax
	call	pr_err@PLT
.L8:
	mov	rdi, r12
	xor	r12d, r12d
	call	kfree@PLT
.L1:
	add	rsp, 8
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	mov	rax, r12
	pop	rbx
	.cfi_def_cfa_offset 16
	pop	r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L3:
	.cfi_restore_state
	mov	DWORD PTR [r12], 128
	mov	QWORD PTR 120[r12], rbx
.L5:
	mov	eax, DWORD PTR start_nocpsch[rip]
	mov	DWORD PTR 100[r12], eax
	mov	eax, DWORD PTR stop_nocpsch[rip]
	mov	DWORD PTR 96[r12], eax
	mov	eax, DWORD PTR create_queue_nocpsch[rip]
	mov	DWORD PTR 92[r12], eax
	mov	eax, DWORD PTR destroy_queue_nocpsch[rip]
	mov	DWORD PTR 88[r12], eax
	mov	rax, QWORD PTR update_queue[rip]
	mov	QWORD PTR 80[r12], rax
	mov	rax, QWORD PTR register_process[rip]
	mov	QWORD PTR 72[r12], rax
	mov	rax, QWORD PTR unregister_process[rip]
	mov	QWORD PTR 64[r12], rax
	mov	rax, QWORD PTR initialize_nocpsch@GOTPCREL[rip]
	mov	QWORD PTR 8[r12], rax
	mov	rax, QWORD PTR uninitialize[rip]
	mov	QWORD PTR 56[r12], rax
	mov	rax, QWORD PTR set_cache_memory_policy[rip]
	mov	QWORD PTR 48[r12], rax
	mov	rax, QWORD PTR set_trap_handler[rip]
	mov	QWORD PTR 40[r12], rax
	mov	eax, DWORD PTR process_termination_nocpsch[rip]
	mov	DWORD PTR 32[r12], eax
	mov	eax, DWORD PTR evict_process_queues_nocpsch[rip]
	mov	DWORD PTR 28[r12], eax
	mov	eax, DWORD PTR restore_process_queues_nocpsch[rip]
	mov	DWORD PTR 24[r12], eax
	mov	rax, QWORD PTR get_wave_state[rip]
	mov	QWORD PTR 16[r12], rax
	jmp	.L7
	.p2align 4,,10
	.p2align 3
.L13:
	call	device_queue_manager_init_vi_tonga@PLT
	.p2align 4,,10
	.p2align 3
.L17:
	mov	rdi, r12
	call	init_mqd_managers@PLT
	test	rax, rax
	jne	.L8
	mov	rdi, r12
	call	allocate_hiq_sdma_mqd@PLT
	test	rax, rax
	jne	.L36
	mov	rdi, r12
	call	[QWORD PTR 8[r12]]
	test	eax, eax
	jne	.L8
	add	rsp, 8
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	mov	rax, r12
	pop	rbx
	.cfi_def_cfa_offset 16
	pop	r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L10:
	.cfi_restore_state
	call	device_queue_manager_init_v9@PLT
	jmp	.L17
	.p2align 4,,10
	.p2align 3
.L12:
	call	device_queue_manager_init_vi@PLT
	jmp	.L17
	.p2align 4,,10
	.p2align 3
.L15:
	call	device_queue_manager_init_cik@PLT
	jmp	.L17
	.p2align 4,,10
	.p2align 3
.L14:
	call	device_queue_manager_init_cik_hawaii@PLT
	jmp	.L17
	.p2align 4,,10
	.p2align 3
.L16:
	call	device_queue_manager_init_v10_navi10@PLT
	jmp	.L17
.L9:
	lea	rsi, .LC2[rip]
	mov	edi, 1
	call	WARN@PLT
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L36:
	lea	rdi, .LC3[rip]
	xor	eax, eax
	call	pr_err@PLT
	jmp	.L8
	.cfi_endproc
.LFE0:
	.size	device_queue_manager_init, .-device_queue_manager_init
	.comm	update_queue,8,8
	.comm	unregister_process,8,8
	.comm	uninitialize,8,8
	.comm	stop_nocpsch,4,4
	.comm	stop_cpsch,4,4
	.comm	start_nocpsch,4,4
	.comm	start_cpsch,4,4
	.comm	set_trap_handler,8,8
	.comm	set_cache_memory_policy,8,8
	.comm	sched_policy,4,4
	.comm	restore_process_queues_nocpsch,4,4
	.comm	restore_process_queues_cpsch,4,4
	.comm	register_process,8,8
	.comm	process_termination_nocpsch,4,4
	.comm	process_termination_cpsch,4,4
	.comm	get_wave_state,8,8
	.comm	evict_process_queues_nocpsch,4,4
	.comm	evict_process_queues_cpsch,4,4
	.comm	destroy_queue_nocpsch,4,4
	.comm	destroy_queue_cpsch,4,4
	.comm	destroy_kernel_queue_cpsch,4,4
	.comm	create_queue_nocpsch,4,4
	.comm	create_queue_cpsch,4,4
	.comm	create_kernel_queue_cpsch,4,4
	.comm	GFP_KERNEL,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"extr_kfd_device_queue_manager.c_device_queue_manager_init.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"Loading device queue manager\012\000"
	.align	2
.LC1:
	.ascii	"Invalid scheduling policy %d\012\000"
	.align	2
.LC2:
	.ascii	"Unexpected ASIC family %u\000"
	.align	2
.LC3:
	.ascii	"Failed to allocate hiq sdma mqd trunk buffer\012\000"
	.text
	.align	2
	.global	device_queue_manager_init
	.syntax unified
	.arm
	.fpu softvfp
	.type	device_queue_manager_init, %function
device_queue_manager_init:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, lr}
	mov	r5, r0
	ldr	r0, .L37
	bl	pr_debug
	ldr	r3, .L37+4
	mov	r0, #80
	ldr	r1, [r3]
	bl	kzalloc
	subs	r4, r0, #0
	beq	.L1
	ldr	r3, [r5]
	ldr	r2, [r3]
	cmp	r2, #135
	beq	.L3
	cmp	r2, #142
	beq	.L3
	ldr	r3, .L37+8
	str	r5, [r4, #76]
	ldr	r1, [r3]
	cmp	r1, #128
	str	r1, [r4]
	beq	.L5
	sub	r3, r1, #129
	cmp	r3, #1
	bhi	.L6
	ldr	lr, .L37+12
	ldr	ip, .L37+16
	ldr	r0, .L37+20
	ldr	r3, .L37+24
	ldr	r5, [lr]
	ldr	lr, [ip]
	ldr	ip, [r0]
	ldr	r0, [r3]
	ldr	r3, .L37+28
	str	r5, [r4, #52]
	ldr	r1, .L37+32
	ldr	r5, [r3]
	ldr	r3, .L37+36
	ldr	r1, [r1]
	str	lr, [r4, #60]
	ldr	lr, [r3]
	ldr	r3, .L37+40
	str	r1, [r4, #56]
	ldr	r1, [r3]
	ldr	r3, .L37+44
	str	ip, [r4, #48]
	ldr	ip, [r3]
	ldr	r3, .L37+48
	str	r0, [r4, #44]
	ldr	r0, [r3]
	ldr	r3, .L37+52
	str	r5, [r4, #40]
	ldr	r5, [r3]
	ldr	r3, .L37+56
	str	lr, [r4, #36]
	ldr	lr, [r3]
	ldr	r3, .L37+60
	str	r1, [r4, #32]
	ldr	r1, [r3]
	ldr	r3, .L37+64
	str	ip, [r4, #68]
	ldr	ip, [r3]
	ldr	r3, .L37+68
	str	r0, [r4, #64]
	ldr	r0, [r3]
	ldr	r3, .L37+72
	str	r1, [r4, #20]
	ldr	r3, [r3]
	ldr	r1, .L37+76
	str	r5, [r4, #28]
	str	lr, [r4, #24]
	str	ip, [r4, #16]
	str	r0, [r4, #12]
	stmib	r4, {r1, r3}
.L7:
	sub	r3, r2, #131
	cmp	r3, #14
	ldrls	pc, [pc, r3, asl #2]
	b	.L9
.L11:
	.word	.L13
	.word	.L10
	.word	.L10
	.word	.L10
	.word	.L13
	.word	.L10
	.word	.L13
	.word	.L13
	.word	.L13
	.word	.L16
	.word	.L15
	.word	.L14
	.word	.L13
	.word	.L12
	.word	.L10
.L6:
	ldr	r0, .L37+80
	bl	pr_err
.L8:
	mov	r0, r4
	bl	kfree
	mov	r4, #0
.L1:
	mov	r0, r4
	pop	{r4, r5, r6, pc}
.L3:
	mov	r3, #128
	str	r5, [r4, #76]
	str	r3, [r4]
.L5:
	ldr	lr, .L37+84
	ldr	r3, .L37+24
	ldr	r1, .L37+88
	ldr	r5, [lr]
	ldr	r1, [r1]
	ldr	lr, [r3]
	ldr	ip, .L37+92
	ldr	r3, .L37+28
	ldr	ip, [ip]
	ldr	r0, .L37+96
	str	r1, [r4, #60]
	ldr	r1, [r3]
	ldr	r3, .L37+36
	ldr	r0, [r0]
	str	ip, [r4, #56]
	ldr	ip, [r3]
	ldr	r3, .L37+40
	str	r0, [r4, #52]
	ldr	r0, [r3]
	ldr	r3, .L37+52
	str	r5, [r4, #48]
	str	r1, [r4, #40]
	ldr	r5, [r3]
	ldr	r1, .L37+100
	ldr	r3, .L37+56
	str	lr, [r4, #44]
	str	ip, [r4, #36]
	ldr	lr, [r3]
	ldr	ip, [r1]
	ldr	r3, .L37+104
	ldr	r1, .L37+108
	ldr	r3, [r3]
	str	r0, [r4, #32]
	ldr	r0, [r1]
	ldr	r1, .L37+72
	str	r3, [r4, #20]
	ldr	r1, [r1]
	ldr	r3, .L37+112
	str	r5, [r4, #28]
	str	lr, [r4, #24]
	str	ip, [r4, #16]
	str	r0, [r4, #12]
	str	r1, [r4, #8]
	str	r3, [r4, #4]
	b	.L7
.L13:
	add	r0, r4, #72
	bl	device_queue_manager_init_vi_tonga
.L17:
	mov	r0, r4
	bl	init_mqd_managers
	cmp	r0, #0
	bne	.L8
	mov	r0, r4
	bl	allocate_hiq_sdma_mqd
	cmp	r0, #0
	bne	.L36
	mov	r0, r4
	ldr	r3, [r4, #4]
	blx	r3
	cmp	r0, #0
	bne	.L8
	mov	r0, r4
	pop	{r4, r5, r6, pc}
.L10:
	add	r0, r4, #72
	bl	device_queue_manager_init_v9
	b	.L17
.L12:
	add	r0, r4, #72
	bl	device_queue_manager_init_vi
	b	.L17
.L15:
	add	r0, r4, #72
	bl	device_queue_manager_init_cik
	b	.L17
.L14:
	add	r0, r4, #72
	bl	device_queue_manager_init_cik_hawaii
	b	.L17
.L16:
	add	r0, r4, #72
	bl	device_queue_manager_init_v10_navi10
	b	.L17
.L36:
	ldr	r0, .L37+116
	bl	pr_err
	b	.L8
.L9:
	ldr	r1, .L37+120
	mov	r0, #1
	bl	WARN
	b	.L8
.L38:
	.align	2
.L37:
	.word	.LC0
	.word	GFP_KERNEL
	.word	sched_policy
	.word	create_queue_cpsch
	.word	start_cpsch
	.word	destroy_queue_cpsch
	.word	update_queue
	.word	register_process
	.word	stop_cpsch
	.word	unregister_process
	.word	uninitialize
	.word	create_kernel_queue_cpsch
	.word	destroy_kernel_queue_cpsch
	.word	set_cache_memory_policy
	.word	set_trap_handler
	.word	process_termination_cpsch
	.word	evict_process_queues_cpsch
	.word	restore_process_queues_cpsch
	.word	get_wave_state
	.word	initialize_cpsch
	.word	.LC1
	.word	destroy_queue_nocpsch
	.word	start_nocpsch
	.word	stop_nocpsch
	.word	create_queue_nocpsch
	.word	evict_process_queues_nocpsch
	.word	process_termination_nocpsch
	.word	restore_process_queues_nocpsch
	.word	initialize_nocpsch
	.word	.LC3
	.word	.LC2
	.size	device_queue_manager_init, .-device_queue_manager_init
	.comm	update_queue,4,4
	.comm	unregister_process,4,4
	.comm	uninitialize,4,4
	.comm	stop_nocpsch,4,4
	.comm	stop_cpsch,4,4
	.comm	start_nocpsch,4,4
	.comm	start_cpsch,4,4
	.comm	set_trap_handler,4,4
	.comm	set_cache_memory_policy,4,4
	.comm	sched_policy,4,4
	.comm	restore_process_queues_nocpsch,4,4
	.comm	restore_process_queues_cpsch,4,4
	.comm	register_process,4,4
	.comm	process_termination_nocpsch,4,4
	.comm	process_termination_cpsch,4,4
	.comm	get_wave_state,4,4
	.comm	evict_process_queues_nocpsch,4,4
	.comm	evict_process_queues_cpsch,4,4
	.comm	destroy_queue_nocpsch,4,4
	.comm	destroy_queue_cpsch,4,4
	.comm	destroy_kernel_queue_cpsch,4,4
	.comm	create_queue_nocpsch,4,4
	.comm	create_queue_cpsch,4,4
	.comm	create_kernel_queue_cpsch,4,4
	.comm	GFP_KERNEL,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
