Here, I will talk about some random MM things that I learned while working on it a while back. It might be useful for others. I am defining things here for MIPS but it could be tweaked for other archs as well.
1) How to define the no. of memory nodes contained it a system ??
Soln:- Its a two step process.
a) In the .config file select CONFIG_SYS_SUPPORTS_NUMA & then CONFIG_NODES_SHIFT=<no. of nodes^2)
b) The second step is :
in arch/mips/include/asm/mmzone.h, define the following:
pg_data_t discontig_node_data[]
#define NODE_DATA(nid) (&discontig_node_data[nid])
#define NODE_MEM_MAP(nid) (NODE_DATA(nid)->node_mem_map)
& define discontig_node_data in arch/mips/mm/discontig.c
e.g.
pg_data_t discontig_node_data[MAX_NUMNODES] = {
{ .bdata = &bootmem_node_data[0] },
.
.
.
};
and finally define MAX_NUMNODES in include/linux/numa.h
2) How many page descriptors can a page hold ??
Soln:
1 page typically is 4KB (4*1024 --> 4096)
1 page descriptor is tyically 32 bytes.
So the no. of page descriptors in a page are:- 4096/32 --> 128 page descriptors
3) What does PFN_UP / PFN_DOWN macros do ??
Soln:
PFN_UP macro gives a page frame number after rounding the given address to the next page frame boundary
PFN_DOWN macro gives a page frame number that contains the address passed to this macro.
(to be contd....)
No comments:
Post a Comment