An error occurred fetching the project authors.
  1. 09 Mar, 2003 1 commit
  2. 19 Feb, 2003 1 commit
    • Linus Torvalds's avatar
      Add doublefault handling with a task gate. · 7f754cf4
      Linus Torvalds authored
      This potentially helps debugging, since otherwise a double fault
      would generate a triple fault and then reboot the machine. Now
      instead it can print out a note about where the problem happened,
      unless all the kernel data structures are truly buggered.
      7f754cf4
  3. 15 Feb, 2003 1 commit
    • Andrew Morton's avatar
      [PATCH] Make the world safe for -Wundef · 7807a1bc
      Andrew Morton authored
      Patch from: Valdis.Kletnieks@vt.edu
      
      This is a patch to clean things up so compiling with -Wundef becomes feasible
      (This patch cuts the number of warnings with 'make allyesconfig' drop from
      around 10,000 to several hundred).  It was originally inspired by the
      discussion of things that include linux/version.h but don't use the contents
      - after doing this, I was able to find that there *WAS* at least one place
      where version.h was missing (see following patch).
      7807a1bc
  4. 29 Dec, 2002 1 commit
    • Andrew Morton's avatar
      [PATCH] INIT_TASK/INIT_TSS cleanup · 6950ee0a
      Andrew Morton authored
      Ingo added saved_fs, saved_gs to thread_struct and didn't add
      corresponding initializers to INIT_THREAD.  We assign NULL to an
      unsigned int and the compiler warns.
      
      The patch converts it to use designated initialisers and fixes the
      io_bitmap initializer in the process.
      6950ee0a
  5. 28 Dec, 2002 2 commits
  6. 24 Dec, 2002 1 commit
  7. 22 Dec, 2002 1 commit
    • Manfred Spraul's avatar
      [PATCH] Avoid overwriting boot_cpu_data from trampoline code · dd0f2bdf
      Manfred Spraul authored
      boot_cpu_data should contain the common capabilities of all cpus in the
      system. identify_cpu [arch/i386/kernel/cpu/common.c] tries to enforce
      that. But right now, the SMP trampoline code [arch/i386/kernel/head.S]
      overwrites boot_cpu_data when the secondary cpus are started, i.e.
      boot_cpu_data contains the capabilities from the last cpu that booted :-(
      
      The attached patch adds a new, __initdata variable for the asm code.
      dd0f2bdf
  8. 21 Dec, 2002 1 commit
  9. 25 Nov, 2002 1 commit
  10. 03 Nov, 2002 1 commit
    • Manfred Spraul's avatar
      [PATCH] complete the move of the LDT code into · cc1741c0
      Manfred Spraul authored
      The i386 LDT code had it's own set of arch hooks (??_segments), I've
      replaced most of them with the mmu context hooks in a previous patch.
      The attached patch completes that change: replace release_segments with
      destroy_context.
      
      The patch is part of the -ac kernels in 2.4.  The patch breaks x86-64,
      Andi Kleen promised to send you the corresponding
      s/release_segments/destroy_context/ patch.
      cc1741c0
  11. 31 Oct, 2002 1 commit
    • Andrew Morton's avatar
      [PATCH] speedup heuristic for get_unmapped_area · 631709da
      Andrew Morton authored
      [I was going to send shared pagetables today, but it failed in
       my testing under X :( ]
      
      the first one is an mmap inefficiency that was reported by Saurabh Desai.
      The test_str02 NPTL test-utility does the following: it tests the maximum
      number of threads by creating a new thread, which thread creates a new
      thread itself, etc. It basically creates thousands of parallel threads,
      which means thousands of thread stacks.
      
      NPTL uses mmap() to allocate new default thread stacks - and POSIX
      requires us to install a 'guard page' as well, which is done via
      mprotect(PROT_NONE) on the first page of the stack. This means that tons
      of NPTL threads means 2* tons of vmas per MM, all allocated in a forward
      fashion starting at the virtual address of 1 GB (TASK_UNMAPPED_BASE).
      
      Saurabh reported a slowdown after the first couple of thousands of
      threads, which i can reproduce as well. The reason for this slowdown is
      the get_unmapped_area() implementation, which tries to achieve the most
      compact virtual memory allocation, by searching for the vma at
      TASK_UNMAPPED_BASE, and then linearly searching for a hole. With thousands
      of linearly allocated vmas this is an increasingly painful thing to do ...
      
      obviously, high-performance threaded applications will create stacks
      without the guard page, which triggers the anon-vma merging code so we end
      up with one large vma, not tons of small vmas.
      
      it's also possible for userspace to be smarter by setting aside a stack
      space and keeping a bitmap of allocated stacks and using MAP_FIXED (this
      also enables it to do the guard page not via mprotect() but by keeping the
      stacks apart by 1 page - ie. half the number of vmas) - but this also
      decreases flexibility.
      
      So i think that the default behavior nevertheless makes sense as well, so
      IMO we should optimize it in the kernel.
      
      there are various solutions to this problem, none of which solve the
      problem in a 100% sufficient way, so i went for the simplest approach: i
      added code to cache the 'last known hole' address in mm->free_area_cache,
      which is used as a hint to get_unmapped_area().
      
      this fixed the test_str02 testcase wonderfully, thread creation
      performance for this testcase is O(1) again, but this simpler solution
      obviously has a number of weak spots, and the (unlikely but possible)
      worst-case is quite close to the current situation. In any case, this
      approach does not sacrifice the perfect VM compactness out mmap()
      implementation achieves, so it's a performance optimization with no
      externally visible consequences.
      
      The most generic and still perfectly-compact VM allocation solution would
      be to have a vma tree for the 'inverse virtual memory space', ie. a tree
      of free virtual memory ranges, which could be searched and iterated like
      the space of allocated vmas. I think we could do this by extending vmas,
      but the drawback is larger vmas. This does not save us from having to scan
      vmas linearly still, because the size constraint is still present, but at
      least most of the anon-mmap activities are constant sized. (both malloc()
      and the thread-stack allocator uses mostly fixed sizes.)
      
      This patch contains some fixes from Dave Miller - on some architectures
      it is not posible to evaluate TASK_UNMAPPED_BASE at compile-time.
      631709da
  12. 08 Oct, 2002 1 commit
  13. 12 Aug, 2002 1 commit
    • Ingo Molnar's avatar
      [PATCH] tls-2.5.31-D9 · b40c812e
      Ingo Molnar authored
      3 TLS entries, 9 cycles copying and no branches in the context-switch
      path. The patch also adds Christoph's suggestion and renames
      modify_ldt_ldt_s (yuck!) to user_desc.
      b40c812e
  14. 28 Jul, 2002 2 commits
  15. 25 Jul, 2002 1 commit
    • 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
  16. 13 Jun, 2002 1 commit
    • Benjamin LaHaise's avatar
      [PATCH] 2.5.20 x86 iobitmap cleanup · ded80dca
      Benjamin LaHaise authored
      This makes the IO bitmap allocations a separately allocated structure,
      shrinking the default task size.
      
      We alloc it in sys_ioperm() and copy_thread() and frees in
      exit_thread().  It also gets rid of the IO_BITMAP_SIZE+1 crap, as only
      the tss actually needs the tail long, and we weren't copying it into the
      bitmap anyways.
      ded80dca
  17. 05 Jun, 2002 1 commit
    • Dave Jones's avatar
      [PATCH] large x86 setup cleanup. · 9fc4eb64
      Dave Jones authored
      Patrick Mochel did a great job here at splitting up some of the larger
      messy parts of arch/i386/kernel/setup.c, and introduced a nice abstraction
      which gives us a much nicer way to ensure we can add workarounds for vendor
      specific bugs / features without polluting other vendor code paths.
      
      Mark Haverkamp also brought this up to date for merging in my tree circa
      2.5.14, and asides from 1-2 now fixed small thinkos, there haven't been
      any problems.
      
      This also features a workaround for an errata item on stepping C0 of
      the Intel Pentium 4 Xeon, which isn't in your tree yet, where we must
      disable the hardware prefetcher to ensure sane operation.
      9fc4eb64
  18. 21 May, 2002 2 commits
    • Brian Gerst's avatar
      [PATCH] remaining cpu_has cleanups · ec66b46d
      Brian Gerst authored
      This patch cleans up the remaining direct tests against x86_capability.
            It moves the cpu_has_* macros to the more appropriate
      cpufeature.h.  It also introduces the cpu_has() macro to test features
      for individual cpus.
      ec66b46d
    • Brian Gerst's avatar
      [PATCH] cpu_has_mmx · 9a3f1f54
      Brian Gerst authored
      This patch takes the cpu_has_mmx macro introduced in the xor.h header
      and puts it in the proper place.  It also converts the ov511 driver to
      use the new macro.
      9a3f1f54
  19. 20 May, 2002 1 commit
  20. 28 Apr, 2002 1 commit
    • Dave Jones's avatar
      [PATCH] Dynamic LDT sizing. · 6a2a196f
      Dave Jones authored
      Originally from Manfred Spraul.
      
      * dynamically grow the LDT
      Every app that's linked against libpthread right now allocates a full 64
      kB LDT, without proper error handling, and always from the vmalloc area
      6a2a196f
  21. 09 Apr, 2002 1 commit
    • Linus Torvalds's avatar
      [PATCH] set-bit cleanup I: x86_capability. · 6b5dd06d
      Linus Torvalds authored
      Cosmetic change: x86_capability.  Makes it an unsigned long, and
      removes the gratuitous & operators (it is already an array).  These
      produce warnings when set_bit() etc. takes an unsigned long * instead
      of a void *.
      
      Originally from Rusty Russell
      6b5dd06d
  22. 03 Apr, 2002 1 commit
  23. 19 Feb, 2002 1 commit
  24. 11 Feb, 2002 1 commit
  25. 09 Feb, 2002 1 commit
  26. 08 Feb, 2002 1 commit
    • Dave Jones's avatar
      [PATCH] handle out of spec SMP athlons. · 168c9069
      Dave Jones authored
      Newer Athlons have means of checking if they are SMP capable or not.
      This code adds checks that printk a warning on systems not intended
      for SMP, and set the taint flag that modutils is already aware of.
      The taint code is also improved to use defines instead of magic numbers.
      168c9069
  27. 07 Feb, 2002 1 commit
    • David Howells's avatar
      [PATCH] thread information block · 9b10610a
      David Howells authored
      syscall latency improvement
      
       * There's now an asm/thread_info.h header file with the basic structure
         def and asm offsets in it.
      
       * There's now a linux/thread_info.h header file which includes the asm
         version and wraps some bitops calls to make convenience functions for
         accessing the low-level flags. 
      
       * The task_struct has had some fields removed (and some flags), and has
         acquired a pointer to the thread_info struct.
      
       * task_struct's are now allocated on slabs in kernel/fork.c, whereas
         thread_info structs are allocated at the bottom of the stack pages.
      
       * Some more convenience functions are provided at the end of linux/sched.h to
         access flags in other tasks (these are here because they need to access the
         task_struct).
      9b10610a
  28. 05 Feb, 2002 10 commits
    • Linus Torvalds's avatar
      v2.4.14.4 -> v2.4.14.5 · 2d46136d
      Linus Torvalds authored
        - Greg KH: enable hotplug driver support
        - Andrea Arcangeli: remove bogus sanity check
        - David Mosberger: /proc/cpuinfo and scsi scatter-gather for ia64
        - David Hinds: 16-bit pcmcia network driver updates/cleanups
        - Hugh Dickins: remove some stale code from VM
        - David Miller: /proc/cpuinfo for sparc, sparc fork bug fix, network
        fixes, warning fixes
        - Peter Braam: intermezzo update
        - Greg KH: USB updates
        - Ivan Kokshaysky: /proc/cpuinfo for alpha
        - David Woodhouse: jffs2 - remove dead code, remove gcc3 warning
        - Hugh Dickins: fix kiobuf page allocation/deallocation
      2d46136d
    • Linus Torvalds's avatar
      v2.4.10.4 -> v2.4.10.5 · 8b29e8ed
      Linus Torvalds authored
        - Keith Owens: module exporting error checking
        - Greg KH: USB update
        - Paul Mackerras: clean up wait_init_idle(), ppc prefetch macros
        - Jan Kara: quota fixes
        - Abraham vd Merwe: agpgart support for Intel 830M
        - Jakub Jelinek: ELF loader cleanups
        - Al Viro: more cleanups
        - David Miller: sparc64 fix, netfilter fixes
        - me: tweak resurrected oom handling
      8b29e8ed
    • Linus Torvalds's avatar
      v2.4.9.10 -> v2.4.9.11 · a880f45a
      Linus Torvalds authored
        - Neil Brown: md cleanups/fixes
        - Andrew Morton: console locking merge
        - Andrea Arkangeli: major VM merge
      a880f45a
    • Linus Torvalds's avatar
      v2.4.9.9 -> v2.4.9.10 · c37fa164
      Linus Torvalds authored
        - Alan Cox: continued merging
        - Mingming Cao: make msgrcv/shmat check the queue/segment ID's properly
        - Greg KH: USB serial init failure fix, Xircom serial converter driver
        - Neil Brown: nsfd/raid/md/lockd cleanups
        - Ingo Molnar: multipath RAID personality, raid xor update
        - Hugh Dickins/Marcelo Tosatti: swapin read-ahead race fix
        - Vojtech Pavlik: fix up some of the infrastructure for x86-64
        - Robert Love: AMD 761 AGP GART support
        - Jens Axboe: fix SCSI-generic queue handling race
        - me: be sane about page reference bits
      c37fa164
    • Linus Torvalds's avatar
      v2.4.9.7 -> v2.4.9.8 · 932f485f
      Linus Torvalds authored
        - Christoph Hellwig: clean up personality handling a bit
        - Robert Love: update sysctl/vm documentation
        - make the three-argument (that everybody hates) "min()" be "min_t()",
        and introduce a type-anal "min()" that complains about arguments of
        different types.
      932f485f
    • Linus Torvalds's avatar
      v2.4.7 -> v2.4.7.1 · 6fbaac38
      Linus Torvalds authored
        - Anton Altaparmakov: NTFS error checking
        - Johannes Erdfelt: USB updates
        - OGAWA Hirofumi: FAT update
        - Alan Cox: driver + s390 update merge
        - Richard Henderson: fix alpha sigsuspend error return value
        - Marcelo Tosatti: per-zone VM shortage
        - Daniel Phillips: generic use-once optimization instead of drop-behind
        - Bjorn Wesen: Cris architecture update
        - Anton Altaparmakov: support for Windows Dynamic Disks
        - James Washer: LDT loading SMP bug fix
      6fbaac38
    • Linus Torvalds's avatar
      v2.4.6.7 -> v2.4.6.8 · fff10634
      Linus Torvalds authored
        - Chris Mason: reiserfs update
        - Paul Mackerras: PPC updates (softirq)
        - Kai Germaschewski: ISDN updates
        - various: workaround for cpuid inline asm problem with egcs-2.91.66
      fff10634
    • Linus Torvalds's avatar
      v2.4.6.1 -> v2.4.6.2 · adbc4706
      Linus Torvalds authored
        - merge with Alan (USB, zoran, sony motion-eye, rio, dmi-scan)
      adbc4706
    • Linus Torvalds's avatar
      v2.4.0.2 -> v2.4.0.3 · 448ba078
      Linus Torvalds authored
        - me: clean up XMM support
      448ba078
    • Linus Torvalds's avatar
      v2.4.0 -> v2.4.0.1 · 43e9282d
      Linus Torvalds authored
        - Don't drop a megabyte off the old-style memory size detection
        - remember to UnlockPage() in ramfs_writepage()
        - 3c59x driver update from Andrew Morton
        - egcs-1.1.2 miscompiles depca: workaround by Andrew Morton
        - dmfe.c module init fix: Andrew Morton
        - dynamic XMM support. Andrea Arkangeli.
        - Locked SHM segment deadlock fix
        - fork() page table copy race fix
      43e9282d