diff --git a/sys/dev/xen/xenpci/xenpci.c b/sys/dev/xen/xenpci/xenpci.c
index 778ac88..dd2ad92 100644
--- a/sys/dev/xen/xenpci/xenpci.c
+++ b/sys/dev/xen/xenpci/xenpci.c
@@ -77,6 +77,7 @@ xenpci_irq_init(device_t device, struct xenpci_softc *scp)
 	if (error)
 		return error;
 
+#ifdef SMP
 	/*
 	 * When using the PCI event delivery callback we cannot assign
 	 * events to specific vCPUs, so all events are delivered to vCPU#0 by
@@ -88,6 +89,7 @@ xenpci_irq_init(device_t device, struct xenpci_softc *scp)
 	                      scp->res_irq, 0);
 	if (error)
 		return error;
+#endif
 
 	xen_hvm_set_callback(device);
 	return (0);
diff --git a/sys/x86/xen/xen_intr.c b/sys/x86/xen/xen_intr.c
index 4f62cce..b94f8d9 100644
--- a/sys/x86/xen/xen_intr.c
+++ b/sys/x86/xen/xen_intr.c
@@ -1083,8 +1083,11 @@ xen_intr_bind_virq(device_t dev, u_int virq, u_int cpu,
 
 	error = xen_intr_bind_isrc(&isrc, bind_virq.port, EVTCHN_TYPE_VIRQ, dev,
 				 filter, handler, arg, flags, port_handlep);
+
+#ifdef SMP
 	if (error == 0)
 		error = intr_event_bind(isrc->xi_intsrc.is_event, cpu);
+#endif
 
 	if (error != 0) {
 		evtchn_close_t close = { .port = bind_virq.port };
