> -----Original Message----- > From: Vitaly Kuznetsov [mailto:vkuznets@xxxxxxxxxx] > Sent: Wednesday, February 25, 2015 8:56 AM > To: KY Srinivasan > Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; Haiyang Zhang; linux- > kernel@xxxxxxxxxxxxxxx; Dexuan Cui > Subject: Re: [PATCH 1/2] Drivers: hv: hv_balloon: report offline pages as > being used > > KY Srinivasan <kys@xxxxxxxxxxxxx> writes: > > >> -----Original Message----- > >> From: Vitaly Kuznetsov [mailto:vkuznets@xxxxxxxxxx] > >> Sent: Thursday, February 19, 2015 8:27 AM > >> To: KY Srinivasan; devel@xxxxxxxxxxxxxxxxxxxxxx > >> Cc: Haiyang Zhang; linux-kernel@xxxxxxxxxxxxxxx; Dexuan Cui > >> Subject: [PATCH 1/2] Drivers: hv: hv_balloon: report offline pages as > >> being used > >> > >> When hot-added memory pages are not brought online or when some > >> memory blocks are sent offline the subsequent ballooning process > >> kills the guest with OOM killer. This happens as we don't report > >> these pages as neither used nor free and apparently host algorythm > >> considers them as being unused. Keep track of all online/offline > >> operations and report all currently offline pages as being used so > >> host won't try to balloon them out. > >> > >> Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > >> --- > >> drivers/hv/hv_balloon.c | 33 ++++++++++++++++++++++++--------- > >> 1 file changed, 24 insertions(+), 9 deletions(-) > >> > >> diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c index > >> a095b70..e4b4454 100644 > >> --- a/drivers/hv/hv_balloon.c > >> +++ b/drivers/hv/hv_balloon.c > >> @@ -503,6 +503,8 @@ struct hv_dynmem_device { > >> * Number of pages we have currently ballooned out. > >> */ > >> unsigned int num_pages_ballooned; > >> + unsigned int num_pages_onlined; > >> + unsigned int num_pages_added; > >> > >> /* > >> * State to manage the ballooning (up) operation. > >> @@ -556,12 +558,15 @@ static void post_status(struct > hv_dynmem_device > >> *dm); static int hv_memory_notifier(struct notifier_block *nb, > >> unsigned long val, > >> void *v) > >> { > >> + struct memory_notify *mem = (struct memory_notify *)v; > >> + > >> switch (val) { > >> case MEM_GOING_ONLINE: > >> mutex_lock(&dm_device.ha_region_mutex); > >> break; > >> > >> case MEM_ONLINE: > >> + dm_device.num_pages_onlined += mem->nr_pages; > >> case MEM_CANCEL_ONLINE: > > > > Why are we not adjusting num_pages_onlined when we cancel the online > > Operation. > > Because we didn't increase the number yet. Thanks; my mistake. K. Y _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel