]> err.no Git - linux-2.6/log
linux-2.6
18 years ago[XFS] Provide XFS support for the splice syscall.
Nathan Scott [Fri, 31 Mar 2006 03:08:59 +0000 (13:08 +1000)]
[XFS] Provide XFS support for the splice syscall.

Signed-off-by: Nathan Scott <nathans@sgi.com>
18 years ago[XFS] Reenable write barriers by default.
Nathan Scott [Fri, 31 Mar 2006 03:04:56 +0000 (13:04 +1000)]
[XFS] Reenable write barriers by default.

SGI-PV: 912426
SGI-Modid: xfs-linux-melb:xfs-kern:25634a

Signed-off-by: Nathan Scott <nathans@sgi.com>
18 years ago[XFS] Make project quota enforcement return an error code consistent with
Nathan Scott [Fri, 31 Mar 2006 03:04:49 +0000 (13:04 +1000)]
[XFS] Make project quota enforcement return an error code consistent with
its use.

SGI-PV: 951300
SGI-Modid: xfs-linux-melb:xfs-kern:25633a

Signed-off-by: Nathan Scott <nathans@sgi.com>
18 years ago[XFS] Implement the silent parameter to fill_super, previously ignored.
Nathan Scott [Fri, 31 Mar 2006 03:04:17 +0000 (13:04 +1000)]
[XFS] Implement the silent parameter to fill_super, previously ignored.

SGI-PV: 951299
SGI-Modid: xfs-linux-melb:xfs-kern:25632a

Signed-off-by: Nathan Scott <nathans@sgi.com>
18 years ago[XFS] Cleanup comment to remove reference to obsoleted function
Mandy Kirkconnell [Fri, 31 Mar 2006 03:03:58 +0000 (13:03 +1000)]
[XFS] Cleanup comment to remove reference to obsoleted function
xfs_bmap_do_search_extents().

SGI-PV: 951415
SGI-Modid: xfs-linux-melb:xfs-kern:208491a

Signed-off-by: Mandy Kirkconnell <alkirkco@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>
18 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6
Linus Torvalds [Thu, 30 Mar 2006 23:04:13 +0000 (15:04 -0800)]
Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6: (24 commits)
  [PARISC] Fix double free when removing HIL drivers
  [PARISC] Add atomic_sub_and_test
  [PARISC] Enabled some NLS modules in a500, b180 and c3000 defconfigs
  [PARISC] Kill duplicated EXPORT_SYMBOL warnings
  [PARISC] Move ioremap EXPORT_SYMBOL from parisc_ksyms.c
  [PARISC] Make local_t use atomic_long_t
  [PARISC] Update defconfigs
  [PARISC] Add PREEMPT support
  [PARISC] More useful readwrite lock helpers
  [PARISC] Convert HIL drivers to use input_allocate_device
  [PARISC] Fixup CONFIG_EISA a bit
  [PARISC] getsockopt should be ENTRY_COMP
  [PARISC] Remove obsolete CONFIG_DEBUG_IOREMAP
  [PARISC] Temporary FIXME for ioremapping EISA regions
  [PARISC] Enable ioremap functionality unconditionally
  [PARISC] Fix stifb with IOREMAP and a 64-bit kernel
  [PARISC] Add CONFIG_HPPA_IOREMAP to conditionally enable ioremap
  [PARISC] Add STRICT_MM_TYPECHECKS
  [PARISC] Fix IOREMAP with a 64-bit kernel
  [PARISC] Add parisc implementation of flush_kernel_dcache_page()
  ...

18 years agoMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
Linus Torvalds [Thu, 30 Mar 2006 22:32:38 +0000 (14:32 -0800)]
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
  IB/mad: RMPP support for additional classes
  IB/mad: include GID/class when matching receives
  IB/mthca: Fix section mismatch problems
  IPoIB: Fix oops with raw sockets
  IB/mthca: Fix check of size in SRQ creation
  IB/srp: Fix unmapping of fake scatterlist

18 years agoMerge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
Linus Torvalds [Thu, 30 Mar 2006 22:29:20 +0000 (14:29 -0800)]
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  [PATCH] sata_mv: three bug fixes
  [PATCH] libata: ata_dev_init_params() fixes
  [PATCH] libata: Fix interesting use of "extern" and also some bracketing
  [PATCH] libata: Simplex and other mode filtering logic
  [PATCH] libata - ATA is both ATA and CFA
  [PATCH] libata: Add ->set_mode hook for odd drivers
  [PATCH] libata: BMDMA handling updates
  [PATCH] libata: kill trailing whitespace
  [PATCH] libata: add FIXME above ata_dev_xfermask()
  [PATCH] libata: cosmetic changes in ata_bus_softreset()
  [PATCH] libata: kill E.D.D.

18 years agoMerge branch 'drm-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied...
Linus Torvalds [Thu, 30 Mar 2006 22:26:27 +0000 (14:26 -0800)]
Merge branch 'drm-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6

* 'drm-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
  drm: remove drm_{alloc,free}_pages
  drm: sis fix compile warning
  drm: add new radeon PCI ids..
  drm: read breadcrumb in IRQ handler
  drm: fixup i915 breadcrumb read/write
  drm:  remove pointless checks in radeon_state
  drm: fixup improper cast.
  drm: rationalise some pci ids
  drm: Add general-purpose packet for manipulating scratch registers (r300)
  drm: rework radeon memory map (radeon 1.23)
  drm: update r300 register names
  drm: fixup PCI DMA support

18 years agoMerge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
Linus Torvalds [Thu, 30 Mar 2006 20:38:18 +0000 (12:38 -0800)]
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6

* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
  [IA64] ioremap() should prefer WB over UC
  [IA64] Add __mca_table to the DISCARD list in gate.lds
  [IA64] Move __mca_table out of the __init section
  [IA64] simplify some condition checks in iosapic_check_gsi_range
  [IA64] correct some messages and fixes some minor things
  [IA64-SGI] fix for-loop in sn_hwperf_geoid_to_cnode()
  [IA64-SGI] sn_hwperf use of num_online_cpus()
  [IA64] optimize flush_tlb_range on large numa box
  [IA64] lazy_mmu_prot_update needs to be aware of huge pages

