Fix highmem initialization on arm and xtensa

Recent refactoring of memblock iterators has broken initialization of
 highmem on arm and xtensa because it changed the way beginning and end of
 memory regions are rounded to PFNs. This fix restores the original
 behaviour.
 -----BEGIN PGP SIGNATURE-----
 
 iQFHBAABCAAxFiEEeOVYVaWZL5900a/pOQOGJssO/ZEFAl+j9K0THHJwcHRAbGlu
 dXguaWJtLmNvbQAKCRA5A4Ymyw79kbLGB/9ZQyGJaLz70dOFF2St5ei1QMsBboLW
 WWZYdRsuLnRfXkBxgQp2D60pE6NxP8A61Wuq5Qa8iE7GjXwlTmCiMZPAB1N15zZ5
 DhDR6O6douu5EPvdpX3cFtHRCVRCYFDcX1ovm2AaODLlM4jLuHuTHE4OxLAaTsTV
 4vLOOMSTfFcm95gEn7yogC+NuwQxdYErNBNe36Yy+TFaxQYy63+hMgpLRAJqkRnV
 SzIs8ur1R2i5Z/QDFh3JZO6kEY78qSgrT0ubc7G9/29qS5uvg3MmiJdqnUvQlDt7
 ClttZKv731RsWnyf6HgdWSKet8w68T84Jegn9/zKnVBStwNYkx2KkwNH
 =p+K2
 -----END PGP SIGNATURE-----

Merge tag 'fixes-2020-11-05' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock

Pull highmem initialization fix from Mike Rapoport:
 "Fix highmem initialization on arm and xtensa

  Recent refactoring of memblock iterators has broken initialization of
  highmem on arm and xtensa because it changed the way beginning and end
  of memory regions are rounded to PFNs. This fix restores the original
  behaviour"

* tag 'fixes-2020-11-05' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock:
  ARM, xtensa: highmem: avoid clobbering non-page aligned memory reservations
This commit is contained in:
Linus Torvalds 2020-11-05 10:57:01 -08:00
commit 1a092479f3
2 changed files with 4 additions and 4 deletions

View File

@ -354,8 +354,8 @@ static void __init free_highpages(void)
/* set highmem page free */
for_each_free_mem_range(i, NUMA_NO_NODE, MEMBLOCK_NONE,
&range_start, &range_end, NULL) {
unsigned long start = PHYS_PFN(range_start);
unsigned long end = PHYS_PFN(range_end);
unsigned long start = PFN_UP(range_start);
unsigned long end = PFN_DOWN(range_end);
/* Ignore complete lowmem entries */
if (end <= max_low)

View File

@ -89,8 +89,8 @@ static void __init free_highpages(void)
/* set highmem page free */
for_each_free_mem_range(i, NUMA_NO_NODE, MEMBLOCK_NONE,
&range_start, &range_end, NULL) {
unsigned long start = PHYS_PFN(range_start);
unsigned long end = PHYS_PFN(range_end);
unsigned long start = PFN_UP(range_start);
unsigned long end = PFN_DOWN(range_end);
/* Ignore complete lowmem entries */
if (end <= max_low)