Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F157024560
D30648.id90435.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D30648.id90435.diff
View Options
Index: sys/xen/xen_intr.c
===================================================================
--- sys/xen/xen_intr.c
+++ sys/xen/xen_intr.c
@@ -116,17 +116,21 @@
#define is_valid_evtchn(x) ((x) != XEN_INVALID_EVTCHN)
+struct xen_arch_isrc {
+ struct intsrc xai_intsrc; /* @TOP -> *xen_arch_isrc */
+ int xai_vector; /* Global isrc vector number */
+};
+
+typedef struct xen_arch_isrc xen_arch_isrc_t;
+
struct xenisrc {
- struct intsrc xi_intsrc;
+ xen_arch_isrc_t xi_arch; /* @TOP -> *xi_arch=*xenisrc */
enum evtchn_type xi_type;
int xi_cpu; /* VCPU for delivery. */
- int xi_vector; /* Global isrc vector number. */
evtchn_port_t xi_port;
int xi_virq;
void *xi_cookie;
u_int xi_close:1; /* close on unbind? */
- u_int xi_activehi:1;
- u_int xi_edgetrigger:1;
u_int xi_masked:1;
volatile u_int xi_refcount;
};
@@ -285,7 +289,7 @@
isrc = (struct xenisrc *)intr_lookup_source(vector);
if (isrc != NULL
&& isrc->xi_type == EVTCHN_TYPE_UNBOUND) {
- KASSERT(isrc->xi_intsrc.is_handlers == 0,
+ KASSERT(isrc->xi_arch.xai_intsrc.is_handlers == 0,
("Free evtchn still has handlers"));
isrc->xi_type = type;
return (isrc);
@@ -327,10 +331,10 @@
mtx_unlock(&xen_intr_isrc_lock);
isrc = malloc(sizeof(*isrc), M_XENINTR, M_WAITOK | M_ZERO);
- isrc->xi_intsrc.is_pic = &xen_intr_pic;
- isrc->xi_vector = vector;
+ isrc->xi_arch.xai_intsrc.is_pic = &xen_intr_pic;
+ isrc->xi_arch.xai_vector = vector;
isrc->xi_type = type;
- intr_register_source(&isrc->xi_intsrc);
+ intr_register_source(&isrc->xi_arch.xai_intsrc);
mtx_lock(&xen_intr_isrc_lock);
return (isrc);
@@ -348,7 +352,7 @@
{
mtx_lock(&xen_intr_isrc_lock);
- KASSERT(isrc->xi_intsrc.is_handlers == 0,
+ KASSERT(isrc->xi_arch.xai_intsrc.is_handlers == 0,
("Release called, but xenisrc still in use"));
evtchn_mask_port(isrc->xi_port);
evtchn_clear_port(isrc->xi_port);
@@ -432,7 +436,7 @@
* unless specified otherwise, so shuffle them to balance
* the interrupt load.
*/
- xen_intr_assign_cpu(&isrc->xi_intsrc, intr_next_cpu(0));
+ xen_intr_assign_cpu(&isrc->xi_arch.xai_intsrc, intr_next_cpu(0));
}
#endif
@@ -571,7 +575,7 @@
("Received unexpected event on vCPU#%d, event bound to vCPU#%d",
PCPU_GET(cpuid), isrc->xi_cpu));
- intr_execute_handlers(&isrc->xi_intsrc, trap_frame);
+ intr_execute_handlers(&isrc->xi_arch.xai_intsrc, trap_frame);
/*
* If this is the final port processed,
@@ -731,7 +735,7 @@
isrc->xi_cpu = 0;
#ifdef SMP
- error = xen_intr_assign_cpu(&isrc->xi_intsrc,
+ error = xen_intr_assign_cpu(&isrc->xi_arch.xai_intsrc,
cpu_apic_ids[cpu]);
if (error)
panic("unable to bind xen intr#%d to CPU#%d: %d",
@@ -826,7 +830,7 @@
{
struct xenisrc *isrc = (struct xenisrc *)base_isrc;
- return (isrc->xi_vector);
+ return (isrc->xi_arch.xai_vector);
}
/**
@@ -1124,7 +1128,7 @@
#ifdef SMP
if (error == 0)
- error = intr_event_bind(isrc->xi_intsrc.is_event, cpu);
+ error = intr_event_bind(isrc->xi_arch.xai_intsrc.is_event, cpu);
#endif
if (error != 0) {
@@ -1144,7 +1148,7 @@
* masks manually so events can't fire on the wrong cpu
* during AP startup.
*/
- xen_intr_assign_cpu(&isrc->xi_intsrc, cpu_apic_ids[cpu]);
+ xen_intr_assign_cpu(&isrc->xi_arch.xai_intsrc, cpu_apic_ids[cpu]);
}
#endif
@@ -1201,7 +1205,7 @@
* masks manually so events can't fire on the wrong cpu
* during AP startup.
*/
- xen_intr_assign_cpu(&isrc->xi_intsrc, cpu_apic_ids[cpu]);
+ xen_intr_assign_cpu(&isrc->xi_arch.xai_intsrc, cpu_apic_ids[cpu]);
}
/*
@@ -1230,7 +1234,7 @@
va_start(ap, fmt);
vsnprintf(descr, sizeof(descr), fmt, ap);
va_end(ap);
- return (intr_describe(isrc->xi_vector, isrc->xi_cookie, descr));
+ return (intr_describe(isrc->xi_arch.xai_vector, isrc->xi_cookie, descr));
}
void
@@ -1297,7 +1301,7 @@
if (isrc == NULL || isrc->xi_cookie != NULL)
return (EINVAL);
- error = intr_add_handler(name, isrc->xi_vector,filter, handler, arg,
+ error = intr_add_handler(name, isrc->xi_arch.xai_vector,filter, handler, arg,
flags|INTR_EXCL, &isrc->xi_cookie, 0);
if (error != 0)
printf("%s: %s: add handler failed: %d\n", name, __func__,
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, May 19, 12:25 AM (19 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33279696
Default Alt Text
D30648.id90435.diff (4 KB)
Attached To
Mode
D30648: xen/intr: move x86 bits into xen_arch_isrc_t structure
Attached
Detach File
Event Timeline
Log In to Comment