18 years ago[PATCH] splice: add support for SPLICE_F_MOVE flag
Jens Axboe [Thu, 30 Mar 2006 13:16:46 +0000 (15:16 +0200)]
[PATCH] splice: add support for SPLICE_F_MOVE flag

This enables the caller to migrate pages from one address space page
cache to another.  In buzz word marketing, you can do zero-copy file
copies!

Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] Introduce sys_splice() system call
Jens Axboe [Thu, 30 Mar 2006 13:15:30 +0000 (15:15 +0200)]
[PATCH] Introduce sys_splice() system call

This adds support for the sys_splice system call. Using a pipe as a
transport, it can connect to files or sockets (latter as output only).

From the splice.c comments:

   "splice": joining two ropes together by interweaving their strands.

   This is the "extended pipe" functionality, where a pipe is used as
   an arbitrary in-memory buffer. Think of a pipe as a small kernel
   buffer that you can use to transfer data from one end to the other.

   The traditional unix read/write is extended with a "splice()" operation
   that transfers data buffers to or from a pipe buffer.

   Named by Larry McVoy, original implementation from Linus, extended by
   Jens to support splicing to files and fixing the initial implementation
   bugs.

Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PARISC] Fix double free when removing HIL drivers
Kyle McMartin [Thu, 30 Mar 2006 16:47:32 +0000 (11:47 -0500)]
[PARISC] Fix double free when removing HIL drivers

On Thu, Mar 30, 2006 at 08:31:02AM -0500, Dmitry Torokhov wrote:
> Don't do that, its double free. input_unregister_device() normally
> causes release() to be called and free the device. input_free_device
> is only to be called when input_register_device has not been called or
> failed.
>
> Plus you might want to unregister device after closing serio port,
> otherwise your interrupt routine might be referencing already freed
> memory.

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Add atomic_sub_and_test
Kyle McMartin [Thu, 30 Mar 2006 00:47:32 +0000 (19:47 -0500)]
[PARISC] Add atomic_sub_and_test

Define atomic_sub_and_test to fix build failures.

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Enabled some NLS modules in a500, b180 and c3000 defconfigs
Stuart Brady [Wed, 29 Mar 2006 20:11:25 +0000 (13:11 -0700)]
[PARISC] Enabled some NLS modules in a500, b180 and c3000 defconfigs

With c3000_defconfig and b180_defconfig, FAT couldn't be used
because no NLS modules were built.

Signed-off-by: Stuart Brady <sdb@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Kill duplicated EXPORT_SYMBOL warnings
Kyle McMartin [Wed, 29 Mar 2006 22:21:12 +0000 (15:21 -0700)]
[PARISC] Kill duplicated EXPORT_SYMBOL warnings

Some symbols are exported both in parisc_ksyms.c, and at their
definition site. Nuke the redundant EXPORT_SYMBOL in ksyms to quiet
warnings when vmlinux is linked.

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Move ioremap EXPORT_SYMBOL from parisc_ksyms.c
Kyle McMartin [Wed, 29 Mar 2006 22:18:32 +0000 (15:18 -0700)]
[PARISC] Move ioremap EXPORT_SYMBOL from parisc_ksyms.c

Move ioremap/iounmap EXPORT_SYMBOL to ioremap.c where they belong.

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Make local_t use atomic_long_t
Kyle McMartin [Wed, 29 Mar 2006 14:04:49 +0000 (07:04 -0700)]
[PARISC] Make local_t use atomic_long_t

As done in asm-generic/local.h in mainline. Otherwise local_t was 32-bit
even on a 64-bit kernel.

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Update defconfigs
Helge Deller [Sun, 26 Mar 2006 18:19:46 +0000 (11:19 -0700)]
[PARISC] Update defconfigs

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Add PREEMPT support
Kyle McMartin [Sat, 25 Mar 2006 04:24:21 +0000 (21:24 -0700)]
[PARISC] Add PREEMPT support

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] More useful readwrite lock helpers
Kyle McMartin [Sat, 25 Mar 2006 04:22:02 +0000 (21:22 -0700)]
[PARISC] More useful readwrite lock helpers

spinlock.c needs _can_lock helpers. Rewrite _is_locked helpers to be
_can_lock helpers.

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Convert HIL drivers to use input_allocate_device
Helge Deller [Sun, 26 Mar 2006 14:41:55 +0000 (07:41 -0700)]
[PARISC] Convert HIL drivers to use input_allocate_device

Convert HIL drivers to use input_allocate_device() - avoids crashes.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Fixup CONFIG_EISA a bit
Helge Deller [Sun, 26 Mar 2006 08:54:16 +0000 (01:54 -0700)]
[PARISC] Fixup CONFIG_EISA a bit

Fix up some ISA/EISA stuff.

(Note: isa_ accessors have been removed from asm/io.h)

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] getsockopt should be ENTRY_COMP
Kyle McMartin [Sun, 19 Feb 2006 18:02:50 +0000 (11:02 -0700)]
[PARISC] getsockopt should be ENTRY_COMP

compat_sys_getsockopt exists, so we should use that, instead of directly
using sys_getsockopt on 64-bit compiles.

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Remove obsolete CONFIG_DEBUG_IOREMAP
Helge Deller [Thu, 23 Mar 2006 08:07:00 +0000 (01:07 -0700)]
[PARISC] Remove obsolete CONFIG_DEBUG_IOREMAP

Remove CONFIG_DEBUG_IOREMAP, it's now obsolete and won't work anyway.
Remove it from lib/KConfig since it was only available on parisc.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Temporary FIXME for ioremapping EISA regions
Helge Deller [Thu, 23 Mar 2006 07:40:10 +0000 (00:40 -0700)]
[PARISC] Temporary FIXME for ioremapping EISA regions

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Enable ioremap functionality unconditionally
Helge Deller [Thu, 23 Mar 2006 07:32:46 +0000 (00:32 -0700)]
[PARISC] Enable ioremap functionality unconditionally

