Patrick Boettcher [Fri, 8 Jul 2005 00:58:07 +0000 (17:58 -0700)]
[PATCH] dvb: usb: fix ADSTech Instant TV DVB-T USB2.0 support
Fixed support for the ADSTech Instant TV DVB-T USB (2.0 version). Thanks to
Gerolf Wendland for his support.
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Johannes Stezenbach [Fri, 8 Jul 2005 00:58:06 +0000 (17:58 -0700)]
[PATCH] dvb: dvb-usb: support Artect T1 with broken USB ids
Add #define for device with broken USB ids.
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Gavin Hamill [Fri, 8 Jul 2005 00:58:04 +0000 (17:58 -0700)]
[PATCH] dvb: ttpci: add support for Hauppauge/TT DVB-C budget
Add support for Hauppauge/TT DVB-C budget.
Signed-off-by: Gavin Hamill <gdh@acentral.co.uk>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Christophe Lucas [Fri, 8 Jul 2005 00:58:03 +0000 (17:58 -0700)]
[PATCH] dvb: ttpci: kj printk fix
printk() calls should include appropriate KERN_* constant.
Signed-off-by: Christophe Lucas <clucas@rotomalug.org>
Signed-off-by: Domen Puncer <domen@coderock.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Oliver Endriss [Fri, 8 Jul 2005 00:58:02 +0000 (17:58 -0700)]
[PATCH] dvb: ttpci: make av7110_fe_lock_fix() retryable
av7110_fe_lock_fix() modified in a way that it can be retried after
-ERESTARTSYS
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Johannes Stezenbach [Fri, 8 Jul 2005 00:58:01 +0000 (17:58 -0700)]
[PATCH] dvb: ttpci: cleanup indentation + whitespace
Fix indentation and add some whitepsace between operators.
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Johannes Stezenbach [Fri, 8 Jul 2005 00:58:00 +0000 (17:58 -0700)]
[PATCH] dvb: ttpci: error handling fix
Change error handling in av7110_stop_feed() to stop as many filters as
possible in case of errors.
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Wolfgang Rohdewald [Fri, 8 Jul 2005 00:57:59 +0000 (17:57 -0700)]
[PATCH] dvb: ttpci: more error handling for firmware communication
o propagate more errors back to caller or log them, mainly in
av7110.c and av7110_av.c
o fix error message in StartHWFilter
o do not StopHWFilter for handle 0xffff
Signed-off-by: Wolfgang Rohdewald <wolfgang@rohdewald.de>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Johannes Stezenbach [Fri, 8 Jul 2005 00:57:58 +0000 (17:57 -0700)]
[PATCH] dvb: ttpci: budget-av / tu1216 fix for QAM128
Fix for QAM128 in VHF band suggested by Timo Helkiƶ.
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Dr. Werner Fink [Fri, 8 Jul 2005 00:57:57 +0000 (17:57 -0700)]
[PATCH] dvb: ttpci: fix AUDUIO_CONTINUE ioctl
Fixed typo in AUDUIO_CONTINUE ioctl: AUDIO_CMD_MUTE -> AUDIO_CMD_UNMUTE
Signed-off-by: "Dr. Werner Fink" <werner@suse.de>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Johannes Stezenbach [Fri, 8 Jul 2005 00:57:56 +0000 (17:57 -0700)]
[PATCH] dvb: ttpci: fix bug in timeout handling
Fix bug in timeout handling.
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Wolfgang Rohdewald [Fri, 8 Jul 2005 00:57:55 +0000 (17:57 -0700)]
[PATCH] dvb: ttpci: fix error handling for firmware communication
o make sure ERESTARTSYS will be propagated
o ReleaseBitmap: starting with Firmware 261e, also release when
BMP_LOADING
o removes unused #define BMP_LOADINGS
o in many cases changed the return value from -1 to something more
meaningful like ETIMEDOUT, EINVAL
o changed syslog message timeout waiting for COMMAND such that it
indicates what command did not complete
o reduce # of arguments for LoadBitmap and BlitBitmap
o av7110_osd_cmd: remove the out: label
Signed-off-by: Wolfgang Rohdewald <wolfgang@rohdewald.de>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew de Quincey [Fri, 8 Jul 2005 00:57:54 +0000 (17:57 -0700)]
[PATCH] dvb: ttpci: support for new TT DVB-T-CI
Support for new TT DVB-T-CI, thanks to Andre Weidemann
Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew de Quincey [Fri, 8 Jul 2005 00:57:53 +0000 (17:57 -0700)]
[PATCH] dvb: ttpci: add support for Technotrend/Hauppauge DVB-S SE
Add support for s5h1420 frontend (new Technotrend/Hauppauge DVB-S SE).
Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Adrian Bunk [Fri, 8 Jul 2005 00:57:52 +0000 (17:57 -0700)]
[PATCH] dvb: ttusb-dec: kfree cleanup
The Coverity checker discovered that these two kfree's can never be executed.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Allan Stirling [Fri, 8 Jul 2005 00:57:51 +0000 (17:57 -0700)]
[PATCH] dvb: Twinhan DST: frontend polarization fix
Fix a bug that caused the polarization (V/H) to be interchanged.
Signed-off-by: Allan Stirling <Dibblahdvb0042@pendor.org>
Signed-off-by: Manu Abraham <manu@kromtek.com>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Manu Abraham [Fri, 8 Jul 2005 00:57:50 +0000 (17:57 -0700)]
[PATCH] dvb: Twinhan DST: frontend fixes
o Make the inversion setting specific, ie, only for the
200103A DVB-S
This should not be flagged on other cards.
o Make the frequency setting card specific
o Make the bandwidth setting generic such that it supports more DVB-T cards
o Set QAM size for DVB-C cards that do not autodetect QAM size
o Fix a bug that caused the polarization not to be set.
Set polarization for cards that do not autodetect polarization
o Fix a bogus frontend signal lock, that caused a tuning delay as well.
o Make the Symbolrate setting card specific
Signed-off-by: Manu Abraham <manu@kromtek.com>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Patrick Boettcher [Fri, 8 Jul 2005 00:57:49 +0000 (17:57 -0700)]
[PATCH] dvb: flexcop: woraround irq stop problem
The flexcop chip often stops generating interrupts after some hours of
operation. Apparently this can be fixed by resetting register block 0x300 at
each channel change (this is not detailed in the flexcop data books).
This patch also restructures DMA handling and adds a bit of debug code for the
irq problem in case it still happens for someone.
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Patrick Boettcher [Fri, 8 Jul 2005 00:57:48 +0000 (17:57 -0700)]
[PATCH] dvb: flexcop: add big endian register definitions
Add big-endian register definitions for running on a PowerPC.
(Thanks to Paavo Hartikainen for testing.)
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Christophe Lucas [Fri, 8 Jul 2005 00:57:47 +0000 (17:57 -0700)]
[PATCH] dvb: saa7146: kj pci_module_init cleanup
http://kerneljanitors.org/TODO
- convert from pci_module_init to pci_register_driver
Signed-off-by: Christophe Lucas <c.lucas@ifrance.com>
Signed-off-by: Domen Puncer <domen@coderock.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andreas Oberritter [Fri, 8 Jul 2005 00:57:46 +0000 (17:57 -0700)]
[PATCH] dvb: add Pluto2 driver
Add driver for the Satelco Easywatch Mobile DVB-T card (based on Pluto2 chip).
Signed-off-by: Andreas Oberritter <obi@linuxtv.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Johannes Stezenbach [Fri, 8 Jul 2005 00:57:45 +0000 (17:57 -0700)]
[PATCH] dvb: DVB update
Increase some timeouts by a factor of 10 as suggested by Mikko Hamalainen and
Timo Ketolainen, to improve tuning for QAM128 / weak signal.
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Johannes Stezenbach [Fri, 8 Jul 2005 00:57:45 +0000 (17:57 -0700)]
[PATCH] dvb: frontend: l64781: improve tuning
Disable zig-zag and set min_delay_ms = 4000 as suggested by Allan Guild to
improve tuning with weak signal.
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Patrick Boettcher [Fri, 8 Jul 2005 00:57:44 +0000 (17:57 -0700)]
[PATCH] dvb: frontend: cx22702: support for cxusb
Add .get_tune_settings callback (min_delay_ms = 1sec) and output_mode-field
(parallel/serial) to support cxusb; minor cleanups.
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Hartmut Hackmann [Fri, 8 Jul 2005 00:57:43 +0000 (17:57 -0700)]
[PATCH] dvb: frontend: tda1004x: support tda827x tuners
o added preliminary support for tda827x tuners
o set parameters for drift compensation to 0
makes no sense for DVB-T but can prevent lock
Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t-online.de>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anssi Hannula [Fri, 8 Jul 2005 00:57:42 +0000 (17:57 -0700)]
[PATCH] dvb: add missing release_firmware() calls
Add missing release_firmware() calls to fix memory leaks.
Signed-off-by: Anssi Hannula <anssi.hannula@gmail.com>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Hartmut Hackmann [Fri, 8 Jul 2005 00:57:42 +0000 (17:57 -0700)]
[PATCH] dvb: frontend: bcm3510: fix firmware version check
Fix limit for firmware version check was too low for tda10045.
Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t-online.de>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Hartmut Hackmann [Fri, 8 Jul 2005 00:57:40 +0000 (17:57 -0700)]
[PATCH] dvb: frontend: tda1004x update
o added config options for IF frequency and AGC
o support DSP boot from on board eeprom
o added pll sleep call
Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t-online.de>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew de Quincey [Fri, 8 Jul 2005 00:57:40 +0000 (17:57 -0700)]
[PATCH] dvb: frontend: remove unused I2C ids
Remove I2C_DRIVERID_DVBFE_ cruft.
Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Peter Beutner [Fri, 8 Jul 2005 00:57:39 +0000 (17:57 -0700)]
[PATCH] dvb: core: dmxdev cleanups
- remove void casts
- not necessary to set filter state twice to STATE_FREE during
dvb_dmxdev_init()
Signed-off-by: Peter Beutner <p.beutner@gmx.net>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Peter Beutner [Fri, 8 Jul 2005 00:57:38 +0000 (17:57 -0700)]
[PATCH] dvb: core: demux error handling fix
In dvb_dmxdev_filter_start if we go out because of an error, release
previously allocated demux_feed.
Signed-off-by: Peter Beutner <p.beutner@gmx.net>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew de Quincey [Fri, 8 Jul 2005 00:57:37 +0000 (17:57 -0700)]
[PATCH] dvb: core: add workaround for tuning problem
Add workaround for signal lock loss issue, where the frontend loses the signal
after some hours without any visible reason.
Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Peter Beutner [Fri, 8 Jul 2005 00:57:36 +0000 (17:57 -0700)]
[PATCH] dvb: core: fix race condition in FE_READ_STATUS ioctl
Fix a race condition where an application which issued a FE_READ_STATUS ioctl
directly after FE_SET_FRONTEND would see an old status, i.e. FE_READ_STATUS
would be executed before the frontend thread has even seen the tungin request
from FE_SET_FRONTEND.
Signed-off-by: Peter Beutner <p.beutner@gmx.net>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Johannes Stezenbach [Fri, 8 Jul 2005 00:57:35 +0000 (17:57 -0700)]
[PATCH] dvb: remove obsolete skystar2 driver
Remove the skystar2 driver which has been obsoleted by the generalized
flexcop-pci driver.
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Martin Loschwitz [Fri, 8 Jul 2005 00:57:31 +0000 (17:57 -0700)]
[PATCH] dvb: cinergyT2: endianness fix for raw remote-control keys
Fixed litte/big-endian conversion for raw remote-control keys.
Signed-off-by: Martin Loschwitz <madkiss@madkiss.org>
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:30 +0000 (17:57 -0700)]
[PATCH] namespace: rename _mntput to mntput_no_expire
This patch renames _mntput() to something a little more descriptive:
mntput_no_expire().
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:30 +0000 (17:57 -0700)]
[PATCH] namespace: rename mnt_fslink to mnt_expire
This patch renames vfsmount->mnt_fslink to something a little more
descriptive: vfsmount->mnt_expire.
Signed-off-by: Mike Waychison <michael.waychison@sun.com>
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:29 +0000 (17:57 -0700)]
[PATCH] dcookies.c: use proper refcounting functions
Dcookies shouldn't play with the internals of dentry and vfsmnt
refcounting. It defeats grepping, and is prone to break if implementation
details change.
In addition the function doesn't even seem to be performance critical: it
calls kmem_cache_alloc().
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:28 +0000 (17:57 -0700)]
[PATCH] set mnt_namespace in the correct place
This patch sets ->mnt_namespace where it's actually added to the
namespace.
Previously mnt_namespace was set in do_kern_mount() even if the filesystem
was never added to any process's namespace (most kernel-internal
filesystems).
This discrepancy doesn't actually cause any problems, but it's cleaner if
mnt_namespace is NULL for these non exported filesystems.
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:27 +0000 (17:57 -0700)]
[PATCH] namespace.c: fix mnt_namespace zeroing for expired mounts
This patch clears mnt_namespace in an expired mount.
If mnt_namespace is not cleared, it's possible to attach a new mount to the
already detached mount, because check_mnt() can return true.
The effect is a resource leak, since the resulting tree will never be
freed.
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:26 +0000 (17:57 -0700)]
[PATCH] namespace.c: fix expiring of detached mount
This patch fixes a bug noticed by Al Viro:
However, we still have a problem here - just what would
happen if vfsmount is detached while we were grabbing namespace
semaphore? Refcount alone is not useful here - we might be held by
whoever had detached the vfsmount. IOW, we should check that it's
still attached (i.e. that mnt->mnt_parent != mnt). If it's not -
just leave it alone, do mntput() and let whoever holds it deal with
the sucker. No need to put it back on lists.
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Cc: <viro@parcelfarce.linux.theplanet.co.uk>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:25 +0000 (17:57 -0700)]
[PATCH] namespace.c: split mark_mounts_for_expiry()
This patch splits the mark_mounts_for_expiry() function. It's too complex and
too deeply nested, even without the bugfix in the following patch.
Otherwise code is completely the same.
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Cc: <viro@parcelfarce.linux.theplanet.co.uk>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:24 +0000 (17:57 -0700)]
[PATCH] namespace.c: cleanup in mark_mounts_for_expiry()
This patch simplifies mark_mounts_for_expiry() by using detach_mnt() instead
of duplicating everything it does.
It should be an equivalent transformation except for righting the dput/mntput
order.
Al Viro said: "Looks sane".
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Cc: <viro@parcelfarce.linux.theplanet.co.uk>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:24 +0000 (17:57 -0700)]
[PATCH] namespace.c: fix race in mark_mounts_for_expiry()
This patch fixes a race found by Ram in mark_mounts_for_expiry() in
fs/namespace.c.
The bug can only be triggered with simultaneous exiting of a process having
a private namespace, and expiry of a mount from within that namespace.
It's practically impossible to trigger, and I haven't even tried. But
still, a bug is a bug.
The race happens when put_namespace() is called by another task, while
mark_mounts_for_expiry() is between atomic_read() and get_namespace(). In
that case get_namespace() will be called on an already dead namespace with
unforeseeable results.
The solution was suggested by Al Viro, with his own words:
Instead of screwing with atomic_read() in there, why don't we
simply do the following:
a) atomic_dec_and_lock() in put_namespace()
b) __put_namespace() called without dropping lock
c) the first thing done by __put_namespace would be
struct vfsmount *root = namespace->root;
namespace->root = NULL;
spin_unlock(...);
....
umount_tree(root);
...
d) check in mark_... would be simply namespace && namespace->root.
And we are all set; no screwing around with atomic_read(), no magic
at all. Dying namespace gets NULL ->root.
All changes of ->root happen under spinlock.
If under a spinlock we see non-NULL ->mnt_namespace, it won't be
freed until we drop the lock (we will set ->mnt_namespace to NULL
under that lock before we get to freeing namespace).
If under a spinlock we see non-NULL ->mnt_namespace and
->mnt_namespace->root, we can grab a reference to namespace and be
sure that it won't go away.
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Acked-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Miklos Szeredi [Fri, 8 Jul 2005 00:57:22 +0000 (17:57 -0700)]
[PATCH] namespace.c: fix mnt_namespace clearing
This patch clears mnt_namespace on unmount.
Not clearing mnt_namespace has two effects:
1) It is possible to attach a new mount to a detached mount,
because check_mnt() returns true.
This means, that when no other references to the detached mount
remain, it still can't be freed. This causes a resource leak,
and possibly un-removable modules.
2) If mnt_namespace is dereferenced (only in mark_mounts_for_expiry())
after the namspace has been freed, it can cause an Oops, memory
corruption, etc.
1) has been tested before and after the patch, 2) is only speculation.
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:21 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add documentation file
Add documentation for InfiniBand userspace verbs.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:20 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add mthca user QP support
Add support for userspace queue pairs (QPs) to mthca.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:19 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add mthca user CQ support
Add support for userspace completion queues (CQs) to mthca.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:19 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add mthca user MR support
Add support for userspace memory regions (MRs) to mthca.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:18 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add mthca user PD support
Add support for userspace protection domains (PDs) to mthca.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:17 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add mthca mmap support
Add support for mmap() method to mthca, so that userspace can get access to
doorbell registers. This allows userspace to get direct access to the HCA for
data path operations.
Each userspace context gets its own copy of the doorbell registers and is only
allowed to use resources that the kernel has given it access to. In other
words, this is safe.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:16 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add mthca user context support
Add support for managing userspace contexts to mthca.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:16 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add mthca user doorbell record support
Add support for userspace doorbell records to mthca.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:15 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add mthca ABI header
Add the mthca_user.h header file, which defines the device-specific ABI used
by the mthca low-level driver for kernel/user communication.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:14 +0000 (17:57 -0700)]
[PATCH] IB uverbs: hook up Kconfig/Makefile
Hook up InfiniBand userspace verbs to Kconfig and the make system.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:14 +0000 (17:57 -0700)]
[PATCH] IB uverbs: memory pinning implementation
Add support for pinning userspace memory regions and returning a list of pages
in the region. This includes tracking pinned memory against vm_locked and
preventing unprivileged users from exceeding RLIMIT_MEMLOCK.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:13 +0000 (17:57 -0700)]
[PATCH] IB uverbs: core implementation
Add the core of the InfiniBand userspace verbs implementation, including
creating character device nodes, dispatching requests from userspace, and
passing event notifications back up to userspace.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:12 +0000 (17:57 -0700)]
[PATCH] IB uverbs: add user verbs ABI header
Add the ib_user_verbs.h header file, which defines the ABI used by InfiniBand
userspace verbs for kernel/user communication.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:11 +0000 (17:57 -0700)]
[PATCH] IB uverbs: update mthca for new API
Update mthca to compile against the updated API for low-level drivers.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:11 +0000 (17:57 -0700)]
[PATCH] IB uverbs: update kernel midlayer for new API
Update kernel InfiniBand midlayer to compile against the updated API for
low-level drivers. This just amounts to passing NULL for all
userspace-related parameters, and setting userspace-related structure members
to NULL.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland Dreier [Fri, 8 Jul 2005 00:57:10 +0000 (17:57 -0700)]
[PATCH] IB uverbs: core API extensions
First of a series of patches which add support for direct userspace access to
InfiniBand hardware -- so-called "userspace verbs." I believe these patches
are ready to merge, but a final review would be useful.
These patches should incorporate all of the feedback from the discussion when
I posted an earlier version back in April (see
http://lkml.org/lkml/2005/4/4/267 for the start of the thread). In
particular, memory pinned for use by userspace is accounted for in
current->mm->vm_locked and requests to pin memory are checked against
RLIMIT_MEMLOCK.
This patch:
Modify the ib_verbs.h header file with changes required for InfiniBand
userspace verbs support. We add a few structures to keep track of userspace
context, and extend the driver API so that low-level drivers know when they're
creating resources that will be used from userspace.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Fri, 8 Jul 2005 00:57:09 +0000 (17:57 -0700)]
[PATCH] alpha(): pgprot_noncached
The infiniband code expects that the arch implements pgprot_noncached().
We're mapping PCI areas anyway, so this probabyl wasn't needed and we should
make infiniband stop doing that..
Cc: Roland Dreier <rolandd@cisco.com>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
KAMBAROV, ZAUR [Fri, 8 Jul 2005 00:57:07 +0000 (17:57 -0700)]
[PATCH] coverity: sunrpc/xprt task null check
In __xprt_lock_write() we check to see if `task' is NULL, but in other places
we just go and dereference it.
`task' shouldn't be NULL anyway, so remove this test.
This defect was found automatically by Coverity Prevent, a static analysis
tool.
Signed-off-by: Zaur Kambarov <zkambarov@coverity.com>
Acked-by: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: Neil Brown <neilb@cse.unsw.edu.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
KAMBAROV, ZAUR [Fri, 8 Jul 2005 00:57:06 +0000 (17:57 -0700)]
[PATCH] coverity: fs/locks.c flp null check
We're dereferencing `flp' and then we're testing it for NULLness.
Either the compiler accidentally saved us or the existing null-pointer checdk
is redundant.
This defect was found automatically by Coverity Prevent, a static analysis tool.
Signed-off-by: Zaur Kambarov <zkambarov@coverity.com>
Cc: Matthew Wilcox <willy@debian.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
KAMBAROV, ZAUR [Fri, 8 Jul 2005 00:57:05 +0000 (17:57 -0700)]
[PATCH] coverity: fix fbsysfs null pointer check
Correctly test for a null pointer before going and dereferencing it.
This defect was found automatically by Coverity Prevent, a static analysis
tool.
Signed-off-by: Zaur Kambarov <zkambarov@coverity.com>
Cc: <linux-fbdev-devel@lists.sourceforge.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Ingo Molnar [Fri, 8 Jul 2005 00:57:04 +0000 (17:57 -0700)]
[PATCH] cond_resched(): fix bogus might_sleep() warning
The BKS might be reacquired before we have dropped PREEMPT_ACTIVE, which
could trigger a second could trigger a second cond_resched() call. Bug
found by Hirofumi Ogawa.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
David Howells [Fri, 8 Jul 2005 00:57:03 +0000 (17:57 -0700)]
[PATCH] Keys: Base keyring size on key pointer not key struct
The attached patch makes the keyring functions calculate the new size of a
keyring's payload based on the size of pointer to the key struct, not the size
of the key struct itself.
Signed-Off-By: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Ian Kent [Fri, 8 Jul 2005 00:57:02 +0000 (17:57 -0700)]
[PATCH] autofs4: mistake in debug print
Fix debugging printk.
Signed-off-by: Ian Kent <raven@themaw.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jesse Millan [Fri, 8 Jul 2005 00:57:01 +0000 (17:57 -0700)]
[PATCH] put_compat_shminfo() warning fix
GCC 4 complains because the function put_compat_shminfo() can't get to its
return statement if there is no error... If the function does not return
-EFAULT, it doesn't return anything at all. Looks like a typo.
Signed-off-by: Jesse Millan <jessem@cs.pdx.edu>
Signed-off-by: Domen Puncer <domen@coderock.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andreas Gruenbacher [Fri, 8 Jul 2005 00:57:00 +0000 (17:57 -0700)]
[PATCH] ext3 xattr: Don't write to the in-inode xattr space of reserved inodes
We are not using the in-inode space for xattrs in reserved inodes because
mkfs.ext3 doesn't initialize it properly. For those inodes, we set
i_extra_isize to 0. Make sure that we also don't overwrite the
i_extra_isize field when writing out the inode in that case. This is for
cleanliness only, and doesn't fix an actual bug.
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Christoph Lameter [Fri, 8 Jul 2005 00:56:59 +0000 (17:56 -0700)]
[PATCH] mostly_read data section
Add a new section called ".data.read_mostly" for data items that are read
frequently and rarely written to like cpumaps etc.
If these maps are placed in the .data section then these frequenly read
items may end up in cachelines with data is is frequently updated. In that
case all processors in an SMP system must needlessly reload the cachelines
again and again containing elements of those frequently used variables.
The ability to share these cachelines will allow each cpu in an SMP system
to keep local copies of those shared cachelines thereby optimizing
performance.
Signed-off-by: Alok N Kataria <alokk@calsoftinc.com>
Signed-off-by: Shobhit Dayal <shobhit@calsoftinc.com>
Signed-off-by: Christoph Lameter <christoph@scalex86.org>
Signed-off-by: Shai Fultheim <shai@scalex86.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Alexey Dobriyan [Fri, 8 Jul 2005 00:56:58 +0000 (17:56 -0700)]
[PATCH] propagate __nocast annotations
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andreas Gruenbacher [Fri, 8 Jul 2005 00:56:57 +0000 (17:56 -0700)]
[PATCH] acl kconfig cleanup
Original patch from Matt Mackall <mpm@selenic.com>
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nick Piggin [Fri, 8 Jul 2005 00:56:56 +0000 (17:56 -0700)]
[PATCH] page_uptodate locking scalability
Use a bit spin lock in the first buffer of the page to synchronise asynch
IO buffer completions, instead of the global page_uptodate_lock, which is
showing some scalabilty problems.
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roman Zippel [Fri, 8 Jul 2005 00:56:55 +0000 (17:56 -0700)]
[PATCH] tty output lossage fix
The patch fixes a few corner cases around tty line editing with
very long input lines:
- n_tty_receive_char(): don't simply drop eol characters,
otherwise canon_data isn't increased and the reader isn't woken
up.
- n_tty_receive_room(): If there is no newline pending and the
edit buffer is full, allow only a single character to be written
(until eol is found and the line is flushed), so characters from
the next line aren't dropped.
- write_chan(): if an incomplete line was written, continue
writing until write() returns 0, otherwise it might not write
the eol character to flush the line and the writer goes to sleep
without ever being woken up.
BTW the core problem is that part of this should be handled in the
receive_buf path, but for this it has to return the number of
written characters, as the amount of written characters may not be
the same as the amount of characters going into the write buffer,
so the receive_room() usage in pty_write() is not really reliable.
Alan said:
The problem looks valid. The behaviour of 'traditional unix' appears to
be the following
If you exceed the line limit then beep and drop the character
Always allow EOL to complete a canonical line input
Always do signal/control processing if enabled
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Arnd Bergmann [Fri, 8 Jul 2005 00:56:53 +0000 (17:56 -0700)]
[PATCH] xtensa: remove old syscalls
xtensa is now in -rc1, with the obsolete syscalls still in there, so I
guess this about the last chance to correct the ABI. Applying the patch
obviously breaks all sorts of user space binaries and probably also
requires the appropriate changes to be made to libc.
On the other hand, if a decision is made to keep the broken interface, it
should at least be a conscious one instead of an oversight.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Chris Zankel <chris@zankel.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paolo 'Blaisorblade' Giarrusso [Fri, 8 Jul 2005 00:56:52 +0000 (17:56 -0700)]
[PATCH] uml: remove winch sem
Replace a semaphore (winch_handler_sem) used in atomic code with a
spinlock, and reduces as needed the amount of protected code to the bare
minimum (for instance no kmalloc calls are needed).
This fixes the last problems with spinlocking (in UP mode with DEBUG
options); the semaphore, taken inside spinlocks, caused a "spin_lock was
already locked" warning, without this patch.
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paolo 'Blaisorblade' Giarrusso [Fri, 8 Jul 2005 00:56:51 +0000 (17:56 -0700)]
[PATCH] uml: restore hppfs support
Some time ago a trivial patch broke HPPFS (one var became a pointer, not
all uses were updated). It wasn't fixed at that time because not very
used, now it's been requested so I've fixed this, and it has been tested
positively (at least partially).
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Bodo Stroesser [Fri, 8 Jul 2005 00:56:50 +0000 (17:56 -0700)]
[PATCH] uml: Proper clone support for skas0
This patch implements the clone-stub mechanism, which allows skas0 to run
with proc_mm==0, even if the clib in UML uses modify_ldt.
Note: There is a bug in skas3.v7 host patch, that avoids UML-skas from
running properly on a SMP-box. In full skas3, I never really saw problems,
but in skas0 they showed up.
More commentary by jdike - What this patch does is makes sure that the host
parent of each new host process matches the UML parent of the corresponding
UML process. This ensures that any changed LDTs are inherited. This is
done by having clone actually called by the UML process from its stub,
rather than by the kernel. We have special syscall stubs that are loaded
onto the stub code page because that code must be completely
self-contained. These stubs are given C interfaces, and used like normal C
functions, but there are subtleties. Principally, we have to be careful
about stack variables in stub_clone_handler after the clone. The code is
written so that there aren't any - everything boils down to a fixed
address. If there were any locals, references to them after the clone
would be wrong because the stack just changed.
Signed-off-by: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jeff Dike [Fri, 8 Jul 2005 00:56:49 +0000 (17:56 -0700)]
[PATCH] uml: skas0 - separate kernel address space on stock hosts
UML has had two modes of operation - an insecure, slow mode (tt mode) in
which the kernel is mapped into every process address space which requires
no host kernel modifications, and a secure, faster mode (skas mode) in
which the UML kernel is in a separate host address space, which requires a
patch to the host kernel.
This patch implements something very close to skas mode for hosts which
don't support skas - I'm calling this skas0. It provides the security of
the skas host patch, and some of the performance gains.
The two main things that are provided by the skas patch, /proc/mm and
PTRACE_FAULTINFO, are implemented in a way that require no host patch.
For the remote address space changing stuff (mmap, munmap, and mprotect),
we set aside two pages in the process above its stack, one of which
contains a little bit of code which can call mmap et al.
To update the address space, the system call information (system call
number and arguments) are written to the stub page above the code. The
%esp is set to the beginning of the data, the %eip is set the the start of
the stub, and it repeatedly pops the information into its registers and
makes the system call until it sees a system call number of zero. This is
to amortize the cost of the context switch across multiple address space
updates.
When the updates are done, it SIGSTOPs itself, and the kernel process
continues what it was doing.
For a PTRACE_FAULTINFO replacement, we set up a SIGSEGV handler in the
child, and let it handle segfaults rather than nullifying them. The
handler is in the same page as the mmap stub. The second page is used as
the stack. The handler reads cr2 and err from the sigcontext, sticks them
at the base of the stack in a faultinfo struct, and SIGSTOPs itself. The
kernel then reads the faultinfo and handles the fault.
A complication on x86_64 is that this involves resetting the registers to
the segfault values when the process is inside the kill system call. This
breaks on x86_64 because %rcx will contain %rip because you tell SYSRET
where to return to by putting the value in %rcx. So, this corrupts $rcx on
return from the segfault. To work around this, I added an
arch_finish_segv, which on x86 does nothing, but which on x86_64 ptraces
the child back through the sigreturn. This causes %rcx to be restored by
sigreturn and avoids the corruption. Ultimately, I think I will replace
this with the trick of having it send itself a blocked signal which will be
unblocked by the sigreturn. This will allow it to be stopped just after
the sigreturn, and PTRACE_SYSCALLed without all the back-and-forth of
PTRACE_SYSCALLing it through sigreturn.
This runs on a stock host, so theoretically (and hopefully), tt mode isn't
needed any more. We need to make sure that this is better in every way
than tt mode, though. I'm concerned about the speed of address space
updates and page fault handling, since they involve extra round-trips to
the child. We can amortize the round-trip cost for large address space
updates by writing all of the operations to the data page and having the
child execute them all at the same time. This will help fork and exec, but
not page faults, since they involve only one page.
I can't think of any way to help page faults, except to add something like
PTRACE_FAULTINFO to the host. There is PTRACE_SIGINFO, but UML doesn't use
siginfo for SIGSEGV (or anything else) because there isn't enough
information in the siginfo struct to handle page faults (the faulting
operation type is missing). Adding that would make PTRACE_SIGINFO a usable
equivalent to PTRACE_FAULTINFO.
As for the code itself:
- The system call stub is in arch/um/kernel/sys-$(SUBARCH)/stub.S. It is
put in its own section of the binary along with stub_segv_handler in
arch/um/kernel/skas/process.c. This is manipulated with run_syscall_stub
in arch/um/kernel/skas/mem_user.c. syscall_stub will execute any system
call at all, but it's only used for mmap, munmap, and mprotect.
- The x86_64 stub calls sigreturn by hand rather than allowing the normal
sigreturn to happen, because the normal sigreturn is a SA_RESTORER in
UML's address space provided by libc. Needless to say, this is not
available in the child's address space. Also, it does a couple of odd
pops before that which restore the stack to the state it was in at the
time the signal handler was called.
- There is a new field in the arch mmu_context, which is now a union.
This is the pid to be manipulated rather than the /proc/mm file
descriptor. Code which deals with this now checks proc_mm to see whether
it should use the usual skas code or the new code.
- userspace_tramp is now used to create a new host process for every UML
process, rather than one per UML processor. It checks proc_mm and
ptrace_faultinfo to decide whether to map in the pages above its stack.
- start_userspace now makes CLONE_VM conditional on proc_mm since we need
separate address spaces now.
- switch_mm_skas now just sets userspace_pid[0] to the new pid rather
than PTRACE_SWITCH_MM. There is an addition to userspace which updates
its idea of the pid being manipulated each time around the loop. This is
important on exec, when the pid will change underneath userspace().
- The stub page has a pte, but it can't be mapped in using tlb_flush
because it is part of tlb_flush. This is why it's required for it to be
mapped in by userspace_tramp.
Other random things:
- The stub section in uml.lds.S is page aligned. This page is written
out to the backing vm file in setup_physmem because it is mapped from
there into user processes.
- There's some confusion with TASK_SIZE now that there are a couple of
extra pages that the process can't use. TASK_SIZE is considered by the
elf code to be the usable process memory, which is reasonable, so it is
decreased by two pages. This confuses the definition of
USER_PGDS_IN_LAST_PML4, making it too small because of the rounding down
of the uneven division. So we round it to the nearest PGDIR_SIZE rather
than the lower one.
- I added a missing PT_SYSCALL_ARG6_OFFSET macro.
- um_mmu.h was made into a userspace-usable file.
- proc_mm and ptrace_faultinfo are globals which say whether the host
supports these features.
- There is a bad interaction between the mm.nr_ptes check at the end of
exit_mmap, stack randomization, and skas0. exit_mmap will stop freeing
pages at the PGDIR_SIZE boundary after the last vma. If the stack isn't
on the last page table page, the last pte page won't be freed, as it
should be since the stub ptes are there, and exit_mmap will BUG because
there is an unfreed page. To get around this, TASK_SIZE is set to the
next lowest PGDIR_SIZE boundary and mm->nr_ptes is decremented after the
calls to init_stub_pte. This ensures that we know the process stack (and
all other process mappings) will be below the top page table page, and
thus we know that mm->nr_ptes will be one too many, and can be
decremented.
Things that need fixing:
- We may need better assurrences that the stub code is PIC.
- The stub pte is set up in init_new_context_skas.
- alloc_pgdir is probably the right place.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Pavel Machek [Fri, 8 Jul 2005 00:56:45 +0000 (17:56 -0700)]
[PATCH] pm: clean up process.c
freezeable() already tests for TRACED/STOPPED processes, no need to do it
twice.
Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Pavel Machek [Fri, 8 Jul 2005 00:56:44 +0000 (17:56 -0700)]
[PATCH] swsusp: fix error handling
Fix error handling and whitespace in swsusp.c. swsusp_free() was called when
there was nothing allocating, leading to oops.
Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Pavel Machek [Fri, 8 Jul 2005 00:56:43 +0000 (17:56 -0700)]
[PATCH] pm: Fix resume from initrd
Move device name resolution code around so that it is not called from
resume-from-initrd. name_to_dev_t may be unavailable at that point.
Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Bernard Blackham [Fri, 8 Jul 2005 00:56:42 +0000 (17:56 -0700)]
[PATCH] pm: fix u32 vs. pm_message_t confusion in cpufreq
Fix u32 vs pm_message_t confusion in cpufreq.
Signed-off-by: Bernard Blackham <bernard@blackham.com.au>
Signed-off-by: Pavel Machek <pavel@suse.cz>
Cc: Dave Jones <davej@codemonkey.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Pavel Machek [Fri, 8 Jul 2005 00:56:40 +0000 (17:56 -0700)]
[PATCH] pm: more u32 vs. pm_message_t fixes
Few more u32 vs. pm_message_t fixes.
Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Dave Jones [Fri, 8 Jul 2005 00:56:39 +0000 (17:56 -0700)]
[PATCH] Fix up non-NUMA breakage in mmzone.h
If CONFIG_NUMA isn't set, we use the define in <linux/mmzone.h> for
early_pfn_to_nid (which defines it to 0).
Because of this, the prototype needs to move inside the CONFIG_NUMA too, or
anal gcc's get really confused.
Signed-off-by: Dave Jones <davej@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Dave Jones [Fri, 8 Jul 2005 00:56:39 +0000 (17:56 -0700)]
[PATCH] Clean up numa defines in mmzone.h
The recent cleanups to asm-i386/mmzone.h were suboptimal nesting an ifdef of
the same symbol. This patch removes some of the ifdef'ery to make things more
readable again.
Signed-off-by: Dave Jones <davej@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Shaohua Li [Fri, 8 Jul 2005 00:56:38 +0000 (17:56 -0700)]
[PATCH] MTRR suspend/resume cleanup
There has been some discuss about solving the SMP MTRR suspend/resume
breakage, but I didn't find a patch for it. This is an intent for it. The
basic idea is moving mtrr initializing into cpu_identify for all APs (so it
works for cpu hotplug). For BP, restore_processor_state is responsible for
restoring MTRR.
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Acked-by: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Adrian Bunk [Fri, 8 Jul 2005 00:56:36 +0000 (17:56 -0700)]
[PATCH] FRV: Add defconfig
This patch by Yoshihiro MATSUYAMA (already ACK'ed by David Howells) adds a
defconfig for the frv arch.
Signed-Off-By: Yoshihiro MATSUYAMA <y.matsu@jp.fujitsu.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Cc: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Fri, 8 Jul 2005 00:56:36 +0000 (17:56 -0700)]
[PATCH] ppc64: silence perfmon exception warnings
We dont need to use the PERFMON exception on POWER5, in fact the firmware
returns an error. Due to this just remove the warning.
Also now that we have proper runlatch support we can remove the bootup
hack.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Michael Ellerman [Fri, 8 Jul 2005 00:56:35 +0000 (17:56 -0700)]
[PATCH] ppc64: Be consistent about printing which idle loop we're using
Not sure if we really need this, but it was handy to know which iSeries loop I
was testing.
Be consistent about printing which idle loop we're using, with this patch we
cover all cases.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Fri, 8 Jul 2005 00:56:34 +0000 (17:56 -0700)]
[PATCH] ppc64: fix compile warning
Fix a compile warning introduced by the previous patches.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Fri, 8 Jul 2005 00:56:33 +0000 (17:56 -0700)]
[PATCH] ppc64: idle fixups
- remove some unnecessary includes
- add runlatch support
- no need to use raw_smp_processor_id any more, current preempt debug
logic checks for processes that are bound to one cpu.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Fri, 8 Jul 2005 00:56:33 +0000 (17:56 -0700)]
[PATCH] ppc64: pSeries idle fixups
- separate out sleep logic in dedicated_idle, it was so far indented
that it got squashed against the right side of the screen.
- add runlatch support, looping on runlatch disable.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Fri, 8 Jul 2005 00:56:32 +0000 (17:56 -0700)]
[PATCH] ppc64: iSeries idle fixups
- remove min/max yield time, we dont use the values anywhere
- separate shared and dedicated idle loops
- check need_resched again with irqs off to avoid sleeping with pending work
- continually set runlatch off in idle loop, this means we dont need to
turn the runlatch off on exception exit and suffer that associated
cost for all exceptions. (A future patch will turn the runlatch on at
exception entry)
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Michael Ellerman [Fri, 8 Jul 2005 00:56:31 +0000 (17:56 -0700)]
[PATCH] ppc64: Remove obsolete idle_setup()
Now that the idle loop is configured by each platform we don't need
idle_setup() anymore.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Michael Ellerman [Fri, 8 Jul 2005 00:56:30 +0000 (17:56 -0700)]
[PATCH] ppc64: Fixup platforms for new ppc_md.idle
This patch fixes up iSeries, pSeries, pmac and maple to set the correct idle
function for each platform.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Michael Ellerman [Fri, 8 Jul 2005 00:56:29 +0000 (17:56 -0700)]
[PATCH] ppc64: Move pSeries idle functions into pSeries_setup.c
dedicated_idle() and shared_idle() are only used by pSeries, so move them into
pSeries_setup.c
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Michael Ellerman [Fri, 8 Jul 2005 00:56:29 +0000 (17:56 -0700)]
[PATCH] ppc64: Move iSeries_idle() into iSeries_setup.c
Move iSeries_idle() into iSeries_setup.c, no one else needs to know about it.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Michael Ellerman [Fri, 8 Jul 2005 00:56:28 +0000 (17:56 -0700)]
[PATCH] ppc64: Make idle_loop a ppc_md function
This patch adds an idle member to the ppc_md structure and calls it from
cpu_idle(). If a platform leaves ppc_md.idle as null it will get the default
idle loop default_idle().
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>