ef8087f2fd
fix: mask interrupts for I/O queue 1
2024-06-27 15:13:37 -04:00
6c82778503
tidyup IRQ handler, plus some other fixes
2024-06-27 15:12:52 -04:00
724dad7d69
build: include debugging recipe
2024-06-25 18:37:48 -04:00
7bba4781fb
feat: implement disk registering code
2024-06-25 18:37:04 -04:00
43f29c791a
add num
field to each detected NVMe device
2024-06-25 15:44:04 -04:00
f612befee6
implement reporting on namespace info
2024-06-25 15:24:52 -04:00
3db664b53e
feat: add function table and fix determine_active_nsids
2024-06-25 14:37:19 -04:00
b4d3c82480
fix: comment out excessive debug lines
...
Printing too many messages to the screen much causes KolibriOS to crash,
so we have to remove them for now
2024-06-25 14:29:09 -04:00
603a48e351
refactor: change NVM_ASQS
to 63
2024-06-25 14:28:29 -04:00
85bab62280
feat: implement is_queue_full
2024-06-24 17:37:56 -04:00
8f806cfb6f
lots of refactoring
2024-06-24 16:55:29 -04:00
7782f762ef
add IRQ completion queue head pointer wraparound and NSID identification
2024-06-24 14:53:15 -04:00
20b7315829
small changes to determine_active_nsids
2024-06-22 16:58:41 -04:00
0b16efacd3
separate determine_active_nsids
and is_active_namespace
2024-06-22 15:18:43 -04:00
1c69e25c2b
chore: add comments + save value of IDENTC.nn
2024-06-22 14:43:08 -04:00
bb59692ca4
add nn
field to pcidev
struct
2024-06-22 14:42:30 -04:00
43deaa0e59
feat: implement determine_active_nsids
2024-06-22 14:32:54 -04:00
d6f62cc4f3
add nsids
field to pcidev
struct
2024-06-22 14:32:40 -04:00
7e30ce5065
chore: check if nvme_init
returns an error
2024-06-21 18:33:24 -04:00
bd69938eb8
refactor: put nvme_cmd_wait
directly in sqytdbl_write
instead
...
This also fixes the strange crashing (I think... I have not been able to
replicate it) when creating the I/O queues, as I think what happens is
since I didn't wait for the I/O completion queue to be created, the CQID
may not be valid when creating the I/O submission queue which is why the
system weirded out like that.
2024-06-21 16:59:10 -04:00
2fc8e7f34e
perf: remove unneeded timeout code in controller reset/startup
...
Due to a misunderstanding, I thought the spec stated that you have to
wait for a specified duration after CSTS.RDY changes, but in reality
it's just the timeout value. I've included the timeout on debug builds
anyway just so you can see the messages it prints to the board without
dissapearing instantly.
2024-06-21 14:22:22 -04:00
5b1f690ef2
refactor: allocate ring buffers for submission/completion queues
2024-06-21 14:17:18 -04:00
a1a24073c3
chore: remove write_admin_cmd
2024-06-21 13:54:40 -04:00
38b93a8240
refactor: fix sqytdbl_write
and dont use write_admin_cmd
for admin command submissions anymore
2024-06-21 13:49:05 -04:00
c6c6aea5ea
feat: implement nvme_write
and sqytdbl_write
+ add TODOS
2024-06-21 13:33:32 -04:00
6360db0733
fix: remove long delay after set features cmd
...
This also fixes the `nvme_cmd_wait` function.
2024-06-20 18:31:31 -04:00
ca5ccaa86b
refactor(nvme_init): use separately allocated queue pointers instead of using dptr
2024-06-20 18:14:28 -04:00
0cb86ee2ab
refactor(nvme_init): pass nullptr
as parameter to set_features
...
Getting number of queues doesn't involve DPTR field in any way at all,
so no point in having it there.
2024-06-20 16:29:52 -04:00
528d469ab0
refactor: allocate sq_ptr/cq_ptr for each queue
2024-06-20 16:27:09 -04:00
2f07187623
fix fatal bugs in write_admin_cmd
and dont handle IRQs if they dont belong to the NVMe device
2024-06-20 15:55:32 -04:00
b0f9e47c9b
remove some debug messages
2024-06-19 13:50:54 -04:00
5974fc7fb0
feat: create I/O queues and fix other admin commands
2024-06-18 18:21:32 -04:00
abeaf82e38
feat: get set_features
working and improve IRQ handler
2024-06-14 20:26:41 -04:00
f1caae2a8c
refactor
2024-06-14 16:12:53 -04:00
2eb22ef14b
fix IRQ, set_features, abort command bugs
2024-06-13 14:09:13 -04:00
3b1028b5dd
add code for freeing cid slots
2024-06-13 13:53:59 -04:00
9c1147b31d
fix admin commands and auto assign CIDS
2024-06-13 12:46:34 -04:00
544565bde9
wip: controller initialization
2024-06-12 18:03:01 -04:00
5f43171b7e
add new fields and constants
2024-06-12 18:02:46 -04:00
569a11e64f
add lib.asm
2024-06-12 18:02:32 -04:00
8f67604ddf
lots of fixes
2024-06-12 15:47:32 -04:00
cc3e3f6ec4
refactor some stuff
2024-06-11 19:57:02 -04:00
4e9a9cc8c2
more refactoring and fixes
2024-06-09 18:13:01 -04:00
83004aca87
add NVM_QUEUE
struct
2024-06-09 18:12:45 -04:00
34bfcf8719
fix nvme_identify and irq_handler
2024-06-09 14:57:42 -04:00
dd3ebb1716
wip: add interrupt handling code
2024-06-09 13:07:01 -04:00
482d186c1a
change pcidev.dstrd
to byte
2024-06-09 13:06:40 -04:00
bc3435ad09
add new fields to pcidev struct
2024-06-08 14:32:36 -04:00
c177893309
apply some fixes for submitting admin commands
2024-06-08 14:32:25 -04:00
81a102ad6a
chore: set to filetype to asm in vim
2024-06-08 12:25:46 -04:00