Welcome to MSDN Blogs Sign in | Join | Help

Storage Query Property test

The storage query property test validates if the storage miniport driver is reporting the correct bus type and the storage controller is reporting the correct PCI class code.

 

The test sends the IOCTL_STORAGE_QUERY_PROPERTY with STORAGE_PROPERTY_ID set to StorageAdapterProperty/StorageDeviceProperty to get the device bus type from the storage miniport driver.  The miniport driver should report the correct bus type from the following bus type enumeration values

 

typedef enum _STORAGE_BUS_TYPE {

  BusTypeUnknown = 0x00,

  BusTypeScsi = 0x01,

  BusTypeAtapi = 0x02,

  BusTypeAta = 0x03,

  BusType1394 = 0x04,

  BusTypeSsa = 0x05,

  BusTypeFibre = 0x06,

  BusTypeUsb = 0x07,

  BusTypeRAID = 0x08,

  BusTypeiSCSI = 0x09,

  BusTypeSas = 0x0A,

  BusTypeSata = 0x0B,

  BusTypeMaxReserved = 0x7F

} STORAGE_BUS_TYPE,  *PSTORAGE_BUS_TYPE;

 

The documentation for these bus type values can be found at: http://msdn2.microsoft.com/en-us/library/aa363465.aspx

 

The test gets the storage controller PCI class code from the OS generated PNP compatibility IDs  and determines the controller bus type based on the PCI class code. The test verifies if the bus type reported by the miniport driver matches with the bus type for the storage controller PCI class code. The test also verifies if the user supplied device bus type in the DTM submission matches with the corresponding bus type for the controller PCI class code.

 

The test uses the following PCI class code table to determine the storage controller bus type

 

CLASS CODE

 

SUB CLASS CODE

PROGRAMMING INTERFACE

DESCRIPTION

0x01

0x00

0x00

SCSI CONTROLLER

0x01

0x01

XX

IDE CONTROLLER

0x01

0x02

0x00

FLOPPY CONTROLLER

0x01

0x03

0x00

IPI BUS CONTROLLER

0x01

0x04

0x00

RAID CONTROLLER

0x01

0x05

0x20/0x30

ATA CONTROLLER

0x01

0x06

0x00/0x01

SERIAL ATA CONTROLLER

0x01

0x07

0x00

SERIAL ATTACHED SCSI (SAS) COTNROLLER

0x01

0x80

0x00

OTHER MASS STORAGE CONTROLLER

 

The controller bus type validation testing will continue to be a key test scenario in the Storage HBA category, but it will be modified to stop checking  the Programming Interface byte (IF), of the 0x0101 (IDE) and 0x0104 (RAID) types to determine the bus type. 

This results in being the following required class code definitions that must be present:

IDE Type:  Mass Storage Device (0x01), ATA Parallel - IDE Type (0x01), Programming Interface (Don’t Care - 0xXX )

RAID Type:  Mass Storage Device (0x01), RAID Type (0x04), Programming Interface (Don’t Care - 0xXX)

However, because the PCI Conventional specification (2.3) declares two unique values for the SATA Type (Non-ATA Compatible Mode) Programming Interface, the following is required for AHCI-enabled controllers:

AHCI Type:  Mass Storage Device (0x01), SATA Type (0x06), AHCI Type (0x01)

The SATA controller must report 0x0101XX in IDE compatible mode, 0x010601 in AHCI mode and 0x010600 in vendor specific implementations.

Published Monday, April 07, 2008 10:57 PM by bhanug

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

Thursday, April 10, 2008 2:27 PM by ATang

# re: Storage Query Property test

Hi Bhanu,

Following is the feedback from our engineering team on the Storage Query Property Test.  Would you mind commenting on it?  Thanks!

==================================================

The PCI class codes dictated by this blog entry won't work for our Sable architecture controllers (3124, 3132, and 3531) in non-RAID mode.  The last sentence of the entry is what causes the problem:

  "Vendor-specific SATA is not supported in Windows, all SATA controllers

   must report either 0x0101XX in IDE Compatible mode or 0x010601 in AHCI

   mode, 0x010600 is not allowed."

