hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/xen/xen-balloon.c
....@@ -37,6 +37,7 @@
3737 #include <linux/mm_types.h>
3838 #include <linux/init.h>
3939 #include <linux/capability.h>
40
+#include <linux/memory_hotplug.h>
4041
4142 #include <xen/xen.h>
4243 #include <xen/interface/xen.h>
....@@ -50,6 +51,10 @@
5051
5152 #define BALLOON_CLASS_NAME "xen_memory"
5253
54
+#ifdef CONFIG_MEMORY_HOTPLUG
55
+u64 xen_saved_max_mem_size = 0;
56
+#endif
57
+
5358 static struct device balloon_dev;
5459
5560 static int register_balloon(struct device *dev);
....@@ -62,6 +67,12 @@
6267 int err;
6368 static bool watch_fired;
6469 static long target_diff;
70
+
71
+#ifdef CONFIG_MEMORY_HOTPLUG
72
+ /* The balloon driver will take care of adding memory now. */
73
+ if (xen_saved_max_mem_size)
74
+ max_mem_size = xen_saved_max_mem_size;
75
+#endif
6576
6677 err = xenbus_scanf(XBT_NIL, "memory", "target", "%llu", &new_target);
6778 if (err != 1) {
....@@ -117,8 +128,6 @@
117128 void xen_balloon_init(void)
118129 {
119130 register_balloon(&balloon_dev);
120
-
121
- register_xen_selfballooning(&balloon_dev);
122131
123132 register_xenstore_notifier(&xenstore_notifier);
124133 }