for (i = 0; i < MAX_EARLY_RES && early_res[i].end; i++) {
                r = &early_res[i];
                if (end > r->start && start < r->end)
-                       panic("Duplicated early reservation %lx-%lx\n",
-                             start, end);
+                       panic("Overlapping early reservations %lx-%lx to %lx-%lx\n",
+                             start, end, r->start, r->end);
        }
        if (i >= MAX_EARLY_RES)
                panic("Too many early reservations");
 
        if (table_start == -1UL)
                panic("Cannot find space for the kernel page tables");
 
+       /*
+        * When you have a lot of RAM like 256GB, early_table will not fit
+        * into 0x8000 range, find_e820_area() will find area after kernel
+        * bss but the table_start is not page aligned, so need to round it
+        * up to avoid overlap with bss:
+        */
+       table_start = round_up(table_start, PAGE_SIZE);
        table_start >>= PAGE_SHIFT;
        table_end = table_start;