Update Question 18.11:
- Add non-breakable spaces for better rendering - Unfold and mark up Microsoft, Intel - Mark up literals with <literal> - Fix formulas, add <superscript> - Fix grammar (suggested by gabor) - Remove Ethernet address as example, because it is 48 bits long - Reword sentences with grammar bogons (submitted by trhodes) Reviewed by: trhodes Approved by: gabor
This commit is contained in:
parent
a5f445c1a7
commit
9a8aeaf579
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=32485
1 changed files with 19 additions and 19 deletions
|
@ -10551,7 +10551,7 @@ hint.sio.7.irq="12"</programlisting>
|
|||
|
||||
<qandaentry>
|
||||
<question id="pnp-initialize">
|
||||
<para>How are Plug N Play ISA cards detected and
|
||||
<para>How are Plug N Play ISA cards detected and
|
||||
initialized?</para>
|
||||
</question>
|
||||
|
||||
|
@ -10567,33 +10567,33 @@ hint.sio.7.irq="12"</programlisting>
|
|||
routine gets a wired-OR <quote>yes</quote> to that question. At
|
||||
least one bit will be on in that reply. Then the probe code is
|
||||
able to cause boards with board model IDs (assigned by
|
||||
Microsoft/Intel) lower than X to go <quote>off-line</quote>. It
|
||||
µsoft;/&intel;) lower than <literal>X</literal> to go <quote>off-line</quote>. It
|
||||
then looks to see if any boards are still responding to the
|
||||
query. If the answer was <literal>0</literal>, then there are
|
||||
no boards with IDs above X. Now probe asks if there are any
|
||||
boards below <literal>X</literal>. If so, probe knows there are
|
||||
boards with a model numbers below X. Probe then asks for boards
|
||||
greater than X-(limit/4) to go off-line. If repeats the query.
|
||||
no boards with IDs above <literal>X</literal>. Probe will then ask for
|
||||
boards below <literal>X</literal>.
|
||||
Finally, probe requests boards
|
||||
greater than <literal>X - (limit / 4)</literal> to go off-line. It then repeats this query.
|
||||
By repeating this semi-binary search of IDs-in-range enough
|
||||
times, the probing code will eventually identify all PnP boards
|
||||
present in a given machine with a number of iterations that is
|
||||
much lower than what 2^64 would take.</para>
|
||||
much lower than what 2<superscript>64</superscript> would take.</para>
|
||||
|
||||
<para>The IDs are two 32-bit fields (hence 2ˆ64) + 8 bit
|
||||
checksum. The first 32 bits are a vendor identifier. They never
|
||||
<para>The IDs are two 32-bit fields (hence 2<superscript>64</superscript>) + 8-bit
|
||||
checksum. The first 32 bits are a vendor identifier. They never
|
||||
come out and say it, but it appears to be assumed that
|
||||
different types of boards from the same vendor could have
|
||||
different 32-bit vendor ids. The idea of needing 32 bits just
|
||||
different 32-bit vendor IDs. The idea of needing 32 bits just
|
||||
for unique manufacturers is a bit excessive.</para>
|
||||
|
||||
<para>The lower 32 bits are a serial #, Ethernet address,
|
||||
something that makes this one board unique. The vendor must
|
||||
never produce a second board that has the same lower 32 bits
|
||||
unless the upper 32 bits are also different. So you can have
|
||||
multiple boards of the same type in the machine and the full 64
|
||||
bits will still be unique.</para>
|
||||
<para>The lower 32 bits are a serial #, or
|
||||
something else that makes this one board unique. The vendor must
|
||||
never produce a second board that has the same lower 32 bits
|
||||
unless the upper 32 bits are also different. So you can have
|
||||
multiple boards of the same type in the machine and the full
|
||||
64 bits will still be unique.</para>
|
||||
|
||||
<para>The 32 bit groups can never be all zero. This allows the
|
||||
<para>The 32 bit groups can never be all zero. This allows the
|
||||
wired-OR to show non-zero bits during the initial binary
|
||||
search.</para>
|
||||
|
||||
|
@ -10620,11 +10620,11 @@ hint.sio.7.irq="12"</programlisting>
|
|||
<para>There is a lot of oversimplification above, but you
|
||||
should get the general idea.</para>
|
||||
|
||||
<para>Microsoft took over some of the primary printer status
|
||||
<para>µsoft; took over some of the primary printer status
|
||||
ports to do PnP, on the logic that no boards decoded those
|
||||
addresses for the opposing I/O cycles. I found a genuine IBM
|
||||
printer board that did decode writes of the status port during
|
||||
the early PnP proposal review period, but MS said
|
||||
the early PnP proposal review period, but µsoft; said
|
||||
<quote>tough</quote>. So they do a write to the printer status
|
||||
port for setting addresses, plus that use that address +
|
||||
<literal>0x800</literal>, and a third I/O port for reading that
|
||||
|
|
Loading…
Reference in a new issue