xen-netback: move netif_napi_add before binding interrupt
Interrupt is enabled when bind_interdomain_evtchn_to_irqhandler returns.
If there's interrupt pending interrupt handler is invoked.
NAPI needs to be initialised before binding interrupt otherwise the
interrupt handler will try to scheduling a NAPI instance that is not
initialised yet, resulting in kernel OOPS.
This fixes a regression introduced in ea2c5e13
("xen-netback: move NAPI
add/remove calls").
Ideally function calls to create kthreads should also be moved before
binding but I intent to fix this regression with minimal changes and
refactor the code with another patch.
Reported-by: Thomas Leonard <talex5@gmail.com>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8dbb200fa4
commit
e24f8191cc
|
@ -576,6 +576,9 @@ int xenvif_connect(struct xenvif_queue *queue, unsigned long tx_ring_ref,
|
||||||
init_waitqueue_head(&queue->dealloc_wq);
|
init_waitqueue_head(&queue->dealloc_wq);
|
||||||
atomic_set(&queue->inflight_packets, 0);
|
atomic_set(&queue->inflight_packets, 0);
|
||||||
|
|
||||||
|
netif_napi_add(queue->vif->dev, &queue->napi, xenvif_poll,
|
||||||
|
XENVIF_NAPI_WEIGHT);
|
||||||
|
|
||||||
if (tx_evtchn == rx_evtchn) {
|
if (tx_evtchn == rx_evtchn) {
|
||||||
/* feature-split-event-channels == 0 */
|
/* feature-split-event-channels == 0 */
|
||||||
err = bind_interdomain_evtchn_to_irqhandler(
|
err = bind_interdomain_evtchn_to_irqhandler(
|
||||||
|
@ -629,9 +632,6 @@ int xenvif_connect(struct xenvif_queue *queue, unsigned long tx_ring_ref,
|
||||||
wake_up_process(queue->task);
|
wake_up_process(queue->task);
|
||||||
wake_up_process(queue->dealloc_task);
|
wake_up_process(queue->dealloc_task);
|
||||||
|
|
||||||
netif_napi_add(queue->vif->dev, &queue->napi, xenvif_poll,
|
|
||||||
XENVIF_NAPI_WEIGHT);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_rx_unbind:
|
err_rx_unbind:
|
||||||
|
|
Loading…
Reference in New Issue