Re: [PATCH v6 06/12] mm/hotplug: Add mem-hotplug restrictions for remove_memory()

From: David Hildenbrand
Date: Tue Apr 23 2019 - 17:21:30 EST


On 17.04.19 20:39, Dan Williams wrote:
> Teach the arch_remove_memory() path to consult the same 'struct
> mhp_restrictions' context as was specified at arch_add_memory() time.
>
> No functional change, this is a preparation step for teaching
> __remove_pages() about how and when to allow sub-section hot-remove, and
> a cleanup for an unnecessary "is_dev_zone()" special case.

I am not yet sure if this is the right thing to do. When adding memory,
we obviously have to specify the "how". When removing memory, we usually
should be able to look such stuff up.


> void __remove_pages(struct zone *zone, unsigned long phys_start_pfn,
> - unsigned long nr_pages, struct vmem_altmap *altmap)
> + unsigned long nr_pages, struct mhp_restrictions *restrictions)
> {
> unsigned long i;
> - unsigned long map_offset = 0;
> int sections_to_remove;
> + unsigned long map_offset = 0;
> + struct vmem_altmap *altmap = restrictions->altmap;
>
> - /* In the ZONE_DEVICE case device driver owns the memory region */
> - if (is_dev_zone(zone)) {
> - if (altmap)
> - map_offset = vmem_altmap_offset(altmap);
> - }
> + if (altmap)
> + map_offset = vmem_altmap_offset(altmap);
>

Why weren't we able to use this exact same hunk before? (after my
resource deletion cleanup of course)

IOW, do we really need struct mhp_restrictions here?

After I factor out memory device handling into the caller of
arch_remove_memory(), also the next patch ("mm/sparsemem: Prepare for
sub-section ranges") should no longer need it. Or am I missing something?

--

Thanks,

David / dhildenb