Commit Graph

81 Commits

Author SHA1 Message Date
bjorn3 67d3015e2e Add helper for allocating a single MSI/MSI-X interrupt vector
It doesn't actually configure the device to emit it though, but does
make this easier to do.
2024-01-25 14:43:44 +01:00
bjorn3 9b809312c2 Ignore MSI-X PBA in all drivers
It isn't used in any driver and even on Linux no driver seems to use it
at all. The only times it seems to be useful are if you were to mask an
interrupt and want to check if the interrupt fired without unmasking or
if you want to make the device itself trigger an interrupt.
2024-01-24 14:28:40 +01:00
bjorn3 7dbf22331b Share msix config validation code 2024-01-24 14:28:40 +01:00
bjorn3 77b97bb2ed Introduce PciBar::physmap_mem helper 2024-01-23 12:02:40 +01:00
bjorn3 c13161c4a5 Fix nvmed 2024-01-22 19:57:24 +01:00
bjorn3 ad23ad5d93 Introduce irq_handle helper for legacy interrupts 2024-01-22 19:35:18 +01:00
bjorn3 bd6716efe4 Make legacy_interrupt_line an Option
Drivers don't need to know the exact legacy_interrupt_pin in use.
Just if legacy interrupts are enabled and if so which
legacy_interrupt_line is used.
2024-01-22 19:35:06 +01:00
bjorn3 a5d0c7c354 Use pci_types for reading BARs
This simplifies a lot of code and adds support for 64bit BARs.
2024-01-22 15:54:18 +01:00
bjorn3 5192816de7 Introduce expect_port and expect_mem helpers 2024-01-21 21:12:24 +01:00
bjorn3 2b5ed69a06 Use PciAddress in a couple more places 2024-01-19 12:40:54 +01:00
4lDO2 0d99333c3f Remove PhysBox. 2023-12-12 12:03:03 +01:00
4lDO2 a6fee75f15 Phase out / in scheme names. 2023-11-09 14:39:57 +01:00
Jeremy Soller f228483f1f ahcid, nvmed: support MMIO on 32-bit systems 2023-09-09 12:15:07 -06:00
Jeremy Soller 61e9512468 Update redox_syscall to 0.4 2023-09-07 20:49:37 -06:00
4lDO2 d9d8d06d33 Use common::Dma in nvmed. 2023-07-18 12:45:03 +02:00
4lDO2 6e94a9e236 Remove physmap for disk drivers. 2023-07-18 11:01:16 +02:00
Jeremy Soller 5256a9af47 nvmed: enable async feature 2023-07-17 19:51:53 -06:00
4lDO2 a5a3f3341f Remove all usages of physunmap. 2023-06-11 11:33:27 +02:00
Jeremy Soller b6321aa764 nvme: logging adjustments 2023-02-15 19:34:05 -07:00
Jeremy Soller 625064004d Update for new Rust nightly 2023-02-11 14:37:22 -07:00
Jeremy Soller ee03583b58 Prevent drives from being opened more than once 2023-01-11 21:34:33 -07:00
Jeremy Soller d42f626808 nvmed: Yield instead of spin when waiting for submission queue item 2022-11-27 09:25:03 -07:00
Jeremy Soller ae66182c4e Name disk driver log files based on scheme name 2022-09-09 08:51:02 -06:00
Jeremy Soller 3ed83c74cf Workaround for real hardware prp issue 2022-09-07 12:01:15 -06:00
Jeremy Soller fe13ea390a Add feature for nvmed to not use reactor thread 2022-08-31 10:53:21 -06:00
Jeremy Soller 0e85c01ea3 Implement 64-bit BARs 2022-08-31 08:46:53 -06:00
Jeremy Soller efab53910e Return error on nvme completion status 2022-08-30 11:59:10 -06:00
Jeremy Soller 55526d6ab0 Do not set SGL flag, we only use PRP 2022-08-30 11:51:00 -06:00
Jeremy Soller 3379a64258 Fix for last nvmed commit 2022-08-30 10:15:26 -06:00
Jeremy Soller 50338d9b24 Remove unnecessary event queue from nvmed 2022-08-30 09:56:12 -06:00
4lDO2 af873f7626 Update redox_syscall dependency. 2022-07-27 17:55:39 +02:00
4lDO2 21e30b7339 Replace syscall::clone() with libc::fork(). 2022-07-27 16:25:01 +02:00
Jeremy Soller 00de428d6b Workarounds for x86 32-bit 2022-07-26 17:20:34 -06:00
Jeremy Soller da8ecef8a7 Workarounds for aarch64 support 2022-07-26 16:11:45 -06:00
Jeremy Soller 860821c150 Support compilation on more architectures 2022-07-26 16:01:54 -06:00
4lDO2 07f10fb4d1 Update redox_syscall to v0.2.12 2022-03-24 16:06:00 +01:00
Jeremy Soller 88a6eb17e9 Make nvmed less async, reduces hangs 2022-02-11 14:26:21 -07:00
Jeremy Soller a1d8b81428 Increase NVME debug level 2022-02-11 11:00:50 -07:00
Jeremy Soller 544f1cbebc nvmed,xhcid: print BAR number 2022-02-11 10:44:38 -07:00
Jeremy Soller b9d6ca7db5 nvmed: panic if BAR is 0 2022-02-11 10:41:56 -07:00
4lDO2 7a2b3d7656 Update dependencies. 2021-06-17 18:18:27 +02:00
Jeremy Soller be101621cc Update to newer syscall 2020-08-02 15:25:03 -06:00
4lDO2 6bd4bb814f Support xHCs that only support 32-bit physical addresses. 2020-06-18 19:17:20 +00:00
4lDO2 07b1fe79fa Cleanup, and remove trace log writes for nvmed. 2020-05-03 16:33:56 +02:00
4lDO2 938cce8c8c make qemu_nvme works!
only cleanup left...
2020-05-03 16:02:23 +02:00
4lDO2 3558397859 ASYNC COMMAND SUBMISSION WORKS (partially). 2020-05-03 15:47:09 +02:00
4lDO2 cea6ce7d7a Move the setrens to a later position, in nvmed. 2020-05-02 00:05:04 +02:00
4lDO2 2db3bf4689 Read real block sizes. 2020-05-01 20:00:24 +02:00
4lDO2 1936f05030 NVME WORKS WITH IRQs 2020-05-01 14:14:47 +02:00
4lDO2 64e9eea9b0 Implement asynchronous command __submission__.
Note that by writing submission, I'm referring to blocking until a
submission queue has more entries available. The command completion
handling is already async.
2020-05-01 13:14:31 +02:00