From: John on
The miniport driver I am working on is for an Ethernet device. The
device supports MSI interrupts. Though, I have not been able to enable
MSI interrupts on Vista so far.

The driver sets MsiSupported to TRUE and sets required MSI handlers
when it calls NdisMRegisterInterruptEx.

The INF file adds the following registry values. According to the
white paper on interrupts (MSI.doc available on microsoft web site),
MSISupported is required. Is this true?

HKR, "Interrupt Management", 0x00000010
HKR, "Interrupt Management\MessageSignaledInterruptProperties",
0x00000010
HKR, "Interrupt Management\MessageSignaledInterruptProperties",
MSISupported, 0x00010001, 1
HKR, "Interrupt Management\MessageSignaledInterruptProperties",
MessageNumberLimit, 0x00010001, 16

Am I missing something? Has anyone been able to use MSI interrupts on
Vista? Any clue is welcome...

From: John on
I forgot to mention the machine I am using. The machine is a
dual-Opteron. Vista runs in 64-bit mode. On the same machine and
using the same Ethernet device, I can enable MSI interrupts on Linux.
So, the machine is capable of handling MSI interrupts.

John wrote:
> The miniport driver I am working on is for an Ethernet device. The
> device supports MSI interrupts. Though, I have not been able to enable
> MSI interrupts on Vista so far.
>
> The driver sets MsiSupported to TRUE and sets required MSI handlers
> when it calls NdisMRegisterInterruptEx.
>
> The INF file adds the following registry values. According to the
> white paper on interrupts (MSI.doc available on microsoft web site),
> MSISupported is required. Is this true?
>
> HKR, "Interrupt Management", 0x00000010
> HKR, "Interrupt Management\MessageSignaledInterruptProperties",
> 0x00000010
> HKR, "Interrupt Management\MessageSignaledInterruptProperties",
> MSISupported, 0x00010001, 1
> HKR, "Interrupt Management\MessageSignaledInterruptProperties",
> MessageNumberLimit, 0x00010001, 16
>
> Am I missing something? Has anyone been able to use MSI interrupts on
> Vista? Any clue is welcome...

From: Alireza Dabagh [MS] on
MSI works for NDIS 6 drivers in Vista. We have NIC drivers that do MSI just
fine. How many MSI messages do you ask for?

Use NdisSetOptionalHandlers to register PnP handlers for your miniport
driver (see NDIS_OBJECT_TYPE_MINIPORT_PNP_CHARACTERISTICS). In your
MiniportFilterResourceRequirementsHandler check to see if you get MSI
resources.

-ali

--
This posting is provided "AS IS" with no warranties, and confers no rights.

"John" <hykim(a)rice.edu> wrote in message
news:1168994386.247045.295550(a)11g2000cwr.googlegroups.com...
> The miniport driver I am working on is for an Ethernet device. The
> device supports MSI interrupts. Though, I have not been able to enable
> MSI interrupts on Vista so far.
>
> The driver sets MsiSupported to TRUE and sets required MSI handlers
> when it calls NdisMRegisterInterruptEx.
>
> The INF file adds the following registry values. According to the
> white paper on interrupts (MSI.doc available on microsoft web site),
> MSISupported is required. Is this true?
>
> HKR, "Interrupt Management", 0x00000010
> HKR, "Interrupt Management\MessageSignaledInterruptProperties",
> 0x00000010
> HKR, "Interrupt Management\MessageSignaledInterruptProperties",
> MSISupported, 0x00010001, 1
> HKR, "Interrupt Management\MessageSignaledInterruptProperties",
> MessageNumberLimit, 0x00010001, 16
>
> Am I missing something? Has anyone been able to use MSI interrupts on
> Vista? Any clue is welcome...
>


From: John on
Thanks for the reply. The original INF file added the registry entries
(MSISupported) in DDInstall section, not DDInstall.HW section. Adding
those entries in DDInstall.HW section enabled MSI interrupts.

Here's follow-up questions.

In MiniportFilterResourceRequirements, IO_RESOURCE_REQUIREMENTS_LIST
has "AlternativeLists" field. It looks like if the device has both
MSI-X and MSI capabilities, then AlternativeLists is set to 2. List[0]
seems to include only MSI-X interrupt resources, and List[1] includes
MSI and also legacy INTx interrupts. What's the purpose of having
multiple lists?

Also, "Count" of List[1] seems to be incorrect. Its value indicates
that there are a lot more Descriptor entries in List[1] than "ListSize"
of IO_RESOURCE_REQUIREMENTS_LIST indicates. If I just rely on "Count"
field, memory access does go out-of-bound and leads to kernel panics...
Am I even supposed to examine the second list? Thanks...

Alireza Dabagh [MS] wrote:
> MSI works for NDIS 6 drivers in Vista. We have NIC drivers that do MSI just
> fine. How many MSI messages do you ask for?
>
> Use NdisSetOptionalHandlers to register PnP handlers for your miniport
> driver (see NDIS_OBJECT_TYPE_MINIPORT_PNP_CHARACTERISTICS). In your
> MiniportFilterResourceRequirementsHandler check to see if you get MSI
> resources.
>
> -ali
>
> --
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
> "John" <hykim(a)rice.edu> wrote in message
> news:1168994386.247045.295550(a)11g2000cwr.googlegroups.com...
> > The miniport driver I am working on is for an Ethernet device. The
> > device supports MSI interrupts. Though, I have not been able to enable
> > MSI interrupts on Vista so far.
> >
> > The driver sets MsiSupported to TRUE and sets required MSI handlers
> > when it calls NdisMRegisterInterruptEx.
> >
> > The INF file adds the following registry values. According to the
> > white paper on interrupts (MSI.doc available on microsoft web site),
> > MSISupported is required. Is this true?
> >
> > HKR, "Interrupt Management", 0x00000010
> > HKR, "Interrupt Management\MessageSignaledInterruptProperties",
> > 0x00000010
> > HKR, "Interrupt Management\MessageSignaledInterruptProperties",
> > MSISupported, 0x00010001, 1
> > HKR, "Interrupt Management\MessageSignaledInterruptProperties",
> > MessageNumberLimit, 0x00010001, 16
> >
> > Am I missing something? Has anyone been able to use MSI interrupts on
> > Vista? Any clue is welcome...
> >

From: Alireza Dabagh [MS] on
Sorry, I am not familiar with the exact format of the interrupt resources.
hopefully somebody knowledgeable see this and steps in. You may also want to
open a new thread with the right title to make this more visible.

-ali

--
This posting is provided "AS IS" with no warranties, and confers no rights.