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