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
13f65bea18
ignore: *.py
2024-07-30 11:32:19 -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
835840231f
more code removal
2024-07-23 14:14:43 -04:00
39dcfd2edc
perf: remove some unneeded code bloat
2024-07-23 14:10:42 -04:00
1b88a4ff17
feat: add in write to disk functions and remove unnecessary div in nvme_init
2024-07-23 13:04:52 -04:00
e3241e35cc
perf(size): remove useless pow2 implementation
2024-07-22 14:19:54 -04:00
1ea8733a66
fix: PRP list creation bug
2024-07-21 17:08:51 -04:00
1599185ef4
fix(nvme_readwrite): free allocated PRP list after I/O command completion
2024-07-21 14:21:10 -04:00
7e71c33f3f
fix: nvme_readwrite and build_prp_list
...
This fixes the number of PRPs calculation before build_prp_list is
invoked. It also accounts for the fact that the NLB field in the NVMe
I/O read and write commands is a 0-based value, unlike numsectors.
start_sector is also converted into the appropriate LBA number as it
should be before sending the I/O command.
2024-07-21 14:14:04 -04:00
bb952838ca
fix: DiskAdd string
2024-07-20 17:20:32 -04:00
0eea7a6130
refactor: tweak some things
...
First of all, the driver will now abort initialization if it encounters
the first found namespace LBADS is not 512, since KolibriOS doesn't
support a LBADS greater than 512 as of now.
This commit also removes verbose debug logs and adds appropriate error
codes to nvme_readwrite
2024-07-20 16:38:12 -04:00
c21376dde4
add IOCTL error codes
2024-07-18 17:58:15 -04:00
9632b2841d
fix: apply PRP offset error fix
2024-07-18 17:24:28 -04:00
1e315791fb
fix: PRP list allocation
2024-07-18 17:01:26 -04:00
b88c5185a7
fix: get correct physical address of PRP2
2024-07-18 15:17:27 -04:00
a1639a3b9b
more fixes in alloc_dptr
2024-07-12 15:38:45 -04:00
48fef9b8d7
fix PRP2 alignment
2024-07-12 14:03:19 -04:00
a8aafb415f
fix: initialize prp_list before PRPs
2024-07-12 13:59:54 -04:00
e9de569036
apply some fixes
2024-07-12 13:55:44 -04:00
87fa0e0e3f
refactor build_prp_list and remove free_prp_list
2024-07-12 13:33:26 -04:00
52831db8f8
fix call to alloc_dptr
2024-07-11 17:03:39 -04:00
8eb5990c32
remove a lot of code, refactor alloc_dptr to use buf directly
2024-07-11 17:02:30 -04:00
becabd38b5
fix more stuff
2024-07-11 16:19:42 -04:00
7181653389
fix(build_prp_list): add correct return value
2024-07-11 13:39:05 -04:00
8101007350
perf: dont use recursion for build_prp_list + remove redundant calls
2024-07-11 13:37:05 -04:00
1f5815351c
fix(nvme_readwrite): make numsectors 0 if no sectors were written
2024-07-11 12:21:04 -04:00
b57c530854
feat: get reading from PRP2 entry working
2024-07-09 16:48:39 -04:00
f3a8ed0f6f
feat: get reading from single prp entry working
2024-07-09 15:43:45 -04:00
405dcb5155
more fixes to nvme_io_rw, alloc_dptr, write_prp_buf (2)
2024-07-09 14:51:48 -04:00
c9143ca99d
more fixes to nvme_io_rw and alloc_dptr
2024-07-09 13:38:55 -04:00
66d24f8e49
fix(nvme_readwrite): PRP2 checking
2024-07-08 16:30:29 -04:00
b21f83fef0
refactor: replace memset with memsetdz
2024-07-08 15:49:43 -04:00
87afd80486
fix writing to PRP entries
2024-07-08 14:49:43 -04:00
092c655593
another indentation fix
2024-07-05 17:30:22 -04:00
f93b16f3bd
style: fix indentation
2024-07-05 17:27:38 -04:00
14f01df0f7
style: fix indentation
2024-07-05 17:11:51 -04:00