1. 25 Jul, 2002 40 commits
    • Linus Torvalds's avatar
      Remove (broken) parport locking, add comment on fixing it. · 27a25d32
      Linus Torvalds authored
      At least it compiles now.
      27a25d32
    • Linus Torvalds's avatar
      Remove unnecessary (and now nonworking) "sti()" in parport · ef27791d
      Linus Torvalds authored
      interrupt probing
      ef27791d
    • Linus Torvalds's avatar
      cmd640 IDE driver internal spinlocks for config etc accesses. · e5066df3
      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.
      e5066df3
    • Linus Torvalds's avatar
      Merge penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/tls-tree · 116eb9a8
      Linus Torvalds authored
      into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
      116eb9a8
    • Ingo Molnar's avatar
      [PATCH] Thread-Local Storage (TLS) support · 0bbed3be
      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.
      0bbed3be
    • Sam Ravnborg's avatar
      [PATCH] Remove docgen + gen-all-syms targets · f7822c6b
      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.
      f7822c6b
    • Andy Grover's avatar
      resolve merge of Dom's patch · 26cffe4a
      Andy Grover authored
      26cffe4a
    • Andy Grover's avatar
      Last little bit of C99 init fixes · dda0273d
      Andy Grover authored
      Fix panic in EC driver (Dom B)
      Add a some more sanity checking (Richard Schaal)
      dda0273d
    • Andy Grover's avatar
      Use C99 initializers (Rusty Russell) · 4916e118
      Andy Grover authored
      4916e118
    • Andy Grover's avatar
      Interpreter update · 6050790e
      Andy Grover authored
      6050790e
    • Dominik Brodowski's avatar
      [PATCH] resolve ACPI lockup · cc6baa4f
      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.
      cc6baa4f
    • Patrick Mochel's avatar
      Merge osdl.org:/home/mochel/src/kernel/devel/linux-2.5-virgin · 173d4827
      Patrick Mochel authored
      into osdl.org:/home/mochel/src/kernel/devel/linux-2.5-driverfs-rewrite
      173d4827
    • Patrick Mochel's avatar
      d4a3557e
    • Patrick Mochel's avatar
      driverfs: Don't use VFS for file or directory deletion · 309efdac
      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).
      309efdac
    • Patrick Mochel's avatar
      driverfs: don't use vfs for creating symlinks · e3656f48
      Patrick Mochel authored
      Add check for existence of dentry in driverfs_symlink and driverfs_mknod  (which the other creation
      functions use).
      e3656f48
    • Patrick Mochel's avatar
      driverfs: don't use VFS for directory creation · 915a4d4c
      Patrick Mochel authored
      Call driverfs_mkdir directly, instead of going through vfs.
      915a4d4c
    • Patrick Mochel's avatar
      driverfs: stop using vfs layer for file creation · 99264544
      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
      99264544
    • Linus Torvalds's avatar
      Merge bk://vana.vc.cvut.cz/ncpfs · 59ece965
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      59ece965
    • Sam Ravnborg's avatar
      [PATCH] docbook: Call docbook makefile with -f [9/9] · 6eebabfa
      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.
      6eebabfa
    • Sam Ravnborg's avatar
      [PATCH] docbook: Move script target in top-level file [8/9] · 1a2e2c02
      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.
      1a2e2c02
    • Sam Ravnborg's avatar
      [PATCH] docbook: Update documentation to reflect new docproc [7/9] · b7b2f983
      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.
      b7b2f983
    • Sam Ravnborg's avatar
      [PATCH] docbook: Makefile cleanup [6/9] · 7f23c245
      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.
      7f23c245
    • Sam Ravnborg's avatar
      [PATCH] docbook: scripts/docproc improved [5/9] · d7e46839
      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.
      d7e46839
    • Sam Ravnborg's avatar
      [PATCH] kernel-doc: Fix warnings [4/9] · fa3faf80
      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.
      fa3faf80
    • Sam Ravnborg's avatar
      [PATCH] kernel-doc: Generate valid DocBook syntax [3/9] · 61bdbc4e
      Sam Ravnborg authored
      Forward port from 2.4, originally by Alan Cox
       o Do not generate empty RefEntry's
       o Improved error reporting
      61bdbc4e
    • Sam Ravnborg's avatar
      [PATCH] kernel-doc: Improved support for man-page generation [2/9] · 8963f360
      Sam Ravnborg authored
      Forward port from 2.4, originally by Christoph Hellwig
      8963f360
    • Sam Ravnborg's avatar
      [PATCH] Made 'make sgmldocs' work again after serial merge [1/9] · 5a969545
      Sam Ravnborg authored
       o Changed targets in documentation/DocBook/Makefile
       o New filenames in DocBook/kernel-api.tmpl
      5a969545
    • Petr Vandrovec's avatar
      [PATCH] ipx use of cli/sti · bc14d864
      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.
      bc14d864
    • Mikael Pettersson's avatar
      [PATCH] fix two unwrapped uses of thread_info->cpu · 06868c17
      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.
      06868c17
    • Mikael Pettersson's avatar
      [PATCH] shrink check_nmi_watchdog stack frame · d53948eb
      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.
      d53948eb
    • Ravikiran G. Thirumalai's avatar
      [PATCH] Ensure xtime_lock and timerlist_lock are on difft cachelines · a94a3303
      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.
      a94a3303
    • Richard Russon's avatar
      [PATCH] New LDM Driver (Windows Dynamic Disks) · 4966a3c5
      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
      4966a3c5
    • Anton Blanchard's avatar
      [PATCH] Missing memory barrier in pte_chain_unlock · f4f65023
      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.
      f4f65023
    • Patrick Mochel's avatar
      Use C99 initializers in driverfs · 086a716c
      Patrick Mochel authored
      086a716c
    • David Howells's avatar
      [PATCH] read-write semaphore downgrade and trylock · 866b413d
      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.
      866b413d
    • Patrick Mochel's avatar
      Remove BKL from driverfs · 89988159
      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)
      89988159
    • Rusty Russell's avatar
      [PATCH] cpu_online() has odd semantics · 8b8c90a3
      Rusty Russell authored
      Make sure the cpu argument to cpu_online() is evaluated for
      side effects on UP too.
      8b8c90a3
    • Thunder From The Hill's avatar
      [PATCH] cli-sti-removal.txt fixup · ad625ee4
      Thunder From The Hill authored
      Things look rather like this..
      ad625ee4
    • Linus Torvalds's avatar
      Merge bk://linux-input.bkbits.net/linux-input · c482e28f
      Linus Torvalds authored
      into home.transmeta.com:/home/torvalds/v2.5/linux
      c482e28f
    • Vojtech Pavlik's avatar
      Add EVIOCSABS() ioctl to change the abs* informative · 3fc985a6
      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. 
      3fc985a6