On 12/07/2012 03:51 PM, Andrew Morton wrote: >> > +static ssize_t node_read_memrange(struct device *dev, >> > + struct device_attribute *attr, char *buf) >> > +{ >> > + int nid = dev->id; >> > + unsigned long start_pfn = NODE_DATA(nid)->node_start_pfn; >> > + unsigned long end_pfn = start_pfn + NODE_DATA(nid)->node_spanned_pages; > hm. Is this correct for all for > FLATMEM/SPARSEMEM/SPARSEMEM_VMEMMAP/DISCONTIGME/etc? It's not _wrong_ per se, but it's not super precise, either. The problem is, it's quite valid to have these node_start/spanned ranges overlap between two or more nodes on some hardware. So, if the desired purpose is to map nodes to DIMMs, then this can only accomplish this on _some_ hardware, not all. It would be completely useless for that purpose for some configurations. Seems like the better way to do this would be to expose the DIMMs themselves in some way, and then map _those_ back to a node. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>