Re: Fix MTRR strings definition.

From: Andi Kleen
Date: Tue Aug 24 2004 - 06:21:02 EST


On Tue, 24 Aug 2004 12:00:01 +0100
Dave Jones <davej@xxxxxxxxxx> wrote:

> On Tue, Aug 24, 2004 at 08:17:29AM +0200, Andi Kleen wrote:
> > On Tue, 24 Aug 2004 00:23:20 +0100
> > Dave Jones <davej@xxxxxxxxxx> wrote:
> >
> > > Instead of deleting the extern from include/asm/mtrr.h, I believe
> > > the correct fix would be to move the strings back to the include file
> > > where they belong.
> > > The reason behind this, is that there are userspace apps (admittedly
> > > few, but we even ship two in Documentation/mtrr.txt) that rely upon
> > > these definitions being in that header. This has been broken for
> > > all 2.6 releases so far. Patch below fixes things back the way it
> > > was in 2.4
> >
> > That's rather ugly. It would be cleaner to just have a
> > macro that expands to the strings, and everybody who wants to use
> > it declares an own array using that macro.
>
> feel free to go rewrite the userspace that uses this.

Umm - since when do we care about user space gratuously including kernel
headers? I normally avoid breaking user space by this without need, but depending
on a static variable declaration in a header is really far too ugly
to be kept alive.


> > > Andi, I don't have gcc 3.5 to hand, I trust this fixes whatever
> > > problem you saw there too ?
> >
> > 3.5 doesn't like it when something is declared both extern and static.
> > Your new patch has this problem again.
>
> The extern definitions no longer exist.

Your patch was:

--- latest-FC2/include/asm-x86_64/mtrr.h~ 2004-08-24 00:20:17.377436336 +0100
+++ latest-FC2/include/asm-x86_64/mtrr.h 2004-08-24 00:21:04.137327752 +0100
@@ -69,6 +69,19 @@
#define MTRR_TYPE_WRBACK 6
#define MTRR_NUM_TYPES 7

+#ifdef MTRR_NEED_STRINGS
+static char *mtrr_strings[MTRR_NUM_TYPES] =
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+{
+ "uncachable", /* 0 */
+ "write-combining", /* 1 */
+ "?", /* 2 */
+ "?", /* 3 */
+ "write-through", /* 4 */
+ "write-protect", /* 5 */
+ "write-back", /* 6 */
+};
+#endif
+
#ifdef __KERNEL__

extern char *mtrr_strings[MTRR_NUM_TYPES];
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

-Andi
-
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/