-
Notifications
You must be signed in to change notification settings - Fork 27
storage_fix8a #61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
storage_fix8a #61
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,172 @@ | ||||||||||||||||||
| # Storage Drivers for ARM64 Non-DMA-Coherent Devices | ||||||||||||||||||
|
|
||||||||||||||||||
| The NVMe and AHCI drivers that come with Windows only work on devices with | ||||||||||||||||||
| cache-coherent DMA access. Some low-cost ARM64 devices (Raspberry Pi 5, NXP | ||||||||||||||||||
| i.MX 8M, Orange Pi 5) do not have cache-coherent DMA access. On these devices, | ||||||||||||||||||
| access to NVMe or AHCI storage will usually hang the device. | ||||||||||||||||||
|
|
||||||||||||||||||
| This package includes drivers that have been patched to work around this | ||||||||||||||||||
| limitation. | ||||||||||||||||||
|
|
||||||||||||||||||
| - storahci.sys fixes hangs on AHCI (SATA) storage. | ||||||||||||||||||
| - stornvme.sys fixes hangs on NVMe storage. | ||||||||||||||||||
|
|
||||||||||||||||||
| Drivers patched by Doug Cook (https://github.com/idigdoug). | ||||||||||||||||||
|
|
||||||||||||||||||
| Please report issues here: | ||||||||||||||||||
| [Rockchip-Windows-Drivers](https://github.com/worproject/Rockchip-Windows-Drivers/issues) | ||||||||||||||||||
|
|
||||||||||||||||||
| ## Installation | ||||||||||||||||||
|
|
||||||||||||||||||
| To install this package, you must set the Windows installation to test-mode | ||||||||||||||||||
| (to allow test-signed drivers) and then you must overwrite the corresponding | ||||||||||||||||||
| driver in C:\Windows\System32\Drivers, e.g. using a system-file update tool | ||||||||||||||||||
| like sfpcopy. | ||||||||||||||||||
|
|
||||||||||||||||||
| ## Known issues | ||||||||||||||||||
|
|
||||||||||||||||||
| These patches are not perfect and you may still encounter issues. | ||||||||||||||||||
|
|
||||||||||||||||||
| ## storahci.sys: corrupt SMART data or crash in disk.sys | ||||||||||||||||||
|
|
||||||||||||||||||
| [Tracked with issue 59](https://github.com/worproject/Rockchip-Windows-Drivers/issues/59) | ||||||||||||||||||
|
|
||||||||||||||||||
| Even with this fix applied, AHCI drives may still return corrupt data for SMART | ||||||||||||||||||
| requests. This is very rare for the on-chip AHCI controller but happens quite | ||||||||||||||||||
| frequently for AHCI controllers in PCIe slots. | ||||||||||||||||||
|
|
||||||||||||||||||
| - On Windows builds 27765 or later, this results in invalid SMART results. | ||||||||||||||||||
|
|
||||||||||||||||||
| - On Windows builds before 27765, this will frequently result in a blue-screen | ||||||||||||||||||
| crash in disk.sys. | ||||||||||||||||||
|
|
||||||||||||||||||
| The problem is caused by an issue in storport.sys that we cannot work around | ||||||||||||||||||
| in the storahci.sys driver. | ||||||||||||||||||
|
|
||||||||||||||||||
| There is no good workaround. The only way to avoid the crash is to use Windows | ||||||||||||||||||
| build 27765 or later or to not use PCIe-attached SATA controllers. | ||||||||||||||||||
|
|
||||||||||||||||||
| ## stornvme.sys: unresponsive system or DPC Watchdog Violation | ||||||||||||||||||
|
|
||||||||||||||||||
| [Tracked with issue 60](https://github.com/worproject/Rockchip-Windows-Drivers/issues/60) | ||||||||||||||||||
|
|
||||||||||||||||||
| Even with this fix applied, high-performance NVMe SSDs may cause the system to | ||||||||||||||||||
| become temporarily unresponsive or may trigger a "DPC Watchdog Violation" | ||||||||||||||||||
| blue-screen crash when an NVMe controller is under heavy I/O load, e.g. during | ||||||||||||||||||
| prolonged benchmarks or stress testing. | ||||||||||||||||||
|
|
||||||||||||||||||
| We believe this problem occurs because the SSD works too quickly for the system | ||||||||||||||||||
| to keep up when operating in legacy PCIe interrupt mode. In this mode, all of the | ||||||||||||||||||
| data produced by the NVMe is processed by a single CPU. If the CPU is kept 100% | ||||||||||||||||||
| busy with NVMe data for too long, other tasks that the CPU is responsible for | ||||||||||||||||||
| handling will not get done. Eventually, Windows notices a problem and the system | ||||||||||||||||||
| crashes. | ||||||||||||||||||
|
|
||||||||||||||||||
| This is a complicated issue and we don't yet have a perfect fix for it. To find | ||||||||||||||||||
| the right solution, we need more information -- we need more people to try various | ||||||||||||||||||
| solutions to see which ones help and which ones don't work. | ||||||||||||||||||
|
|
||||||||||||||||||
| - If you find a solution that works, please share your experience in | ||||||||||||||||||
| [github issue 60](https://github.com/worproject/Rockchip-Windows-Drivers/issues/60). | ||||||||||||||||||
| - If you find that even after trying the solutions below, you still have problems, | ||||||||||||||||||
| please share details about your experience in | ||||||||||||||||||
| [github issue 60](https://github.com/worproject/Rockchip-Windows-Drivers/issues/60), | ||||||||||||||||||
|
Comment on lines
+70
to
+73
|
||||||||||||||||||
| [github issue 60](https://github.com/worproject/Rockchip-Windows-Drivers/issues/60). | |
| - If you find that even after trying the solutions below, you still have problems, | |
| please share details about your experience in | |
| [github issue 60](https://github.com/worproject/Rockchip-Windows-Drivers/issues/60), | |
| [GitHub issue 60](https://github.com/worproject/Rockchip-Windows-Drivers/issues/60). | |
| - If you find that even after trying the solutions below, you still have problems, | |
| please share details about your experience in | |
| [GitHub issue 60](https://github.com/worproject/Rockchip-Windows-Drivers/issues/60), |
Copilot
AI
Mar 16, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider capitalizing 'GitHub' instead of 'github' in this context.
Suggested change
| in the above github issue.) | |
| in the above GitHub issue.) |
Binary file not shown.
Binary file not shown.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider capitalizing 'GitHub' instead of 'github' in the link text.