Sable architecture controllers have neither an IDE compatible or AHCI mode programming interface, instead they only support our own proprietary programming interface.

If we changed our PCI Class Code to one of these, we would risk having an inbox driver attempting to program our controller, which would almost certainly cause problems for the system.  For these controllers we MUST be allowed to use the 0x010600 PCI Class Code/Programming Interface.

Thursday, April 10, 2008 7:34 PM by bhanug

# re: Storage Query Property test

ATang,

     The sentence has been reworded and it is allowed to report 0x010600 in vendor specific SATA implementations.

BhanuG

Thursday, April 10, 2008 9:38 PM by ATang

# re: Storage Query Property test

Hi Bhanu,

Thanks for the reply.  As we try to follow the rules set by Microsoft on this test, we were looked at it from the engineer's point of view.  But we found its seriousness on this change after we discussed it with our marketing and sales groups.  As one of our main goals here is the customer satisfaction and we realized that the simple PCI class code change to pass the WHQL test will manifest more problems than benefit for the millions of user whom are currently using our SATA chipset.

We will need help from Microsoft and especially from your team to help us and see if there is any way that Microsoft can accommodate our unique situation so we can keep the PCI class code of 018000h.  Thanks.

Tuesday, May 06, 2008 12:06 AM by r_kanna

# Storage Query Property test fails with Qlgc driver

Hi,

I tried to run the storage query property test (WLK 1.2) on a Qlogic FC HBA running on Windows Server 2008 RTM (x64/DataCenter edition), and it fails. I have included output from the task log below.

It seems this test considers the PCI ClassCode of 0xC (Serial Bus controller) as "BusTypeUnknown" and compares that with "BusTypeFibre" that is returned by the driver.

I see that Qlogic INF file sets up the correct "BusType" in the registry (0x6), but this test still fails. Any ideas??

Any help would be appreciated. thanks!

-k

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Start Test 5/5/2008 7:47:46.828 PM STORAGE_ADAPTER_DESCRIPTOR: STORAGE_BUS_TYPE must match the submission type.

Message 5/5/2008 7:47:46.828 PM Submission STORAGE_BUS_TYPE(s:)

BusTypeUnknown

Message 5/5/2008 7:47:46.828 PM STORAGE_ADAPTER_DESCRIPTOR BusType:

BusTypeFibre

Error 5/5/2008 7:47:46.828 PM BusType BusTypeFibre is not an acceptable STORAGE_BUS_TYPE for this adapter.

File:    Line: 0

Error Type:    

Error Code:   0x0

Error Text:   Error 0x00000000

Message 5/5/2008 7:47:46.828 PM This can be fixed by adding an 'AddReg' directive to the INF.

The directive should look something like this:

AddReg=HKR,"Parameters","BusType",%REG_DWORD%,0x000000XX

Where XX is replaced with a STORAGE_BUS_TYPE as defined in winioctl.h

End Test 5/5/2008 7:47:46.828 PM STORAGE_ADAPTER_DESCRIPTOR: STORAGE_BUS_TYPE must match the submission type.

Result:   Fail

Repro:   QueryProperty.exe /device PCI\VEN_1077&DEV_2432&SUBSYS_01381077&REV_02\4&727DAF7&0&0108 /busType BusTypeFibre /raid 0

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Thursday, May 08, 2008 9:28 PM by bhanug

# re: Storage Query Property test

Did you ran this test from the DTM submission console ? or you are getting this failure by running the test on command line ?

Friday, May 09, 2008 5:52 PM by r_kanna

# re: Storage Query Property test

Hi Bhanu,

I ran the test from the DTM submission console. The output I got from the "View Task Log" option when you right click on the failed test

I am using Qlogic driver ver 9.1.7.16. the card model is the QLE2462

I think the DTM test is classifying PCI class code 0xC (Serial Controller) as BusTypeUnknown and compares this with BusTypeFibre reported by the driver.

-kanna

Friday, May 09, 2008 6:11 PM by bhanug

# re: Storage Query Property test

