From c2d8abad58dce2f47fdae776f3769c1e717f7101 Mon Sep 17 00:00:00 2001 From: Abdur-Rahman Mansoor Date: Mon, 26 Aug 2024 20:10:57 -0400 Subject: [PATCH] add README.md --- README.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ea4bfb --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# KolibriOS NVMe Driver + +This project was developed by Abdur-Rahman Mansoor for Google Summer of Code 2024. However, it's still +being actively maintained. This driver should be compatible with all controller versions, but if you +an encounter a problem, please open an issue and let us know. + +The official repository is hosted on [KolibriOS](https://git.kolibrios.org/GSoC/kolibrios-nvme-driver) +so please open any issues or pull requests there. + +All files in this repository are licensed under GNU General Public License Version 2. See +the LICENSE file for more details. + +## Tested Hardware +* QEMU NVMe Controller (v1.4.0) +* Virtualbox NVMe Controller (v1.2.0) +* VMWare NVMe Controller (v1.3.0) + +## Implementation Status + +| Feature | Implemented | Description | +|------------------------------------|-------------|--------------------------------------------------------------------------------------------------| +| Mandatory Administrator Commands | Yes | A large majority of the mandatory administrator commands has been implemented. | +| Mandatory I/O Commands | Yes | Support for reading and writing to disk is implemented. | +| Namespace Identification | Yes | Support for identifying active namespaces across all controller versions is implemented. | +| MSI/MSI-X interrupts | No | Currently only traditional PIN interrupts can be used. | +| Asynchronous API | No | Currently the driver polls instead of using the asynchronous API of KolibriOS. | +| SMART/Health Information Reporting | No | Low priority, but a nice to have in the future. | + +## Building the Driver + +Please note that this normally isn't required. The images on KolibriOS's download page should include +the driver by default. Nonetheless, if you want to test the driver or need a new version that isn't +included in upstream yet, here are the steps on how to do so. + +First, ensure that you have the following +dependencies installed before continuing (installation process may vary depending on your operating system): +- **[Git](https://git-scm.com/downloads)** +- **[FASM (Flat Assembler)](https://flatassembler.net/download.php)** +- **[GNU Make](https://www.gnu.org/software/make/)** +- **[KPack (KolibriOS's LZMA compressor)](https://wiki.kolibrios.org/wiki/Kpack)** + +Once you have all the dependencies installed, follow these steps: + +1. Clone the repository: +```bash +git clone https://git.kolibrios.org/GSoC/kolibrios-nvme-driver +``` + +2. Change into the directory of the cloned repository and manually extract the latest KolibriOS images +from [the KolibriOS website](https://kolibrios.org/en/download.htm) into the cloned repository. + +3. Install the driver into the image: +```bash +make install +``` + +And you should be good to go.