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
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
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
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
0a2b3bfe9d
remove useless phase_tag field
2024-07-25 18:31:15 -04:00
80e64d4d70
add LOCK_SPINLOCK macro
2024-07-25 18:30:28 -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