Enable CONFIG_HPPA_IOREMAP by default and remove all now unnecessary code.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Fix stifb with IOREMAP and a 64-bit kernel
Helge Deller [Wed, 22 Mar 2006 22:19:46 +0000 (15:19 -0700)]
[PARISC] Fix stifb with IOREMAP and a 64-bit kernel

Kill various warnings when built using ioremap.
Remove stifb_{read,write} functions, which are now obsolete (and stack abusers!)
Disable stifb mmap() functionality on a 64-bit kernel, it will crash the
machine.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Add CONFIG_HPPA_IOREMAP to conditionally enable ioremap
Helge Deller [Tue, 7 Mar 2006 21:12:13 +0000 (14:12 -0700)]
[PARISC] Add CONFIG_HPPA_IOREMAP to conditionally enable ioremap

Instead of making it a #define in asm/io.h, allow user to select
to turn on IOREMAP from the config menu.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Add STRICT_MM_TYPECHECKS
Helge Deller [Thu, 23 Mar 2006 22:48:15 +0000 (15:48 -0700)]
[PARISC] Add STRICT_MM_TYPECHECKS

Add STRICT_MM_TYPECHECKS to page.h as other architectures do.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Fix IOREMAP with a 64-bit kernel
Helge Deller [Tue, 21 Mar 2006 23:01:15 +0000 (16:01 -0700)]
[PARISC] Fix IOREMAP with a 64-bit kernel

We were only copying 32-bits of the PTE/PFN, not the full 52-bits.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Add parisc implementation of flush_kernel_dcache_page()
James Bottomley [Wed, 22 Mar 2006 16:42:04 +0000 (09:42 -0700)]
[PARISC] Add parisc implementation of flush_kernel_dcache_page()

We need to do a little renaming of our original syntax because
of the difference in arguments.

Signed-off-by: James Bottomley <jejb@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Add parisc implementation of flush_anon_page()
James Bottomley [Wed, 22 Mar 2006 15:28:59 +0000 (08:28 -0700)]
[PARISC] Add parisc implementation of flush_anon_page()

This should now allow SG_IO and fuse to function correctly on our
platform.

Signed-off-by: James Bottomley <jejb@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] I/O-Space must be ioremap_nocache()'d
Helge Deller [Mon, 27 Mar 2006 19:52:15 +0000 (12:52 -0700)]
[PARISC] I/O-Space must be ioremap_nocache()'d

Addresses in F-space must be accessed uncached on most parisc machines.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Enable free_initrd_mem()
Helge Deller [Tue, 7 Mar 2006 20:34:45 +0000 (13:34 -0700)]
[PARISC] Enable free_initrd_mem()

I think it's time to enable free_initrd_mem() again...

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[PARISC] Clarify pdc_stable license terms
Thibaut VARENE [Sat, 4 Feb 2006 01:06:30 +0000 (18:06 -0700)]
[PARISC] Clarify pdc_stable license terms

pdc_stable.c is explicitly licensed under GPL version 2.

Signed-off-by: Thibaut VARENE <varenet@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
18 years ago[IA64] ioremap() should prefer WB over UC
Bjorn Helgaas [Thu, 30 Mar 2006 16:53:39 +0000 (09:53 -0700)]
[IA64] ioremap() should prefer WB over UC

efi_memmap_init() collects full granules of WB memory, without
regard for whether they also support UC.  So in order for ioremap()
to work for main memory, it must prefer WB mappings when possible.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
18 years ago[IA64] Add __mca_table to the DISCARD list in gate.lds
Jes Sorensen [Thu, 30 Mar 2006 15:13:22 +0000 (10:13 -0500)]
[IA64] Add __mca_table to the DISCARD list in gate.lds

Add __mca_table to the DISCARD list for the gate.lds linker script to
avoid broken linker references when linking the final vmlinux file.

Also add comment to include/asm-ia64/asmmacros.h to avoid anyone else
hitting this problem in the future.

Credits to James Bottomley <James.Bottomley@SteelEye.com> for spotting
the DISCARD list in gate.lds.S

Signed-off-by: Jes Sorensen <jes@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
18 years agoIB/mad: RMPP support for additional classes
Hal Rosenstock [Wed, 29 Mar 2006 00:40:04 +0000 (16:40 -0800)]
IB/mad: RMPP support for additional classes

Add RMPP support for additional management classes that support it.
Also, validate RMPP is consistent with management class specified.

Signed-off-by: Hal Rosenstock <halr@voltaire.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
18 years agoIB/mad: include GID/class when matching receives
Jack Morgenstein [Wed, 29 Mar 2006 00:39:07 +0000 (16:39 -0800)]
IB/mad: include GID/class when matching receives

Received responses are currently matched against sent requests based
on TID only.  According to the spec, responses should match based on
the combination of TID, management class, and requester LID/GID.

Without the additional qualification, an agent that is responding to
two requests, both of which have the same TID, can match RMPP ACKs
with the incorrect transaction.  This problem can occur on the SM node
when responding to SA queries.

Signed-off-by: Jack Morgenstein <jackm@mellanox.co.il>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
18 years agoMerge branch 'mv-merge'
Jeff Garzik [Thu, 30 Mar 2006 00:43:31 +0000 (19:43 -0500)]
Merge branch 'mv-merge'

Conflicts:

drivers/scsi/sata_mv.c

18 years ago[PATCH] sata_mv: three bug fixes
Mark Lord [Wed, 29 Mar 2006 14:50:31 +0000 (09:50 -0500)]
[PATCH] sata_mv: three bug fixes

(1) A DMA transfer size of 0x10000 was not being written
as 0x0000 in the PRDs.  Fixed.

(1) The DEV_IRQ interrupt cause bit happens spuriously
during EDMA operation, and was not being ignored by the driver.
This led to various "drive busy" errors being reported,
with associated unpredictable behaviour.  Fixed.

(2) If a SATA or PCI interrupt was received with no outstanding
command, the interrupt handler still attempted to invoke
ata_qc_complete(), triggering assert()/BUG_ON() behaviour
elsewhere in libata.  Fixed.

