Re: [PATCH 0/8] De-couple sysfs memory directories from memory sections
From: Dave Hansen <hidden>
Date: 2010-09-22 18:58:54
Also in:
linux-mm, lkml
On Wed, 2010-09-22 at 13:40 -0500, Nathan Fontenot wrote:
On 09/22/2010 10:20 AM, Dave Hansen wrote:quoted
and phys_index's calculation needs to be: mem->start_phys_index * SECTION_SIZE / memory_block_size_bytes()I'm not sure if I follow where you suggest using this formula. Is this instead of what is used now, the base_memory_block_id() calculation? If so, then I'm not sure it would work. The formula used in base_memory_block_id() is done because the memory sections are not guaranteed to be added to the memory block starting with the first section of the block. If you meant somewhere else let me know.
My point was just that if we change the "block_size_bytes" contents, then we have to scale down the "memoryXXXX/phys_index" by that same amount. It *used* to be in numbers of SECTION_SIZE units, and I think it still is: - mem->start_phys_index = __section_nr(section); + mem->start_phys_index = base_memory_block_id(__section_nr(section)); + mem->end_phys_index = mem->start_phys_index + sections_per_block - 1; but now it needs to be changed to be in memory_block_size_bytes() units, *NOT* SECTION_SIZE units. Let's say we have a system with 4 16MB sections starting at 0x0. Before, we would have: block_size_bytes: 16777216 memory0/phys_index: 0 memory1/phys_index: 1 memory2/phys_index: 2 memory3/phys_index: 3 Now, we change memory_block_size_bytes() to be 32MB instead. We reduce the number of sections in half, and I think the right thing to get is: block_size_bytes: 33554432 memory0/phys_index: 0 memory1/phys_index: 1 I think, with your code (as it stands in these patches, no fixes) that we'd instead get this: block_size_bytes: 16777216 memory0/phys_index: 0 memory1/phys_index: 2 Without consulting "end_phys_index" (which isn't and can't be a part of the existing ABI), we'd think that we have two 16MB banks instead of four. -- Dave