Port-xen archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[RFC] Interrupt Path rework



Hello,

I'm attaching below three files which rework the Xen interrupt servicing
mechanism a little bit. The basic motivation is to re-use the native
interrupt path as much as possible (i've not included the vector.S diffs
here).

How this works is that the callback handler scans through the pending
bitstring that Xen uses to notify pending events on, and translates this
to ci->ci_ipending on the target CPUs. We define a SPL_HYPERVISOR, which
is the highest SPL the kernel can be in. We then yank the current spl to
this level, and slowly iterate downwards to whatever spl we were at
before. This churns the pending registered handlers of the appropriate
drivers whose pending bits have been set, thus scheduling the interrupts
for us.

A less cheeky way to do this would be to use workqueue(9) with the
appropriate SPL and the entry stackframe() appropriately setup.

Anyway, this is meant as an RFC. Our current code is a little obtuse,
and I'd like to have it simplified, so that we don't have to maintain a
separate assembler path for the code XEN code.

I've Cc:ed Taylor - he's really helped hash through some of the
assumptions on the current code - thank you!

-- 
~cherry

Attachment: hypervisor_machdep.c
Description: Binary data

Attachment: evtchn.c
Description: Binary data

Attachment: intr.c
Description: Binary data



Home | Main Index | Thread Index | Old Index