SMBus access on Tyan S2892 motherboard, nVidia nForce chip set. What driver?

I’m attempting to access the motherboard hardware health monitoring on a Tyan motherboard (Tyan S2892, based on the nVidia nForce Pro 2200 chip set). After lots of begging, Tyan gave me the SMBus addresses of the two chips I need to talk to, and said they don’t have an SDK or anything for gathering this information, just go read it from the chips yourself.

This is fine, except that I’m having trouble figuring out SMBus access under windows.

I’ve asked for a little more guidance (like ‘what driver do I use’), but so far, I’ve just gotten more silence.

When I look at the system in question, I find that there is a device manager entry for the ‘NVIDIA nForce PCI System Management’, which appears to be the SMBus controller. When I look at the driver package, I find an ‘nvsmbus.inf’ file, but it doesn’t install any files, it just does ‘Include=machine.inf’ and ‘needs=NO_DRV’. Anyone have any idea why nVidia doesn’t just include a driver? They just don’t want to support it?

Does anyone know what the proper procedure is for accessing the SMBus in cases like this is? I’ve found the DDK docs about SMBus client drivers, but since the system doesn’t seem to have the SMB class driver or the SMB Host Controller driver installed, I don’t think that’s going to help me. Unless someone can tell me how I might get them installed.

Obviously, either they simply don’t provide a driver, or I’m missing something. Can someone point me in the direction of the things I’m missing?

Thanks!

Michael Kohne
xxxxx@kohne.org
“You must be smarter than the equipment you are trying to operate.”

Sounds like your stuck writing your own driver. Did they give you
the register specs?

-z

At 10:28 AM 10/19/2006, you wrote:

I’m attempting to access the motherboard hardware health monitoring
on a Tyan motherboard (Tyan S2892, based on the nVidia nForce Pro
2200 chip set). After lots of begging, Tyan gave me the SMBus
addresses of the two chips I need to talk to, and said they don’t
have an SDK or anything for gathering this information, just go read
it from the chips yourself.

This is fine, except that I’m having trouble figuring out SMBus
access under windows.

I’ve asked for a little more guidance (like ‘what driver do I use’),
but so far, I’ve just gotten more silence.

When I look at the system in question, I find that there is a device
manager entry for the ‘NVIDIA nForce PCI System Management’, which
appears to be the SMBus controller. When I look at the driver
package, I find an ‘nvsmbus.inf’ file, but it doesn’t install any
files, it just does ‘Include=machine.inf’ and
‘needs=NO_DRV’. Anyone have any idea why nVidia doesn’t
>just include a driver? They just don’t want to support it?
>
>Does anyone know what the proper procedure is for accessing the
>SMBus in cases like this is? I’ve found the DDK docs about SMBus
>client drivers, but since the system doesn’t seem to have the SMB
>class driver or the SMB Host Controller driver installed, I don’t
>think that’s going to help me. Unless someone can tell me how I
>might get them installed.
>
>Obviously, either they simply don’t provide a driver, or I’m missing
>something. Can someone point me in the direction of the things I’m missing?
>
>Thanks!
>
>
>
>Michael Kohne
>xxxxx@kohne.org
>“You must be smarter than the equipment you are trying to operate.”
>
>—
>Questions? First check the Kernel Driver FAQ at
>http://www.osronline.com/article.cfm?id=256
>
>To unsubscribe, visit the List Server section of OSR Online at
>http://www.osronline.com/page.cfm?name=ListServer

SMBus is generally used mostly by the BIOS. There isn’t a Windows driver
because there’s no Windows component that accesses those devices.

We’ve experimented in the past with native access of SMBus within Windows
(as opposed to accessing it through the ACPI BIOS, for instance) and we’ve
mostly ended up in conflict with the BIOS for little gain. Furthermore, the
hardware itself is often not conducive to control by Windows. ALi chipsets,
for instance, can only surface the SMBus interrupt as a System Management
Interrupt, which can only be fielded by the BIOS.

If you want a lot more detail on this topic search the archives for my past
posts.

  • Jake Oshins
    Windows Kernel Team

