----- Original Message -----
----- Original Message -----
> Hi Dave,
>
> Now I am quite sure the definition of NR_SECTION_ROOTS() is wrong.
> In the upstream kernel, I found the following
> include/linux/mmzone.h
> ...
> 994 #define SECTION_NR_TO_ROOT(sec) ((sec) / SECTIONS_PER_ROOT)
> 995 #define NR_SECTION_ROOTS DIV_ROUND_UP(NR_MEM_SECTIONS, SECTIONS_PER_ROOT)
> 996 #define SECTION_ROOT_MASK (SECTIONS_PER_ROOT - 1)
>
> and include/kernel.h DIV_ROUND_UP is defined as follows,
> 58 #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
>
> I hope you can take care of this.
>
> By the way, I think _SECTION_SIZE_BITS issue is a separate issue.
>
> Best Regard,
>
> Takuo
Hello Takuo,
... [ cut ] ...
I'll test this out, and presuming that nothing breaks w/respect
to
backwards compatibility, I'll change the crash version of
NR_SECTION_ROOTS.
But, as you state, the _SECTION_SIZE_BITS is based upon whatever your
kernel is doing.
Thanks,
Dave
Hello Takuo,
I have tested and queued this patch for the next release:
diff -u -r1.466 defs.h
--- defs.h 11 May 2011 13:24:36 -0000 1.466
+++ defs.h 25 May 2011 18:31:39 -0000
@@ -2184,7 +2184,8 @@
#define _SECTIONS_PER_ROOT() (1)
#define SECTION_NR_TO_ROOT(sec) ((sec) / SECTIONS_PER_ROOT())
-#define NR_SECTION_ROOTS() (NR_MEM_SECTIONS() / SECTIONS_PER_ROOT())
+#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
+#define NR_SECTION_ROOTS() (DIV_ROUND_UP(NR_MEM_SECTIONS(), SECTIONS_PER_ROOT()))
#define SECTION_ROOT_MASK() (SECTIONS_PER_ROOT() - 1)
/*
Thanks for catching this,
Dave