Messages in this thread | | | From | Thomas Schlichter <> | Date | Fri, 24 Jan 2003 15:24:13 +0100 | Subject | [PATCH] to support hookable flush_tlb* functions |
| |
Hello,
with this mail I send a patch that allows kernel modules to hook into the different flush_tlb* functions defined in <asm/tlbflush.h> or <asm/pgtable.h> in order to synchronize devices TLBs.
This is necessary for devices that provide their own TLB and cannot participate on the CPU busses shootdown protocol. With this patch it is possible to assure TLB consistency.
Currently this extension could possibly be used by high performance interconnects like QsNet from Quadrics (www.quadrics.com), and in the near future by even more high performance, low latency NICs that will implement direct user space DMA transfers to not pinned user pages. TLBs are there a mandatory requirement.
Currently I am writing my diploma thesis about the development of such a device where I need this patch, and as it looks good to me I want to provide it to the public community so it can be reviewed and even more tested. (the i386 parts are tested work fine for me)
The patch consists of two parts, one generic part and for each supported architecture an other part that depends on the generic one.
Attached to this mail is only the generic part and the architecture dependend part for i386 compatible machines just not to waste everyones bandwidth... But if requested I can send you patches for the other architectures, too.
The i386 patch also includes some cleanups by renaming __flush_tlb_* to local_flush_tlb_*.
I hope some time this patches will make it into the kernel sources. (perhaps even into 2.6.x ?)
Sincerely yours
Thomas Schlichter
P.S.: To test this patch I've also written a module that counts the different flush_tlb* calls and shows them in /proc/tlbstat. If requested I could send you this, too.[unhandled content-type:application/octet-stream][unhandled content-type:application/octet-stream] | |