mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
Merge back earlier system-wide PM changes for v6.7.
This commit is contained in:
commit
ffc843fc9c
@ -374,24 +374,39 @@ const struct dev_pm_ops name = { \
|
||||
RUNTIME_PM_OPS(runtime_suspend_fn, runtime_resume_fn, idle_fn) \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
#define _EXPORT_DEV_PM_OPS(name, license, ns) \
|
||||
#define _EXPORT_PM_OPS(name, license, ns) \
|
||||
const struct dev_pm_ops name; \
|
||||
__EXPORT_SYMBOL(name, license, ns); \
|
||||
const struct dev_pm_ops name
|
||||
#define EXPORT_PM_FN_GPL(name) EXPORT_SYMBOL_GPL(name)
|
||||
#define EXPORT_PM_FN_NS_GPL(name, ns) EXPORT_SYMBOL_NS_GPL(name, ns)
|
||||
#else
|
||||
#define _EXPORT_DEV_PM_OPS(name, license, ns) \
|
||||
|
||||
#define _DISCARD_PM_OPS(name, license, ns) \
|
||||
static __maybe_unused const struct dev_pm_ops __static_##name
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
#define _EXPORT_DEV_PM_OPS(name, license, ns) _EXPORT_PM_OPS(name, license, ns)
|
||||
#define EXPORT_PM_FN_GPL(name) EXPORT_SYMBOL_GPL(name)
|
||||
#define EXPORT_PM_FN_NS_GPL(name, ns) EXPORT_SYMBOL_NS_GPL(name, ns)
|
||||
#else
|
||||
#define _EXPORT_DEV_PM_OPS(name, license, ns) _DISCARD_PM_OPS(name, license, ns)
|
||||
#define EXPORT_PM_FN_GPL(name)
|
||||
#define EXPORT_PM_FN_NS_GPL(name, ns)
|
||||
#endif
|
||||
|
||||
#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "")
|
||||
#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "GPL", "")
|
||||
#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "", #ns)
|
||||
#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "GPL", #ns)
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
#define _EXPORT_DEV_SLEEP_PM_OPS(name, license, ns) _EXPORT_PM_OPS(name, license, ns)
|
||||
#else
|
||||
#define _EXPORT_DEV_SLEEP_PM_OPS(name, license, ns) _DISCARD_PM_OPS(name, license, ns)
|
||||
#endif
|
||||
|
||||
#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "")
|
||||
#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "GPL", "")
|
||||
#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "", #ns)
|
||||
#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "GPL", #ns)
|
||||
|
||||
#define EXPORT_DEV_SLEEP_PM_OPS(name) _EXPORT_DEV_SLEEP_PM_OPS(name, "", "")
|
||||
#define EXPORT_GPL_DEV_SLEEP_PM_OPS(name) _EXPORT_DEV_SLEEP_PM_OPS(name, "GPL", "")
|
||||
#define EXPORT_NS_DEV_SLEEP_PM_OPS(name, ns) _EXPORT_DEV_SLEEP_PM_OPS(name, "", #ns)
|
||||
#define EXPORT_NS_GPL_DEV_SLEEP_PM_OPS(name, ns) _EXPORT_DEV_SLEEP_PM_OPS(name, "GPL", #ns)
|
||||
|
||||
/*
|
||||
* Use this if you want to use the same suspend and resume callbacks for suspend
|
||||
@ -404,19 +419,19 @@ const struct dev_pm_ops name = { \
|
||||
_DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL)
|
||||
|
||||
#define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
|
||||
EXPORT_DEV_PM_OPS(name) = { \
|
||||
EXPORT_DEV_SLEEP_PM_OPS(name) = { \
|
||||
SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
|
||||
}
|
||||
#define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
|
||||
EXPORT_GPL_DEV_PM_OPS(name) = { \
|
||||
EXPORT_GPL_DEV_SLEEP_PM_OPS(name) = { \
|
||||
SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
|
||||
}
|
||||
#define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns) \
|
||||
EXPORT_NS_DEV_PM_OPS(name, ns) = { \
|
||||
EXPORT_NS_DEV_SLEEP_PM_OPS(name, ns) = { \
|
||||
SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
|
||||
}
|
||||
#define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns) \
|
||||
EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \
|
||||
EXPORT_NS_GPL_DEV_SLEEP_PM_OPS(name, ns) = { \
|
||||
SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
|
||||
}
|
||||
|
||||
|
@ -2545,8 +2545,9 @@ static void *get_highmem_page_buffer(struct page *page,
|
||||
pbe->copy_page = tmp;
|
||||
} else {
|
||||
/* Copy of the page will be stored in normal memory */
|
||||
kaddr = safe_pages_list;
|
||||
safe_pages_list = safe_pages_list->next;
|
||||
kaddr = __get_safe_page(ca->gfp_mask);
|
||||
if (!kaddr)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
pbe->copy_page = virt_to_page(kaddr);
|
||||
}
|
||||
pbe->next = highmem_pblist;
|
||||
@ -2750,8 +2751,9 @@ static void *get_buffer(struct memory_bitmap *bm, struct chain_allocator *ca)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
pbe->orig_address = page_address(page);
|
||||
pbe->address = safe_pages_list;
|
||||
safe_pages_list = safe_pages_list->next;
|
||||
pbe->address = __get_safe_page(ca->gfp_mask);
|
||||
if (!pbe->address)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
pbe->next = restore_pblist;
|
||||
restore_pblist = pbe;
|
||||
return pbe->address;
|
||||
@ -2783,8 +2785,6 @@ next:
|
||||
if (handle->cur > 1 && handle->cur > nr_meta_pages + nr_copy_pages + nr_zero_pages)
|
||||
return 0;
|
||||
|
||||
handle->sync_read = 1;
|
||||
|
||||
if (!handle->cur) {
|
||||
if (!buffer)
|
||||
/* This makes the buffer be freed by swsusp_free() */
|
||||
@ -2827,7 +2827,6 @@ next:
|
||||
memory_bm_position_reset(&zero_bm);
|
||||
restore_pblist = NULL;
|
||||
handle->buffer = get_buffer(&orig_bm, &ca);
|
||||
handle->sync_read = 0;
|
||||
if (IS_ERR(handle->buffer))
|
||||
return PTR_ERR(handle->buffer);
|
||||
}
|
||||
@ -2837,9 +2836,8 @@ next:
|
||||
handle->buffer = get_buffer(&orig_bm, &ca);
|
||||
if (IS_ERR(handle->buffer))
|
||||
return PTR_ERR(handle->buffer);
|
||||
if (handle->buffer != buffer)
|
||||
handle->sync_read = 0;
|
||||
}
|
||||
handle->sync_read = (handle->buffer == buffer);
|
||||
handle->cur++;
|
||||
|
||||
/* Zero pages were not included in the image, memset it and move on. */
|
||||
|
@ -1513,7 +1513,7 @@ end:
|
||||
static void *swsusp_holder;
|
||||
|
||||
/**
|
||||
* swsusp_check - Check for swsusp signature in the resume device
|
||||
* swsusp_check - Open the resume device and check for the swsusp signature.
|
||||
* @exclusive: Open the resume device exclusively.
|
||||
*/
|
||||
|
||||
@ -1564,7 +1564,7 @@ put:
|
||||
}
|
||||
|
||||
/**
|
||||
* swsusp_close - close swap device.
|
||||
* swsusp_close - close resume device.
|
||||
* @exclusive: Close the resume device which is exclusively opened.
|
||||
*/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user