“Michael Kohne” wrote in message news:xxxxx@ntdev…
> I’m attempting to access the motherboard hardware health monitoring on a
> Tyan motherboard (Tyan S2892, based on the nVidia nForce Pro 2200 chip
> set). After lots of begging, Tyan gave me the SMBus addresses of the two
> chips I need to talk to, and said they don’t have an SDK or anything for
> gathering this information, just go read it from the chips yourself.
>
> This is fine, except that I’m having trouble figuring out SMBus access
> under windows.
>
> I’ve asked for a little more guidance (like ‘what driver do I use’), but
> so far, I’ve just gotten more silence.
>
> When I look at the system in question, I find that there is a device
> manager entry for the ‘NVIDIA nForce PCI System Management’, which appears
> to be the SMBus controller. When I look at the driver package, I find an
> ‘nvsmbus.inf’ file, but it doesn’t install any files, it just does
> ‘Include=machine.inf’ and ‘needs=NO_DRV’. Anyone have any idea
> why nVidia doesn’t just include a driver? They just don’t want to support
> it?
>
> Does anyone know what the proper procedure is for accessing the SMBus in
> cases like this is? I’ve found the DDK docs about SMBus client drivers,
> but since the system doesn’t seem to have the SMB class driver or the SMB
> Host Controller driver installed, I don’t think that’s going to help me.
> Unless someone can tell me how I might get them installed.
>
> Obviously, either they simply don’t provide a driver, or I’m missing
> something. Can someone point me in the direction of the things I’m
> missing?
>
> Thanks!
>
>
>
> Michael Kohne
> xxxxx@kohne.org
> “You must be smarter than the equipment you are trying to operate.”
>

Hi Jake,
Your right, if you don’t have access to a particular systems
architecture you can run into problems. I used to be in the server
management firmware group at Intel and wrote drivers to access these
types of resources. You are correct that if an smbus interrupt is
routed to SMI things get sticky . Generally though, the system
should only being going into SMI if a limit condition is reached or
some other error condition occurs. Once Windows is booted the BIOS
should no longer be interacting with hardware independently other
than to service SMI’s, which should be rare. If the BIOS is actively
polling these devices, I recommend throwing your board in the
trash. On many systems, this stuff can be accessed via I/O without
an interrupt. If your going to implement your own driver you’ll want
to disable BIOS monitoring of the hardware if possible. Without a
hardware specification, a lot of this can not be done easily.

-z

At 07:32 PM 10/19/2006, you wrote:

SMBus is generally used mostly by the BIOS. There isn’t a Windows driver
because there’s no Windows component that accesses those devices.

We’ve experimented in the past with native access of SMBus within Windows
(as opposed to accessing it through the ACPI BIOS, for instance) and we’ve
mostly ended up in conflict with the BIOS for little gain. Furthermore, the
hardware itself is often not conducive to control by Windows. ALi chipsets,
for instance, can only surface the SMBus interrupt as a System Management
Interrupt, which can only be fielded by the BIOS.

If you want a lot more detail on this topic search the archives for my past
posts.

  • Jake Oshins
    Windows Kernel Team

“Michael Kohne” wrote in message news:xxxxx@ntdev…
> > I’m attempting to access the motherboard hardware health monitoring on a
> > Tyan motherboard (Tyan S2892, based on the nVidia nForce Pro 2200 chip
> > set). After lots of begging, Tyan gave me the SMBus addresses of the two
> > chips I need to talk to, and said they don’t have an SDK or anything for
> > gathering this information, just go read it from the chips yourself.
> >
> > This is fine, except that I’m having trouble figuring out SMBus access
> > under windows.
> >
> > I’ve asked for a little more guidance (like ‘what driver do I use’), but
> > so far, I’ve just gotten more silence.
> >
> > When I look at the system in question, I find that there is a device
> > manager entry for the ‘NVIDIA nForce PCI System Management’, which appears
> > to be the SMBus controller. When I look at the driver package, I find an
> > ‘nvsmbus.inf’ file, but it doesn’t install any files, it just does
> > ‘Include=machine.inf’ and ‘needs=NO_DRV’. Anyone have any idea
> > why nVidia doesn’t just include a driver? They just don’t want to support
> > it?
> >
> > Does anyone know what the proper procedure is for accessing the SMBus in
> > cases like this is? I’ve found the DDK docs about SMBus client drivers,
> > but since the system doesn’t seem to have the SMB class driver or the SMB
> > Host Controller driver installed, I don’t think that’s going to help me.
> > Unless someone can tell me how I might get them installed.
> >
> > Obviously, either they simply don’t provide a driver, or I’m missing
> > something. Can someone point me in the direction of the things I’m
> > missing?
> >
> > Thanks!
> >
> >
> >
> > Michael Kohne
> > xxxxx@kohne.org
> > “You must be smarter than the equipment you are trying to operate.”
> >
>
>
>
>—
>Questions? First check the Kernel Driver FAQ at
>http://www.osronline.com/article.cfm?id=256
>
>To unsubscribe, visit the List Server section of OSR Online at
>http://www.osronline.com/page.cfm?name=ListServer

Thanks guys. I just finally found Jake’s old posts on the subject - now that I understand the history of the whole thing, I can stop looking for an easy solution.

To future searchers on this topic, search the ntdev archive for ‘Oshins SMBus’. In a reply made on 28 Feb 2005, Jake Oshins gives a most useful quick history and summary of the problem and current lack of general solutions.

The ultimate answer to my problem is that I either have to get a driver out of Tyan (they have one, they use it for their monitoring software, but I don’t know that I can get it from them), or I have to write my own driver. I will continue to work on them.

