CHROMIUM: ARM: init: Fix memory setup in the case of CONFIG_SPARSEMEM

The code in mem_init() was assuming that pages in a memory bank had
contiguous "struct page" entries.  That doesn't appear to always be
the case with CONFIG_SPARSEMEM.  Remove the slight optimization and
just calculate the location of the struct page each time.

BUG=chrome-os-partner:24537
TEST=Boot a kernel with an initramfs (which makes the kernel 6.7 MiB
big) and see that it no longer crashes.
TEST=Time boot performance and see no degredation.

Change-Id: I49142fc877b7e385c0a2a564d1f38f6bf268a125
Signed-off-by: Doug Anderson <dianders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/180326
Reviewed-by: Olof Johansson <olofj@chromium.org>
(cherry picked from commit 137f3957b4f5d2261dba3bc39b3f98ea91d79761)
Reviewed-on: https://chromium-review.googlesource.com/180973
Reviewed-by: Katie Roberts-Hoffman <katierh@chromium.org>
(cherry picked from commit 742a9e9050f42d734fdec6b2a18e973eb109af02)
Reviewed-on: https://chromium-review.googlesource.com/181401
Commit-Queue: Katie Roberts-Hoffman <katierh@chromium.org>
Tested-by: Katie Roberts-Hoffman <katierh@chromium.org>