Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/xen/xen_arch_intr.c
| Show All 34 Lines | |||||
| #include <sys/kernel.h> | #include <sys/kernel.h> | ||||
| #include <sys/limits.h> | #include <sys/limits.h> | ||||
| #include <sys/lock.h> | #include <sys/lock.h> | ||||
| #include <sys/mutex.h> | #include <sys/mutex.h> | ||||
| #include <sys/interrupt.h> | #include <sys/interrupt.h> | ||||
| #include <sys/pcpu.h> | #include <sys/pcpu.h> | ||||
| #include <sys/smp.h> | #include <sys/smp.h> | ||||
| #include <sys/syslog.h> | #include <sys/syslog.h> | ||||
| #include <sys/intr.h> | |||||
| #include <xen/xen-os.h> | #include <xen/xen-os.h> | ||||
| #include <xen/arch-intr.h> | #include <xen/arch-intr.h> | ||||
| static void | static void | ||||
| xen_intr_arch_disable_source(void *arg) | xen_intr_arch_disable_source(void *arg) | ||||
| { | { | ||||
| struct xenisrc *isrc; | struct xenisrc *isrc; | ||||
| ▲ Show 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | error = intr_event_create(&isrc->xi_arch, isrc, 0, | ||||
| xen_intr_arch_eoi_source /* EOI */, | xen_intr_arch_eoi_source /* EOI */, | ||||
| xen_intr_arch_assign_cpu /* cpu assign */, | xen_intr_arch_assign_cpu /* cpu assign */, | ||||
| "xen%d", port); | "xen%d", port); | ||||
| if (error) { | if (error) { | ||||
| free(isrc, mtype); | free(isrc, mtype); | ||||
| isrc = NULL; | isrc = NULL; | ||||
| } | } | ||||
| #ifdef SMP | |||||
| if (type == EVTCHN_TYPE_PORT) { | |||||
| static u_int current = 1; | |||||
| /* | |||||
| * By default all interrupts are assigned to vCPU#0 | |||||
| * unless specified otherwise, so shuffle them to balance | |||||
| * the interrupt load. | |||||
| */ | |||||
| current = intr_irq_next_cpu(current, &all_cpus); | |||||
| isrc->xi_cpu = current; | |||||
| } | |||||
| #endif | |||||
| return (isrc); | return (isrc); | ||||
| } | } | ||||
| void | void | ||||
| xen_arch_intr_release(struct malloc_type *mtype, struct xenisrc *isrc) | xen_arch_intr_release(struct malloc_type *mtype, struct xenisrc *isrc) | ||||
| { | { | ||||
| intr_event_destroy(isrc->xi_arch); | intr_event_destroy(isrc->xi_arch); | ||||
| ▲ Show 20 Lines • Show All 76 Lines • Show Last 20 Lines | |||||