mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Linux 5.4
-----BEGIN PGP SIGNATURE----- iQFSBAABCAA8FiEEq68RxlopcLEwq+PEeb4+QwBBGIYFAl3bIQceHHRvcnZhbGRz QGxpbnV4LWZvdW5kYXRpb24ub3JnAAoJEHm+PkMAQRiG8mUIAIjMARdI6Fc6Hrwo oVAFQU8BY/OB49NbKYCaXMi1AbMv0+f32jEmdcHj4AQa+Dq8owc1pOB2o+iTLrCq PWf6t1wjHtPVmkZ+lWGDFT74IBMCZ8M0dgN9rYBUbno09/B9cqN4ttjTrGjTgkGe yw4qTzeflZaMSIzvy+nZD8RM9bXsFJUncD/M759ElPj1p7Tdx29c05+e46pYOh7i A6QaSMZT2xKHDIDfU1rQhvyrzAX4cF1LtbSNu7GAG7Ajnn3jfxXqUzZdl5r5j04W ee+AXER4VXDlq+2fN7/jlGa4kxiZZDX/FqRnS6dsrb+2sNCKlnETI+6a9/dO0zsI wzBh36o= =0TWn -----END PGP SIGNATURE----- Merge 5.4 into android-mainline Linux 5.4 Here we go! Signed-off-by: Greg Kroah-Hartman <[email protected]> Change-Id: Iee409f3bbf65b93fa419e5b09818efb8e56569fd
This commit is contained in:
commit
54e301676a
94 changed files with 695 additions and 317 deletions
14
mm/ksm.c
14
mm/ksm.c
|
|
@ -885,13 +885,13 @@ static int remove_stable_node(struct stable_node *stable_node)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (WARN_ON_ONCE(page_mapped(page))) {
|
||||
/*
|
||||
* This should not happen: but if it does, just refuse to let
|
||||
* merge_across_nodes be switched - there is no need to panic.
|
||||
*/
|
||||
err = -EBUSY;
|
||||
} else {
|
||||
/*
|
||||
* Page could be still mapped if this races with __mmput() running in
|
||||
* between ksm_exit() and exit_mmap(). Just refuse to let
|
||||
* merge_across_nodes/max_page_sharing be switched.
|
||||
*/
|
||||
err = -EBUSY;
|
||||
if (!page_mapped(page)) {
|
||||
/*
|
||||
* The stable node did not yet appear stale to get_ksm_page(),
|
||||
* since that allows for an unmapped ksm page to be recognized
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ static unsigned long find_smallest_section_pfn(int nid, struct zone *zone,
|
|||
unsigned long end_pfn)
|
||||
{
|
||||
for (; start_pfn < end_pfn; start_pfn += PAGES_PER_SUBSECTION) {
|
||||
if (unlikely(!pfn_valid(start_pfn)))
|
||||
if (unlikely(!pfn_to_online_page(start_pfn)))
|
||||
continue;
|
||||
|
||||
if (unlikely(pfn_to_nid(start_pfn) != nid))
|
||||
|
|
@ -356,7 +356,7 @@ static unsigned long find_biggest_section_pfn(int nid, struct zone *zone,
|
|||
/* pfn is the end pfn of a memory section. */
|
||||
pfn = end_pfn - 1;
|
||||
for (; pfn >= start_pfn; pfn -= PAGES_PER_SUBSECTION) {
|
||||
if (unlikely(!pfn_valid(pfn)))
|
||||
if (unlikely(!pfn_to_online_page(pfn)))
|
||||
continue;
|
||||
|
||||
if (unlikely(pfn_to_nid(pfn) != nid))
|
||||
|
|
@ -415,7 +415,7 @@ static void shrink_zone_span(struct zone *zone, unsigned long start_pfn,
|
|||
*/
|
||||
pfn = zone_start_pfn;
|
||||
for (; pfn < zone_end_pfn; pfn += PAGES_PER_SUBSECTION) {
|
||||
if (unlikely(!pfn_valid(pfn)))
|
||||
if (unlikely(!pfn_to_online_page(pfn)))
|
||||
continue;
|
||||
|
||||
if (page_zone(pfn_to_page(pfn)) != zone)
|
||||
|
|
@ -471,6 +471,16 @@ static void __remove_zone(struct zone *zone, unsigned long start_pfn,
|
|||
struct pglist_data *pgdat = zone->zone_pgdat;
|
||||
unsigned long flags;
|
||||
|
||||
#ifdef CONFIG_ZONE_DEVICE
|
||||
/*
|
||||
* Zone shrinking code cannot properly deal with ZONE_DEVICE. So
|
||||
* we will not try to shrink the zones - which is okay as
|
||||
* set_zone_contiguous() cannot deal with ZONE_DEVICE either way.
|
||||
*/
|
||||
if (zone_idx(zone) == ZONE_DEVICE)
|
||||
return;
|
||||
#endif
|
||||
|
||||
pgdat_resize_lock(zone->zone_pgdat, &flags);
|
||||
shrink_zone_span(zone, start_pfn, start_pfn + nr_pages);
|
||||
update_pgdat_span(pgdat);
|
||||
|
|
|
|||
Loading…
Reference in a new issue