Not to be flippant, but it used to be that OS’s were written for the
hardware. 
Alberto.
-----Original Message-----
From: Jake Oshins [mailto:xxxxx@windows.microsoft.com]
Sent: Sunday, September 07, 2003 3:19 PM
To: Windows System Software Developers Interest List
Subject: [ntdev] Re: Looking for Hardware Horror Stories
I’m going to interpret this a little differently. I know what you asked
for, and I know that I’m not quite responding in kind. Instead, I’m going
to respond with a list of hardware behaviors which are really hard to deal
with under Windows. Some of these are problematic because they are simply
bad hardware design. Some are problematic because they either weren’t
designed with Windows in mind or the designer simply didn’t understand
Windows. I’ll leave it up to the list to argue about which ones land in
which category.
-
The device’s PCI interrupt can’t be masked.
-
The device’s PCI interrupt (INTx#) triggers whenever PME# is triggered.
-
The device’s PME# triggers whenever INTx# is triggered.
-
Moving a PCI device into D0 with PME_Status set will cause INTx# to be
asserted.
-
The PCI device decodes memory or I/O outside of what the PCI Base
Address Registers describe.
-
The add-in board consists of a bridge and several devices, which all
need to controlled by a single driver, but the bridge is a standard PCI to
PCI bridge.
-
The device designers ran out of PCI configuration space, so they just
added more PCI function headers to handle the spillover.
-
Moving a PCI device from D3 to D0 causes all internal state to be reset,
including the reason that PME# was asserted, meaning that the driver has no
idea why the device signaled a wakeup.
-
Moving a PCI device from D3 to D0 causes the PCI device to instantly
start decoding memory or I/O at whatever value is written into the Base
Address Registers (even if those values are zero.)
A) Moving a PCI device from D3 to D0 allows INTx# to be asserted.
B) A PCI to PCI bridge decodes memory or I/O subtractively, but in ways not
described in its Base Address Registers (and Programming Interface.)
C) A PCI to PCI bridge supports 64-bit cycles downstream but not upstream.
D) A PCI to PCI bridge supports 64-bit cycles for 64-bit cards, but doesn’t
support Dual Address Cycle signalling.
E) A plug-in PCI board is made out of a standard PCI to ISA bridge and an
old ISA device, leaving it ambigous which ISA bridge in the system (there is
always one to begin with) will actually subtractively decode the ISA memory
and I/O.
F) A plug-in PCI board is made out of a PCI to ISA bridge and somebody
wires the ISA interrupts directly to the PCI INTx# signals.
-
A plug-in PCI board is made out of a PCI to ISA (or VME) bridge and
somebody tries to wire interrupts to multiple INTx# signals in the same
slot.
-
A plug-in PCI board is made out of a legacy bridge and the board
designer decides that the device will just decode the same fixed memory
range it would have decoded as an ISA or VME device.
I suppose I could go on forever.
–
Jake Oshins
Windows Base Kernel Team
This posting is provided “AS IS” with no warranties, and confers no rights.
OR if you wish to include a script sample in your post please add “Use of
included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm”
“Don Burn” wrote in message news:xxxxx@ntdev…
>
> To take some of the hostility out of the list for a good cause,
> I am thinking of writing something on evil hardware. We all
> have seen the queries on the list looking for solutions since:
>
> 1. My hardware has to be touched every millisecond with
> an accuracy of plus or minus 100 nanoseconds
>
> 2. My PCI card needs to have the motherboard bridge set
> to a specific mode and Windows doesn’t how do I
> fix this?
>
> So I am looking to collect tales of bad hardware, you do not
> have to name firms, but the more details the better. Any takers
> to help me collect the “Worst of Device Design” ?
>
> Don Burn (MVP, Windows DDK)
> Windows 2k/XP/2k3 Filesystem and Driver Consulting
>
>
>
—
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: xxxxx@compuware.com
To unsubscribe send a blank email to xxxxx@lists.osr.com
The contents of this e-mail are intended for the named addressee only. It
contains information that may be confidential. Unless you are the named
addressee or an authorized designee, you may not copy or use it, or disclose
it to anyone else. If you received it in error please notify us immediately
and then destroy it.