The driver still has issues with confusion after error-recovery,
but should now  be reliable in the absence of drive errors.
I will be looking more into the error-handling bugs next.

Signed-Off-By: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] libata: ata_dev_init_params() fixes
Albert Lee [Mon, 27 Mar 2006 08:39:18 +0000 (16:39 +0800)]
[PATCH] libata: ata_dev_init_params() fixes

ata_dev_init_params() fixes:
- Get the "heads" and "sectors" parameters from caller instead of implicitly from dev->id[].
- Return AC_ERR_INVALID instead of 0 if an invalid parameter is found

Signed-off-by: Albert Lee <albertcc@tw.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] libata: Fix interesting use of "extern" and also some bracketing
Alan Cox [Mon, 27 Mar 2006 18:01:32 +0000 (19:01 +0100)]
[PATCH] libata: Fix interesting use of "extern" and also some bracketing

Signed-off-by: Alan Cox <alan@redhat.com>
Last of the set, just clean up some oddments. Assuming the whole set is
now ok then the remaining differences are the setup of PIO_0 at reset
and the ->data_xfer method.
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] libata: Simplex and other mode filtering logic
Alan Cox [Mon, 27 Mar 2006 17:58:20 +0000 (18:58 +0100)]
[PATCH] libata: Simplex and other mode filtering logic

Add a field to the host_set called 'flags' (was host_set_flags changed
to suit Jeff)
Add a simplex_claimed field so we can remember who owns the DMA channel
Add a ->mode_filter() hook to allow drivers to filter modes
Add docs for mode_filter and set_mode
Filter according to simplex state
Filter cable in core

This provides the needed framework to support all the mode rules found
in the PATA world. The simplex filter deals with 'to spec' simplex DMA
systems found in older chips. The cable filter avoids duplicating the
same rules in each chip driver with PATA. Finally the mode filter is
neccessary because drive/chip combinations have errata that forbid
certain modes with some drives or types of ATA object.

Drive speed setup remains per channel for now and the filters now use
the framework Tejun put into place which cleans them up a lot from the
older libata-pata patches.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] libata - ATA is both ATA and CFA
Alan Cox [Mon, 27 Mar 2006 17:49:19 +0000 (18:49 +0100)]
[PATCH] libata - ATA is both ATA and CFA

I think this is still needed with the new probe code (which btw seems to
be missing docs in upstream ?).

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] libata: Add ->set_mode hook for odd drivers
Alan Cox [Mon, 27 Mar 2006 17:46:37 +0000 (18:46 +0100)]
[PATCH] libata: Add ->set_mode hook for odd drivers

Some hardware doesn't want the usual mode setup logic running. This
allows the hardware driver to replace it for special cases in the least
invasive way possible.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] libata: BMDMA handling updates
Alan Cox [Mon, 27 Mar 2006 17:42:40 +0000 (18:42 +0100)]
[PATCH] libata: BMDMA handling updates

This is the minimal patch set to enable the current code to be used with
a controller following SFF (ie any PATA and early SATA controllers)
safely without crashes if there is no BMDMA area or if BMDMA is not
assigned by the BIOS for some reason.

Simplex status is recorded but not acted upon in this change, this isn't
a problem with the current drivers as none of them are for simplex
hardware. A following diff will deal with that.

The flags in the probe structure remain ->host_set_flags although Jeff
asked me to rename them, simply because the rename would break the usual
Linux rules that old code should break when there are changes. not
compile and run and then blow up/eat your computer/etc. Renaming this
later is a trivial exercise once a better name is chosen.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] ixp2000: fix gcc4 breakage
Lennert Buytenhek [Wed, 29 Mar 2006 13:12:44 +0000 (15:12 +0200)]
[PATCH] ixp2000: fix gcc4 breakage

gcc4 doesn't like us declaring a static function inside another
function.  We can do away with this construct altogether and use
BUILD_BUG_ON() instead (idea from Andi Kleen.)

Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] b44: ensure valid mac addr
Gary Zambrano [Tue, 28 Mar 2006 22:57:38 +0000 (14:57 -0800)]
[PATCH] b44: ensure valid mac addr

Added code to check for invalid MAC address from eeprom or user input.

Signed-off-by: Gary Zambrano <zambrano@broadcom.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] Janitor: drivers/net/pcnet32: fix incorrect comments
Linas Vepstas [Tue, 28 Mar 2006 22:36:23 +0000 (16:36 -0600)]
[PATCH] Janitor: drivers/net/pcnet32: fix incorrect comments

The comments concerning how the pcnet32 ethernet device driver selects
the MAC addr to use are incorrect. A recent patch (in the last 3 months)
changed how the code worked, but did not change the comments.

Side comment: the new behaviour is good; I've got a pcnet32 card which
powers up with garbage in the CSR's, and a good MAC addr in the PROM.

Signed-off-by: Linas Vepstas <linas@linas.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] net: remove CONFIG_NET_CBUS conditional for NS8390
Arthur Othieno [Tue, 28 Mar 2006 22:09:01 +0000 (14:09 -0800)]
[PATCH] net: remove CONFIG_NET_CBUS conditional for NS8390

Don't bother testing for CONFIG_NET_CBUS ("NEC PC-9800 C-bus cards"); it went
out with the rest of PC98 subarch.

Signed-off-by: Arthur Othieno <apgo@patchbomb.org>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] natsemi: Support oversized EEPROMs
Mark Brown [Tue, 28 Mar 2006 22:08:55 +0000 (14:08 -0800)]
[PATCH] natsemi: Support oversized EEPROMs

The natsemi chip can have a larger EEPROM attached than it itself uses for
configuration.  This patch adds support for user space access to such an
EEPROM.

Signed-off-by: Mark Brown <broonie@sirena.org.uk>
Cc: Tim Hockin <thockin@hockin.org>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] spidernet : enable tx checksum offloading by default
Jens Osterkamp [Mon, 27 Mar 2006 15:16:36 +0000 (17:16 +0200)]
[PATCH] spidernet : enable tx checksum offloading by default

This enables TX checksum offloading for the spidernet driver by default.

