WIP: feat: add NVMe driver #91

Draft
ramenu wants to merge 5 commits from ramenu/kolibrios:main into main
3 changed files with 35 additions and 40 deletions
Showing only changes of commit 0aace3dc73 - Show all commits

View File

@ -131,7 +131,6 @@ proc set_features stdcall, pci:dword, prp1:dword, fid:byte, cdw11:dword
mov eax, [prp1]
mov dword [esp + SQ_ENTRY.prp1], eax
movzx eax, [fid]
;or eax, 1 shl 31 ; CDW10.SV
mov dword [esp + SQ_ENTRY.cdw10], eax
Review

Delete if unnecessary

Delete if unnecessary
mov eax, [cdw11]
mov dword [esp + SQ_ENTRY.cdw11], eax

View File

@ -8,7 +8,7 @@
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
format PE DLL native
format PE DLL native 0.05

format PE DLL native 0.05

adding this value reduces the number of false positives of antiviruses

format PE DLL native 0.05 adding this value reduces the number of false positives of antiviruses
entry START
API_VERSION = 0 ;debug
@ -463,7 +463,6 @@ proc nvme_readwrite stdcall, ns:dword, buf:dword, start_sector:qword, numsectors
mov eax, [numsectors_ptr]
mov eax, dword [eax]
DEBUGF DBG_INFO, "buf: %x, start_sector: %u:%u, numsectors: %u\n", [buf], [start_sector + 4], [start_sector], eax
mov dword [ebx + 4], 0 ; PRP2 entry (0 by default)
mov dword [ebx + 8], edx ; command type (read or write)
mov dword [ebx + 12], eax ; save original numsectors value
@ -479,7 +478,6 @@ proc nvme_readwrite stdcall, ns:dword, buf:dword, start_sector:qword, numsectors
test eax, eax
jz .fail
DEBUGF DBG_INFO, "PRP1: %x, PRP2: %x\n", [ebx], [ebx + 4]
mov eax, dword [start_sector]
; According to the NVMe specification, the NLB field in the I/O read and write
@ -1136,7 +1134,6 @@ proc cqyhdbl_write stdcall, pci:dword, y:dword, cqh:dword
mov edi, dword [esi + pcidev.queue_entries]
lea edi, dword [edi + ecx]
mov eax, [cqh]
DEBUGF DBG_INFO, "nvme%u: Writing to CQ%u doorbell register 0x%x: %u\n", [esi + pcidev.num], [y], dx, ax
mov esi, dword [esi + pcidev.io_addr]
mov word [esi + edx], ax ; Write to CQyHDBL
mov word [edi + NVM_QUEUE_ENTRY.head], ax
@ -1194,7 +1191,6 @@ proc sqytdbl_write stdcall, pci:dword, y:word, cmd:dword
shl edx, cl
imul edx, ebx
add edx, 0x1000
DEBUGF DBG_INFO, "nvme%u: Writing to SQ%u doorbell register 0x%x: %u\n", [esi + pcidev.num], [y], dx, ax
mov word [edi + NVM_QUEUE_ENTRY.tail], ax
mov esi, dword [esi + pcidev.io_addr]
mov word [esi + edx], ax

View File

@ -372,7 +372,7 @@ struct IDENTC
vid dw ?
ssvid dw ?
sn dt ?, ?
mn dt ?, ?, ?, ?
mn rt 4
fr dq ?
rab db ?
ieee db ?, ?, ?
@ -445,41 +445,41 @@ struct IDENTC
sgls dd ?
mnan dd ?
rb 224
subnqn dq ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
subnqn rq 32

-> rq 32?

-> `rq 32`?
rb 768
rb 256
psd0 dq ?, ?, ?, ?
psd1 dq ?, ?, ?, ?
psd2 dq ?, ?, ?, ?
psd3 dq ?, ?, ?, ?
psd4 dq ?, ?, ?, ?
psd5 dq ?, ?, ?, ?
psd6 dq ?, ?, ?, ?
psd7 dq ?, ?, ?, ?
psd8 dq ?, ?, ?, ?
psd9 dq ?, ?, ?, ?
psd10 dq ?, ?, ?, ?
psd11 dq ?, ?, ?, ?
psd12 dq ?, ?, ?, ?
psd13 dq ?, ?, ?, ?
psd14 dq ?, ?, ?, ?
psd15 dq ?, ?, ?, ?
psd16 dq ?, ?, ?, ?
psd17 dq ?, ?, ?, ?
psd18 dq ?, ?, ?, ?
psd19 dq ?, ?, ?, ?
psd20 dq ?, ?, ?, ?
psd21 dq ?, ?, ?, ?
psd22 dq ?, ?, ?, ?
psd23 dq ?, ?, ?, ?
psd24 dq ?, ?, ?, ?
psd25 dq ?, ?, ?, ?
psd26 dq ?, ?, ?, ?
psd27 dq ?, ?, ?, ?
psd28 dq ?, ?, ?, ?
psd29 dq ?, ?, ?, ?
psd30 dq ?, ?, ?, ?
psd31 dq ?, ?, ?, ?
psd0 rq 4
psd1 rq 4
psd2 rq 4
psd3 rq 4
psd4 rq 4
psd5 rq 4
psd6 rq 4
psd7 rq 4
psd8 rq 4
psd9 rq 4
psd10 rq 4
psd11 rq 4
psd12 rq 4
psd13 rq 4
psd14 rq 4
psd15 rq 4
psd16 rq 4
psd17 rq 4
psd18 rq 4
psd19 rq 4
psd20 rq 4
psd21 rq 4
psd22 rq 4
psd23 rq 4
psd24 rq 4
psd25 rq 4
psd26 rq 4
psd27 rq 4
psd28 rq 4
psd29 rq 4
psd30 rq 4
psd31 rq 4
rb 1024
ends