Messages in this thread | | | Date | Tue, 25 Feb 2020 22:36:36 +0100 | From | Thomas Gleixner <> | Subject | [patch 00/10] x86/entry: Consolidation - Part I |
| |
Hi!
This is the first batch of a 73 patches series which consolidates the x86 entry code.
This work started off as a trivial 5 patches series moving the heavy lifting of POSIX CPU timers out of interrupt context into thread/process context. This discovered that KVM is lacking to handle pending work items before entering guest mode and added the handling to the x86 KVM code. Review requested to make this a generic infrastructure.
The next series grew to 25 patches implementing the generic infrastructure, converting x86 (and as a POC ARM64) over, but it turned out that this was slightly incomplete and still had some entanglement with the rest of the x86 entry code as some of that functionality is shared between syscall and interrupt entry/exit. And it also unearthed the nastyness of IOPL which got already addressed in mainline.
This series addresses these issues in order to prepare for making the entry from userspace and exit to userspace (and it's counterpart enter guest) a generic infrastructure in order to restrict the necessary ASM work to the bare minimum.
The series is split into 5 parts:
- General cleanups and bugfixes
- Consolidation of the syscall entry/exit code
- Autogenerate simple exception/trap code and reduce the difference between 32 and 64 bit
- Autogenerate complex exception/trap code and provide different entry points for #DB and #MC exceptions which allows to address the recently discovered RCU vs. world issues in a more structured way
- Convert the device interrupt entry code to use the same mechanism as exceptions and traps and finally convert the system vectors over as well. The last step after all those cleanups is to move the return from exception/interrupt logic (user mode work, kernel preemption) completely from ASM into C-code, so the ASM code just has to take care about returning from the exception, which is horrible and convoluted enough already.
At the end the x86 entry code is ready to move the syscall parts out into generic code and finally tackle the initial problem which started all of this.
The complete series is available from git:
git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git x86/entry
which contains all 73 patches. The individual parts are tagged, so this part can be retrieved via:
git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git entry-v1-part1
Thanks,
tglx
8<--------------- entry/entry_32.S | 19 +++++++------------ include/asm/irq.h | 2 +- include/asm/mce.h | 3 --- include/asm/traps.h | 17 +++++++---------- kernel/cpu/mce/core.c | 12 ++++++++++-- kernel/cpu/mce/internal.h | 3 +++ kernel/irq.c | 3 +-- kernel/traps.c | 41 ++++++++++++++++++++++++++++++++++------- 8 files changed, 63 insertions(+), 37 deletions(-)
| |