Messages in this thread | | | Date | Wed, 26 Mar 2008 09:29:58 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: [PATCH] x86_64: resize NR_IRQS for large machines |
| |
On Wed, 26 Mar 2008, Pavel Machek wrote: > > This is very ugly. Why not include it unconditionally -- with guard in > apicdef.h?
I do agree that it's ugly, but I think the ugliness is more serious than that.
What I think we should do is to make NR_IRQS no longer be a compile-time constant, but instead just do something like
unsigned int NR_IRQS __read_mostly;
and then just set it early in the boot sequence depending on the real CPU numbers etc.
I realize that this will require some changes to a few arrays that are statically allocated and depend on NR_IRQ's (notably "irq_desc"), but don't you guys think that this would be a cleaner thing?
[ I suspect that irq_desc[] itself could quite reasonably be a rather much smaller __read_mostly hash-table of dynamically allocated entries - the thing would be only modified at boot, so it should cache beautifully even across hundreds of CPU's ]
Whatever. I'm not opposed to this whole static thing, but I do wonder if it's worth doing that way. There *may* be performance reasons for doing it the way we're doing it, but quite frankly, I think the #define is mostly purely historical, from when it was just a fixed number (originally 16!) and it made sense to think of it as a small static array.
Linus
| |