On Thu, Oct 29, 2020 at 02:29:27PM -0700, Sudarshan Rajagopalan wrote: > Hello all, > > We have a usecase where a module driver adds certain memory blocks using > add_memory_driver_managed(), so that it can perform memory hotplug > operations on these blocks. In general, these memory blocks aren’t something > that gets physically added later, but is part of actual RAM that system > booted up with. Meaning – we set the ‘mem=’ cmdline parameter to limit the > memory and later add the remaining ones using add_memory*() variants. > > The basic idea is to have driver have ownership and manage certain memory > blocks for hotplug operations. > > For the driver be able to know how much memory was limited and how much > actually present, we take the delta of ‘bootmem physical end address’ and > ‘memblock_end_of_DRAM’. The 'bootmem physical end address' is obtained by > scanning the reg values in ‘memory’ DT node and determining the max > {addr,size}. Since our driver is getting modularized, we won’t have access > to memblock_end_of_DRAM (i.e. end address of all memory blocks after ‘mem=’ > is applied). > > So checking if memblock_{start/end}_of_DRAM() symbols can be exported? Also, > this information can be obtained by userspace by doing ‘cat /proc/iomem’ and > greping for ‘System RAM’. So wondering if userspace can have access to such > info, can we allow kernel module drivers have access by exporting > memblock_{start/end}_of_DRAM().
These functions cannot be exported not because we want to hide this information from the modules but because it is unsafe to use them. On most architecturs these functions are __init so they are discarded after boot anyway. Beisdes, the memory configuration known to memblock might be not accurate in many cases as David explained in his reply. > Or are there any other ways where a module driver can get the end address of > system memory block? What do you mean by "system memory block"? There could be a lot of interpretations if you take into account memory hotplug, "mem=" option, reserved and firmware memory. I'd suggest you to describe the entire use case in more detail. Having the complete picture would help finding a proper solution. > Sudarshan > -- Sincerely yours, Mike.