So far, Tyan hasn’t even given me the the register map for the smbus controller. When I got the smbus addresses for the chips out of them, they did say they could only provide the chip addresses, so I may continue to get nothing from them.

I will have to find a way to dump the ACPI tables on this system and try to insure that there is nothing in the ACPI that could help me. I expect there isn’t, because if there was, it would be in the WMI.

If I have to write my own driver, I can probably figure out the IOPorts and what not by tearing into the lm_sensors code - lm_sensors knows how to talk to this motherboard’s sensors. If I can figure out how, then I can duplicate their technique in my own driver. Obviously this would leave me open to all sorts of possible bad effects if I conflict with the BIOS, and I’m going to have to assess with product management whether it’s worth the effort and product level risk.

Thank you.

Michael Kohne
xxxxx@kohne.org
“You must be smarter than the equipment you are trying to operate.”

-------Original Message-------
From: zeppelin@io.com
Subject: Re:[ntdev] SMBus access on Tyan S2892 motherboard, nVidia nForce chip set. What driver?
Sent: Oct 20 '06 02:10

Hi Jake,
Your right, if you don’t have access to a particular systems
architecture you can run into problems. I used to be in the server
management firmware group at Intel and wrote drivers to access these types
of resources. You are correct that if an smbus interrupt is routed to SMI
things get sticky . Generally though, the system should only being going
into SMI if a limit condition is reached or some other error condition
occurs. Once Windows is booted the BIOS should no longer be interacting
with hardware independently other than to service SMI’s, which should be
rare. If the BIOS is actively polling these devices, I recommend throwing
your board in the trash. On many systems, this stuff can be accessed via
I/O without an interrupt. If your going to implement your own driver
you’ll want to disable BIOS monitoring of the hardware if possible.
Without a hardware specification, a lot of this can not be done easily.

-z

At 07:32 PM 10/19/2006, you wrote:
SMBus is generally used mostly by the BIOS. There isn’t a Windows driver

because there’s no Windows component that accesses those devices.

We’ve experimented in the past with native access of SMBus within Windows

(as opposed to accessing it through the ACPI BIOS, for instance) and
we’ve
mostly ended up in conflict with the BIOS for little gain. Furthermore,
the
hardware itself is often not conducive to control by Windows. ALi
chipsets,
for instance, can only surface the SMBus interrupt as a System Management

Interrupt, which can only be fielded by the BIOS.

If you want a lot more detail on this topic search the archives for my
past
posts.

  • Jake Oshins
    Windows Kernel Team

“Michael Kohne” wrote in message [LINK:
> news:xxxxx@ntdev] news:xxxxx@ntdev…
> > I’m attempting to access the motherboard hardware health monitoring on
> a
> > Tyan motherboard (Tyan S2892, based on the nVidia nForce Pro 2200 chip
> > set). After lots of begging, Tyan gave me the SMBus addresses of the
> two
> > chips I need to talk to, and said they don’t have an SDK or anything
> for
> > gathering this information, just go read it from the chips yourself.
> >
> > This is fine, except that I’m having trouble figuring out SMBus access
> > under windows.
> >
> > I’ve asked for a little more guidance (like ‘what driver do I use’),
> but
> > so far, I’ve just gotten more silence.
> >
> > When I look at the system in question, I find that there is a device
> > manager entry for the ‘NVIDIA nForce PCI System Management’, which
> appears
> > to be the SMBus controller. When I look at the driver package, I find
> an
> > ‘nvsmbus.inf’ file, but it doesn’t install any files, it just does
> > ‘Include=machine.inf’ and ‘needs=NO_DRV’. Anyone have any
> idea
> > why nVidia doesn’t just include a driver? They just don’t want to
> support
> > it?
> >
> > Does anyone know what the proper procedure is for accessing the SMBus
> in
> > cases like this is? I’ve found the DDK docs about SMBus client drivers,
>
> > but since the system doesn’t seem to have the SMB class driver or the
> SMB
> > Host Controller driver installed, I don’t think that’s going to help
> me.
> > Unless someone can tell me how I might get them installed.
> >
> > Obviously, either they simply don’t provide a driver, or I’m missing
> > something. Can someone point me in the direction of the things I’m
> > missing?
> >
> > Thanks!
> >
> >
> >
> > Michael Kohne
> > xxxxx@kohne.org
> > “You must be smarter than the equipment you are trying to operate.”
> >
>
>
> —
> Questions? First check the Kernel Driver FAQ at [LINK:
> http://www.osronline.com/article.cfm?id=256]
> http://www.osronline.com/article.cfm?id=256
>
> To unsubscribe, visit the List Server section of OSR Online at [LINK:
> http://www.osronline.com/page.cfm?name=ListServer]
> http://www.osronline.com/page.cfm?name=ListServer
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer