<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/base/firmware_class.c, branch v3.16</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v3.16</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v3.16'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2014-03-03T04:09:08Z</updated>
<entry>
<title>Merge 3.14-rc5 into driver-core-next</title>
<updated>2014-03-03T04:09:08Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2014-03-03T04:09:08Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=13df7977431e3b906a23bb75f29e0f40a8d73f87'/>
<id>urn:sha1:13df7977431e3b906a23bb75f29e0f40a8d73f87</id>
<content type='text'>
We want the fixes in here.
</content>
</entry>
<entry>
<title>PM / hibernate: Fix restore hang in freeze_processes()</title>
<updated>2014-02-26T00:13:15Z</updated>
<author>
<name>Sebastian Capella</name>
<email>sebastian.capella@linaro.org</email>
</author>
<published>2014-02-19T01:52:08Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=f8d5b9e9e5372f0deb7bc1ab1088a9b60b0a793d'/>
<id>urn:sha1:f8d5b9e9e5372f0deb7bc1ab1088a9b60b0a793d</id>
<content type='text'>
During restore, pm_notifier chain are called with
PM_RESTORE_PREPARE.  The firmware_class driver handler
fw_pm_notify does not have a handler for this.  As a result,
it keeps a reader on the kmod.c umhelper_sem.  During
freeze_processes, the call to __usermodehelper_disable tries to
take a write lock on this semaphore and hangs waiting.

Signed-off-by: Sebastian Capella &lt;sebastian.capella@linaro.org&gt;
Acked-by: Ming Lei &lt;ming.lei@canonical.com&gt;
Cc: All applicable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>firmware: use power efficient workqueue for unloading and aborting fw load</title>
<updated>2014-02-15T19:31:55Z</updated>
<author>
<name>Shaibal Dutta</name>
<email>shaibal.dutta@broadcom.com</email>
</author>
<published>2014-01-31T23:44:58Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=bce6618a11ca4ca3cb5d6a2a1d43c00f8301d2b2'/>
<id>urn:sha1:bce6618a11ca4ca3cb5d6a2a1d43c00f8301d2b2</id>
<content type='text'>
Allow the scheduler to select the most appropriate CPU for running the
firmware load timeout routine and delayed routine for firmware unload.
This extends idle residency times and conserves power.

This functionality is enabled when CONFIG_WQ_POWER_EFFICIENT is selected.

