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"

Reply via email to