PM/Hibernate: Add Config option to skip crc check

Some filesystem devices may have hw support for integrity checks.
Repeating the check in software is unnecessary.

Change-Id: I3a487e1714aecd57124f9b032751ee71d6d6dc37
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
This commit is contained in:
Patrick Daly 2018-05-07 13:07:50 -07:00
parent 699bed2294
commit edcfa65abe
2 changed files with 16 additions and 4 deletions

View File

@ -94,6 +94,16 @@ config HIBERNATION_IMAGE_REUSE
For more details, refer to the description of CONFIG_HIBERNATION
for booting without resuming.
config HIBERNATION_SKIP_CRC
bool "Skip LZO image CRC check"
default n
depends on HIBERNATION
---help---
Some filesystem devices may have hw based integrity checks. In this
scenario, repeating the integrity check in software is unnecessary
and wasteful. This config option has no effect if uncompressed
hibernation images are used.
config ARCH_SAVE_PAGE_KEYS
bool

View File

@ -605,9 +605,10 @@ static int crc32_threadfn(void *data)
}
atomic_set(&d->ready, 0);
for (i = 0; i < d->run_threads; i++)
*d->crc32 = crc32_le(*d->crc32,
d->unc[i], *d->unc_len[i]);
if (!IS_ENABLED(CONFIG_HIBERNATION_SKIP_CRC))
for (i = 0; i < d->run_threads; i++)
*d->crc32 = crc32_le(*d->crc32,
d->unc[i], *d->unc_len[i]);
atomic_set(&d->stop, 1);
wake_up(&d->done);
}
@ -1453,7 +1454,8 @@ out_finish:
if (!snapshot_image_loaded(snapshot))
ret = -ENODATA;
if (!ret) {
if (swsusp_header->flags & SF_CRC32_MODE) {
if ((swsusp_header->flags & SF_CRC32_MODE) &&
(!IS_ENABLED(CONFIG_HIBERNATION_SKIP_CRC))) {
if(handle->crc32 != swsusp_header->crc32) {
printk(KERN_ERR
"PM: Invalid image CRC32!\n");