Signed-off-by: Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] bonding: support carrier state for master
Jay Vosburgh [Mon, 27 Mar 2006 21:27:43 +0000 (13:27 -0800)]
[PATCH] bonding: support carrier state for master

Add support for the bonding master to specify its carrier state
based upon the state of the slaves.  For 802.3ad, the bond is up if
there is an active, parterned aggregator.  For other modes, the bond is
up if any slaves are up.  Updates driver version to 3.0.3.

Based on a patch by jamal <hadi@cyberus.ca>.

Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years agoMerge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/linville...
Jeff Garzik [Wed, 29 Mar 2006 22:30:19 +0000 (17:30 -0500)]
Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6

18 years ago[PATCH] acenic: fix section mismatches
Randy Dunlap [Mon, 27 Mar 2006 20:26:12 +0000 (12:26 -0800)]
[PATCH] acenic: fix section mismatches

Fix section mismatches in acenic driver:
WARNING: drivers/net/acenic.o - Section mismatch: reference to .init.data:tigon2FwText from .text between 'acenic_probe_one' (at offset 0x2409) and 'ace_interrupt'
WARNING: drivers/net/acenic.o - Section mismatch: reference to .init.data:tigon2FwRodata from .text between 'acenic_probe_one' (at offset 0x2422) and 'ace_interrupt'

Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] spidernet : reduce console spam
Jens Osterkamp [Tue, 28 Mar 2006 13:59:55 +0000 (15:59 +0200)]
[PATCH] spidernet : reduce console spam

This patch reduces the message level of the RX ram full messages
from err to debug to prevent spamming the console leaving it in the
logfiles though.

From: Jens Osterkamp <Jens.Osterkamp@de.ibm.com>

Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] via-rhine: link state fix
Roger Luethi [Tue, 28 Mar 2006 18:53:56 +0000 (20:53 +0200)]
[PATCH] via-rhine: link state fix

Problems with link state detection have been reported several times in the
past months.

Denis Vlasenko did all the work tracking it down. Jeff Garzik suggested the
proper place for the fix.

When using the mii library, the driver needs to check mii->force_media
and set dev->state accordingly.

Signed-off-by: Roger Luethi <rl@hellgate.ch>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] axnet_cs.c : add hardware multicast support
Komuro [Sat, 25 Mar 2006 22:31:55 +0000 (07:31 +0900)]
[PATCH] axnet_cs.c : add hardware multicast support

Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years ago[PATCH] libata: kill trailing whitespace
Tejun Heo [Sat, 25 Mar 2006 05:28:57 +0000 (14:28 +0900)]
[PATCH] libata: kill trailing whitespace

Kill trailing whitespace.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
18 years agoMerge branch 'master'
Jeff Garzik [Wed, 29 Mar 2006 22:18:49 +0000 (17:18 -0500)]
Merge branch 'master'

18 years agob44: fix force mac address before ifconfig up
Gary Zambrano [Wed, 29 Mar 2006 22:12:05 +0000 (17:12 -0500)]
b44: fix force mac address before ifconfig up

Initializing the b44 MAC & PCI functional blocks in the controller must
occur inside init_one(). This will allow access to the MAC registers.
The controller was being powered up in b44_open() which would not allow
access to the registers before ifconfig was up.
Philip Kohlbecher found this bug.

Signed-off-by: Gary Zambrano <zambrano@broadcom.com>
18 years agoMerge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Linus Torvalds [Wed, 29 Mar 2006 19:29:33 +0000 (11:29 -0800)]
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
  [NETFILTER]: Rename init functions.
  [TCP]: Fix RFC2465 typo.
  [INET]: Introduce tunnel4/tunnel6
  [NET]: deinline 200+ byte inlines in sock.h
  [ECONET]: Convert away from SOCKOPS_WRAPPED
  [NET]: Fix ipx/econet/appletalk/irda ioctl crashes
  [NET]: Kill Documentation/networking/TODO
  [TG3]: Update version and reldate
  [TG3]: Skip timer code during full lock
  [TG3]: Speed up SRAM access
  [TG3]: Fix PHY loopback on 5700
  [TG3]: Fix bug in 40-bit DMA workaround code
  [TG3]: Fix probe failure due to invalid MAC address

18 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
Linus Torvalds [Wed, 29 Mar 2006 19:28:30 +0000 (11:28 -0800)]
Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc

* git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (67 commits)
  [PATCH] powerpc: Remove oprofile spinlock backtrace code
  [PATCH] powerpc: Add oprofile calltrace support to all powerpc cpus
  [PATCH] powerpc: Add oprofile calltrace support
  [PATCH] for_each_possible_cpu: ppc
  [PATCH] for_each_possible_cpu: powerpc
  [PATCH] lock PTE before updating it in 440/BookE page fault handler
  [PATCH] powerpc: Kill _machine and hard-coded platform numbers
  ppc: Fix compile error in arch/ppc/lib/strcase.c
  [PATCH] git-powerpc: WARN was a dumb idea
  [PATCH] powerpc: a couple of trivial compile warning fixes
  powerpc: remove OCP references
  powerpc: Make uImage default build output for MPC8540 ADS
  powerpc: move math-emu over to arch/powerpc
  powerpc: use memparse() for mem= command line parsing
  ppc: fix strncasecmp prototype
  [PATCH] powerpc: make ISA floppies work again
  [PATCH] powerpc: Fix some initcall return values
  [PATCH] powerpc: Workaround for pSeries RTAS bug
  [PATCH] spufs: fix __init/__exit annotations
  [PATCH] powerpc: add hvc backend for rtas
  ...

18 years ago[IA64] Move __mca_table out of the __init section
Russ Anderson [Wed, 29 Mar 2006 17:31:23 +0000 (11:31 -0600)]
[IA64] Move __mca_table out of the __init section

Move __mca_table out of the __init section.

Signed-off-by: Tony Luck <tony.luck@intel.com>
18 years agoIB/mthca: Fix section mismatch problems
Roland Dreier [Wed, 29 Mar 2006 17:36:46 +0000 (09:36 -0800)]
IB/mthca: Fix section mismatch problems

