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
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
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
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
1463187a62
add debug message for showcasing CAP.MQES
2024-07-31 15:36:37 -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
6a8ab65661
another bug fix (2)
2024-07-30 15:09:49 -04:00
25ee3eb491
another bug fix
2024-07-30 14:59:46 -04:00
c3901b163e
bug fixes
2024-07-30 14:38:53 -04:00
dd4db45869
fix: use correct NVMe disk parameter
2024-07-30 13:52:37 -04:00
362a97ab12
chore: remove useless constants
2024-07-30 13:49:27 -04:00
6262634324
feat: implement support for multiple NVMe drives
2024-07-30 13:48:50 -04:00
0d7f6b1c8f
misc: set vim syntax to fasm
2024-07-30 12:39:00 -04:00
d153c63abb
remove CNS byte check in nvme_identify
2024-07-30 11:31:51 -04:00
c9e138d89f
add verbose debug logs in nvme_init
2024-07-27 12:16:56 -04:00
bee583765f
disable MSI interrupts if present
2024-07-26 14:42:46 -04:00
3d78f22409
make sure interrupts are enabled in PCI header
2024-07-26 13:14:50 -04:00
18b76f70b2
fix(nvme_poll): jump after timeout
2024-07-26 06:14:45 -04:00
7c4626b5f1
fix: initialize NSINFO.nsid in nvme_init
2024-07-25 18:50:01 -04:00
4b9fe7f4c0
significant refactoring
...
* Removed useless `nvme_wait` call
* Remove phase tag bit check in favor of spinlock checking
* Added back in queue wrapping (though, it still needs work)
* Fix in `is_queue_full` which didn't pop bx off the stack when
returning in some circumstances
2024-07-25 18:34:54 -04:00
01fc77ba69
refactor: print controller version during initialization
2024-07-25 14:14:29 -04:00
6c120b8767
add TODO
2024-07-23 19:43:37 -04:00
a5c1920c0e
more bloat removal
2024-07-23 14:59:08 -04:00