Hi Tian. On Sat, Apr 11, 2020 at 10:49:30AM +0800, Tian Tao wrote: > add the shutdown function to release the resource. > Why it the release of the memory required in the shutdown method? The memory is allocated using devm_ioremap() which will let device management handle the release of the resources when he driver is released. The patch also introduces a pci_disable_device() The better approch would be to use pcim_enable_device() so you let the device management about releasing the resources. Sam > Signed-off-by: Tian Tao <tiantao6@xxxxxxxxxxxxx> > --- > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > index a6fd0c2..126d4f4 100644 > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > @@ -232,6 +232,21 @@ static int hibmc_hw_map(struct hibmc_drm_private *priv) > return 0; > } > > +static void hibmc_hw_unmap(struct hibmc_drm_private *priv) > +{ > + struct drm_device *dev = priv->dev; > + > + if (priv->mmio) { > + devm_iounmap(dev->dev, priv->mmio); > + priv->mmio = NULL; > + } > + > + if (priv->fb_map) { > + devm_iounmap(dev->dev, priv->fb_map); > + priv->fb_map = NULL; > + } > +} > + > static int hibmc_hw_init(struct hibmc_drm_private *priv) > { > int ret; > @@ -258,6 +273,7 @@ static int hibmc_unload(struct drm_device *dev) > > hibmc_kms_fini(priv); > hibmc_mm_fini(priv); > + hibmc_hw_unmap(priv); > dev->dev_private = NULL; > return 0; > } > @@ -374,6 +390,12 @@ static void hibmc_pci_remove(struct pci_dev *pdev) > drm_dev_unregister(dev); > hibmc_unload(dev); > drm_dev_put(dev); > + pci_disable_device(pdev); > +} > + > +static void hibmc_pci_shutdown(struct pci_dev *pdev) > +{ > + hibmc_pci_remove(pdev); > } > > static struct pci_device_id hibmc_pci_table[] = { > @@ -386,6 +408,7 @@ static struct pci_driver hibmc_pci_driver = { > .id_table = hibmc_pci_table, > .probe = hibmc_pci_probe, > .remove = hibmc_pci_remove, > + .shutdown = hibmc_pci_shutdown, > .driver.pm = &hibmc_pm_ops, > }; > > -- > 2.7.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel