1 // SPDX-License-Identifier: GPL-2.0
3 * main.c - Multi purpose firmware loading support
5 * Copyright (c) 2003 Manuel Estrada Sainz
7 * Please see Documentation/driver-api/firmware/ for more information.
11 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
13 #include <linux/capability.h>
14 #include <linux/device.h>
15 #include <linux/module.h>
16 #include <linux/init.h>
17 #include <linux/timer.h>
18 #include <linux/vmalloc.h>
19 #include <linux/interrupt.h>
20 #include <linux/bitops.h>
21 #include <linux/mutex.h>
22 #include <linux/workqueue.h>
23 #include <linux/highmem.h>
24 #include <linux/firmware.h>
25 #include <linux/slab.h>
26 #include <linux/sched.h>
27 #include <linux/file.h>
28 #include <linux/list.h>
30 #include <linux/async.h>
32 #include <linux/suspend.h>
33 #include <linux/syscore_ops.h>
34 #include <linux/reboot.h>
35 #include <linux/security.h>
38 #include <generated/utsrelease.h>
44 MODULE_AUTHOR("Manuel Estrada Sainz");
45 MODULE_DESCRIPTION("Multi purpose firmware loading support");
46 MODULE_LICENSE("GPL");
48 struct firmware_cache
{
49 /* firmware_buf instance will be added into the below list */
51 struct list_head head
;
54 #ifdef CONFIG_FW_CACHE
56 * Names of firmware images which have been cached successfully
57 * will be added into the below list so that device uncache
58 * helper can trace which firmware images have been cached
62 struct list_head fw_names
;
64 struct delayed_work work
;
66 struct notifier_block pm_notify
;
70 struct fw_cache_entry
{
71 struct list_head list
;
80 static inline struct fw_priv
*to_fw_priv(struct kref
*ref
)
82 return container_of(ref
, struct fw_priv
, ref
);
85 #define FW_LOADER_NO_CACHE 0
86 #define FW_LOADER_START_CACHE 1
88 /* fw_lock could be moved to 'struct fw_sysfs' but since it is just
89 * guarding for corner cases a global lock should be OK */
90 DEFINE_MUTEX(fw_lock
);
92 static struct firmware_cache fw_cache
;
94 /* Builtin firmware support */
96 #ifdef CONFIG_FW_LOADER
98 extern struct builtin_fw __start_builtin_fw
[];
99 extern struct builtin_fw __end_builtin_fw
[];
101 static void fw_copy_to_prealloc_buf(struct firmware
*fw
,
102 void *buf
, size_t size
)
104 if (!buf
|| size
< fw
->size
)
106 memcpy(buf
, fw
->data
, fw
->size
);
109 static bool fw_get_builtin_firmware(struct firmware
*fw
, const char *name
,
110 void *buf
, size_t size
)
112 struct builtin_fw
*b_fw
;
114 for (b_fw
= __start_builtin_fw
; b_fw
!= __end_builtin_fw
; b_fw
++) {
115 if (strcmp(name
, b_fw
->name
) == 0) {
116 fw
->size
= b_fw
->size
;
117 fw
->data
= b_fw
->data
;
118 fw_copy_to_prealloc_buf(fw
, buf
, size
);
127 static bool fw_is_builtin_firmware(const struct firmware
*fw
)
129 struct builtin_fw
*b_fw
;
131 for (b_fw
= __start_builtin_fw
; b_fw
!= __end_builtin_fw
; b_fw
++)
132 if (fw
->data
== b_fw
->data
)
138 #else /* Module case - no builtin firmware support */
140 static inline bool fw_get_builtin_firmware(struct firmware
*fw
,
141 const char *name
, void *buf
,
147 static inline bool fw_is_builtin_firmware(const struct firmware
*fw
)
153 static void fw_state_init(struct fw_priv
*fw_priv
)
155 struct fw_state
*fw_st
= &fw_priv
->fw_st
;
157 init_completion(&fw_st
->completion
);
158 fw_st
->status
= FW_STATUS_UNKNOWN
;
161 static inline int fw_state_wait(struct fw_priv
*fw_priv
)
163 return __fw_state_wait_common(fw_priv
, MAX_SCHEDULE_TIMEOUT
);
166 static int fw_cache_piggyback_on_request(const char *name
);
168 static struct fw_priv
*__allocate_fw_priv(const char *fw_name
,
169 struct firmware_cache
*fwc
,
170 void *dbuf
, size_t size
)
172 struct fw_priv
*fw_priv
;
174 fw_priv
= kzalloc(sizeof(*fw_priv
), GFP_ATOMIC
);
178 fw_priv
->fw_name
= kstrdup_const(fw_name
, GFP_ATOMIC
);
179 if (!fw_priv
->fw_name
) {
184 kref_init(&fw_priv
->ref
);
186 fw_priv
->data
= dbuf
;
187 fw_priv
->allocated_size
= size
;
188 fw_state_init(fw_priv
);
189 #ifdef CONFIG_FW_LOADER_USER_HELPER
190 INIT_LIST_HEAD(&fw_priv
->pending_list
);
193 pr_debug("%s: fw-%s fw_priv=%p\n", __func__
, fw_name
, fw_priv
);
198 static struct fw_priv
*__lookup_fw_priv(const char *fw_name
)
201 struct firmware_cache
*fwc
= &fw_cache
;
203 list_for_each_entry(tmp
, &fwc
->head
, list
)
204 if (!strcmp(tmp
->fw_name
, fw_name
))
209 /* Returns 1 for batching firmware requests with the same name */
210 static int alloc_lookup_fw_priv(const char *fw_name
,
211 struct firmware_cache
*fwc
,
212 struct fw_priv
**fw_priv
, void *dbuf
,
213 size_t size
, enum fw_opt opt_flags
)
217 spin_lock(&fwc
->lock
);
218 if (!(opt_flags
& FW_OPT_NOCACHE
)) {
219 tmp
= __lookup_fw_priv(fw_name
);
222 spin_unlock(&fwc
->lock
);
224 pr_debug("batched request - sharing the same struct fw_priv and lookup for multiple requests\n");
229 tmp
= __allocate_fw_priv(fw_name
, fwc
, dbuf
, size
);
231 INIT_LIST_HEAD(&tmp
->list
);
232 if (!(opt_flags
& FW_OPT_NOCACHE
))
233 list_add(&tmp
->list
, &fwc
->head
);
235 spin_unlock(&fwc
->lock
);
239 return tmp
? 0 : -ENOMEM
;
242 static void __free_fw_priv(struct kref
*ref
)
243 __releases(&fwc
->lock
)
245 struct fw_priv
*fw_priv
= to_fw_priv(ref
);
246 struct firmware_cache
*fwc
= fw_priv
->fwc
;
248 pr_debug("%s: fw-%s fw_priv=%p data=%p size=%u\n",
249 __func__
, fw_priv
->fw_name
, fw_priv
, fw_priv
->data
,
250 (unsigned int)fw_priv
->size
);
252 list_del(&fw_priv
->list
);
253 spin_unlock(&fwc
->lock
);
255 fw_free_paged_buf(fw_priv
); /* free leftover pages */
256 if (!fw_priv
->allocated_size
)
257 vfree(fw_priv
->data
);
258 kfree_const(fw_priv
->fw_name
);
262 static void free_fw_priv(struct fw_priv
*fw_priv
)
264 struct firmware_cache
*fwc
= fw_priv
->fwc
;
265 spin_lock(&fwc
->lock
);
266 if (!kref_put(&fw_priv
->ref
, __free_fw_priv
))
267 spin_unlock(&fwc
->lock
);
270 #ifdef CONFIG_FW_LOADER_PAGED_BUF
271 void fw_free_paged_buf(struct fw_priv
*fw_priv
)
278 for (i
= 0; i
< fw_priv
->nr_pages
; i
++)
279 __free_page(fw_priv
->pages
[i
]);
280 kvfree(fw_priv
->pages
);
281 fw_priv
->pages
= NULL
;
282 fw_priv
->page_array_size
= 0;
283 fw_priv
->nr_pages
= 0;
286 int fw_grow_paged_buf(struct fw_priv
*fw_priv
, int pages_needed
)
288 /* If the array of pages is too small, grow it */
289 if (fw_priv
->page_array_size
< pages_needed
) {
290 int new_array_size
= max(pages_needed
,
291 fw_priv
->page_array_size
* 2);
292 struct page
**new_pages
;
294 new_pages
= kvmalloc_array(new_array_size
, sizeof(void *),
298 memcpy(new_pages
, fw_priv
->pages
,
299 fw_priv
->page_array_size
* sizeof(void *));
300 memset(&new_pages
[fw_priv
->page_array_size
], 0, sizeof(void *) *
301 (new_array_size
- fw_priv
->page_array_size
));
302 kvfree(fw_priv
->pages
);
303 fw_priv
->pages
= new_pages
;
304 fw_priv
->page_array_size
= new_array_size
;
307 while (fw_priv
->nr_pages
< pages_needed
) {
308 fw_priv
->pages
[fw_priv
->nr_pages
] =
309 alloc_page(GFP_KERNEL
| __GFP_HIGHMEM
);
311 if (!fw_priv
->pages
[fw_priv
->nr_pages
])
319 int fw_map_paged_buf(struct fw_priv
*fw_priv
)
321 /* one pages buffer should be mapped/unmapped only once */
325 vunmap(fw_priv
->data
);
326 fw_priv
->data
= vmap(fw_priv
->pages
, fw_priv
->nr_pages
, 0,
331 /* page table is no longer needed after mapping, let's free */
332 kvfree(fw_priv
->pages
);
333 fw_priv
->pages
= NULL
;
340 * XZ-compressed firmware support
342 #ifdef CONFIG_FW_LOADER_COMPRESS
343 /* show an error and return the standard error code */
344 static int fw_decompress_xz_error(struct device
*dev
, enum xz_ret xz_ret
)
346 if (xz_ret
!= XZ_STREAM_END
) {
347 dev_warn(dev
, "xz decompression failed (xz_ret=%d)\n", xz_ret
);
348 return xz_ret
== XZ_MEM_ERROR
? -ENOMEM
: -EINVAL
;
353 /* single-shot decompression onto the pre-allocated buffer */
354 static int fw_decompress_xz_single(struct device
*dev
, struct fw_priv
*fw_priv
,
355 size_t in_size
, const void *in_buffer
)
357 struct xz_dec
*xz_dec
;
358 struct xz_buf xz_buf
;
361 xz_dec
= xz_dec_init(XZ_SINGLE
, (u32
)-1);
365 xz_buf
.in_size
= in_size
;
366 xz_buf
.in
= in_buffer
;
368 xz_buf
.out_size
= fw_priv
->allocated_size
;
369 xz_buf
.out
= fw_priv
->data
;
372 xz_ret
= xz_dec_run(xz_dec
, &xz_buf
);
375 fw_priv
->size
= xz_buf
.out_pos
;
376 return fw_decompress_xz_error(dev
, xz_ret
);
379 /* decompression on paged buffer and map it */
380 static int fw_decompress_xz_pages(struct device
*dev
, struct fw_priv
*fw_priv
,
381 size_t in_size
, const void *in_buffer
)
383 struct xz_dec
*xz_dec
;
384 struct xz_buf xz_buf
;
389 xz_dec
= xz_dec_init(XZ_DYNALLOC
, (u32
)-1);
393 xz_buf
.in_size
= in_size
;
394 xz_buf
.in
= in_buffer
;
397 fw_priv
->is_paged_buf
= true;
400 if (fw_grow_paged_buf(fw_priv
, fw_priv
->nr_pages
+ 1)) {
405 /* decompress onto the new allocated page */
406 page
= fw_priv
->pages
[fw_priv
->nr_pages
- 1];
407 xz_buf
.out
= kmap(page
);
409 xz_buf
.out_size
= PAGE_SIZE
;
410 xz_ret
= xz_dec_run(xz_dec
, &xz_buf
);
412 fw_priv
->size
+= xz_buf
.out_pos
;
413 /* partial decompression means either end or error */
414 if (xz_buf
.out_pos
!= PAGE_SIZE
)
416 } while (xz_ret
== XZ_OK
);
418 err
= fw_decompress_xz_error(dev
, xz_ret
);
420 err
= fw_map_paged_buf(fw_priv
);
427 static int fw_decompress_xz(struct device
*dev
, struct fw_priv
*fw_priv
,
428 size_t in_size
, const void *in_buffer
)
430 /* if the buffer is pre-allocated, we can perform in single-shot mode */
432 return fw_decompress_xz_single(dev
, fw_priv
, in_size
, in_buffer
);
434 return fw_decompress_xz_pages(dev
, fw_priv
, in_size
, in_buffer
);
436 #endif /* CONFIG_FW_LOADER_COMPRESS */
438 /* direct firmware loading support */
439 static char fw_path_para
[256];
440 static const char * const fw_path
[] = {
442 "/lib/firmware/updates/" UTS_RELEASE
,
443 "/lib/firmware/updates",
444 "/lib/firmware/" UTS_RELEASE
,
449 * Typical usage is that passing 'firmware_class.path=$CUSTOMIZED_PATH'
450 * from kernel command line because firmware_class is generally built in
451 * kernel instead of module.
453 module_param_string(path
, fw_path_para
, sizeof(fw_path_para
), 0644);
454 MODULE_PARM_DESC(path
, "customized firmware image search path with a higher priority than default path");
457 fw_get_filesystem_firmware(struct device
*device
, struct fw_priv
*fw_priv
,
459 int (*decompress
)(struct device
*dev
,
460 struct fw_priv
*fw_priv
,
462 const void *in_buffer
))
468 enum kernel_read_file_id id
= READING_FIRMWARE
;
469 size_t msize
= INT_MAX
;
472 /* Already populated data member means we're loading into a buffer */
473 if (!decompress
&& fw_priv
->data
) {
474 buffer
= fw_priv
->data
;
475 id
= READING_FIRMWARE_PREALLOC_BUFFER
;
476 msize
= fw_priv
->allocated_size
;
483 for (i
= 0; i
< ARRAY_SIZE(fw_path
); i
++) {
484 /* skip the unset customized path */
488 len
= snprintf(path
, PATH_MAX
, "%s/%s%s",
489 fw_path
[i
], fw_priv
->fw_name
, suffix
);
490 if (len
>= PATH_MAX
) {
496 rc
= kernel_read_file_from_path(path
, &buffer
, &size
,
500 dev_warn(device
, "loading %s failed with error %d\n",
503 dev_dbg(device
, "loading %s failed for no such file or directory.\n",
507 dev_dbg(device
, "Loading firmware from %s\n", path
);
509 dev_dbg(device
, "f/w decompressing %s\n",
511 rc
= decompress(device
, fw_priv
, size
, buffer
);
512 /* discard the superfluous original content */
516 fw_free_paged_buf(fw_priv
);
520 dev_dbg(device
, "direct-loading %s\n",
523 fw_priv
->data
= buffer
;
524 fw_priv
->size
= size
;
526 fw_state_done(fw_priv
);
534 /* firmware holds the ownership of pages */
535 static void firmware_free_data(const struct firmware
*fw
)
537 /* Loaded directly? */
542 free_fw_priv(fw
->priv
);
545 /* store the pages buffer info firmware from buf */
546 static void fw_set_page_data(struct fw_priv
*fw_priv
, struct firmware
*fw
)
549 #ifdef CONFIG_FW_LOADER_USER_HELPER
550 fw
->pages
= fw_priv
->pages
;
552 fw
->size
= fw_priv
->size
;
553 fw
->data
= fw_priv
->data
;
555 pr_debug("%s: fw-%s fw_priv=%p data=%p size=%u\n",
556 __func__
, fw_priv
->fw_name
, fw_priv
, fw_priv
->data
,
557 (unsigned int)fw_priv
->size
);
560 #ifdef CONFIG_FW_CACHE
561 static void fw_name_devm_release(struct device
*dev
, void *res
)
563 struct fw_name_devm
*fwn
= res
;
565 if (fwn
->magic
== (unsigned long)&fw_cache
)
566 pr_debug("%s: fw_name-%s devm-%p released\n",
567 __func__
, fwn
->name
, res
);
568 kfree_const(fwn
->name
);
571 static int fw_devm_match(struct device
*dev
, void *res
,
574 struct fw_name_devm
*fwn
= res
;
576 return (fwn
->magic
== (unsigned long)&fw_cache
) &&
577 !strcmp(fwn
->name
, match_data
);
580 static struct fw_name_devm
*fw_find_devm_name(struct device
*dev
,
583 struct fw_name_devm
*fwn
;
585 fwn
= devres_find(dev
, fw_name_devm_release
,
586 fw_devm_match
, (void *)name
);
590 static bool fw_cache_is_setup(struct device
*dev
, const char *name
)
592 struct fw_name_devm
*fwn
;
594 fwn
= fw_find_devm_name(dev
, name
);
601 /* add firmware name into devres list */
602 static int fw_add_devm_name(struct device
*dev
, const char *name
)
604 struct fw_name_devm
*fwn
;
606 if (fw_cache_is_setup(dev
, name
))
609 fwn
= devres_alloc(fw_name_devm_release
, sizeof(struct fw_name_devm
),
613 fwn
->name
= kstrdup_const(name
, GFP_KERNEL
);
619 fwn
->magic
= (unsigned long)&fw_cache
;
620 devres_add(dev
, fwn
);
625 static bool fw_cache_is_setup(struct device
*dev
, const char *name
)
630 static int fw_add_devm_name(struct device
*dev
, const char *name
)
636 int assign_fw(struct firmware
*fw
, struct device
*device
,
637 enum fw_opt opt_flags
)
639 struct fw_priv
*fw_priv
= fw
->priv
;
642 mutex_lock(&fw_lock
);
643 if (!fw_priv
->size
|| fw_state_is_aborted(fw_priv
)) {
644 mutex_unlock(&fw_lock
);
649 * add firmware name into devres list so that we can auto cache
650 * and uncache firmware for device.
652 * device may has been deleted already, but the problem
653 * should be fixed in devres or driver core.
655 /* don't cache firmware handled without uevent */
656 if (device
&& (opt_flags
& FW_OPT_UEVENT
) &&
657 !(opt_flags
& FW_OPT_NOCACHE
)) {
658 ret
= fw_add_devm_name(device
, fw_priv
->fw_name
);
660 mutex_unlock(&fw_lock
);
666 * After caching firmware image is started, let it piggyback
667 * on request firmware.
669 if (!(opt_flags
& FW_OPT_NOCACHE
) &&
670 fw_priv
->fwc
->state
== FW_LOADER_START_CACHE
) {
671 if (fw_cache_piggyback_on_request(fw_priv
->fw_name
))
672 kref_get(&fw_priv
->ref
);
675 /* pass the pages buffer to driver at the last minute */
676 fw_set_page_data(fw_priv
, fw
);
677 mutex_unlock(&fw_lock
);
681 /* prepare firmware and firmware_buf structs;
682 * return 0 if a firmware is already assigned, 1 if need to load one,
683 * or a negative error code
686 _request_firmware_prepare(struct firmware
**firmware_p
, const char *name
,
687 struct device
*device
, void *dbuf
, size_t size
,
688 enum fw_opt opt_flags
)
690 struct firmware
*firmware
;
691 struct fw_priv
*fw_priv
;
694 *firmware_p
= firmware
= kzalloc(sizeof(*firmware
), GFP_KERNEL
);
696 dev_err(device
, "%s: kmalloc(struct firmware) failed\n",
701 if (fw_get_builtin_firmware(firmware
, name
, dbuf
, size
)) {
702 dev_dbg(device
, "using built-in %s\n", name
);
703 return 0; /* assigned */
706 ret
= alloc_lookup_fw_priv(name
, &fw_cache
, &fw_priv
, dbuf
, size
,
710 * bind with 'priv' now to avoid warning in failure path
711 * of requesting firmware.
713 firmware
->priv
= fw_priv
;
716 ret
= fw_state_wait(fw_priv
);
718 fw_set_page_data(fw_priv
, firmware
);
719 return 0; /* assigned */
725 return 1; /* need to load */
729 * Batched requests need only one wake, we need to do this step last due to the
730 * fallback mechanism. The buf is protected with kref_get(), and it won't be
731 * released until the last user calls release_firmware().
733 * Failed batched requests are possible as well, in such cases we just share
734 * the struct fw_priv and won't release it until all requests are woken
735 * and have gone through this same path.
737 static void fw_abort_batch_reqs(struct firmware
*fw
)
739 struct fw_priv
*fw_priv
;
741 /* Loaded directly? */
742 if (!fw
|| !fw
->priv
)
746 if (!fw_state_is_aborted(fw_priv
))
747 fw_state_aborted(fw_priv
);
750 /* called from request_firmware() and request_firmware_work_func() */
752 _request_firmware(const struct firmware
**firmware_p
, const char *name
,
753 struct device
*device
, void *buf
, size_t size
,
754 enum fw_opt opt_flags
)
756 struct firmware
*fw
= NULL
;
762 if (!name
|| name
[0] == '\0') {
767 ret
= _request_firmware_prepare(&fw
, name
, device
, buf
, size
,
769 if (ret
<= 0) /* error or already assigned */
772 ret
= fw_get_filesystem_firmware(device
, fw
->priv
, "", NULL
);
773 #ifdef CONFIG_FW_LOADER_COMPRESS
775 ret
= fw_get_filesystem_firmware(device
, fw
->priv
, ".xz",
780 if (!(opt_flags
& FW_OPT_NO_WARN
))
782 "Direct firmware load for %s failed with error %d\n",
784 ret
= firmware_fallback_sysfs(fw
, name
, device
, opt_flags
, ret
);
786 ret
= assign_fw(fw
, device
, opt_flags
);
790 fw_abort_batch_reqs(fw
);
791 release_firmware(fw
);
800 * request_firmware() - send firmware request and wait for it
801 * @firmware_p: pointer to firmware image
802 * @name: name of firmware file
803 * @device: device for which firmware is being loaded
805 * @firmware_p will be used to return a firmware image by the name
806 * of @name for device @device.
808 * Should be called from user context where sleeping is allowed.
810 * @name will be used as $FIRMWARE in the uevent environment and
811 * should be distinctive enough not to be confused with any other
812 * firmware image for this or any other device.
814 * Caller must hold the reference count of @device.
816 * The function can be called safely inside device's suspend and
820 request_firmware(const struct firmware
**firmware_p
, const char *name
,
821 struct device
*device
)
825 /* Need to pin this module until return */
826 __module_get(THIS_MODULE
);
827 ret
= _request_firmware(firmware_p
, name
, device
, NULL
, 0,
829 module_put(THIS_MODULE
);
832 EXPORT_SYMBOL(request_firmware
);
835 * firmware_request_nowarn() - request for an optional fw module
836 * @firmware: pointer to firmware image
837 * @name: name of firmware file
838 * @device: device for which firmware is being loaded
840 * This function is similar in behaviour to request_firmware(), except
841 * it doesn't produce warning messages when the file is not found.
842 * The sysfs fallback mechanism is enabled if direct filesystem lookup fails,
843 * however, however failures to find the firmware file with it are still
844 * suppressed. It is therefore up to the driver to check for the return value
845 * of this call and to decide when to inform the users of errors.
847 int firmware_request_nowarn(const struct firmware
**firmware
, const char *name
,
848 struct device
*device
)
852 /* Need to pin this module until return */
853 __module_get(THIS_MODULE
);
854 ret
= _request_firmware(firmware
, name
, device
, NULL
, 0,
855 FW_OPT_UEVENT
| FW_OPT_NO_WARN
);
856 module_put(THIS_MODULE
);
859 EXPORT_SYMBOL_GPL(firmware_request_nowarn
);
862 * request_firmware_direct() - load firmware directly without usermode helper
863 * @firmware_p: pointer to firmware image
864 * @name: name of firmware file
865 * @device: device for which firmware is being loaded
867 * This function works pretty much like request_firmware(), but this doesn't
868 * fall back to usermode helper even if the firmware couldn't be loaded
869 * directly from fs. Hence it's useful for loading optional firmwares, which
870 * aren't always present, without extra long timeouts of udev.
872 int request_firmware_direct(const struct firmware
**firmware_p
,
873 const char *name
, struct device
*device
)
877 __module_get(THIS_MODULE
);
878 ret
= _request_firmware(firmware_p
, name
, device
, NULL
, 0,
879 FW_OPT_UEVENT
| FW_OPT_NO_WARN
|
880 FW_OPT_NOFALLBACK_SYSFS
);
881 module_put(THIS_MODULE
);
884 EXPORT_SYMBOL_GPL(request_firmware_direct
);
887 * firmware_request_cache() - cache firmware for suspend so resume can use it
888 * @name: name of firmware file
889 * @device: device for which firmware should be cached for
891 * There are some devices with an optimization that enables the device to not
892 * require loading firmware on system reboot. This optimization may still
893 * require the firmware present on resume from suspend. This routine can be
894 * used to ensure the firmware is present on resume from suspend in these
895 * situations. This helper is not compatible with drivers which use
896 * request_firmware_into_buf() or request_firmware_nowait() with no uevent set.
898 int firmware_request_cache(struct device
*device
, const char *name
)
902 mutex_lock(&fw_lock
);
903 ret
= fw_add_devm_name(device
, name
);
904 mutex_unlock(&fw_lock
);
908 EXPORT_SYMBOL_GPL(firmware_request_cache
);
911 * request_firmware_into_buf() - load firmware into a previously allocated buffer
912 * @firmware_p: pointer to firmware image
913 * @name: name of firmware file
914 * @device: device for which firmware is being loaded and DMA region allocated
915 * @buf: address of buffer to load firmware into
916 * @size: size of buffer
918 * This function works pretty much like request_firmware(), but it doesn't
919 * allocate a buffer to hold the firmware data. Instead, the firmware
920 * is loaded directly into the buffer pointed to by @buf and the @firmware_p
921 * data member is pointed at @buf.
923 * This function doesn't cache firmware either.
926 request_firmware_into_buf(const struct firmware
**firmware_p
, const char *name
,
927 struct device
*device
, void *buf
, size_t size
)
931 if (fw_cache_is_setup(device
, name
))
934 __module_get(THIS_MODULE
);
935 ret
= _request_firmware(firmware_p
, name
, device
, buf
, size
,
936 FW_OPT_UEVENT
| FW_OPT_NOCACHE
);
937 module_put(THIS_MODULE
);
940 EXPORT_SYMBOL(request_firmware_into_buf
);
943 * release_firmware() - release the resource associated with a firmware image
944 * @fw: firmware resource to release
946 void release_firmware(const struct firmware
*fw
)
949 if (!fw_is_builtin_firmware(fw
))
950 firmware_free_data(fw
);
954 EXPORT_SYMBOL(release_firmware
);
957 struct firmware_work
{
958 struct work_struct work
;
959 struct module
*module
;
961 struct device
*device
;
963 void (*cont
)(const struct firmware
*fw
, void *context
);
964 enum fw_opt opt_flags
;
967 static void request_firmware_work_func(struct work_struct
*work
)
969 struct firmware_work
*fw_work
;
970 const struct firmware
*fw
;
972 fw_work
= container_of(work
, struct firmware_work
, work
);
974 _request_firmware(&fw
, fw_work
->name
, fw_work
->device
, NULL
, 0,
976 fw_work
->cont(fw
, fw_work
->context
);
977 put_device(fw_work
->device
); /* taken in request_firmware_nowait() */
979 module_put(fw_work
->module
);
980 kfree_const(fw_work
->name
);
985 * request_firmware_nowait() - asynchronous version of request_firmware
986 * @module: module requesting the firmware
987 * @uevent: sends uevent to copy the firmware image if this flag
988 * is non-zero else the firmware copy must be done manually.
989 * @name: name of firmware file
990 * @device: device for which firmware is being loaded
991 * @gfp: allocation flags
992 * @context: will be passed over to @cont, and
993 * @fw may be %NULL if firmware request fails.
994 * @cont: function will be called asynchronously when the firmware
997 * Caller must hold the reference count of @device.
999 * Asynchronous variant of request_firmware() for user contexts:
1000 * - sleep for as small periods as possible since it may
1001 * increase kernel boot time of built-in device drivers
1002 * requesting firmware in their ->probe() methods, if
1003 * @gfp is GFP_KERNEL.
1005 * - can't sleep at all if @gfp is GFP_ATOMIC.
1008 request_firmware_nowait(
1009 struct module
*module
, bool uevent
,
1010 const char *name
, struct device
*device
, gfp_t gfp
, void *context
,
1011 void (*cont
)(const struct firmware
*fw
, void *context
))
1013 struct firmware_work
*fw_work
;
1015 fw_work
= kzalloc(sizeof(struct firmware_work
), gfp
);
1019 fw_work
->module
= module
;
1020 fw_work
->name
= kstrdup_const(name
, gfp
);
1021 if (!fw_work
->name
) {
1025 fw_work
->device
= device
;
1026 fw_work
->context
= context
;
1027 fw_work
->cont
= cont
;
1028 fw_work
->opt_flags
= FW_OPT_NOWAIT
|
1029 (uevent
? FW_OPT_UEVENT
: FW_OPT_USERHELPER
);
1031 if (!uevent
&& fw_cache_is_setup(device
, name
)) {
1032 kfree_const(fw_work
->name
);
1037 if (!try_module_get(module
)) {
1038 kfree_const(fw_work
->name
);
1043 get_device(fw_work
->device
);
1044 INIT_WORK(&fw_work
->work
, request_firmware_work_func
);
1045 schedule_work(&fw_work
->work
);
1048 EXPORT_SYMBOL(request_firmware_nowait
);
1050 #ifdef CONFIG_FW_CACHE
1051 static ASYNC_DOMAIN_EXCLUSIVE(fw_cache_domain
);
1054 * cache_firmware() - cache one firmware image in kernel memory space
1055 * @fw_name: the firmware image name
1057 * Cache firmware in kernel memory so that drivers can use it when
1058 * system isn't ready for them to request firmware image from userspace.
1059 * Once it returns successfully, driver can use request_firmware or its
1060 * nowait version to get the cached firmware without any interacting
1063 * Return 0 if the firmware image has been cached successfully
1064 * Return !0 otherwise
1067 static int cache_firmware(const char *fw_name
)
1070 const struct firmware
*fw
;
1072 pr_debug("%s: %s\n", __func__
, fw_name
);
1074 ret
= request_firmware(&fw
, fw_name
, NULL
);
1078 pr_debug("%s: %s ret=%d\n", __func__
, fw_name
, ret
);
1083 static struct fw_priv
*lookup_fw_priv(const char *fw_name
)
1085 struct fw_priv
*tmp
;
1086 struct firmware_cache
*fwc
= &fw_cache
;
1088 spin_lock(&fwc
->lock
);
1089 tmp
= __lookup_fw_priv(fw_name
);
1090 spin_unlock(&fwc
->lock
);
1096 * uncache_firmware() - remove one cached firmware image
1097 * @fw_name: the firmware image name
1099 * Uncache one firmware image which has been cached successfully
1102 * Return 0 if the firmware cache has been removed successfully
1103 * Return !0 otherwise
1106 static int uncache_firmware(const char *fw_name
)
1108 struct fw_priv
*fw_priv
;
1111 pr_debug("%s: %s\n", __func__
, fw_name
);
1113 if (fw_get_builtin_firmware(&fw
, fw_name
, NULL
, 0))
1116 fw_priv
= lookup_fw_priv(fw_name
);
1118 free_fw_priv(fw_priv
);
1125 static struct fw_cache_entry
*alloc_fw_cache_entry(const char *name
)
1127 struct fw_cache_entry
*fce
;
1129 fce
= kzalloc(sizeof(*fce
), GFP_ATOMIC
);
1133 fce
->name
= kstrdup_const(name
, GFP_ATOMIC
);
1143 static int __fw_entry_found(const char *name
)
1145 struct firmware_cache
*fwc
= &fw_cache
;
1146 struct fw_cache_entry
*fce
;
1148 list_for_each_entry(fce
, &fwc
->fw_names
, list
) {
1149 if (!strcmp(fce
->name
, name
))
1155 static int fw_cache_piggyback_on_request(const char *name
)
1157 struct firmware_cache
*fwc
= &fw_cache
;
1158 struct fw_cache_entry
*fce
;
1161 spin_lock(&fwc
->name_lock
);
1162 if (__fw_entry_found(name
))
1165 fce
= alloc_fw_cache_entry(name
);
1168 list_add(&fce
->list
, &fwc
->fw_names
);
1169 pr_debug("%s: fw: %s\n", __func__
, name
);
1172 spin_unlock(&fwc
->name_lock
);
1176 static void free_fw_cache_entry(struct fw_cache_entry
*fce
)
1178 kfree_const(fce
->name
);
1182 static void __async_dev_cache_fw_image(void *fw_entry
,
1183 async_cookie_t cookie
)
1185 struct fw_cache_entry
*fce
= fw_entry
;
1186 struct firmware_cache
*fwc
= &fw_cache
;
1189 ret
= cache_firmware(fce
->name
);
1191 spin_lock(&fwc
->name_lock
);
1192 list_del(&fce
->list
);
1193 spin_unlock(&fwc
->name_lock
);
1195 free_fw_cache_entry(fce
);
1199 /* called with dev->devres_lock held */
1200 static void dev_create_fw_entry(struct device
*dev
, void *res
,
1203 struct fw_name_devm
*fwn
= res
;
1204 const char *fw_name
= fwn
->name
;
1205 struct list_head
*head
= data
;
1206 struct fw_cache_entry
*fce
;
1208 fce
= alloc_fw_cache_entry(fw_name
);
1210 list_add(&fce
->list
, head
);
1213 static int devm_name_match(struct device
*dev
, void *res
,
1216 struct fw_name_devm
*fwn
= res
;
1217 return (fwn
->magic
== (unsigned long)match_data
);
1220 static void dev_cache_fw_image(struct device
*dev
, void *data
)
1223 struct fw_cache_entry
*fce
;
1224 struct fw_cache_entry
*fce_next
;
1225 struct firmware_cache
*fwc
= &fw_cache
;
1227 devres_for_each_res(dev
, fw_name_devm_release
,
1228 devm_name_match
, &fw_cache
,
1229 dev_create_fw_entry
, &todo
);
1231 list_for_each_entry_safe(fce
, fce_next
, &todo
, list
) {
1232 list_del(&fce
->list
);
1234 spin_lock(&fwc
->name_lock
);
1235 /* only one cache entry for one firmware */
1236 if (!__fw_entry_found(fce
->name
)) {
1237 list_add(&fce
->list
, &fwc
->fw_names
);
1239 free_fw_cache_entry(fce
);
1242 spin_unlock(&fwc
->name_lock
);
1245 async_schedule_domain(__async_dev_cache_fw_image
,
1251 static void __device_uncache_fw_images(void)
1253 struct firmware_cache
*fwc
= &fw_cache
;
1254 struct fw_cache_entry
*fce
;
1256 spin_lock(&fwc
->name_lock
);
1257 while (!list_empty(&fwc
->fw_names
)) {
1258 fce
= list_entry(fwc
->fw_names
.next
,
1259 struct fw_cache_entry
, list
);
1260 list_del(&fce
->list
);
1261 spin_unlock(&fwc
->name_lock
);
1263 uncache_firmware(fce
->name
);
1264 free_fw_cache_entry(fce
);
1266 spin_lock(&fwc
->name_lock
);
1268 spin_unlock(&fwc
->name_lock
);
1272 * device_cache_fw_images() - cache devices' firmware
1274 * If one device called request_firmware or its nowait version
1275 * successfully before, the firmware names are recored into the
1276 * device's devres link list, so device_cache_fw_images can call
1277 * cache_firmware() to cache these firmwares for the device,
1278 * then the device driver can load its firmwares easily at
1279 * time when system is not ready to complete loading firmware.
1281 static void device_cache_fw_images(void)
1283 struct firmware_cache
*fwc
= &fw_cache
;
1286 pr_debug("%s\n", __func__
);
1288 /* cancel uncache work */
1289 cancel_delayed_work_sync(&fwc
->work
);
1291 fw_fallback_set_cache_timeout();
1293 mutex_lock(&fw_lock
);
1294 fwc
->state
= FW_LOADER_START_CACHE
;
1295 dpm_for_each_dev(NULL
, dev_cache_fw_image
);
1296 mutex_unlock(&fw_lock
);
1298 /* wait for completion of caching firmware for all devices */
1299 async_synchronize_full_domain(&fw_cache_domain
);
1301 fw_fallback_set_default_timeout();
1305 * device_uncache_fw_images() - uncache devices' firmware
1307 * uncache all firmwares which have been cached successfully
1308 * by device_uncache_fw_images earlier
1310 static void device_uncache_fw_images(void)
1312 pr_debug("%s\n", __func__
);
1313 __device_uncache_fw_images();
1316 static void device_uncache_fw_images_work(struct work_struct
*work
)
1318 device_uncache_fw_images();
1322 * device_uncache_fw_images_delay() - uncache devices firmwares
1323 * @delay: number of milliseconds to delay uncache device firmwares
1325 * uncache all devices's firmwares which has been cached successfully
1326 * by device_cache_fw_images after @delay milliseconds.
1328 static void device_uncache_fw_images_delay(unsigned long delay
)
1330 queue_delayed_work(system_power_efficient_wq
, &fw_cache
.work
,
1331 msecs_to_jiffies(delay
));
1334 static int fw_pm_notify(struct notifier_block
*notify_block
,
1335 unsigned long mode
, void *unused
)
1338 case PM_HIBERNATION_PREPARE
:
1339 case PM_SUSPEND_PREPARE
:
1340 case PM_RESTORE_PREPARE
:
1342 * kill pending fallback requests with a custom fallback
1343 * to avoid stalling suspend.
1345 kill_pending_fw_fallback_reqs(true);
1346 device_cache_fw_images();
1349 case PM_POST_SUSPEND
:
1350 case PM_POST_HIBERNATION
:
1351 case PM_POST_RESTORE
:
1353 * In case that system sleep failed and syscore_suspend is
1356 mutex_lock(&fw_lock
);
1357 fw_cache
.state
= FW_LOADER_NO_CACHE
;
1358 mutex_unlock(&fw_lock
);
1360 device_uncache_fw_images_delay(10 * MSEC_PER_SEC
);
1367 /* stop caching firmware once syscore_suspend is reached */
1368 static int fw_suspend(void)
1370 fw_cache
.state
= FW_LOADER_NO_CACHE
;
1374 static struct syscore_ops fw_syscore_ops
= {
1375 .suspend
= fw_suspend
,
1378 static int __init
register_fw_pm_ops(void)
1382 spin_lock_init(&fw_cache
.name_lock
);
1383 INIT_LIST_HEAD(&fw_cache
.fw_names
);
1385 INIT_DELAYED_WORK(&fw_cache
.work
,
1386 device_uncache_fw_images_work
);
1388 fw_cache
.pm_notify
.notifier_call
= fw_pm_notify
;
1389 ret
= register_pm_notifier(&fw_cache
.pm_notify
);
1393 register_syscore_ops(&fw_syscore_ops
);
1398 static inline void unregister_fw_pm_ops(void)
1400 unregister_syscore_ops(&fw_syscore_ops
);
1401 unregister_pm_notifier(&fw_cache
.pm_notify
);
1404 static int fw_cache_piggyback_on_request(const char *name
)
1408 static inline int register_fw_pm_ops(void)
1412 static inline void unregister_fw_pm_ops(void)
1417 static void __init
fw_cache_init(void)
1419 spin_lock_init(&fw_cache
.lock
);
1420 INIT_LIST_HEAD(&fw_cache
.head
);
1421 fw_cache
.state
= FW_LOADER_NO_CACHE
;
1424 static int fw_shutdown_notify(struct notifier_block
*unused1
,
1425 unsigned long unused2
, void *unused3
)
1428 * Kill all pending fallback requests to avoid both stalling shutdown,
1429 * and avoid a deadlock with the usermode_lock.
1431 kill_pending_fw_fallback_reqs(false);
1436 static struct notifier_block fw_shutdown_nb
= {
1437 .notifier_call
= fw_shutdown_notify
,
1440 static int __init
firmware_class_init(void)
1444 /* No need to unfold these on exit */
1447 ret
= register_fw_pm_ops();
1451 ret
= register_reboot_notifier(&fw_shutdown_nb
);
1455 return register_sysfs_loader();
1458 unregister_fw_pm_ops();
1462 static void __exit
firmware_class_exit(void)
1464 unregister_fw_pm_ops();
1465 unregister_reboot_notifier(&fw_shutdown_nb
);
1466 unregister_sysfs_loader();
1469 fs_initcall(firmware_class_init
);
1470 module_exit(firmware_class_exit
);