Thread (16 messages) 16 messages, 5 authors, 2018-10-15

[PATCH 5/5] RISC-V: Implement sparsemem

From: logang@deltatee.com (Logan Gunthorpe)
Date: 2018-10-11 17:30:29
Also in: linux-mm, linux-riscv, linux-sh, lkml


On 2018-10-11 10:24 a.m., Logan Gunthorpe wrote:
On 2018-10-11 7:37 a.m., Christoph Hellwig wrote:
quoted
quoted
+/*
+ * Log2 of the upper bound of the size of a struct page. Used for sizing
+ * the vmemmap region only, does not affect actual memory footprint.
+ * We don't use sizeof(struct page) directly since taking its size here
+ * requires its definition to be available at this point in the inclusion
+ * chain, and it may not be a power of 2 in the first place.
+ */
+#define STRUCT_PAGE_MAX_SHIFT	6
I know this is copied from arm64, but wouldn't this be a good time
to move this next to the struct page defintion?

Also this:

arch/arm64/mm/init.c:   BUILD_BUG_ON(sizeof(struct page) > (1 << STRUCT_PAGE_MAX_SHIFT));

should move to comment code (or would have to be duplicated for riscv)
Makes sense. Where is a good place for the BUILD_BUG_ON in common code?
Never mind. Seems like it's pretty trivial to do this:

#define STRUCT_PAGE_MAX_SHIFT \
    ilog2(roundup_pow_of_two(sizeof(struct page)))

So the BUILD_BUG_ON becomes unnecessary.

The comment saying it can't be done is really misleading as it wasn't
actually difficult.

Logan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help