Cc: Ming Lei &lt;ming.lei@canonical.com&gt;
Cc: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Shaibal Dutta &lt;shaibal.dutta@broadcom.com&gt;
[zoran.markovic@linaro.org: Rebased to latest kernel, added commit message.
Fixed code alignment.]
Signed-off-by: Zoran Markovic &lt;zoran.markovic@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>firmware: give a protection when map page failed</title>
<updated>2014-02-15T19:31:55Z</updated>
<author>
<name>zhang jun</name>
<email>jun.zhang@intel.com</email>
</author>
<published>2014-02-13T07:18:47Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=2b1278cb651786648ba6dad285a6c0873c6788e1'/>
<id>urn:sha1:2b1278cb651786648ba6dad285a6c0873c6788e1</id>
<content type='text'>
so, we need give a protection and return a error value.
[ 7341.474236] [drm:do_intel_finish_page_flip] *ERROR* invalid or inactive unpin_work!
[ 7341.494464] atomisp-css2400b0_v21 0000:00:03.0: unhandled css stored event: 0x20
[ 7341.503627] vmap allocation for size 208896 failed: use vmalloc=&lt;size&gt; to increase size.&lt;=================== map failed
[ 7341.507135] [drm:do_intel_finish_page_flip] *ERROR* invalid or inactive unpin_work!
[ 7341.503848] BUG: unable to handle kernel NULL pointer dereference at   (null)
[ 7341.520394] IP: [&lt;c18f5c1b&gt;] sst_load_all_modules_elf+0x1bb/0x850
[ 7341.527216] *pdpt = 0000000030dfe001 *pde = 0000000000000000
[ 7341.533640] Oops: 0000 [#1] PREEMPT SMP
[ 7341.540360] [drm:do_intel_finish_page_flip] *ERROR* invalid or inactive unpin_work!
[ 7341.538037] Modules linked in: atomisp_css2400b0_v21 lm3554 ov2722 imx1x5 atmel_mxt_ts vxd392 videobuf_vmalloc videobuf_core lm_dump(O) bcm_bt_lpm hdmi_audio bcm4334x(O)
[ 7341.563531] CPU: 1 PID: 525 Comm: mediaserver Tainted: G        W  O 3.10.20-262518-ga83c053 #1
[ 7341.573253] task: f0994ec0 ti: f09f0000 task.ti: f09f0000
[ 7341.579284] EIP: 0060:[&lt;c18f5c1b&gt;] EFLAGS: 00010246 CPU: 1
[ 7341.585415] EIP is at sst_load_all_modules_elf+0x1bb/0x850
[ 7341.591541] EAX: 00000000 EBX: e3595ba0 ECX: 00000000 EDX: 00031c1c
[ 7341.598541] ESI: e04a0000 EDI: 00000000 EBP: f09f1d80 ESP: f09f1cf4
[ 7341.605542]  DS: 007b ES: 007b FS: 00d8 GS: 003b SS: 0068
[ 7341.611573] CR0: 80050033 CR2: 00000000 CR3: 30db4000 CR4: 001007f0
[ 7341.618573] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[ 7341.625575] DR6: ffff0ff0 DR7: 00000400
[ 7341.629856] Stack:
[ 7341.632097]  f09f1d57 00000019 c1d656d7 c1d658d3 c1d56409 00000f28 c1d64af9 18000103
[ 7341.640766]  01000001 00080000 c1f910a0 f326f4c8 00000034 f326f520 00000002 e04a02bc
[ 7341.649465]  00000001 f326e014 c1f910b0 e04a0000 c0080100 00031c1c e3595ba0 c0080100
[ 7341.658149] Call Trace:
[ 7341.660888]  [&lt;c18f6308&gt;] sst_post_download_byt+0x58/0xb0
[ 7341.666925]  [&lt;c18f4fbc&gt;] sst_load_fw+0xdc/0x510
[ 7341.672086]  [&lt;c1a7b2c0&gt;] ? __mutex_lock_slowpath+0x250/0x370
[ 7341.678507]  [&lt;c1a80e05&gt;] ? sub_preempt_count+0x55/0xe0
[ 7341.684346]  [&lt;c18f1294&gt;] sst_download_fw+0x14/0x60
[ 7341.689796]  [&lt;c1a7b403&gt;] ? mutex_lock+0x23/0x30
[ 7341.694954]  [&lt;c18f191c&gt;] intel_sst_check_device+0x6c/0x120
[ 7341.701181]  [&lt;c18f1d08&gt;] sst_set_generic_params+0x1b8/0x4a0
[ 7341.707504]  [&lt;c1a80e05&gt;] ? sub_preempt_count+0x55/0xe0
[ 7341.713341]  [&lt;c1a80e05&gt;] ? sub_preempt_count+0x55/0xe0
[ 7341.719178]  [&lt;c1a7b2c0&gt;] ? __mutex_lock_slowpath+0x250/0x370
[ 7341.725600]  [&lt;c1320d84&gt;] ? __kmalloc_track_caller+0xe4/0x1d0
[ 7341.732022]  [&lt;c18e35f5&gt;] sst_set_mixer_param+0x25/0x40
[ 7341.737859]  [&lt;c18e3853&gt;] lpe_mixer_ihf_set+0xb3/0x160
[ 7341.743602]  [&lt;c1855b99&gt;] snd_ctl_ioctl+0xa89/0xb40
[ 7341.749052]  [&lt;c1331e65&gt;] ? path_openat+0xa5/0x3d0
[ 7341.754409]  [&lt;c1447857&gt;] ? avc_has_perm_flags+0xc7/0x170
[ 7341.760441]  [&lt;c1855110&gt;] ? snd_ctl_elem_add_user+0x540/0x540
[ 7341.766862]  [&lt;c1334047&gt;] do_vfs_ioctl+0x77/0x5e0
[ 7341.772117]  [&lt;c144842a&gt;] ? inode_has_perm.isra.42.constprop.79+0x3a/0x50
[ 7341.779705]  [&lt;c14490a0&gt;] ? file_has_perm+0xa0/0xb0
[ 7341.785155]  [&lt;c14493b8&gt;] ? selinux_file_ioctl+0x48/0xe0
[ 7341.791090]  [&lt;c1334628&gt;] SyS_ioctl+0x78/0x90
[ 7341.795958]  [&lt;c1a7dde8&gt;] syscall_call+0x7/0xb
[ 7341.800925]  [&lt;c1a70000&gt;] ? mm_fault_error+0x13c/0x198

Signed-off-by: zhang jun &lt;jun.zhang@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>firmware_class: Fix the file size check</title>
<updated>2014-01-09T04:29:19Z</updated>
<author>
<name>Ben Hutchings</name>
<email>ben@decadent.org.uk</email>
</author>
<published>2013-12-28T15:53:59Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=08da2012e0bb0f3f1422cce3f76c36a90da366b5'/>
<id>urn:sha1:08da2012e0bb0f3f1422cce3f76c36a90da366b5</id>
<content type='text'>
We expect to read firmware blobs with a single call to kernel_read(),
which returns int.  Therefore the size must be within the range of
int, not long.

Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>firmware loader: Add sparse annotation</title>
<updated>2014-01-08T23:36:18Z</updated>
<author>
<name>Bart Van Assche</name>
<email>bvanassche@acm.org</email>
</author>
<published>2014-01-04T13:20:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=98233b21cd6e6b9bd8ad5d4756bda1c051567468'/>
<id>urn:sha1:98233b21cd6e6b9bd8ad5d4756bda1c051567468</id>
<content type='text'>
Avoid that sparse reports the following warning on __fw_free_buf():

drivers/base/firmware_class.c:230:9: warning: context imbalance in '__fw_free_buf' - unexpected unlock

Signed-off-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Acked-by: Ming Lei &lt;ming.lei@canonical.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>firmware: Suppress fallback warnings when CONFIG_FW_LOADER_USER_HELPER=n</title>
<updated>2013-12-09T02:22:33Z</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2013-12-02T14:38:19Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=68aeeaaaf86b61c78dca09879ce262778a9080e4'/>
<id>urn:sha1:68aeeaaaf86b61c78dca09879ce262778a9080e4</id>
<content type='text'>
The commit [3e358ac2bb5b: firmware: Be a bit more verbose about direct
firmware loading failure] introduced a new warning message about
falling back to user helper, but this isn't true when
CONFIG_FW_LOADER_USER_HELPER isn't set.

In this patch, clear the FW_OPT_FALLBACK flag in the case without
userhelper, so that the corresponding code will be disabled.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>firmware: Use bit flags instead of boolean combos</title>
<updated>2013-12-09T02:22:32Z</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2013-12-02T14:38:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=14c4bae77c80bd37f19d95405d42bd0b1fd95add'/>
<id>urn:sha1:14c4bae77c80bd37f19d95405d42bd0b1fd95add</id>
<content type='text'>
More than two boolean arguments to a function are rather confusing and
error-prone for callers.  Let's make the behavior bit flags instead of
triple combos.

A nice suggestion by Borislav Petkov.

Acked-by: Borislav Petkov &lt;bp@suse.de&gt;
Acked-by: Prarit Bhargava &lt;prarit@redhat.com&gt;
Acked-by: Ming Lei &lt;ming.lei@canonical.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>firmware: Introduce request_firmware_direct()</title>
<updated>2013-12-09T02:22:32Z</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2013-12-02T14:38:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=bba3a87e982ad5992e776ca1fc409326915d6b44'/>
<id>urn:sha1:bba3a87e982ad5992e776ca1fc409326915d6b44</id>
<content type='text'>
When CONFIG_FW_LOADER_USER_HELPER is set, request_firmware() falls
back to the usermode helper for loading via udev when the direct
loading fails.  But the recent udev takes way too long timeout (60
seconds) for non-existing firmware.  This is unacceptable for the
drivers like microcode loader where they load firmwares optionally,
i.e. it's no error even if no requested file exists.

This patch provides a new helper function, request_firmware_direct().
It behaves as same as request_firmware() except for that it doesn't
fall back to usermode helper but returns an error immediately if the
f/w can't be loaded directly in kernel.

Without CONFIG_FW_LOADER_USER_HELPER=y, request_firmware_direct() is
just an alias of request_firmware(), due to obvious reason.

Tested-by: Prarit Bhargava &lt;prarit@redhat.com&gt;
Acked-by: Ming Lei &lt;ming.lei@canonical.com&gt;
Acked-by: Borislav Petkov &lt;bp@suse.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>firmware: Be a bit more verbose about direct firmware loading failure</title>
<updated>2013-09-26T22:35:30Z</updated>
<author>
<name>Neil Horman</name>
<email>nhorman@tuxdriver.com</email>
</author>
<published>2013-09-06T19:36:08Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=3e358ac2bb5bb9c9f4842145ca0da2384d13fd98'/>
<id>urn:sha1:3e358ac2bb5bb9c9f4842145ca0da2384d13fd98</id>
<content type='text'>
The direct firmware loading interface is a bit quiet about failures.  Failures
that occur during loading are masked if firmware exists in multiple locations,
and may be masked entirely in the event that we fall back to the user mode
helper code.  It would be nice to see some of the more unexpected errors get
logged, so in the event that you expect the direct firmware loader to work (like
if CONFIG_FW_LOADER_USER_HELPER is enabled), and something goes wrong, you can
figure out what happened.

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Acked-by: Ming Lei &lt;ming.lei@canonical.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
</feed>
