On Dec 10, 2014, at 6:25 AM, Roger Pau MonnXX <roy...@freebsd.org> wrote: > > Author: royger > Date: Wed Dec 10 13:25:21 2014 > New Revision: 275679 > URL: https://svnweb.freebsd.org/changeset/base/275679 > > Log: > xen/intr: balance dynamic interrupts across available vCPUs > > By default Xen binds all event channels to vCPU#0, and FreeBSD only shuffles > the interrupt sources once, at the end of the boot process. Since new event > channels might be created after this point (because new devices or backends > are added), try to automatically shuffle them at creation time. > > This does not affect VIRQ or IPI event channels, that are already bound to a > specific vCPU as requested by the caller. > > Sponsored by: Citrix Systems R&D > > Modified: > head/sys/x86/xen/xen_intr.c > > Modified: head/sys/x86/xen/xen_intr.c > ============================================================================== > --- head/sys/x86/xen/xen_intr.c Wed Dec 10 11:42:02 2014 > (r275678) > +++ head/sys/x86/xen/xen_intr.c Wed Dec 10 13:25:21 2014 > (r275679) > @@ -425,6 +425,17 @@ xen_intr_bind_isrc(struct xenisrc **isrc > /* Assign the opaque handler (the event channel port) */ > *port_handlep = &isrc->xi_port; > > +#ifdef SMP > + if (type == EVTCHN_TYPE_PORT) { > + /* > + * By default all interrupts are assigned to vCPU#0 > + * unless specified otherwise, so shuffle them to balance > + * the interrupt load. > + */ > + xen_intr_assign_cpu(&isrc->xi_intsrc, intr_next_cpu()); > + } > +#endif > +
Shouldn't this only happen for new interrupt source objects, not those that are being reclaimed/reused? — Justin _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"