On 2020-05-25 23:15, Avri Altman wrote: >> On 2020-05-24 22:40, Daejun Park wrote: >>> The HPB driver is close to the UFS core function, but it is not essential >>> for operating UFS device. With reference to this article >>> (https://lwn.net/Articles/645810/), we implemented extended UFS-feature >>> as bus model. Because the HPB driver consumes the user's main memory, it >> should >>> support bind / unbind functionality as needed. We implemented the HPB >> driver >>> can be unbind / unload on runtime. >> >> I do not agree that the bus model is the best choice for freeing cache >> memory if it is no longer needed. A shrinker is probably a much better >> choice because the callback functions in a shrinker get invoked when a >> system is under memory pressure. See also register_shrinker(), >> unregister_shrinker() and struct shrinker in include/linux/shrinker.h. > > Since this discussion is closely related to cache allocation, > What is your opinion about allocating the pages dynamically as the regions > Are being activated/deactivated, in oppose of how it is done today - > Statically on init for the entire max-active-subregions? Memory that is statically allocated cannot be used for any other purpose (e.g. page cache) without triggering the associated shrinker. As far as I know shrinkers are only triggered when (close to) out of memory. So dynamically allocating memory as needed is probably a better strategy than statically allocating the entire region at initialization time. Thanks, Bart.