- 25 Jul, 2002 40 commits
-
-
Linus Torvalds authored
This is no better or worse than the cli/sti the cmd640 driver used to have, but at least it compiles and works in the new scheme of things. Perfection can wait. Especially since that probably involves removing the PCI-related code, and just trusting the native Linux direct PCI accesses.
-
Linus Torvalds authored
into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
-
Ingo Molnar authored
the following patch implements proper x86 TLS support in the Linux kernel, via a new system-call, sys_set_thread_area(): http://redhat.com/~mingo/tls-patches/tls-2.5.28-C6 a TLS test utility can be downloaded from: http://redhat.com/~mingo/tls-patches/tls_test.c what is TLS? Thread Local Storage is a concept used by threading abstractions - fast an efficient way to store per-thread local (but not on-stack local) data. The __thread extension is already supported by gcc. proper TLS support in compilers (and glibc/pthreads) is a bit problematic on the x86 platform. There's only 8 general purpose registers available, so on x86 we have to use segments to access the TLS. The approach used by glibc so far was to set up a per-thread LDT entry to describe the TLS. Besides the generic unrobustness of LDTs, this also introduced a limit: the maximum number of LDT entries is 8192, so the maximum number of threads per application is 8192. this patch does it differently - the kernel keeps a specific per-thread GDT entry that can be set up and modified by each thread: asmlinkage int sys_set_thread_area(unsigned int base, unsigned int limit, unsigned int flags) the kernel, upon context-switch, modifies this GDT entry to match that of the thread's TLS setting. This way user-space threaded code can access per-thread data via this descriptor - by using the same, constant %gs (or %gs) selector. The number of TLS areas is unlimited, and there is no additional allocation overhead associated with TLS support. the biggest problem preventing the introduction of this concept was Linux's global shared GDT on SMP systems. The patch fixes this by implementing a per-CPU GDT, which is also a nice context-switch speedup, 2-task lat_ctx context-switching got faster by about 5% on a dual Celeron testbox. [ Could it be that a shared GDT is fundamentally suboptimal on SMP? perhaps updating the 'accessed' bit in the DS/CS descriptors causes some sort locked memory cycle overhead? ] the GDT layout got simplified: * 0 - null * 1 - Thread-Local Storage (TLS) segment * 2 - kernel code segment * 3 - kernel data segment * 4 - user code segment <==== new cacheline * 5 - user data segment * 6 - TSS * 7 - LDT * 8 - APM BIOS support <==== new cacheline * 9 - APM BIOS support * 10 - APM BIOS support * 11 - APM BIOS support * 12 - PNPBIOS support <==== new cacheline * 13 - PNPBIOS support * 14 - PNPBIOS support * 15 - PNPBIOS support * 16 - PNPBIOS support <==== new cacheline * 17 - not used * 18 - not used * 19 - not used set_thread_area() currently recognizes the following flags: #define TLS_FLAG_LIMIT_IN_PAGES 0x00000001 #define TLS_FLAG_WRITABLE 0x00000002 #define TLS_FLAG_CLEAR 0x00000004 - in theory we could avoid the 'limit in pages' bit, but i wanted to preserve the flexibility to potentially enable the setting of byte-granularity stack segments for example. And unlimited segments (granularity = pages, limit = 0xfffff) might have a performance advantage on some CPUs. We could also automatically figure out the best possible granularity for a given limit - but i wanted to avoid this kind of guesswork. Some CPUs might have a plus for page-limit segments - who knows. - The 'writable' flag is straightforward and could be useful to some applications. - The 'clear' flag clears the TLS. [note that a base 0 limit 0 TLS is in fact legal, it's a single-byte segment at address 0.] (the system-call does not expose any other segment options to user-space, priviledge level is 3, the segment is 32-bit, etc. - it's using safe and sane defaults.) NOTE: the interface does not allow the changing of the TLS of another thread on purpose - that would just complicate the interface (and implementation) unnecesserily. Is there any good reason to allow the setting of another thread's TLS? NOTE2: non-pthreads glibc applications can call set_thread_area() to set up a GDT entry just below the end of stack. We could use some sort of default TLS area as well, but that would hard-code a given segment.
-
Sam Ravnborg authored
Removed unused targets to CHMOD_FILES in scripts This allow a fresh kernel to start the build process without bailing about docgen.
-
Andy Grover authored
-
Andy Grover authored
Fix panic in EC driver (Dom B) Add a some more sanity checking (Richard Schaal)
-
Andy Grover authored
-
Andy Grover authored
-
Dominik Brodowski authored
A much needed (and widely tested) ACPI bugfix for kernel 2.5.28: An u8 was casted into an u32, then all 32 bits were zeroed. This can cause other values, e.g. "unsigned long flags" to be corrupted. When these flags==0 are "restored", the system locks hard.
-
Patrick Mochel authored
into osdl.org:/home/mochel/src/kernel/devel/linux-2.5-driverfs-rewrite
-
Patrick Mochel authored
-
Patrick Mochel authored
These are tied together a bit, so they're included in the same patch Mainly, they move the taking of the inode's i_sem into the unlink and rmdir. driverfs_rmdir doesn't call driverfs_unlink anymore, as it checks if the directory is empty and conditionally does d_delete on it. fs/namei.c implements d_unhash, which is called in vfs_rmdir. This isn't exported (yet), so reimplement it here (at least until it's known that it's not needed or it's exported).
-
Patrick Mochel authored
Add check for existence of dentry in driverfs_symlink and driverfs_mknod (which the other creation functions use).
-
Patrick Mochel authored
Call driverfs_mkdir directly, instead of going through vfs.
-
Patrick Mochel authored
This is the first of a series of patches to driverfs to _not_ use the vfs layer for file creation and deletion. The VFS layer is allowing files and directories to be removed from userspace, which we don't want at all. Per Al Viro's suggesting, I am pushing the necessary checks from the vfs_* functions into the driverfs functions, and calling them directly from the kernel interface to driverfs. This is the first, for file creation
-
bk://vana.vc.cvut.cz/ncpfsLinus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Sam Ravnborg authored
The rewritten makefile for DocBook requires that working directory is $(TOPDIR) therefore use -f Documentation/DocBook/Makefile to invoke the docbook makefile.
-
Sam Ravnborg authored
To support the new DocBook makefile the script target needs to be located the block that is checked for precense of a .config file.
-
Sam Ravnborg authored
kernel-doc-nano-HOWTO.txt updated to reflect new functionality provided by docproc. gen-all-syms and docgen description removed. kernel-api.tmpl and parportbook.tmpl updated to specify files to search for EXPORT-SYMBOL* to enable documentation of all relevant functions.
-
Sam Ravnborg authored
Massive cleanup of makefile. Comments added as well. Enabled by the new functionality provided by docproc When generating HTML locate a new file in DocBook dir that points to the book in question.
-
Sam Ravnborg authored
This is the first patch in a serie to clean-up the DocBook Makefile. docproc is extented to include the functionality previously provided by gen-all-syms and docgen. Furthermore the necessity to specify which files to search for EXPORT_SYMBOL are removed, the information is now read in the .tmpl files. docproc is furthermore extended to generate dependency information. gen-all-syms and docgen are deleted.
-
Sam Ravnborg authored
During processing of skbuff.h three warnings were issued, because members of an enum within a struct were nor documented. This patch fixes kernel-doc not to spit out these non-valid warnings. Originally by Thunder.
-
Sam Ravnborg authored
Forward port from 2.4, originally by Alan Cox o Do not generate empty RefEntry's o Improved error reporting
-
Sam Ravnborg authored
Forward port from 2.4, originally by Christoph Hellwig
-
Sam Ravnborg authored
o Changed targets in documentation/DocBook/Makefile o New filenames in DocBook/kernel-api.tmpl
-
Petr Vandrovec authored
This removes cli/sti from SPX registration code in IPX. I decided to use normal rw_semaphore instead of net_family_{write,read}_{lock,unlock} used in net/socket.c. I left SPX code itself alone: I do not use it and last time I checked it it was very unreliable reliable transport.
-
Mikael Pettersson authored
This patch for 2.5.28 fixes two explicit accesses to thread_info->cpu in generic code to use the new UP-optimised macros instead.
-
Mikael Pettersson authored
This patch for 2.5.28 reduces the stack frame size of arch/i386/kernel/nmi.c:check_nmi_watchdog() from 4096 bytes in the worst case to 128 bytes. The problem with the current code is that it copies the entire irq_stat[] array, when only a single field (__nmi_count) is of interest. The irq_stat_t element type is only 28 bytes, but it is also ____cacheline_aligned, and that blows the array up to 4096 bytes on SMP P4 Xeons, 2048 bytes on SMP K7s, and 1024 bytes on SMP P5/P6s. The patch reduces this to NR_CPUS*4==128 bytes.
-
Ravikiran G. Thirumalai authored
I've noticed that xtime_lock and timerlist_lock ends up on the same cacheline all the time (atleaset on x86). Not a good thing for loads with high xxx_timer and do_gettimeofday counts I guess (networking etc). Here's a trivial fix.
-
Richard Russon authored
This is a complete rewrite of the LDM driver (support for Windows Dynamic Disks). It incorporates Al Viro's recent partition handling tidy ups. Details: LDM Driver rewritten. More efficient. Much smaller memory footprint. The old driver was little more than a stopgap. The new driver is a complete rewrite based on a much better understanding of the database based on much more reverse engineering more able to spot errors and inconsistancies it has a much smaller memory footprint no longer considered experimental accompanied by brief info: Documentation/ldm.txt
-
Anton Blanchard authored
On a ppc64 machine running 2.5.28 we were hitting this BUG in __free_pages_ok: BUG_ON(page->pte.chain != NULL); In pte_chain_lock we use test_and_set_bit which implies a memory barrier. In pte_chain_unlock we use clear_bit which has no memory barriers so we need to add one.
-
Patrick Mochel authored
-
David Howells authored
Here's a patch from Christoph Hellwig and myself to supply write->read semaphore downgrade, and also from Brian Watson to supply trylock for rwsems.
-
Patrick Mochel authored
- in mkdir: we already hold parent directory's semaphore (c.f. driverfs_create_dir) - in create: ditto (c.f. driverfs_create_file) - in unlink: ditto (c.f. driverfs_remove_file) and file's i_sem is taken in vfs_unlink - un lseek: take inode's i_sem (though I think we can replace this with a common lseek function...later)
-
Rusty Russell authored
Make sure the cpu argument to cpu_online() is evaluated for side effects on UP too.
-
Thunder From The Hill authored
Things look rather like this..
-
bk://linux-input.bkbits.net/linux-inputLinus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Vojtech Pavlik authored
values on input devices. This is something the X peoople really wanted. Rename input_devinfo to input_id, it's shorter and more to the point. Remove superfluous printks in uinput.c Clean up return values in evdev.c ioctl.
-
Vojtech Pavlik authored
comes to directions of movement and rotation, a mouse wheel should be positive where it "rotates forward, away from the user". We had the opposite in psmouse.c. Fixed this.
-
Vojtech Pavlik authored
converter to atkbd.c - trivial. Remove ps2serkbd, because it's not needed anymore.
-