2
0
mirror of https://git.missingno.dev/kolibrios-nvme-driver/ synced 2024-12-23 06:18:47 +01:00
Commit Graph

168 Commits

Author SHA1 Message Date
becabd38b5 fix more stuff 2024-07-11 16:19:42 -04:00
7181653389 fix(build_prp_list): add correct return value 2024-07-11 13:39:05 -04:00
8101007350 perf: dont use recursion for build_prp_list + remove redundant calls 2024-07-11 13:37:05 -04:00
1f5815351c fix(nvme_readwrite): make numsectors 0 if no sectors were written 2024-07-11 12:21:04 -04:00
b57c530854 feat: get reading from PRP2 entry working 2024-07-09 16:48:39 -04:00
f3a8ed0f6f feat: get reading from single prp entry working 2024-07-09 15:43:45 -04:00
405dcb5155 more fixes to nvme_io_rw, alloc_dptr, write_prp_buf (2) 2024-07-09 14:51:48 -04:00
c9143ca99d more fixes to nvme_io_rw and alloc_dptr 2024-07-09 13:38:55 -04:00
66d24f8e49 fix(nvme_readwrite): PRP2 checking 2024-07-08 16:30:29 -04:00
b21f83fef0 refactor: replace memset with memsetdz 2024-07-08 15:49:43 -04:00
87afd80486 fix writing to PRP entries 2024-07-08 14:49:43 -04:00
092c655593 another indentation fix 2024-07-05 17:30:22 -04:00
f93b16f3bd style: fix indentation 2024-07-05 17:27:38 -04:00
f689eb5b2c feat: add read functionality (to be tested) 2024-07-05 16:02:11 -04:00
b6e6a69de7 implement allocating and freeing PRP lists 2024-07-05 14:05:52 -04:00
d4bb46c00b some refactoring and fixes 2024-07-04 14:42:06 -04:00
b011dae650 refactor: build PRP list in separate function 2024-07-03 16:44:23 -04:00
06c0abac6a wip: implement code for allocating PRP entries and lists 2024-07-03 15:53:32 -04:00
038e994d48 refactor: replace jl/jg with jb/ja respectively 2024-07-03 12:36:31 -04:00
5f2adab1ab wip: read command 2024-07-01 17:10:36 -04:00
383190e462 feat: implement I/O read command 2024-07-01 13:56:00 -04:00
2d1e0d4aa4 fix: write command and nvme_cmd_wait hanging 2024-07-01 13:34:12 -04:00
76f94d74e1 nvme_init: check MQES 2024-06-27 19:19:06 -04:00
274a5681a2 more I/O command fixes 2024-06-27 18:31:51 -04:00
1f4b25a309 more fixes 2024-06-27 17:10:25 -04:00
34ff6d786e fix: initialize I/O queues correctly 2024-06-27 15:55:29 -04:00
5bc4a832f1 feat: add support for consuming completion queues entries from multiple queues 2024-06-27 15:19:32 -04:00
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
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
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
43deaa0e59 feat: implement determine_active_nsids 2024-06-22 14:32:54 -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
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
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
c177893309 apply some fixes for submitting admin commands 2024-06-08 14:32:25 -04:00
cec15b9114 add get_log_page (incomplete) 2024-06-08 12:25:29 -04:00
d5a4850be7 style: rename pcidev.mmio_ptr to pcidev.io_addr 2024-06-06 14:00:10 -04:00
654b095d6f add assertions for nvme_identify and wip implementation of create_namespace 2024-06-06 13:28:31 -04:00
f4ded13c9a feat: implement set_features and abort 2024-06-06 12:43:57 -04:00
a693301a4c fix: set SQ_ENTRY.CDW0 to valid value in commands 2024-06-04 16:12:19 -04:00
c74cff54cb add set_cdw0 proc 2024-06-04 16:06:32 -04:00
786f696de8 feat: implement get_features 2024-06-04 15:43:12 -04:00
ee43919267 feat: implement delete_io_submission_queue and delete_io_completion_queue 2024-06-04 15:09:39 -04:00
021012d350 feat: implement create_io_submission_queue 2024-06-04 15:02:44 -04:00
2b9f8d7f37 feat: implement create_io_completion_queue 2024-06-04 14:44:06 -04:00
80eac9303c remove unused code and fix sqytdbl_write 2024-06-04 13:47:08 -04:00
4041563623 fix embarassing bugs 2024-06-03 16:49:42 -04:00
09aa423d8d fix: irq_handler 2024-06-03 14:28:35 -04:00
356350e593 wip: implement IRQ 2024-06-03 14:14:59 -04:00
7393da0eb5 wip: submit command support 2024-06-03 12:02:36 -04:00
a0cc2ec6a5 add sqytdbl_write and cqyhdbl_write 2024-05-30 17:11:24 -04:00
1197535b9c attach interrupt handler 2024-05-30 16:06:50 -04:00
685d2c3f1f map ACQ and ASQ 2024-05-30 14:21:45 -04:00
f5534dbdcf remap entire MMIO 2024-05-29 19:29:01 -04:00
cbae10b5be fix(pow2): add label 2024-05-29 15:57:45 -04:00
cde3e5b9f8 perf(pow2): remove loop 2024-05-29 15:56:56 -04:00
8620d5f2a0 remove: proc get_dstrd 2024-05-29 15:45:07 -04:00
e25a3cd92a wip: remap entire MMIO 2024-05-29 15:43:14 -04:00
ff1ebbc7c6 add more struct fields and change NVM_ASQS value 2024-05-28 17:55:06 -04:00
3124682b45 fix(nvme_identify): error 2024-05-28 15:02:24 -04:00
f372a0c9dd minor tweaks 2024-05-28 15:01:25 -04:00
a181eccd9c fix: allocate appropriate number of pages 2024-05-28 12:26:27 -04:00
e7e5ac98f0 minor performance tweaks and fixes 2024-05-26 17:19:25 -04:00
ae943e89d7 feat: implement nvme_controller_start 2024-05-26 17:02:56 -04:00
a57d980846 finish controller configuration 2024-05-26 16:54:59 -04:00
46076ba2f0 fix: indentation 2024-05-26 13:24:34 -04:00
d172666be2 wip: setup controller configuration 2024-05-25 20:37:42 -04:00
a940d7e963 add more debug messages 2024-05-25 19:26:51 -04:00