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

251 Commits

Author SHA1 Message Date
3d95901b65
fix: allocate correct number of PRPs for PRP list 2024-08-26 17:19:26 -04:00
bd93b426c0
refactor: let FASM calculate LOG2(x) for us at compile time 2024-08-26 12:12:33 -04:00
e78be21c18
fix: shutdown all NVMe controllers 2024-08-23 12:21:36 -04:00
763bf37d29
fix(regression): freeze with multiple NVMe devices
Removing the PCI status bit check in the interrupt handler caused the
code to break and not work if there was more than one NVMe device
successfully attached. Not only does this commit fix this issue, but
this also adds a proper check to see if the device generated an
interrupt by checking if any commands have been posted to the completion
queue.
2024-08-23 12:08:00 -04:00
66c4c491d9
cqyhdbl_write: add TODO comment 2024-08-23 08:16:13 -04:00
7a82d090da
remove macros.inc 2024-08-23 07:55:07 -04:00
15b4b3ee81
apply some readability fixes 2024-08-21 13:34:09 -04:00
a2af5e16fe
remove unneeded comments 2024-08-21 13:30:22 -04:00
8f6182548f
fix: format PE DLL native 0.05
Adding this value reduces the number of false antivirus positives
2024-08-21 13:21:20 -04:00
70792a391a add docs to most functions 2024-08-18 14:02:10 -04:00
18a744742c refactor: dont print CSTS on shutdown 2024-08-18 12:19:59 -04:00
c5df463132 show CSTS during shutdown
I temporaily added this for easier debugging.
2024-08-13 20:12:39 -04:00
588d4a958c another fix for shutdown 2024-08-11 15:38:53 -04:00
96fcd601b3 fix: queue wrapping conditions 2024-08-11 14:37:51 -04:00
408a1c7f30 fix nvme_cleanup and add more debugging logs
This removes the memory allocation in nvme_cleanup as well. Since that
was causing problems at shutdown, for some reason. But now it does
correctly shutdown the controller.
2024-08-11 11:57:13 -04:00
39ad8d2f3a fix: add polling for I/O queue deletion 2024-08-11 07:14:57 -04:00
998d51f9e8 fix: shutdown freeze (#5) 2024-08-10 19:27:58 -04:00
24e79cddf0 nvme_cleanup: shutdown the controller 2024-08-10 17:17:04 -04:00
435dea90dc refactor: remove use of mutexes
We're not using asynchronous API at the moment anyways, so there's no
point in having them right now.
2024-08-10 13:32:31 -04:00
f98d3b95b6 fix: command wrapping 2024-08-10 13:06:40 -04:00
37b926d2e1 Merge master branch 2024-08-09 22:08:32 -04:00
efc5b95250 add verbose debug logs 2024-08-09 13:51:52 -04:00
aa0a75e715 fix: running LOADDRV on NVMe driver more than once (#2)
Credits to @Burer for finding this bug, and @Doczom for providing a
solution.
2024-08-09 13:17:39 -04:00
caf8e43513 remove useless exact alignment alloc 2024-08-08 18:37:05 -04:00
867a675261 remove interrupt status bit check in IRQ handler
Virtualbox doesn't even set the bit so for now I'm removing it until I
can think of a good solution to this problem.
2024-08-08 18:11:54 -04:00
d9e04ec7cd fix: set bus master, memory space access, and I/O space access bit in PCI command register 2024-08-08 15:23:39 -04:00
ef7f1d3459 lock and unlock mutex for asynchronous API 2024-08-08 13:03:52 -04:00
7be08b3e44 delete I/O queues when cleanup is called 2024-08-08 12:49:56 -04:00
f502f3cfaa perf: use bit shift instead of multiplication where possible 2024-08-08 12:34:24 -04:00
29f04eb37b style: remove comments and unused code 2024-08-06 12:46:40 -04:00
3c3bd6bd6f refactor: rename nvme_controller_reset and nvme_controller_start 2024-08-06 12:00:56 -04:00
b2b0ca743d refactor: use named constants for queue allocation 2024-08-06 11:52:04 -04:00
4cbae17ecf change NVM_ASQS from 64 to 256
No reason for this change other than to see if the Virtualbox controller
command problem goes away, since my guess is that if the queues are
right next to each other in physical memory, then it could perhaps work.
But this doesn't seem to be the case ATM.
2024-08-06 11:50:34 -04:00
4d3211604d refactor: change queue size from 63 to 64 2024-08-05 17:23:40 -04:00
511db105a9 fix: reduce timeout value and initialize ACQ and ASQ addresses properly 2024-08-05 17:22:53 -04:00
4ac6818567 style: show completion queue base address before submission queue 2024-08-05 16:22:04 -04:00
3dbcfa5bad fix: allocate queues next to eachother 2024-08-05 16:17:54 -04:00
8557d0a450 tidy up queue allocation 2024-08-05 12:49:35 -04:00
e2c2254a5b add more assertions 2024-08-05 11:37:41 -04:00
50c2dc9a05 debug: add submission queue write log 2024-08-04 12:34:10 -04:00
66de6fd7d6 fix(nvme_readwrite): add missing return 2024-08-04 11:57:01 -04:00
bd4bec5487 add print log to show if NVMe device was detected on the PCI bus 2024-08-03 13:18:06 -04:00
4a1f7a5475 fix: add check to make sure p_nvme_devices isnt null 2024-08-03 13:05:12 -04:00
b2f63c4997 refactor(nvme_cleanup): add proper cleanup 2024-08-02 14:01:20 -04:00
e1ad8f643d fix: dont load driver if no NVMe disk was successfully initialized 2024-08-02 13:37:32 -04:00
c9d58c1ec7 fix: add null terminator to IDENTC ASCII strings
This prevents garbage and redundant values from being printed to the
debug log.
2024-08-02 13:17:16 -04:00
0f140a9c90 chore: remove useless fields from pcidev struct 2024-08-02 13:16:09 -04:00
f40321f869 refactor: dont map MMIO registers twice 2024-08-02 12:54:41 -04:00
404f451e0c fix PRP list allocation regression 2024-08-01 13:49:18 -04:00
365ccac9eb fix regression 2024-08-01 12:25:30 -04:00