linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH v1 00/15] firmware loader: introduce cache/uncache firmware
@ 2012-08-04  4:01 Ming Lei
  2012-08-04  4:01 ` [RFC PATCH v1 01/15] firmware loader: simplify pages ownership transfer Ming Lei
                   ` (15 more replies)
  0 siblings, 16 replies; 23+ messages in thread
From: Ming Lei @ 2012-08-04  4:01 UTC (permalink / raw)
  To: Linus Torvalds, Greg Kroah-Hartman
  Cc: Rafael J. Wysocki, Borislav Petkov, linux-kernel

Hi,

In [1][2], the problem below has been discussed for some time:

        device's firmware may be lost during suspend/resume
        cycle because device might be unplugged and plugged again
        or device experiences system power loss during the period.
        But in resume path, system is still not ready(process
        frozen, rootfs not usable, ...) to complete loading firmware
        from user space for devices.

The conclusion is that caching firmware during suspend/resume cycle
is capable of solving the problem.

This patchset implements cache/uncache firmware mechanism,
and apply the mechnism to cache device's firmware in kernel memory
space automatically during suspend/resume cyclye, so device can
load its firmware easily in its resume path. When resume is completed
and system is ready, the cached firmware will be removed from
kernel memory later.

The patch 15/15 is one example to apply the firmware cache mechanism on
ath9k-htc driver.

Even there are some corener cases[3] which can't be solved by the
cache approach, but as discussed in[4], the problem can be easily
fixed by a simple patch written by Linus.

This patch set is against 3.6.0-rc1-next-20120803.

[1]. http://marc.info/?t=134278790800004&r=1&w=2
[2]. http://marc.info/?t=132528956000002&r=10&w=2
[3]. http://marc.info/?l=linux-usb&m=132554118928398&w=2
[4]. http://marc.info/?l=linux-kernel&m=134323730805443&w=2  

--
V1:
	-handle vmap failure case(1/15)
	-fix a memory leak of 'firmware_buf'(5/15)
	-fix oops during failure path of requesting firmware(6/15)
	-fix vmap more than one time(6/15)
	-introduce __fw_lookup_buf to avoid code duplication(7/15)
	-fix comment of request_firmware_nowait(9/15)
	-avoid releasing lock in devres_for_each_res(11/15)
	-use new devres iterator API to create fw cache entry(12/15)
	-rename some functions and data structures(12/15)
	-some code style fixes

	Thanks for Borislav's review!

--
 drivers/base/devres.c                    |   42 ++
 drivers/base/firmware_class.c            |  764 ++++++++++++++++++++++++++----
 drivers/net/wireless/ath/ath9k/hif_usb.c |   34 +-
 drivers/net/wireless/ath/ath9k/hif_usb.h |    4 +-
 include/linux/device.h                   |    4 +
 include/linux/firmware.h                 |   15 +
 6 files changed, 747 insertions(+), 116 deletions(-)


Thanks,
--
Ming Lei



^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2012-09-08  9:34 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-04  4:01 [RFC PATCH v1 00/15] firmware loader: introduce cache/uncache firmware Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 01/15] firmware loader: simplify pages ownership transfer Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 02/15] firmware loader: fix races during loading firmware Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 03/15] firmware loader: remove unnecessary wmb() Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 04/15] firmware loader: fix creation failure of fw loader device Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 05/15] firmware loader: introduce firmware_buf Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 06/15] firmware loader: always let firmware_buf own the pages buffer Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 07/15] firmware loader: introduce cache_firmware and uncache_firmware Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 08/15] firmware loader: fix device lifetime Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 09/15] firmware loader: fix comments on request_firmware_nowait Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 10/15] firmware loader: store firmware name into devres list Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 11/15] driver core: devres: introduce devres_for_each_res Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 12/15] firmware: introduce device_cache/uncache_fw_images Ming Lei
2012-09-06 22:44   ` Andrew Morton
2012-09-07  3:32     ` Ming Lei
2012-09-07 15:16       ` Greg Kroah-Hartman
2012-09-08  9:34         ` Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 13/15] firmware loader: use small timeout for cache device firmware Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 14/15] firmware loader: cache devices firmware during suspend/resume cycle Ming Lei
2012-08-04  4:01 ` [RFC PATCH v1 15/15] wireless: ath9k-htc: only load firmware in need Ming Lei
2012-08-10  7:30 ` [RFC PATCH v1 00/15] firmware loader: introduce cache/uncache firmware Ming Lei
2012-08-16 20:46   ` Greg Kroah-Hartman
2012-08-17  0:04     ` Ming Lei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).