Takashi Iwai [Tue, 23 Aug 2011 15:34:25 +0000 (17:34 +0200)]
ALSA: hda - Remove all ALC861 and ALC861-VD quirks
Let's remove the rest of ALC861 and ALC861-VD quirks.
If any breakage is found, it can be fixed easily via the pin-config
table update.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 23 Aug 2011 15:28:55 +0000 (17:28 +0200)]
ALSA: hda - Restore VREF50 setup for ALC861-VD dallas/hp models
During the cleanup by commit
6727b12669f255dbf65b3d63c32cce1e3e967398,
the specific setups for dallas and hp models, using VREF50 for mic pins,
were lost. Fixed now.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 23 Aug 2011 13:24:39 +0000 (15:24 +0200)]
ALSA: hda - Rename to snd_hda_parse_pin_defcfg()
... and add a new bit-flags argument to specify the behavior of the
function. The older function is kept as is (as a wrapper).
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 23 Aug 2011 13:16:22 +0000 (15:16 +0200)]
ALSA: hda - Fix initialization of multi-speaker output paths for Realtek
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 23 Aug 2011 13:02:36 +0000 (15:02 +0200)]
Merge branch 'fix/hda' into topic/hda
Conflicts:
sound/pci/hda/patch_realtek.c
Takashi Iwai [Tue, 23 Aug 2011 12:57:08 +0000 (14:57 +0200)]
ALSA: hda - Fix double-headphone/speaker paths for Cxt auto-parser
When multiple headphones or speakers are assigned but no individual
DACs are available, the driver should take the first HP/SPK DAC instead
of another primary output. The patch adds a bit-flag to dac field of
struct pin_dac_pair indicating that it's a slave DAC.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 23 Aug 2011 10:41:09 +0000 (12:41 +0200)]
ALSA: hda - Update jack-sense info even when no automute is set
The internal states, jack_present and line_jack_present should be
updated upon unsolicited events even if no automute is set.
Otherwise the wrong state is referred when the automute behavior is
changed by the mixer control.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 23 Aug 2011 10:36:28 +0000 (12:36 +0200)]
ALSA: hda - Fix output-path initialization for Realtek auto-parser
When the headphone or speaker output has no own DAC, initialize the path
using the primary DAC. Otherwise the path won't be set properly and
can result in the silence.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Julia Lawall [Sat, 20 Aug 2011 06:12:41 +0000 (08:12 +0200)]
ALSA: sound/aoa/fabrics/layout.c: remove unneeded kfree
The label outnodev is only used when kzalloc has not yet taken place or has
failed, so there is no need for the call for kfree under this label.
A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@@
identifier x;
expression E1!=0,E2,E3,E4;
statement S;
iterator I;
@@
(
if (...) { ... when != kfree(x)
when != x = E3
when != E3 = x
* return ...;
}
... when != x = E2
when != I(...,x,...) S
if (...) { ... when != x = E4
kfree(x); ... return ...; }
)
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Sat, 20 Aug 2011 07:19:59 +0000 (09:19 +0200)]
ALSA: hda - Fix error check from snd_hda_get_conn_index() in patch_cirrus.c
snd_hda_get_conn_index() returns a negative value while the current code
stores it in an unsigned int. It must be stored in a signed integer.
Reported-by: Jesper Juhl <jj@chaosbits.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Sat, 20 Aug 2011 07:14:45 +0000 (09:14 +0200)]
ALSA: hda - Don't spew too many ELD errors
Currently HD-audio driver shows the all error ELD byte as an error
in the kernel message. This is annoying when the video driver doesn't
set the correct ELD from the beginning. e.g. radeon sends a zero-byte
data, but we still check ELD with the fixed 128 byte as a workaround
for some broken devices, it spews 128-times errors.
For avoiding this, the driver aborts reading when the first byte is
invalid. In such a case, the whole data is certainly invalid.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Fri, 19 Aug 2011 07:23:26 +0000 (09:23 +0200)]
ALSA: hda - Remove ALC662 model=levono-101e model quirk
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Fri, 19 Aug 2011 07:10:29 +0000 (09:10 +0200)]
ALSA: hda - Allow different assoc numbers for multiple speakers
In snd_hda_parse_pin_def_config(), we checked the associated number
of speaker pins and accepts only one number exclusively. But many BIOS
seem to give different assoc number for surround speakers, thus we'd
better to accept all speaker pins no matter which assoc number, and sort
like done for the headphone pins.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Fri, 19 Aug 2011 07:05:35 +0000 (09:05 +0200)]
ALSA: hda - Support multiple speakers by Realtek auto-parser
Add the support of multiple speakers by Realtek auto-parser.
When all speaker pins have individual DACs, create each speaker volume
control. Otherwise, create a bind-volume control for all speaker outs.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Fri, 19 Aug 2011 05:55:10 +0000 (07:55 +0200)]
ALSA: usb-audio - Fix missing mixer dB information
The recent fix for testing dB range at the mixer creation time seems
to cause regressions in some devices. In such devices, reading the dB
info at probing time gives an error, thus both dBmin and dBmax are still
zero, and TLV flag isn't set although the later read of dB info succeeds.
This patch adds a workaround for such a case by assuming that the later
read will succeed. In future, a similar test should be performed in a
case where a wrong dB range is seen even in the later read.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Cc: <stable@kernel.org>
Takashi Iwai [Thu, 18 Aug 2011 14:02:24 +0000 (16:02 +0200)]
ALSA: hda - Remove ALC662 eeepc-p701 and ecs models
These are confirmed to work with the auto-parser with pincfg fixups.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Thu, 18 Aug 2011 13:47:37 +0000 (15:47 +0200)]
ALSA: hda - Get rid of left-over chunks by previous cleanups
Also update the model description, too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Thu, 18 Aug 2011 13:43:38 +0000 (15:43 +0200)]
ALSA: hda - Remove ALC861 uniwill-m31, toshiba, asus and asus-laptop models
These are confirmed to work with the auto-parser.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Thu, 18 Aug 2011 13:13:17 +0000 (15:13 +0200)]
ALSA: hda - Add "PCM" volume to vmaster slave list
The new parser may use "PCM" volume, but it was missing the vmaster
slave list, thus "Master" volume didn't control it.
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=41342
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 16 Aug 2011 13:15:40 +0000 (15:15 +0200)]
ALSA: hda - Remove ALC268 model quirks
Get rid of the rest of ALC268 model quirks. They are all confirmed to
work with the auto-parser, too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 16 Aug 2011 13:08:49 +0000 (15:08 +0200)]
ALSA: hda - Replace ALC269 quanta and lifebook models with fixups
Implement new fixup entries for Quanta FL1 and Fujitsu Lifebook
specific COEF and pin configurations. Removed the model entries
from alc269_quirks.c.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 16 Aug 2011 12:47:36 +0000 (14:47 +0200)]
ALSA: hda - Remove ALC269 model=futjisu and Acer
Both are supported by the auto-parser.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 16 Aug 2011 12:30:50 +0000 (14:30 +0200)]
ALSA: hda - Remove acer, acer-aspire and acer-dmic models for ALC268
Moved some code to alc269_quirks.c for dependency, too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 16 Aug 2011 12:25:22 +0000 (14:25 +0200)]
Merge branch 'fix/hda' into topic/hda
Conflicts:
sound/pci/hda/alc268_quirks.c
Takashi Iwai [Tue, 16 Aug 2011 12:23:20 +0000 (14:23 +0200)]
ALSA: hda - Fix duplicated capture-volume creation for ALC268 models
Fix the duplicated creation of capture-mixer elements for some static
ALC268 configurations. The capture mixers must be put to cap_mixer field
instead of mixers array.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 16 Aug 2011 12:07:59 +0000 (14:07 +0200)]
ALSA: hda - Remove dell, dell-zm1 and samsung-nc10 models for ALC272
The auto-parser works for these models.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 15 Aug 2011 11:30:41 +0000 (13:30 +0200)]
ALSA: hda - Remove ALC861VD Lenovo, Dallas, HP and V1S model quirks
These are covered by the auto-parser well enough.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 15 Aug 2011 11:21:48 +0000 (13:21 +0200)]
ALSA: hda - Remove ALC680 model quirks
The auto-parser works fine.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 15 Aug 2011 11:15:17 +0000 (13:15 +0200)]
ALSA: hda - Remove ALC268 Dell, Toshiba and Zapto model quirks
These models work fine with the BIOS auto-parser.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 15 Aug 2011 11:00:56 +0000 (13:00 +0200)]
ALSA: hda - Remove ALC260 HP model quirks
ALC260 HP models work with the BIOS auto-parser. Let's cut them off.
Also move alc260_hp_master_*() to alc262_quirks.c as these are still
referred from there.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 15 Aug 2011 10:56:54 +0000 (12:56 +0200)]
ALSA: hda - Remove ALC262 HP and sony-assamd quirks
HP and sony-assamd models work with the BIOS auto-parser nowadays,
so let's reduce the unnecessary code.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 15 Aug 2011 10:49:07 +0000 (12:49 +0200)]
ALSA: hda - Add snd_hda_override_pin_caps() helper function
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 15 Aug 2011 10:47:19 +0000 (12:47 +0200)]
Merge branch 'fix/hda' into topic/hda
Daniel T Chen [Mon, 15 Aug 2011 02:43:01 +0000 (22:43 -0400)]
ALSA: ac97: Add HP Compaq dc5100 SFF(PT003AW) to Headphone Jack Sense whitelist
BugLink: https://bugs.launchpad.net/bugs/826081
The original reporter needs 'Headphone Jack Sense' enabled to have
audible audio, so add his PCI SSID to the whitelist.
Reported-and-tested-by: Muhammad Khurram Khan
Cc: <stable@kernel.org>
Signed-off-by: Daniel T Chen <crimsun@ubuntu.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Daniel Mack [Sun, 14 Aug 2011 09:31:16 +0000 (11:31 +0200)]
ALSA: snd_usb_caiaq: track submitted output urbs
The snd_usb_caiaq driver currently assumes that output urbs are serviced
in time and doesn't track when and whether they are given back by the
USB core. That usually works fine, but due to temporary limitations of
the XHCI stack, we faced that urbs were submitted more than once with
this approach.
As it's no good practice to fire and forget urbs anyway, this patch
introduces a proper bit mask to track which requests have been submitted
and given back.
That alone however doesn't make the driver work in case the host
controller is broken and doesn't give back urbs at all, and the output
stream will stop once all pre-allocated output urbs are consumed. But
it does prevent crashes of the controller stack in such cases.
See http://bugzilla.kernel.org/show_bug.cgi?id=40702 for more details.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Reported-and-tested-by: Matej Laitl <matej@laitl.cz>
Cc: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Cc: stable@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Fri, 12 Aug 2011 16:26:38 +0000 (18:26 +0200)]
Merge branch 'fix/asoc' into for-linus
Takashi Iwai [Fri, 12 Aug 2011 16:22:10 +0000 (18:22 +0200)]
ASoC: Fix compile warning in wm8750.c
sound/soc/codecs/wm8750.c:784:2: warning: missing braces around initializer
sound/soc/codecs/wm8750.c:784:2: warning: (near initialization for ‘wm8750_spi_ids[2].name’)
It's because struct spi_device_id.name is a char array, not a pointer,
while the driver initializes explicitly with 0.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Jarkko Nikula [Thu, 11 Aug 2011 12:44:57 +0000 (15:44 +0300)]
ASoC: omap: Update e-mail address of Jarkko Nikula
My gmail account got disabled and I'm not going to reopen it.
Signed-off-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Sangbeom Kim [Wed, 20 Jul 2011 08:07:13 +0000 (17:07 +0900)]
ASoC: SAMSUNG: Add I2S0 internal dma driver
I2S in Exynos4 and S5PC110(S5PV210) has a internal dma.
It can be used low power audio mode and 2nd channel transfer.
This patch can support idma.
[Reapplied after dependencies propagated through in 3.1-rc1. --broonie]
Signed-off-by: Sangbeom Kim <sbkim73@samsung.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Mark Brown [Thu, 11 Aug 2011 03:23:22 +0000 (12:23 +0900)]
ASoC: Terminate WM8750 SPI device ID table
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Mark Brown [Wed, 10 Aug 2011 13:19:19 +0000 (22:19 +0900)]
ASoC: Add missing break in WM8994 probe
This error would have no effect on current silicon revisions, the fall
through case has the same behaviour.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Daniel Mack [Fri, 5 Aug 2011 11:49:52 +0000 (13:49 +0200)]
ALSA: snd-usb-caiaq: Correct offset fields of outbound iso_frame_desc
This fixes faulty outbount packets in case the inbound packets
received from the hardware are fragmented and contain bogus input
iso frames. The bug has been there for ages, but for some strange
reasons, it was only triggered by newer machines in 64bit mode.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Reported-and-tested-by: William Light <wrl@illest.net>
Reported-by: Pedro Ribeiro <pedrib@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Julia Lawall [Wed, 10 Aug 2011 09:49:04 +0000 (11:49 +0200)]
ALSA: azt3328 - adjust error handling code to include debugging code
snd_azf3328_dbgcallenter is called at the very beginning of the function,
so it could be useful to call snd_azf3328_dbgcallleave at all exit points.
Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Wang Shaoyan [Wed, 10 Aug 2011 08:01:04 +0000 (16:01 +0800)]
ALSA: hda - Add CONFIG_SND_HDA_POWER_SAVE to stac_vrefout_set()
In commit
45eebda7, it add new function stac_vrefout_set, but it
is only used in code between CONFIG_SND_HDA_POWER_SAVE macro, so
add the macro to avoid such warning:
sound/pci/hda/patch_sigmatel.c:676:12: warning: 'stac_vrefout_set' defined but not used
Signed-off-by: Wang Shaoyan <wangshaoyan.pt@taobao.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Kazutomo Yoshii [Wed, 10 Aug 2011 04:39:13 +0000 (23:39 -0500)]
ALSA: usb-audio - Add quirk for BOSS Micro BR-80
Signed-off-by: Kazutomo Yoshii <kazutomo.yoshii@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Mark Brown [Wed, 10 Aug 2011 00:41:26 +0000 (09:41 +0900)]
ASoC: Fix typo in wm8750 spi_ids
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Mark Brown [Thu, 4 Aug 2011 01:54:17 +0000 (10:54 +0900)]
ASoC: Fix warning in Speyside WM8962
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Mark Brown [Wed, 3 Aug 2011 09:32:09 +0000 (18:32 +0900)]
ASoC: Fix SPI driver binding for WM8987
As we had no id_table only the driver name would be matched against
meaning that WM8987 devices wouldn't be bound.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Mark Brown [Wed, 3 Aug 2011 08:36:48 +0000 (17:36 +0900)]
ASoC: Fix binding of WM8750 on Jive
The I2C address is misformatted and would never match.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Cc: stable@kernel.org
Takashi Iwai [Tue, 9 Aug 2011 12:22:44 +0000 (14:22 +0200)]
ALSA: hda - Add tracepoint for unsolicited events
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Stephen Warren [Thu, 4 Aug 2011 22:44:44 +0000 (16:44 -0600)]
ASoC: WM8903: Free IRQ on device removal
Without this, request_irq on subsequent device initialization fails, and
the codec cannot be used.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Stephen Warren [Thu, 4 Aug 2011 22:44:43 +0000 (16:44 -0600)]
ASoC: Tegra: wm8903 machine driver: Allow re-insertion of module
Two issues were preventing module snd-soc-tegra-wm8903.ko from being
removed and re-inserted:
a) The speaker-enable GPIO is hosted by the WM8903 chip. This GPIO must
be freed before snd_soc_unregister_card() is called, because that
triggers wm8903.c:wm8903_remove(), which calls gpiochip_remove(), which
then fails if any of the GPIOs are in use. To solve this, free all GPIOs
first, so the code doesn't care where they come from.
b) We need to call snd_soc_jack_free_gpios() to match the call to
snd_soc_jack_add_gpios() during initialization. Without this, the
call to snd_soc_jack_add_gpios() fails during any subsequent modprobe
and initialization, since the GPIO and IRQ are already registered. In
turn, this causes the headphone state not to be monitored, so the
headphone is assumed not to be plugged in, and the audio path to it is
never enabled.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Cc: stable@kernel.org
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Stephen Warren [Thu, 4 Aug 2011 22:44:42 +0000 (16:44 -0600)]
ASoC: Tegra: tegra_pcm_deallocate_dma_buffer: Don't OOPS
Not all PCM devices have all sub-streams. Specifically, the SPDIF driver
only supports playback and hence has no capture substream. Check whether
a substream exists before dereferencing it, when de-allocating DMA
buffers in tegra_pcm_deallocate_dma_buffer.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
Mark Brown [Tue, 9 Aug 2011 00:39:55 +0000 (09:39 +0900)]
Merge branch 'fix/asoc' of git://git./linux/kernel/git/tiwai/sound-2.6 into for-3.1
Takashi Iwai [Mon, 8 Aug 2011 12:30:44 +0000 (14:30 +0200)]
Merge branch 'fix/asoc' into for-linus
Takashi Iwai [Mon, 8 Aug 2011 12:30:29 +0000 (14:30 +0200)]
Merge branch 'fix/kconfig' into for-linus
Wang Shaoyan [Mon, 8 Aug 2011 11:10:26 +0000 (19:10 +0800)]
sound: pss - don't use the deprecated function check_region
sound/oss/pss.c: In function 'configure_nonsound_components':
sound/oss/pss.c:676: warning: 'check_region' is deprecated (declared at include/linux/ioport.h:201)
Signed-off-by: Wang Shaoyan <wangshaoyan.pt@taobao.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 8 Aug 2011 10:28:22 +0000 (12:28 +0200)]
ALSA: timer - Add NULL-check for invalid slave timer
Just to be sure.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 8 Aug 2011 10:24:46 +0000 (12:24 +0200)]
ALSA: timer - Fix Oops at closing slave timer
A slave-timer instance has no timer reference, and this results in
NULL-dereference at stopping the timer, typically called at closing
the device.
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=40682
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Mon, 8 Aug 2011 08:45:31 +0000 (10:45 +0200)]
Merge branch 'wm8996-rename' of git://git./linux/kernel/git/broonie/sound-2.6 into fix/asoc
Mark Brown [Mon, 8 Aug 2011 05:52:01 +0000 (14:52 +0900)]
Merge branch 'for-3.1' of git://git./linux/kernel/git/broonie/sound-2.6.git into for-3.1
Mark Brown [Wed, 20 Jul 2011 12:49:58 +0000 (13:49 +0100)]
ASoC: Acknowledge WM8996 interrupts before acting on them
This closes the small race between a status being read in response to an
interrupt and clearing the interrupt, meaning that if the status changes
between those periods we might not get a reassertion of the interrupt.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Mark Brown [Fri, 24 Jun 2011 11:10:44 +0000 (12:10 +0100)]
ASoC: Rename WM8915 to WM8996
For marketing reasons the part will be called WM8996. In order to avoid
user confusion rename the driver to reflect this.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Linus Torvalds [Mon, 8 Aug 2011 01:23:30 +0000 (18:23 -0700)]
Linux 3.1-rc1
Linus Torvalds [Sun, 7 Aug 2011 22:52:19 +0000 (15:52 -0700)]
Merge git://git./linux/kernel/git/davem/sparc
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
sparc: Fix build with DEBUG_PAGEALLOC enabled.
Rafael J. Wysocki [Sun, 7 Aug 2011 22:26:50 +0000 (00:26 +0200)]
sh: Fix boot crash related to SCI
Commit
d006199e72a9 ("serial: sh-sci: Regtype probing doesn't need to be
fatal.") made sci_init_single() return when sci_probe_regmap() succeeds,
although it should return when sci_probe_regmap() fails. This causes
systems using the serial sh-sci driver to crash during boot.
Fix the problem by using the right return condition.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sun, 7 Aug 2011 22:49:11 +0000 (15:49 -0700)]
arm: remove stale export of 'sha_transform'
The generic library code already exports the generic function, this was
left-over from the ARM-specific version that just got removed.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sun, 7 Aug 2011 21:07:03 +0000 (14:07 -0700)]
arm: remove "optimized" SHA1 routines
Since commit
1eb19a12bd22 ("lib/sha1: use the git implementation of
SHA-1"), the ARM SHA1 routines no longer work. The reason? They
depended on the larger 320-byte workspace, and now the sha1 workspace is
just 16 words (64 bytes). So the assembly version would overwrite the
stack randomly.
The optimized asm version is also probably slower than the new improved
C version, so there's no reason to keep it around. At least that was
the case in git, where what appears to be the same assembly language
version was removed two years ago because the optimized C BLK_SHA1 code
was faster.
Reported-and-tested-by: Joachim Eastwood <manabian@gmail.com>
Cc: Andreas Schwab <schwab@linux-m68k.org>
Cc: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Al Viro [Sun, 7 Aug 2011 17:55:11 +0000 (18:55 +0100)]
fix rcu annotations noise in cred.h
task->cred is declared as __rcu, and access to other tasks' ->cred is,
indeed, protected. Access to current->cred does not need rcu_dereference()
at all, since only the task itself can change its ->cred. sparse, of
course, has no way of knowing that...
Add force-cast in current_cred(), make current_fsuid() et.al. use it.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sun, 7 Aug 2011 16:53:20 +0000 (09:53 -0700)]
vfs: rename 'do_follow_link' to 'should_follow_link'
Al points out that the do_follow_link() helper function really is
misnamed - it's about whether we should try to follow a symlink or not,
not about actually doing the following.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Takashi Iwai [Sun, 7 Aug 2011 15:34:07 +0000 (17:34 +0200)]
ALSA: Fix dependency of CONFIG_SND_TEA575X
CONFIG_SND_TEA575X is enabled by RADIO_SF16FMR2, but the latter one is
no PCI device. Since tea575x-tuner itself is independent from the board
bus type, the config should be moved out of SND_PCI dependency.
Reported-by: Randy Dunlap <rdunlap@xenotime.net>
Acked-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Thomas Meyer [Sat, 6 Aug 2011 11:26:20 +0000 (13:26 +0200)]
ALSA: asihpi - use kzalloc()
Use kzalloc rather than kmalloc followed by memset with 0
This considers some simple cases that are common and easy to validate
Note in particular that there are no ...s in the rule, so all of the
matched code has to be contiguous
The semantic patch that makes this output is available
in scripts/coccinelle/api/alloc/kzalloc-simple.cocci.
More information about semantic patching is available at
http://coccinelle.lip6.fr/
Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Ari Savolainen [Sat, 6 Aug 2011 16:43:07 +0000 (19:43 +0300)]
Fix POSIX ACL permission check
After commit
3567866bf261: "RCUify freeing acls, let check_acl() go ahead in
RCU mode if acl is cached" posix_acl_permission is being called with an
unsupported flag and the permission check fails. This patch fixes the issue.
Signed-off-by: Ari Savolainen <ari.m.savolainen@gmail.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Linus Torvalds [Sun, 7 Aug 2011 05:56:03 +0000 (22:56 -0700)]
Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd
* 'for-linus' of git://git.open-osd.org/linux-open-osd:
ore: Make ore its own module
exofs: Rename raid engine from exofs/ios.c => ore
exofs: ios: Move to a per inode components & device-table
exofs: Move exofs specific osd operations out of ios.c
exofs: Add offset/length to exofs_get_io_state
exofs: Fix truncate for the raid-groups case
exofs: Small cleanup of exofs_fill_super
exofs: BUG: Avoid sbi realloc
exofs: Remove pnfs-osd private definitions
nfs_xdr: Move nfs4_string definition out of #ifdef CONFIG_NFS_V4
Linus Torvalds [Sun, 7 Aug 2011 05:45:50 +0000 (22:45 -0700)]
vfs: optimize inode cache access patterns
The inode structure layout is largely random, and some of the vfs paths
really do care. The path lookup in particular is already quite D$
intensive, and profiles show that accessing the 'inode->i_op->xyz'
fields is quite costly.
We already optimized the dcache to not unnecessarily load the d_op
structure for members that are often NULL using the DCACHE_OP_xyz bits
in dentry->d_flags, and this does something very similar for the inode
ops that are used during pathname lookup.
It also re-orders the fields so that the fields accessed by 'stat' are
together at the beginning of the inode structure, and roughly in the
order accessed.
The effect of this seems to be in the 1-2% range for an empty kernel
"make -j" run (which is fairly kernel-intensive, mostly in filename
lookup), so it's visible. The numbers are fairly noisy, though, and
likely depend a lot on exact microarchitecture. So there's more tuning
to be done.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sun, 7 Aug 2011 05:41:50 +0000 (22:41 -0700)]
vfs: renumber DCACHE_xyz flags, remove some stale ones
Gcc tends to generate better code with small integers, including the
DCACHE_xyz flag tests - so move the common ones to be first in the list.
Also just remove the unused DCACHE_INOTIFY_PARENT_WATCHED and
DCACHE_AUTOFS_PENDING values, their users no longer exists in the source
tree.
And add a "unlikely()" to the DCACHE_OP_COMPARE test, since we want the
common case to be a nice straight-line fall-through.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sun, 7 Aug 2011 05:12:37 +0000 (22:12 -0700)]
Merge git://git./linux/kernel/git/davem/net
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
net: Compute protocol sequence numbers and fragment IDs using MD5.
crypto: Move md5_transform to lib/md5.c
Boaz Harrosh [Sun, 7 Aug 2011 02:22:06 +0000 (19:22 -0700)]
ore: Make ore its own module
Export everything from ore need exporting. Change Kbuild and Kconfig
to build ore.ko as an independent module. Import ore from exofs
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Boaz Harrosh [Sun, 7 Aug 2011 02:26:31 +0000 (19:26 -0700)]
exofs: Rename raid engine from exofs/ios.c => ore
ORE stands for "Objects Raid Engine"
This patch is a mechanical rename of everything that was in ios.c
and its API declaration to an ore.c and an osd_ore.h header. The ore
engine will later be used by the pnfs objects layout driver.
* File ios.c => ore.c
* Declaration of types and API are moved from exofs.h to a new
osd_ore.h
* All used types are prefixed by ore_ from their exofs_ name.
* Shift includes from exofs.h to osd_ore.h so osd_ore.h is
independent, include it from exofs.h.
Other than a pure rename there are no other changes. Next patch
will move the ore into it's own module and will export the API
to be used by exofs and later the layout driver
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Boaz Harrosh [Fri, 5 Aug 2011 22:06:04 +0000 (15:06 -0700)]
exofs: ios: Move to a per inode components & device-table
Exofs raid engine was saving on memory space by having a single layout-info,
single pid, and a single device-table, global to the filesystem. Then passing
a credential and object_id info at the io_state level, private for each
inode. It would also devise this contraption of rotating the device table
view for each inode->ino to spread out the device usage.
This is not compatible with the pnfs-objects standard, demanding that
each inode can have it's own layout-info, device-table, and each object
component it's own pid, oid and creds.
So: Bring exofs raid engine to be usable for generic pnfs-objects use by:
* Define an exofs_comp structure that holds obj_id and credential info.
* Break up exofs_layout struct to an exofs_components structure that holds a
possible array of exofs_comp and the array of devices + the size of the
arrays.
* Add a "comps" parameter to get_io_state() that specifies the ids creds
and device array to use for each IO.
This enables to keep the layout global, but the device-table view, creds
and IDs at the inode level. It only adds two 64bit to each inode, since
some of these members already existed in another form.
* ios raid engine now access layout-info and comps-info through the passed
pointers. Everything is pre-prepared by caller for generic access of
these structures and arrays.
At the exofs Level:
* Super block holds an exofs_components struct that holds the device
array, previously in layout. The devices there are in device-table
order. The device-array is twice bigger and repeats the device-table
twice so now each inode's device array can point to a random device
and have a round-robin view of the table, making it compatible to
previous exofs versions.
* Each inode has an exofs_components struct that is initialized at
load time, with it's own view of the device table IDs and creds.
When doing IO this gets passed to the io_state together with the
layout.
While preforming this change. Bugs where found where credentials with the
wrong IDs where used to access the different SB objects (super.c). As well
as some dead code. It was never noticed because the target we use does not
check the credentials.
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Boaz Harrosh [Mon, 16 May 2011 12:26:47 +0000 (15:26 +0300)]
exofs: Move exofs specific osd operations out of ios.c
ios.c will be moving to an external library, for use by the
objects-layout-driver. Remove from it some exofs specific functions.
Also g_attr_logical_length is used both by inode.c and ios.c
move definition to the later, to keep it independent
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Boaz Harrosh [Tue, 16 Nov 2010 18:09:58 +0000 (20:09 +0200)]
exofs: Add offset/length to exofs_get_io_state
In future raid code we will need to know the IO offset/length
and if it's a read or write to determine some of the array
sizes we'll need.
So add a new exofs_get_rw_state() API for use when
writeing/reading. All other simple cases are left using the
old way.
The major change to this is that now we need to call
exofs_get_io_state later at inode.c::read_exec and
inode.c::write_exec when we actually know these things. So this
patch is kept separate so I can test things apart from other
changes.
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
David S. Miller [Thu, 4 Aug 2011 03:50:44 +0000 (20:50 -0700)]
net: Compute protocol sequence numbers and fragment IDs using MD5.
Computers have become a lot faster since we compromised on the
partial MD4 hash which we use currently for performance reasons.
MD5 is a much safer choice, and is inline with both RFC1948 and
other ISS generators (OpenBSD, Solaris, etc.)
Furthermore, only having 24-bits of the sequence number be truly
unpredictable is a very serious limitation. So the periodic
regeneration and 8-bit counter have been removed. We compute and
use a full 32-bit sequence number.
For ipv6, DCCP was found to use a 32-bit truncated initial sequence
number (it needs 43-bits) and that is fixed here as well.
Reported-by: Dan Kaminsky <dan@doxpara.com>
Tested-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Thu, 4 Aug 2011 02:45:10 +0000 (19:45 -0700)]
crypto: Move md5_transform to lib/md5.c
We are going to use this for TCP/IP sequence number and fragment ID
generation.
Signed-off-by: David S. Miller <davem@davemloft.net>
Linus Torvalds [Sat, 6 Aug 2011 20:54:36 +0000 (13:54 -0700)]
Merge git://git./linux/kernel/git/sfrench/cifs-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
cifs: cope with negative dentries in cifs_get_root
cifs: convert prefixpath delimiters in cifs_build_path_to_root
CIFS: Fix missing a decrement of inFlight value
cifs: demote DFS referral lookup errors to cFYI
Revert "cifs: advertise the right receive buffer size to the server"
Linus Torvalds [Sat, 6 Aug 2011 20:26:37 +0000 (13:26 -0700)]
Merge branch 'pm-fixes' of git://git./linux/kernel/git/rafael/suspend-2.6
* 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
PM / Runtime: Allow _put_sync() from interrupts-disabled context
PM / Domains: Fix pm_genpd_poweron()
Linus Torvalds [Sat, 6 Aug 2011 20:26:15 +0000 (13:26 -0700)]
Merge branch 'for_linus' of git://git./linux/kernel/git/mjg59/platform-drivers-x86
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86: (38 commits)
acer-wmi: support Lenovo ideapad S205 wifi switch
acerhdf.c: spaces in aliased changed to *
platform-drivers-x86: ideapad-laptop: add missing ideapad_input_exit in ideapad_acpi_add error path
x86 driver: fix typo in TDP override enabling
Platform: fix samsung-laptop DMI identification for N150/N210/220/N230
dell-wmi: Add keys for Dell XPS L502X
platform-drivers-x86: samsung-q10: make dmi_check_callback return 1
Platform: Samsung Q10 backlight driver
platform-drivers-x86: intel_scu_ipc: convert to DEFINE_PCI_DEVICE_TABLE
platform-drivers-x86: intel_rar_register: convert to DEFINE_PCI_DEVICE_TABLE
platform-drivers-x86: intel_menlow: add missing return AE_OK for intel_menlow_register_sensor()
platform-drivers-x86: intel_mid_thermal: fix memory leak
platform-drivers-x86: msi-wmi: add missing sparse_keymap_free in msi_wmi_init error path
Samsung Laptop platform driver: support N510
asus-wmi: add uwb rfkill support
asus-wmi: add gps rfkill support
asus-wmi: add CWAP support and clarify the meaning of WAPF bits
asus-wmi: return proper value in store_cpufv()
asus-wmi: check for temp1 presence
asus-wmi: add thermal sensor
...
Linus Torvalds [Sat, 6 Aug 2011 19:22:30 +0000 (12:22 -0700)]
Merge branch 'stable/bug.fixes' of git://git./linux/kernel/git/konrad/xen
* 'stable/bug.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
xen/trace: Fix compile error when CONFIG_XEN_PRIVILEGED_GUEST is not set
xen: Fix misleading WARN message at xen_release_chunk
xen: Fix printk() format in xen/setup.c
xen/tracing: it looks like we wanted CONFIG_FTRACE
xen/self-balloon: Add dependency on tmem.
xen/balloon: Fix compile errors - missing header files.
xen/grant: Fix compile warning.
xen/pciback: remove duplicated #include
Linus Torvalds [Sat, 6 Aug 2011 19:21:19 +0000 (12:21 -0700)]
Merge branch 'release' of git://git./linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
Battery: sysfs_remove_battery(): possible circular locking
John Stanley [Thu, 4 Aug 2011 00:41:00 +0000 (20:41 -0400)]
savagedb: Fix typo causing regression in savage4 series video chip detection
Two additional savage4 variants were added, but the S3_SAVAGE4_SERIES
macro was incompletely modified, resulting in a false positive detection
of a savage4 card regardless of which savage card is actually present.
For non-savage4 series cards, such as a Savage/IX-MV card, this results
in garbled video and/or a hard-hang at boot time. Fix this by changing
an '||' to an '&&' in the S3_SAVAGE4_SERIES macro.
Signed-off-by: John P. Stanley <jpsinthemix@verizon.net>
Reviewed-by: Tormod Volden <debian.tormod@gmail.com>
[ The macros have incomplete parenthesis too, but whatever .. -Linus ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Josh Triplett [Wed, 3 Aug 2011 19:19:07 +0000 (12:19 -0700)]
CodingStyle: Document the exception of not splitting user-visible strings, for grepping
Patch reviewers now recommend not splitting long user-visible strings,
such as printk messages, even if they exceed 80 columns. This avoids
breaking grep. However, that recommendation did not actually appear
anywhere in Documentation/CodingStyle.
See, for example, the thread at
http://news.gmane.org/find-root.php?message_id=%
3c1312215262.11635.15.camel%40Joe%2dLaptop%3e
Signed-off-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sat, 6 Aug 2011 18:51:33 +0000 (11:51 -0700)]
vfs: show O_CLOEXE bit properly in /proc/<pid>/fdinfo/<fd> files
The CLOEXE bit is magical, and for performance (and semantic) reasons we
don't actually maintain it in the file descriptor itself, but in a
separate bit array. Which means that when we show f_flags, the CLOEXE
status is shown incorrectly: we show the status not as it is now, but as
it was when the file was opened.
Fix that by looking up the bit properly in the 'fdt->close_on_exec' bit
array.
Uli needs this in order to re-implement the pfiles program:
"For normal file descriptors (not sockets) this was the last piece of
information which wasn't available. This is all part of my 'give
Solaris users no reason to not switch' effort. I intend to offer the
code to the util-linux-ng maintainers."
Requested-by: Ulrich Drepper <drepper@akkadia.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sat, 6 Aug 2011 18:43:08 +0000 (11:43 -0700)]
oom_ajd: don't use WARN_ONCE, just use printk_once
WARN_ONCE() is very annoying, in that it shows the stack trace that we
don't care about at all, and also triggers various user-level "kernel
oopsed" logic that we really don't care about. And it's not like the
user can do anything about the applications (sshd) in question, it's a
distro issue.
Requested-by: Andi Kleen <andi@firstfloor.org> (and many others)
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Mandeep Singh Baines [Sat, 6 Aug 2011 01:46:27 +0000 (18:46 -0700)]
lib/sha1: use the git implementation of SHA-1
For ChromiumOS, we use SHA-1 to verify the integrity of the root
filesystem. The speed of the kernel sha-1 implementation has a major
impact on our boot performance.
To improve boot performance, we investigated using the heavily optimized
sha-1 implementation used in git. With the git sha-1 implementation, we
see a 11.7% improvement in boot time.
10 reboots, remove slowest/fastest.
Before:
Mean: 6.58 seconds Stdev: 0.14
After (with git sha-1, this patch):
Mean: 5.89 seconds Stdev: 0.07
The other cool thing about the git SHA-1 implementation is that it only
needs 64 bytes of stack for the workspace while the original kernel
implementation needed 320 bytes.
Signed-off-by: Mandeep Singh Baines <msb@chromium.org>
Cc: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Cc: Nicolas Pitre <nico@cam.org>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: David S. Miller <davem@davemloft.net>
Cc: linux-crypto@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
David S. Miller [Sat, 6 Aug 2011 12:26:35 +0000 (05:26 -0700)]
sparc: Fix build with DEBUG_PAGEALLOC enabled.
arch/sparc/mm/init_64.c:1622:22: error: unused variable '__swapper_4m_tsb_phys_patch_end' [-Werror=unused-variable]
arch/sparc/mm/init_64.c:1621:22: error: unused variable '__swapper_4m_tsb_phys_patch' [-Werror=unused-variable]
Signed-off-by: David S. Miller <davem@davemloft.net>
Daniel Mack [Sat, 6 Aug 2011 07:13:08 +0000 (09:13 +0200)]
ALSA: snd-usb-caiaq: Fix keymap for RigKontrol3
Signed-off-by: Daniel Mack <zonque@gmail.com>
Reported-by: Renato <naretobh@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Daniel Mack [Fri, 5 Aug 2011 22:23:18 +0000 (00:23 +0200)]
ALSA: snd-usb: Fix uninitialized variable usage
Purely cosmetic, but fixes the following build warning.
CC [M] sound/usb/quirks.o
sound/usb/quirks.c: In function ‘snd_usb_apply_boot_quirk’:
sound/usb/quirks.c:429:6: warning: ‘err’ may be used uninitialized in this function [-Wuninitialized]
Signed-off-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Len Brown [Sat, 6 Aug 2011 02:16:42 +0000 (22:16 -0400)]
Merge branch 'battery' into release
Sergey Senozhatsky [Fri, 5 Aug 2011 22:34:08 +0000 (01:34 +0300)]
Battery: sysfs_remove_battery(): possible circular locking
Commit
9c921c22a7f33397a6774d7fa076db9b6a0fd669
Author: Lan Tianyu <tianyu.lan@intel.com>
ACPI / Battery: Resolve the race condition in the sysfs_remove_battery()
fixed BUG https://bugzilla.kernel.org/show_bug.cgi?id=35642 , but as a side
effect made lockdep unhappy with sysfs_remove_battery():
[14818.477168]
[14818.477170] =======================================================
[14818.477200] [ INFO: possible circular locking dependency detected ]
[14818.477221]
3.1.0-dbg-07865-g1280ea8-dirty #668
[14818.477236] -------------------------------------------------------
[14818.477257] s2ram/1599 is trying to acquire lock:
[14818.477276] (s_active#8){++++.+}, at: [<
ffffffff81169147>] sysfs_addrm_finish+0x31/0x5a
[14818.477323]
[14818.477325] but task is already holding lock:
[14818.477350] (&battery->lock){+.+.+.}, at: [<
ffffffffa0047278>] sysfs_remove_battery+0x10/0x4b [battery]
[14818.477395]
[14818.477397] which lock already depends on the new lock.
[14818.477399]
[..]
[14818.479121] stack backtrace:
[14818.479148] Pid: 1599, comm: s2ram Not tainted
3.1.0-dbg-07865-g1280ea8-dirty #668
[14818.479175] Call Trace:
[14818.479198] [<
ffffffff814828c3>] print_circular_bug+0x293/0x2a4
[14818.479228] [<
ffffffff81070cb5>] __lock_acquire+0xfe4/0x164b
[14818.479260] [<
ffffffff81169147>] ? sysfs_addrm_finish+0x31/0x5a
[14818.479288] [<
ffffffff810718d2>] lock_acquire+0x138/0x1ac
[14818.479316] [<
ffffffff81169147>] ? sysfs_addrm_finish+0x31/0x5a
[14818.479345] [<
ffffffff81168a79>] sysfs_deactivate+0x9b/0xec
[14818.479373] [<
ffffffff81169147>] ? sysfs_addrm_finish+0x31/0x5a
[14818.479405] [<
ffffffff81169147>] sysfs_addrm_finish+0x31/0x5a
[14818.479433] [<
ffffffff81167bc5>] sysfs_hash_and_remove+0x54/0x77
[14818.479461] [<
ffffffff811681b9>] sysfs_remove_file+0x12/0x14
[14818.479488] [<
ffffffff81385bf8>] device_remove_file+0x12/0x14
[14818.479516] [<
ffffffff81386504>] device_del+0x119/0x17c
[14818.479542] [<
ffffffff81386575>] device_unregister+0xe/0x1a
[14818.479570] [<
ffffffff813c6ef9>] power_supply_unregister+0x23/0x27
[14818.479601] [<
ffffffffa004729c>] sysfs_remove_battery+0x34/0x4b [battery]
[14818.479632] [<
ffffffffa004778f>] battery_notify+0x2c/0x3a [battery]
[14818.479662] [<
ffffffff8148fe82>] notifier_call_chain+0x74/0xa1
[14818.479692] [<
ffffffff810624b4>] __blocking_notifier_call_chain+0x6c/0x89
[14818.479722] [<
ffffffff810624e0>] blocking_notifier_call_chain+0xf/0x11
[14818.479751] [<
ffffffff8107e40e>] pm_notifier_call_chain+0x15/0x27
[14818.479770] [<
ffffffff8107ee1a>] enter_state+0xa7/0xd5
[14818.479782] [<
ffffffff8107e341>] state_store+0xaa/0xc0
[14818.479795] [<
ffffffff8107e297>] ? pm_async_store+0x45/0x45
[14818.479807] [<
ffffffff81248837>] kobj_attr_store+0x17/0x19
[14818.479820] [<
ffffffff81167e27>] sysfs_write_file+0x103/0x13f
[14818.479834] [<
ffffffff81109037>] vfs_write+0xad/0x13d
[14818.479847] [<
ffffffff811092b2>] sys_write+0x45/0x6c
[14818.479860] [<
ffffffff81492f92>] system_call_fastpath+0x16/0x1b
This patch introduces separate lock to struct acpi_battery to
grab in sysfs_remove_battery() instead of battery->lock.
So fix by Lan Tianyu is still there, we just grab independent lock.
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Tested-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Kevin Hilman [Fri, 5 Aug 2011 19:45:20 +0000 (21:45 +0200)]
PM / Runtime: Allow _put_sync() from interrupts-disabled context
Currently the use of pm_runtime_put_sync() is not safe from
interrupts-disabled context because rpm_idle() will release the
spinlock and enable interrupts for the idle callbacks. This enables
interrupts during a time where interrupts were expected to be
disabled, and can have strange side effects on drivers that expected
interrupts to be disabled.
This is not a bug since the documentation clearly states that only
_put_sync_suspend() is safe in IRQ-safe mode.
However, pm_runtime_put_sync() could be made safe when in IRQ-safe
mode by releasing the spinlock but not re-enabling interrupts, which
is what this patch aims to do.
Problem was found when using some buggy drivers that set
pm_runtime_irq_safe() and used _put_sync() in interrupts-disabled
context.
Reported-by: Colin Cross <ccross@google.com>
Tested-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>