On Fri, 2012-12-07 at 16:17 -0800, Dave Hansen wrote: > 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. > Good point, and from a DIMM perspective, I agree, and will look into this. However, IMHO, having the range of physical addresses for every node still provides valuable information, from a NUMA point of view. For example, dealing with node related e820 mappings. Andrew, with the documentation patch, would you be wiling to pickup a v2 of this? Thanks, Davidlohr -- 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>