Messages in this thread | | | Date | Thu, 21 Aug 2008 16:21:57 -0700 | From | Jeremy Fitzhardinge <> | Subject | Re: [PATCH] X86: Change the default value of nr_irqs from 32 to NR_IRQs |
| |
Yinghai Lu wrote: > On Wed, Aug 20, 2008 at 4:23 PM, Alex Nixon <alex.nixon@citrix.com> wrote: > >> Alex Nixon wrote: >> >>> Yinghai Lu wrote: >>> >>>> when !CONFIG_HAVE_SPARSE_IRQ, with dyn_array, could allocate irq_desc >>>> and etc as less as possible. >>>> when CONFIG_HAVE_SPARESE_IRQ, no actually meaning for nr_irqs. >>>> >>>> YH >>>> >>> So I believe the only case this affects is !CONFIG_HAVE_SPARSE_IRQ >>> >>> The worry is that with CONFIG_HAVE_DYN_ARRAY we may waste memory by >>> pre-allocating more irq_descs than may be necessary (NR_IRQs vs 32)? >>> >>> With !CONFIG_HAVE_DYN_ARRAY however, a static array of size NR_IRQS is >>> allocated instead - so doesn't defaulting nr_irqs back to NR_IRQS just >>> revert to the old behaviour (with the exception of the irq_descs being >>> allocated in pre_alloc_dyn_array instead)? >>> >>> - Alex >>> >>> >> Sorry to pester you Yinghai, but I'd like to get a patch for this out one >> way or another as Xen is _completely_ unusable with 5 or more VCPUs. >> >> Can you explain more clearly what the problem with the patch is? >> > > small real system doesn't have MSI ioapic will have nr_irqs == 32. > your patch will increase that to 224 again. > > sth like ? >
No. A Xen-capable kernel can also run native, so it must do whatever a normal kernel would do when booting native.
At what point in the boot does nr_irqs need to be set? Could we just override it at some point?
> #ifdef CONFIG_XEN >
I assume you mean ifndef here?
> int __init probe_nr_irqs(void) > { > int idx; > int nr = 0; > > for (idx = 0; idx < nr_ioapics; idx++) > nr += io_apic_get_redir_entries(idx); > > /* double it for hotplug and msi and nmi */ > nr <<= 1; > > /* something wrong ? */ > if (nr < 32) > nr = 32; > > return nr; > } > #else > int __init probe_nr_irqs(void) > { > return NR_IRQS; > } > #endif >
J
| |