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

117 Commits

Author SHA1 Message Date
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
cec15b9114 add get_log_page (incomplete) 2024-06-08 12:25:29 -04:00
04f89899de rename: LPI to LID 2024-06-06 14:25:24 -04:00
1444ffc605 add log page identifier constants 2024-06-06 14:22:32 -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
8b8dca1c05 add NSGRANLS struct and controller version constants 2024-06-06 13:28:02 -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