mirror of
https://git.missingno.dev/kolibrios-nvme-driver/
synced 2026-03-09 12:53:24 +00:00
fix: set SQ_ENTRY.CDW0 to valid value in commands
This commit is contained in:
@@ -152,6 +152,8 @@ proc create_io_completion_queue stdcall, pci:dword, prp1:dword, qid:word, ien:by
|
||||
or ebx, eax ; CDW.PC
|
||||
mov esi, [esi + pcidev.sq_ptr]
|
||||
stdcall memset, esi, 0, sizeof.SQ_ENTRY
|
||||
stdcall set_cdw0, ADM_CMD_CRE_IO_COMPLETION_QUEUE, 0 ; [TODO: Set CID to valid value]
|
||||
mov dword [esi + SQ_ENTRY.cdw0], eax
|
||||
; Since we are not using MSI-X or MSI vector (yet), CDW11.IV must be set to 0
|
||||
mov dword [esi + SQ_ENTRY.cdw11], ebx
|
||||
mov bx, [qid] ; CDW10.QID
|
||||
@@ -176,6 +178,8 @@ proc create_io_submission_queue stdcall, pci:dword, prp1:dword, qid:word, cqid:w
|
||||
and ebx, 0x1 ; CDW11.PC
|
||||
mov esi, [esi + pcidev.sq_ptr]
|
||||
stdcall memset, esi, 0, sizeof.SQ_ENTRY
|
||||
stdcall set_cdw0, ADM_CMD_CRE_IO_SUBMISSION_QUEUE, 0 ; [TODO: Set CID to valid value]
|
||||
mov dword [esi + SQ_ENTRY.cdw0], eax
|
||||
movzx eax, [cqid]
|
||||
shl eax, 16
|
||||
or ebx, eax ; CDW11.CQID
|
||||
@@ -201,6 +205,8 @@ proc delete_io_completion_queue stdcall, pci:dword, qid:word
|
||||
mov esi, [pci]
|
||||
mov esi, [esi + pcidev.sq_ptr]
|
||||
stdcall memset, esi, 0, sizeof.SQ_ENTRY
|
||||
stdcall set_cdw0, ADM_CMD_DEL_IO_COMPLETION_QUEUE, 0 ; [TODO: Set CID to valid value]
|
||||
mov dword [esi + SQ_ENTRY.cdw0], eax
|
||||
mov ax, [qid]
|
||||
mov word [esi + SQ_ENTRY.cdw10], ax
|
||||
stdcall sqytdbl_write, [pci], [qid], 0 ; setting last param to 0 for now, change later
|
||||
@@ -215,7 +221,8 @@ proc get_features stdcall, pci:dword, dptr:dword, sel:byte, fid:byte
|
||||
mov esi, [pci]
|
||||
mov esi, [esi + pcidev.sq_ptr]
|
||||
stdcall memset, esi, 0, sizeof.SQ_ENTRY
|
||||
mov
|
||||
stdcall set_cdw0, ADM_CMD_GET_FEATURES, 0 ; [TODO: Set CID to valid value]
|
||||
mov dword [esi + SQ_ENTRY.cdw0], eax
|
||||
movzx eax, [fid] ; CDW10.FID
|
||||
movzx ebx, [sel]
|
||||
and ebx, 111b
|
||||
@@ -238,6 +245,8 @@ proc delete_io_submission_queue stdcall, pci:dword, qid:word
|
||||
mov esi, [pci]
|
||||
mov esi, [esi + pcidev.sq_ptr]
|
||||
stdcall memset, esi, 0, sizeof.SQ_ENTRY
|
||||
stdcall set_cdw0, ADM_CMD_DEL_IO_SUBMISSION_QUEUE, 0 ; [TODO: Set CID to valid value]
|
||||
mov dword [esi + SQ_ENTRY.cdw0], eax
|
||||
mov ax, [qid]
|
||||
mov word [esi + SQ_ENTRY.cdw10], ax
|
||||
stdcall sqytdbl_write, [pci], [qid], 0 ; setting last param to 0 for now, change later
|
||||
|
||||
Reference in New Issue
Block a user