Page MenuHomeFreeBSD

D30935.id98345.diff
No OneTemporary

D30935.id98345.diff

Index: sys/xen/xen_intr.c
===================================================================
--- sys/xen/xen_intr.c
+++ sys/xen/xen_intr.c
@@ -282,7 +282,7 @@
if (isrc != NULL) {
mtx_unlock(&xen_intr_x86_lock);
- return (isrc);
+ goto out;
}
if (xen_intr_auto_vector_count >= NR_EVENT_CHANNELS) {
@@ -310,6 +310,18 @@
return (NULL);
}
+out:
+#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.
+ */
+ isrc->xi_cpu = intr_next_cpu(0);
+ }
+#endif
+
return (isrc);
}
@@ -413,12 +425,14 @@
#ifdef SMP
if (type == EVTCHN_TYPE_PORT) {
+ int cpu = isrc->xi_cpu;
+ isrc->xi_cpu = 0;
/*
* 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, intr_next_cpu(0));
+ xen_intr_assign_cpu(isrc, cpu);
}
#endif

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 1, 12:34 PM (1 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27436421
Default Alt Text
D30935.id98345.diff (1007 B)

Event Timeline