Re: [PATCH] APIC physical broadcast for i82489DX

From: Maciej W. Rozycki
Date: Thu Oct 07 2004 - 20:28:03 EST


On Thu, 7 Oct 2004, William Lee Irwin III wrote:

> > @@ -91,7 +91,7 @@
> > unsigned int lvr, version;
> > lvr = apic_read(APIC_LVR);
> > version = GET_APIC_VERSION(lvr);
> > - if (version >= 0x14)
> > + if (!APIC_INTEGRATED(version) || version >= 0x14)
> > return 0xff;
> > else
> > return 0xf;
>
> This is the same as version <= 0xf || version >= 0x14; I'm rather

I suppose defining a macro called something like APIC_XAPIC(x) to (x >=
0x14) might actually have some sense, although unlike with the i82489DX,
there is no promise for this to be always true.

> suspicious, as the docs have long since been purged, making this

AFAIK i82489DX documents were never available online and I suppose they
might have never existed in a PDF form. You could have ordered hardcopies
in mid 90's.

> hopeless for anyone without archives (or a good memory) dating back to
> that time to check. All that's really needed is citing the version that
> comes out of the version register and checking other APIC
> implementations to verify they don't have versions tripping this check,

The APIC_INTEGRATED() macro reflects the range reserved for the i82489DX.
Both "Multiprocessor Specification" and "IA-32 Intel Architecture Software
Developer's Manual, Vol.3" which are available online specify it clearly
and explicitly. AFAIK, there is no integrated APIC implementation that
would violate it (unlike with I/O APICs), so what's the problem? If a
buggy chip appears, we can revisit this assumption.

> the latter of which is feasible for those relying on still-extant
> documentation. Better yet would be dredging up the docs... So, what is
> the range of the version numbers reported by i82489DX's?

The i82489DX datasheet documents 0x01 for the chip and the
implementations I've encountered so far agree.

Maciej
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/