Hi David,
As the subject, I'm wondering if we can make virtio_mm plug/unplug with
futher more fine granularity like
2MB?
I gave it try as below, and it works.
1. Revert this patch: aac65321ba69("mm/memory_hotplug: simplify page
onlining");
2. Tell mm hotplug core invoke online page callback with order 9 with
changes as below;
```
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 5873563a3518..22a9636402b1 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -622,7 +622,9 @@ static int online_pages_range(unsigned long
start_pfn, unsigned long nr_pages,
* them as being online/belonging to this zone ("present").
*/
for (pfn = start_pfn; pfn < end_pfn; pfn += 1ul << order) {
- order = min(MAX_ORDER - 1, get_order(PFN_PHYS(end_pfn -
pfn)));
+ /* 2MB callback */
+ order = min(MAX_ORDER - 2, get_order(PFN_PHYS(end_pfn -
pfn)));
/* __free_pages_core() wants pfns to be aligned to the
order */
```
3. in virtio_mem driver, change subblock size to 2MB.
Thought the hack testing works, I'm feeling not safe.
Could you please help give some insights on these questions?
1. Is 4M a hard limitation?
2. What troubles we can foresee if using 2MB as granularity?
Best regards,
Eric