From: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> Sent: Sunday, July 31, 2022 1:02 PM > > hyperv_setup_vram() calls vmbus_allocate_mmio(). > This must be undone in the error handling path of the probe, as already > done in the remove function. > > This patch depends on commit a0ab5abced55 ("drm/hyperv : Removing the > restruction of VRAM allocation with PCI bar size"). > Without it, something like what is done in commit e048834c209a > ("drm/hyperv: Fix device removal on Gen1 VMs") should be done. Should the above paragraph be below the '---' as a comment, rather than part of the commit message? It's more about staging instructions than a long-term record of the actual functional/code change. > > Fixes: 76c56a5affeb ("drm/hyperv: Add DRM driver for hyperv synthetic video device") I wonder if the Fixes: dependency should be on a0ab5abced55. As you noted, this patch won't apply cleanly on stable kernel versions that lack that commit, so we'll need a separate patch for stable if we want to make the fix there. > Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> All that said, the fix looks good, so Reviewed-by: Michael Kelley <mikelley@xxxxxxxxxxxxx> > --- > drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c > b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c > index 6d11e7938c83..fc8b4e045f5d 100644 > --- a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c > +++ b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c > @@ -133,7 +133,6 @@ static int hyperv_vmbus_probe(struct hv_device *hdev, > } > > ret = hyperv_setup_vram(hv, hdev); > - > if (ret) > goto err_vmbus_close; > > @@ -150,18 +149,20 @@ static int hyperv_vmbus_probe(struct hv_device *hdev, > > ret = hyperv_mode_config_init(hv); > if (ret) > - goto err_vmbus_close; > + goto err_free_mmio; > > ret = drm_dev_register(dev, 0); > if (ret) { > drm_err(dev, "Failed to register drm driver.\n"); > - goto err_vmbus_close; > + goto err_free_mmio; > } > > drm_fbdev_generic_setup(dev, 0); > > return 0; > > +err_free_mmio: > + vmbus_free_mmio(hv->mem->start, hv->fb_size); > err_vmbus_close: > vmbus_close(hdev->channel); > err_hv_set_drv_data: > -- > 2.34.1