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
2f7fd1e65f
add kolibri.img
2024-08-03 15:07:18 -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
d36f13f7af
fix: initialize command mutexes correctly
2024-08-01 12:08:41 -04:00
0cbf662a9f
perf: use memcpyd instead of memcpy
2024-08-01 12:02:07 -04:00
7cc1601d90
add assertions to make sure submission and completion queue sizes are the same
2024-07-31 16:05:55 -04:00
e9f371d20b
fix: assign CDW10.QSIZE in create I/O queues to correct value
2024-07-31 15:48:38 -04:00
1463187a62
add debug message for showcasing CAP.MQES
2024-07-31 15:36:37 -04:00
9998faa834
build: add proper nvme.asm dependencies
2024-07-31 15:26:06 -04:00
edafe73367
rename: lib.asm -> lib.inc
2024-07-31 15:25:23 -04:00
e8a5910681
refactor: move NVMe commands to a separate file
2024-07-31 15:24:54 -04:00
534103061c
important bug fix and some micro optimizations
...
As for the fix, the submission queues weren't properly being zeroed out
due to a small typo. The other stuff has some commented out stuff that
I'm currently debugging and working on.
2024-07-31 15:11:21 -04:00
a88a44c627
initialize command entries
2024-07-30 17:22:28 -04:00