From the point of view of one about to try to port the Linux kernel to a new architecture: I have recently been examining some of the existing ports of Linux to architectures like various ARMs, SuperH, MIPS, m68k and nios2, and I have realised that there are hardware features that are completely unused (ARM system mode), and hardware features (kernel stack pointer in the Motorola Coldfire port) that are completely absent, and emulated in software. Well aware that Linux was designed around the x86 architecture, and then only at a later date were things restructured to make porting easier, and with this in mind; I am wondering what would be the best theoretical architecture to run Linux on. Clearly asking any 'best' question makes little sense without some kind of benchmarks, so the things that I have in mind are: System call (kernel entry/exit) overhead Ease of saving and restoring a thread's context Interrupt latency Security Memory requirements Some of my own, quite conventional, thoughts are: A stack based architecture is best, it makes nested interrupts, and general interruptibility very easy. Two hardware stack pointers, one for kernel stack and one for user mode stack of each task, but maybe a third, interrupt stack. At least two corresponding processor modes, a user mode with access only to 'safe' instructions, and a privileged one that can do anything. But would additional modes for interrupt handlers and system call handlers be beneficial? I would also consider it a significant security problem if when a task enters the kernel, kernel data is stored on the task's user-mode stack, since the task could fish around beyond the end of its stack and sniff private data. (This is, if I understand correctly, the reason ARM system mode is unused.) But on the other hand, if each task didn't need a separate kernel stack, then there could be 4k or 8k less memory use per thread. Is it necessarily the case that the more similar to x86, the better Linux 'fits' the architecture? I apologise if theoretical questions of this nature are not appropriate, and appreciate any redirection to anywhere where they might be more so. -- James Crosby --
| Andrew Morton | -mm merge plans for 2.6.23 |
| David Miller | Re: [BUG] New Kernel Bugs |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Andrew Morton | Re: Linux 2.6.21-rc4 |
git: | |
| David Miller | [GIT]: Networking |
| Natalie Protasevich | [BUG] New Kernel Bugs |
| Jarek Poplawski | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Eric W. Biederman | [PATCH] macvlan: Support creating macvlans from macvlans |
