[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH V2 0/6] mini-os: check and fix up against nested events in x86-64 kernel entry
mini-os almost always use direct iret to return from interrupt. But this operation is not atomic because Xen uses event mask to enable/disable event delivery. So there is a window for nested events to happen after re-enabling event delivery and before a direct iret. The issues come with such non-atomicity have been discussed in: http://lists.xen.org/archives/html/xen-devel/2007-06/msg00142.html And also on Xen-devel: http://markmail.org/message/jkzhzy6fyes6igcf This patch checks and fixes up against nested events in a similar fashion of Linux 32bit pvops. It checks against re-entrant of critical section in event handling callback. Try to fix up by coalescing the two stack frames into one when the a nested event came. It then resumes execution as if the second event never happened. It also refactors mini-os's x86-64 kernel entry assembly code. Xu Zhang (6): mini-os/x86-64 entry: code clean-ups; no functional changes mini-os/x86-64 entry: define macros for registers partial save and restore; no functional changes mini-os/x86-64 entry: code refactoring; no functional changes mini-os/x86-64 entry: remove unnecessary event blocking mini-os/x86-64 entry: defer RESTORE_REST until return mini-os/x86-64 entry: check against nested events and try to fix up extras/mini-os/arch/x86/x86_64.S | 245 ++++++++++++++++++++++++-------------- 1 files changed, 156 insertions(+), 89 deletions(-) --- Changed since v1: * Drop the chunky lookup table; use Linux x86-32's fixup strategy instead, as suggested by Jeremy Fitzhardinge; * Reflect Samuel Thibault's comments. -- 1.7.7.6 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |