On Tue, Jan 07, 2025 at 10:09:18AM -0800, Jacob Pan wrote: > The Hyper-V balloon driver installs a custom callback for handling page > onlining operations performed by the memory hotplug subsystem. This > custom callback is global, and overrides the default callback > (generic_online_page) that Linux otherwise uses. The custom callback > properly handles memory that is hot-added by the balloon driver as part > of a Hyper-V hot-add region. > > But memory can also be hot-added directly by a device driver for a vPCI > device, particularly GPUs. In such a case, the custom callback installed by > the balloon driver runs, but won't find the page in its hot-add region list > and doesn't online it, which could cause driver initialization failures. > > Fix this by having the balloon custom callback run generic_online_page() > when the page isn't part of a Hyper-V hot-add region, thereby doing the > default Linux behavior. This allows device driver hot-adds to work > properly. Similar cases are handled the same way in the virtio-mem driver. > > Suggested-by: Vikram Sethi <vsethi@xxxxxxxxxx> > Tested-by: Michael Frohlich <mfrohlich@xxxxxxxxxxxxx> > Reviewed-by: Michael Kelley <mhklinux@xxxxxxxxxxx> > Signed-off-by: Jacob Pan <jacob.pan@xxxxxxxxxxxxxxxxxxx> Applied to hyperv-next. Thanks!