The poll/dequeue model is no longer applicable to SMP system, e.g.
CPU-A CPU-B
: :
poll :
: poll
dequeue (+) :
The dequeue at (+) will hit the poll cache set by CPU-B.
Reported-by: pavalos@
}
if (op == ALTDQ_POLL) {
+#ifdef foo
+ /*
+ * Don't use poll cache; the poll/dequeue
+ * model is no longer applicable to SMP
+ * system. e.g.
+ * CPU-A CPU-B
+ * : :
+ * poll :
+ * : poll
+ * dequeue (+) :
+ *
+ * The dequeue at (+) will hit the poll
+ * cache set by CPU-B.
+ */
pif->pif_poll_cache = best_cl;
+#endif
m = best_m;
} else if (best_cl) {
m = fairq_getq(best_cl, cur_time);
}
if (op == ALTDQ_POLL) {
+#ifdef foo
+ /*
+ * Don't use poll cache; the poll/dequeue
+ * model is no longer applicable to SMP
+ * system. e.g.
+ * CPU-A CPU-B
+ * : :
+ * poll :
+ * : poll
+ * dequeue (+) :
+ *
+ * The dequeue at (+) will hit the poll
+ * cache set by CPU-B.
+ */
hif->hif_pollcache = cl;
+#endif
m = hfsc_pollq(cl);
goto done;
}
} else {
/* mode == ALTDQ_PPOLL */
m = _rmc_pollq(cl);
+#ifdef foo
+ /*
+ * Don't use poll cache; the poll/dequeue
+ * model is no longer applicable to SMP
+ * system. e.g.
+ * CPU-A CPU-B
+ * : :
+ * poll :
+ * : poll
+ * dequeue (+) :
+ *
+ * The dequeue at (+) will hit the poll
+ * cache set by CPU-B.
+ */
ifd->pollcache_ = cl;
+#endif
}
return (m);
}
} else {
/* mode == ALTDQ_POLL */
m = _rmc_pollq(cl);
+#ifdef foo
+ /*
+ * Don't use poll cache; the poll/dequeue
+ * model is no longer applicable to SMP
+ * system. e.g.
+ * CPU-A CPU-B
+ * : :
+ * poll :
+ * : poll
+ * dequeue (+) :
+ *
+ * The dequeue at (+) will hit the poll
+ * cache set by CPU-B.
+ */
ifd->pollcache_ = cl;
+#endif
}
return (m);
}