Download Latest Version AHCI_NVME_V1.4_20181027.rar (406.8 kB)
Email in envelope

Get an email when there's a new version of Grub4DOS AHCI / NVMe patch

Home
Name Modified Size InfoDownloads / Week
ReadMe.txt 2018-11-10 6.3 kB
grub4dos_0.4.5c_svn_revision_359_source.rar 2018-11-10 1.6 MB
AHCI_NVME_V1.4_20181027.rar 2018-10-27 406.8 kB
AHCI_V1.3_20140601.rar 2014-06-01 297.0 kB
AHCI_V1.2_20140209.rar 2014-02-23 262.3 kB
AHCI_20131014.rar 2013-10-15 262.7 kB
AHCI_20131012.rar 2013-10-15 262.4 kB
Totals: 7 Items   3.1 MB 9

Grub4DOS AHCI / NVMe speed patch for memory maps
--------------------------------------------------

This package includes the following directories:
- bin -> compiled grldr version 0.4.5c with AHCI / NVMe support
- patch -> ahcinvme.patch for updating stock grub 0.4.5c source code
- src -> all changed and additional source code files used with grub 0.4.5c

The AHCI and NVMe support can be enabled by using the additional grub menu commands "ahci"
and "nvme". We can set the following parameters with the new commands:

ahci --set-drive=DRIVE --set-controller=CONTR --set-port=PORT [--showall] [--showselected]
nvme --set-drive=DRIVE --set-controller=CONTR [--showall] [--showselected]

Using these commands searches PCI configuration space for all present AHCI / NVMe controllers.
After setting this option every read to DRIVE is redirected to the selected AHCI / NVMe
controller. The CONTR and PORT arguments start at zero, where 0 corresponds to the 1st present
AHCI / NVMe controller / port found. If the option --showall is used, all AHCI / NVMe
controllers, ports and connected devices are displayed. If the option --showselected is used,
the selected AHCI / NVMe controller, port and connected device is displayed. The argument
--uninit uninitializes all AHCI / NVMe controllers. This command was implemented to speed up
transfer rates if an image file is loaded from an AHCI / NVMe SSD and mapped to RAM.

The AHCI / NVMe support can not be disabled anymore during compile with the configure command.
We removed this feature to make the code simpler.

The standard read block size is now always 32 MB, because this is the maximum data transfer
size we can get from an AHCI hard disk device at issuing one read command. If an image file
is mapped to RAM we get a speed of 550 MB/s with a Samsung 840 Pro SSD and 3 GB/s for a
Samsung 960 EVO NVMe SSD.

Pay attention that this AHCI / NVMe addition is only useful if you load the images from SSD to RAM.
Loading a disk image directly or using a normal platter HDD does not increase the read speed much.
Use this patch with care on your own risk!

Because we added some parameters to the AHCI and NVMe command line we wanna show you two sample
menu entries for both RAM disk mappings:

title Win10 - RAMDISK AHCI
ahci --set-drive=0x80 --set-controller=0 --set-port=0 --showselected
find --set-root --ignore-floppies /win10.vhd
map --mem /win10.vhd (hd0)
map --hook
ahci --uninit
root (hd0,0)
chainloader /bootmgr

title Win10 - RAMDISK NVMe
nvme --set-drive=0x80 --set-controller=0 --showselected
find --set-root --ignore-floppies /win10.vhd
map --mem /win10.vhd (hd0)
map --hook
nvme --uninit
root (hd0,0)
chainloader /bootmgr

You should always include the new "--uninit" parameter directly after the "map --hook" command.
This stops the redirection of drive 0x80 (hd0) to the AHCI / NVMe read procedure. The drive
number should always match the real BIOS drive number for the system, otherwise the system may
hang.

Many thanks to all the developers and forum members of reboot pro for making it possible to boot
a full-sized Windows from RAM and harddisk image.

Greets
Kai Schtrom


Changes V1.1
--------------

- AHCI controller hang in AHCI read mode on last block of memory mapped image
  On some AHCI controllers we got problems with the last block of a memory
  mapped disk image that was not 32 MB in size. The controller hangs the system
  at reading this block. I think this is related to the fact that in version
  V1.0 we only read 32 MB blocks in AHCI mode and read the last block with the
  build in BIOS INT13 function. This seems to hang some computers.


Changes V1.2
--------------

- AMD AHCI controller hang at identify device command
  For some if not all AMD AHCI controllers the identify device command hangs
  the controller if the data byte count of the PRDT is equal to the real
  transfer size of 0x200. We should set this field always one less than the
  transfer byte count. For identify device command we now use 0x1FF as PRDT
  data byte count.


Changes V1.3
--------------

- HP Intel AHCI controller hang at device enumeration
  For some Intel AHCI controllers on HP machines the controller hangs at device
  enumeration. We restructered the AHCI code completely based on Microsoft's
  StorAhci StorPort Miniport Driver. The device detection and controller
  interaction should now work better than in previous versions.
- Grub4Dos AHCI manual command mode changed
  It is now possible to view the AHCI controller and the connected devices in
  manual command mode without entering the arguments "--set-controller" and
  "--set-port". You can enter the single argument "--showall" to see on which
  controller or port a HDD is connected.


Changes V1.4
--------------

- added NVMe support for faster mapping of image file to RAM disk
  With a Samsung 960 EVO NVMe SSD we get a transfer speed of 3 GB/s.
- Grub4Dos AHCI and NVMe command mode changed
  New possibility to enter the BIOS drive number for the AHCI and NVMe controller
  with the parameter "--set-drive". All reads to the selected BIOS drive number
  are redirected to the AHCI / NVMe controller. The default value is set to 0x80
  (the first hard disk). In versions before V1.4 this was hardcoded to 0x80. In
  addition we implemented the parameter "--uninit" to do an uninitialization of
  the AHCI / NVMe controller any time. Updated examples for the menu.lst file
  are included in the ReadMe.txt. The drive number should always match the real
  drive number in the system, otherwise the system may hang.


GRUB4DOS Code Base for the releases
-------------------------------------

The source code base used for all the releases is contained in the archive named
grub4dos_0.4.5c_svn_revision_359_source.rar. It was downloaded some time ago with
the following SVN command:
svn co -r 359 http://grub4dos-chenall.googlecode.com/svn/trunk grub4dos
The SVN repository with revision number 359 is no longer present, therefore I
uploaded it to make building your own GRUB4DOS loader based on my patches easier.
Pay attention that you will need the SVN package and release V1.4 to build the
GRUB4DOS loader with embedded AHCI / NVMe support.

Source: ReadMe.txt, updated 2018-11-10