Quite a few cleanup functions in mthca were marked as __devexit.
However, they could also be called from error paths during
initialization, so they cannot be marked that way.  Just delete all of
the incorrect annotations.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
18 years agoIPoIB: Fix oops with raw sockets
Roland Dreier [Wed, 29 Mar 2006 17:36:46 +0000 (09:36 -0800)]
IPoIB: Fix oops with raw sockets

ipoib_hard_header() needs to handle the case that daddr is NULL.  This
can happen when packets are injected via a raw socket, and IPoIB
shouldn't oops in this case.

Reported by Anton Blanchard <anton@samba.org>

Signed-off-by: Roland Dreier <rolandd@cisco.com>
18 years agoIB/mthca: Fix check of size in SRQ creation
Jack Morgenstein [Sun, 26 Mar 2006 15:01:12 +0000 (17:01 +0200)]
IB/mthca: Fix check of size in SRQ creation

The previous patch for Tavor broke MemFree logic.

The driver should perform limit check only for Tavor.  For MemFree,
the check is incorrect, since ds (WQE stride) is always a power-of-2
(although the max_desc_size may not be).

In Tavor, however, WQE stride and desc_size are the same, and are not
necessarily power-of-2.  The check was really for the WQE stride (and
it Tavor, we use max_desc_size for the stride).

Signed-off-by: Jack Morgenstein <jackm@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
18 years agoIB/srp: Fix unmapping of fake scatterlist
Roland Dreier [Wed, 29 Mar 2006 17:36:45 +0000 (09:36 -0800)]
IB/srp: Fix unmapping of fake scatterlist

The recently merged patch to create a fake scatterlist for non-SG SCSI
commands had a bug: the driver ended up doing dma_unmap_sg() on a
scatterlist scmnd->request_buffer rather than the fake scatter list it
created.  Fix this so that the driver unmaps the same thing it maps.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
18 years agoMerge git://oss.sgi.com:8090/oss/git/xfs-2.6
Linus Torvalds [Wed, 29 Mar 2006 16:55:36 +0000 (08:55 -0800)]
Merge git://oss.sgi.com:8090/oss/git/xfs-2.6

* git://oss.sgi.com:8090/oss/git/xfs-2.6:
  [XFS] Cleanup in XFS after recent get_block_t interface tweaks.
  [XFS] Remove unused/obsoleted function: xfs_bmap_do_search_extents()
  [XFS] A change to inode chunk allocation to try allocating the new chunk
  Fixes a regression from the recent "remove ->get_blocks() support"
  [XFS] Fix compiler warning and small code inconsistencies in compat
  [XFS] We really suck at spulling.  Thanks to Chris Pascoe for fixing all

18 years agoMerge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/scjody/ieee1394
Linus Torvalds [Wed, 29 Mar 2006 02:48:03 +0000 (18:48 -0800)]
Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/scjody/ieee1394

* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/scjody/ieee1394:
  ohci1394: cleanup the "Unexpected PCI resource length" warning.
  sbp2: misc debug logging cleanups
  sbp2: proper treatment of DID_OK
  ieee1394: set read permission for parameter disable_irm
  sbp2: check for ARM failure
  ohci1394: clean up asynchronous and physical request filters programming
  ieee1394: remove amdtp remains from ieee1394_core.h
  ieee1394: remove devfs support
Signed-off-by: Jody McIntyre <scjody@modernduck.com>
  sbp2: prevent unloading of 1394 low-level driver

18 years ago[PATCH] powerpc: Remove oprofile spinlock backtrace code
Anton Blanchard [Mon, 27 Mar 2006 01:00:45 +0000 (12:00 +1100)]
[PATCH] powerpc: Remove oprofile spinlock backtrace code

Remove oprofile spinlock backtrace code now we have proper calltrace
support. Also make MMCRA sihv and sipr bits a variable since they may
change in future cpus. Finally, MMCRA should be a 64bit quantity.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
18 years ago[PATCH] powerpc: Add oprofile calltrace support to all powerpc cpus
Anton Blanchard [Mon, 27 Mar 2006 01:03:17 +0000 (12:03 +1100)]
[PATCH] powerpc: Add oprofile calltrace support to all powerpc cpus

Add calltrace support for other powerpc cpus. Tested on 7450.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
18 years ago[PATCH] powerpc: Add oprofile calltrace support
Brian Rogan [Mon, 27 Mar 2006 00:57:01 +0000 (11:57 +1100)]
[PATCH] powerpc: Add oprofile calltrace support

Add oprofile calltrace support to powerpc. Disable spinlock backtracing
now we can use calltrace info.

(Updated to work on both 32bit and 64bit by me).

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
18 years ago[PATCH] for_each_possible_cpu: ppc
KAMEZAWA Hiroyuki [Tue, 28 Mar 2006 22:50:52 +0000 (14:50 -0800)]
[PATCH] for_each_possible_cpu: ppc

for_each_cpu() actually iterates across all possible CPUs.  We've had mistakes
in the past where people were using for_each_cpu() where they should have been
iterating across only online or present CPUs.  This is inefficient and
possibly buggy.

We're renaming for_each_cpu() to for_each_possible_cpu() to avoid this in the
future.

This patch replaces for_each_cpu with for_each_possible_cpu.

Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
18 years ago[PATCH] for_each_possible_cpu: powerpc
KAMEZAWA Hiroyuki [Tue, 28 Mar 2006 22:50:51 +0000 (14:50 -0800)]
[PATCH] for_each_possible_cpu: powerpc

for_each_cpu() actually iterates across all possible CPUs.  We've had mistakes
in the past where people were using for_each_cpu() where they should have been
iterating across only online or present CPUs.  This is inefficient and
possibly buggy.

We're renaming for_each_cpu() to for_each_possible_cpu() to avoid this in the
future.

This patch replaces for_each_cpu with for_each_possible_cpu.

Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
18 years ago[PATCH] lock PTE before updating it in 440/BookE page fault handler
Eugene Surovegin [Tue, 28 Mar 2006 18:13:12 +0000 (10:13 -0800)]
[PATCH] lock PTE before updating it in 440/BookE page fault handler