Which version of the logo kit are you using ?

Did you select the device bus type as "Fibre Channel" in the submission wizard ?

Friday, May 09, 2008 7:56 PM by r_kanna

# re: Storage Query Property test

WLK Version 1.2.6475.0

Storage Query Property (LOGO)ID 525

WDKDataStorage_bus_type - BusTypeFibre

WDKDeviceID - PCI\VEN_1077&DEV_2432&SUBSYS_01381077&REV_02\4&727DAF7&0&0108

I cannot set "FibreChannel", I just put "BusTypeFibre"

-k

Friday, May 09, 2008 8:09 PM by bhanug

# re: Storage Query Property test

Why you cannot set the bus type as "Fibre Channel" ? Are you not able to select it from the combo box in the submission wizard ?

Friday, May 09, 2008 8:46 PM by r_kanna

# re: Storage Query Property test

Bhanu,

Maybe I am missing something. Here are the steps I take for running the Query Property Test (ID 525)

Goto Job Monitor Page

Click on Client Machine

Right Click, "Schedule by Job ID"

Job Window

  + Select Job ID 525

  + Right-Click -> "Edit"

Edit Window

  + Select "Parameters" and "Locals" Tab

  + Select "WDKDeviceID", Click "Value" column

  + Type in "PCI\VEN_XXX"

  + Select "WDKDataStorage_bus_type", Click on "Value" column

Note: There is no combo box for this parameter, its an edit box. I saw a blog saying that this will show up as an edit box (in WLK 1.1), but you can select the combo box value using up/down arrow. That doesnt work. If you use the up/down key, it just moves the focus up/down parameter fields.

  + I type in the value "BusTypeFibre"

  + "Save" the job settings, exit dialog

Job Window

  + Schedule the Job

I dont know where I get the option of setting the bus type to "FibreChannel"

Also note, I am not running these tests as part of a "submission" . I am just running the tests individually.

thnx

-kanna

Friday, May 09, 2008 9:02 PM by bhanug

# re: Storage Query Property test

The method that you are using to run this test is not a supported approach. We never mentioned in the documentation to run the job like that.

Please use WLK 1.2 for creating the submission for this hardware and run this job from that submission.

Thanks,

Saturday, May 10, 2008 3:32 AM by r_kanna

# re: Storage Query Property test

Bhanu,

Looks like using submission is the way to go. The tests are finally passing.

I thought I could just run the jobs manually instead of going through the submission process, guess that was the wrong way to go.

thanks for all your help!

-kanna

Monday, June 30, 2008 9:05 PM by Prabal

# re: Storage Query Property test

Picking up an old thread -

"The test verifies if the bus type reported by the miniport driver matches with the bus type for the storage controller PCI class code."

How is the miniport driver supposed to report the bustype?

TIA,

Prabal

Tuesday, July 01, 2008 2:53 PM by Ben

# re: Storage Query Property test

Hello,

We have run the Storage Property test on our iSCSI product and are failing. My question today is about test configuration. Please correct/confirm my setup.

On the Controller/Studio I create a new submission as normal, choosing bus type "iSCSI". I select Storage Query Property test. There are no options to "Edit Parameters" or "Add Information" for this test.

OK so far?

I have tried both HBAs (Win 2008 Logo with WLK 1.2 requires 2 HBAs or 2 systems) both fail.

IS this the proper way to setup for test? Most all other tests are Passing, so I feel the config is OK.

Any help/advice is appreciated.

Tuesday, July 01, 2008 7:48 PM by bhanug

# re: Storage Query Property test

Prabal:

The minport INF file should provide the bustype information. In the INF file BusType parameter should be set with the bustype value.

The following white paper discusses about this requirement

http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/RAID_design.doc

Tuesday, July 01, 2008 8:01 PM by bhanug

# re: Storage Query Property test

I hope you are trying to logo your hardware for Storage Controller logo program. For iSCSI controller testing, only one iSCSI controller is required. The following WLK documentation explains the test system setup instructions

http://msdn.microsoft.com/en-us/library/bb961561.aspx

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker