none
How to disable NCQ of Microsoft AHCI driver on Windows8

    Question

  • Dear All,

    I am updating a filter driver from Windows7 to Windows8.

    This filter driver provides some special interfaces for application.

    For example, start software serialization. The serailzie IRP (I/O request package) can cancel "NCQ" function of AMD AHCI driver or Intel AHCI driver.

    But For Microsoft AHCI driver, we cancel "NCQ" by modifying regedit key.  The detail steps are:

    1. Add one key, "Controller0", under the service item, "msahci".

    2. Add a Binary value to the new created key, name it as "NcqDisabled", and set it as "1".

    3. Restart OS.

    All the functions of the updated filter driver (for Windows8) can work as windows7.

    Unluckily, I cannot cancel  "NCQ" of new Microsoft AHCI driver, storahci.sys by using old solution. My deatil steps are:  

    1. Add one key, "Controller0", under the service item, "storahci".

    2. Add a Binary value to the new created key, name it as "NcqDisabled", and set it as "1".

    3. Restart OS.

    Now I am reading Windows8 AHCI WDK sample code, and try to find related information.

    Are there anybody know about this?

    Please give me some advances if possible!

    Thanks in ahead!

    Best Regards,

    xptx

    Thursday, May 17, 2012 9:06 AM

Answers

  • First, why in the world would you want to disable SATA NCQ?  And did you really use a filter driver to issue an IOCTL that could be issued from a UM app?

    Assuming you have a good reason, have you looked in the device properties for the disk or the channel to which it is attached to see if there is a property sheet that allows you to turn off NCQ like you can turn off write caching?

    Second, if you have a filter driver, why not just serialize IOs yourself?

    Thursday, May 17, 2012 3:37 PM

All replies

  • First, why in the world would you want to disable SATA NCQ?  And did you really use a filter driver to issue an IOCTL that could be issued from a UM app?

    Assuming you have a good reason, have you looked in the device properties for the disk or the channel to which it is attached to see if there is a property sheet that allows you to turn off NCQ like you can turn off write caching?

    Second, if you have a filter driver, why not just serialize IOs yourself?

    Thursday, May 17, 2012 3:37 PM
  • >First, why in the world would you want to disable SATA NCQ? 

    In fact, I expect that AHCI driver can work well and sent unload immediate command quickly when our filter driver  sends the command to pack HDD head (it may get shock message from BIOS). Luckily, MS AHCI driver can work well if NCQ is disabled, and the command can be executed quickly as our spec.

    >And did you really use a filter driver to issue an IOCTL that could be issued from a UM app?

    I am not sure what you mean.

    Assuming you have a good reason, have you looked in the device properties for the disk or the channel to which it is attached to see if there is a property sheet that allows you to turn off NCQ like you can turn off write caching?

    Actually, HDD performance lost is unconspicuous when NCQ is disabled.

    And we disbale NCQ as description of MS AHCI sample code in WDK.

    Best Regards,

    xptx 

    Saturday, May 26, 2012 5:20 AM