Fix 44x and BookE page fault handler to correctly lock PTE before
trying to pte_update() it, otherwise this PTE might be swapped out
after pte_present() check but before pte_uptdate() call, resulting in
corrupted PTE. This can happen with enabled preemption and low memory
condition.

Signed-off-by: Eugene Surovegin <ebs@ebshome.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
18 years ago[PATCH] send_sigqueue: simplify and fix the race
Oleg Nesterov [Wed, 29 Mar 2006 00:11:30 +0000 (16:11 -0800)]
[PATCH] send_sigqueue: simplify and fix the race

send_sigqueue() checks PF_EXITING, then locks p->sighand->siglock.  This is
unsafe: 'p' can exit in between and set ->sighand = NULL.  The race is
theoretical, the window is tiny and irqs are disabled by the caller, so I
don't think we need the fix for -stable tree.

Convert send_sigqueue() to use lock_task_sighand() helper.

Also, delete 'p->flags & PF_EXITING' re-check, it is unneeded and the
comment is wrong.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] do_notify_parent_cldstop: remove 'to_self' param
Oleg Nesterov [Wed, 29 Mar 2006 00:11:29 +0000 (16:11 -0800)]
[PATCH] do_notify_parent_cldstop: remove 'to_self' param

The previous patch has changed callsites of do_notify_parent_cldstop() so that
to_self == (->ptrace & PT_PTRACED) always (as it should be).  We can remove
this parameter now.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: john stultz <johnstul@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] finish_stop: don't check stop_count < 0
Oleg Nesterov [Wed, 29 Mar 2006 00:11:28 +0000 (16:11 -0800)]
[PATCH] finish_stop: don't check stop_count < 0

Remove an obscure 'stop_count < 0' check in finish_stop().  The previous patch
made this case impossible.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: john stultz <johnstul@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] simplify do_signal_stop()
Oleg Nesterov [Wed, 29 Mar 2006 00:11:28 +0000 (16:11 -0800)]
[PATCH] simplify do_signal_stop()

do_signal_stop() considers 'thread_group_empty()' as a special case.
This was needed to avoid taking tasklist_lock. Since this lock is
unneeded any longer, we can remove this special case and simplify
the code even more.

Also, before this patch, finish_stop() was called with stop_count == -1
for 'thread_group_empty()' case. This is not strictly wrong, but confusing
and unneeded.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: john stultz <johnstul@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] cleanup __exit_signal->cleanup_sighand path
Oleg Nesterov [Wed, 29 Mar 2006 00:11:27 +0000 (16:11 -0800)]
[PATCH] cleanup __exit_signal->cleanup_sighand path

Move 'tsk->sighand = NULL' from cleanup_sighand() to __exit_signal().  This
makes the exit path more understandable and allows us to do
cleanup_sighand() outside of ->siglock protected section.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] make fork() atomic wrt pgrp/session signals
Oleg Nesterov [Wed, 29 Mar 2006 00:11:26 +0000 (16:11 -0800)]
[PATCH] make fork() atomic wrt pgrp/session signals

Eric W. Biederman wrote:
>
> Ok. SUSV3/Posix is clear, fork is atomic with respect
> to signals.  Either a signal comes before or after a
> fork but not during. (See the rationale section).
> http://www.opengroup.org/onlinepubs/000095399/functions/fork.html
>
> The tasklist_lock does not stop forks from adding to a process
> group. The forks stall while the tasklist_lock is held, but a fork
> that began before we grabbed the tasklist_lock simply completes
> afterwards, and the child does not receive the signal.

This also means that SIGSTOP or sig_kernel_coredump() signal can't
be delivered to pgrp/session reliably.

With this patch copy_process() returns -ERESTARTNOINTR when it
detects a pending signal, fork() will be restarted transparently
after handling the signals.

This patch also deletes now unneeded "group_stop_count > 0" check,
copy_process() can no longer succeed while group stop in progress.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Acked-By: Eric Biederman <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] pids: kill PIDTYPE_TGID
Oleg Nesterov [Wed, 29 Mar 2006 00:11:25 +0000 (16:11 -0800)]
[PATCH] pids: kill PIDTYPE_TGID

This patch kills PIDTYPE_TGID pid_type thus saving one hash table in
kernel/pid.c and speeding up subthreads create/destroy a bit.  It is also a
preparation for the further tref/pids rework.

This patch adds 'struct list_head thread_group' to 'struct task_struct'
instead.

We don't detach group leader from PIDTYPE_PID namespace until another
thread inherits it's ->pid == ->tgid, so we are safe wrt premature
free_pidmap(->tgid) call.

Currently there are no users of find_task_by_pid_type(PIDTYPE_TGID).
Should the need arise, we can use find_task_by_pid()->group_leader.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Acked-By: Eric Biederman <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] do_sigaction: don't take tasklist_lock
Oleg Nesterov [Wed, 29 Mar 2006 00:11:24 +0000 (16:11 -0800)]
[PATCH] do_sigaction: don't take tasklist_lock

do_sigaction() does not need tasklist_lock anymore, we can simplify the code.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] do_group_exit: don't take tasklist_lock
Oleg Nesterov [Wed, 29 Mar 2006 00:11:23 +0000 (16:11 -0800)]
[PATCH] do_group_exit: don't take tasklist_lock

do_group_exit() takes tasklist_lock for zap_other_threads(), this is unneeded
now.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] do_signal_stop: don't take tasklist_lock
Oleg Nesterov [Wed, 29 Mar 2006 00:11:22 +0000 (16:11 -0800)]
[PATCH] do_signal_stop: don't take tasklist_lock

do_signal_stop() does not need tasklist_lock anymore.  So it does not need to
do misc re-checks, and we can simplify the code.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] relax sig_needs_tasklist()
Oleg Nesterov [Wed, 29 Mar 2006 00:11:22 +0000 (16:11 -0800)]
[PATCH] relax sig_needs_tasklist()

handle_stop_signal() does not need tasklist_lock for SIG_KERNEL_STOP_MASK
signals anymore.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] sys_times: don't take tasklist_lock
Oleg Nesterov [Wed, 29 Mar 2006 00:11:21 +0000 (16:11 -0800)]
[PATCH] sys_times: don't take tasklist_lock

sys_times: don't take tasklist_lock

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] do __unhash_process() under ->siglock
Oleg Nesterov [Wed, 29 Mar 2006 00:11:20 +0000 (16:11 -0800)]
[PATCH] do __unhash_process() under ->siglock

This patch moves __unhash_process() call from realease_task() to
__exit_signal(), so __detach_pid() is called with ->siglock held.

This means we don't need tasklist_lock to iterate over thread group anymore:

copy_process() was already changed to do attach_pid()
under ->siglock.

Eric's "pidhash-kill-switch_exec_pids.patch" from -mm
changed de_thread() so it doesn't touch PIDTYPE_TGID.

NOTE: de_thread() still needs some attention.  It still changes task->pid
lockless.  Taking ->sighand.siglock here allows to do more tasklist_lock
removals.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] revert "Optimize sys_times for a single thread process"
Oleg Nesterov [Wed, 29 Mar 2006 00:11:19 +0000 (16:11 -0800)]
[PATCH] revert "Optimize sys_times for a single thread process"

This patch reverts 'CONFIG_SMP && thread_group_empty()' optimization in
sys_times().  The reason is that the next patch breaks memory ordering which
is needed for that optimization.

tasklist_lock in sys_times() will be eliminated completely by further patch.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] move __exit_signal() to kernel/exit.c
Oleg Nesterov [Wed, 29 Mar 2006 00:11:18 +0000 (16:11 -0800)]
[PATCH] move __exit_signal() to kernel/exit.c

__exit_signal() is private to release_task() now.  I think it is better to
make it static in kernel/exit.c and export flush_sigqueue() instead - this
function is much more simple and straightforward.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] rename __exit_sighand to cleanup_sighand
Oleg Nesterov [Wed, 29 Mar 2006 00:11:17 +0000 (16:11 -0800)]
[PATCH] rename __exit_sighand to cleanup_sighand

Cosmetic, rename __exit_sighand to cleanup_sighand and move it close to
copy_sighand().

This matches copy_signal/cleanup_signal naming, and I think it is easier to
follow.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Acked-by: "Paul E. McKenney" <paulmck@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] cleanup __exit_signal()
Oleg Nesterov [Wed, 29 Mar 2006 00:11:17 +0000 (16:11 -0800)]
[PATCH] cleanup __exit_signal()

This patch factors out duplicated code under 'if' branches.  Also, BUG_ON()
conversions and whitespace cleanups.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Acked-by: "Paul E. McKenney" <paulmck@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] copy_process: cleanup bad_fork_cleanup_signal
Oleg Nesterov [Wed, 29 Mar 2006 00:11:16 +0000 (16:11 -0800)]
[PATCH] copy_process: cleanup bad_fork_cleanup_signal

__exit_signal() does important cleanups atomically under ->siglock.  It is
also called from copy_process's error path.  This is not good, for example we
can't move __unhash_process() under ->siglock for that reason.

We should not mix these 2 paths, just look at ugly 'if (p->sighand)' under
'bad_fork_cleanup_sighand:' label.  For copy_process() case it is sufficient
to just backout copy_signal(), nothing more.

Again, nobody can see this task yet.  For CLONE_THREAD case we just decrement
signal->count, otherwise nobody can see this ->signal and we can free it
lockless.

This patch assumes it is safe to do exit_thread_group_keys() without
tasklist_lock.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] copy_process: cleanup bad_fork_cleanup_sighand
Oleg Nesterov [Wed, 29 Mar 2006 00:11:14 +0000 (16:11 -0800)]
[PATCH] copy_process: cleanup bad_fork_cleanup_sighand

The only caller of exit_sighand(tsk) is copy_process's error path.  We can
call __exit_sighand() directly and kill exit_sighand().

This 'tsk' was not yet registered in pid_hash[] or init_task.tasks, it has no
external references, nobody can see it, and

IF (clone_flags & CLONE_SIGHAND)
At least 'current' has a reference to ->sighand, this
means atomic_dec_and_test(sighand->count) can't be true.

ELSE
Nobody can see this ->sighand, this means we can free it
without any locking.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Acked-by: "Paul E. McKenney" <paulmck@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] introduce sig_needs_tasklist() helper
Oleg Nesterov [Wed, 29 Mar 2006 00:11:14 +0000 (16:11 -0800)]
[PATCH] introduce sig_needs_tasklist() helper

In my opinion this patch cleans up the code.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] introduce lock_task_sighand() helper
Oleg Nesterov [Wed, 29 Mar 2006 00:11:13 +0000 (16:11 -0800)]
[PATCH] introduce lock_task_sighand() helper

Add lock_task_sighand() helper and converts group_send_sig_info() to use
it.  Hopefully we will have more users soon.

This patch also removes '!sighand->count' and '!p->usage' checks, I think
they both are bogus, racy and unneeded (but probably it makes sense to
restore them as BUG_ON()s).

->sighand is cleared and it's ->count is decremented in release_task() with
sighand->siglock held, so it is a bug to have '!p->usage || !->count' after
we already locked and verified it is the same.  On the other hand, an
already dead task without ->sighand can have a non-zero ->usage due to
ptrace, for example.

If we read the stale value of ->sighand we must see the change after
spin_lock(), because that change was done while holding that same old
->sighand.siglock.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
18 years ago[PATCH] convert sighand_cache to use SLAB_DESTROY_BY_RCU
Oleg Nesterov [Wed, 29 Mar 2006 00:11:12 +0000 (16:11 -0800)]
[PATCH] convert sighand_cache to use SLAB_DESTROY_BY_RCU

This patch borrows a clever Hugh's 'struct anon_vma' trick.

Without tasklist_lock held we can't trust task->sighand until we locked it
and re-checked that it is still the same.

But this means we don't need to defer 'kmem_cache_free(sighand)'.  We can
return the memory to slab immediately, all we need is to be sure that
sighand->siglock can't dissapear inside rcu protected section.

To do so we need to initialize ->siglock inside ctor function,
SLAB_DESTROY_BY_RCU does the rest.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>