Author: johalun
Date: Fri May 10 23:10:22 2019
New Revision: 347470
URL: https://svnweb.freebsd.org/changeset/base/347470

Log:
  Implement linux_pci_unregister_drm_driver in linuxkpi so that drm drivers
  can be unloaded.
  
  This patch is a part of D19565.
  
  Reviewed by:  hps
  Approved by:  imp (mentor), hps
  MFC after:    1 week

Modified:
  head/sys/compat/linuxkpi/common/include/linux/pci.h
  head/sys/compat/linuxkpi/common/src/linux_pci.c

Modified: head/sys/compat/linuxkpi/common/include/linux/pci.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/pci.h Fri May 10 22:49:01 
2019        (r347469)
+++ head/sys/compat/linuxkpi/common/include/linux/pci.h Fri May 10 23:10:22 
2019        (r347470)
@@ -532,6 +532,7 @@ pci_write_config_dword(struct pci_dev *pdev, int where
 int    linux_pci_register_driver(struct pci_driver *pdrv);
 int    linux_pci_register_drm_driver(struct pci_driver *pdrv);
 void   linux_pci_unregister_driver(struct pci_driver *pdrv);
+void   linux_pci_unregister_drm_driver(struct pci_driver *pdrv);
 
 #define        pci_register_driver(pdrv)       linux_pci_register_driver(pdrv)
 #define        pci_unregister_driver(pdrv)     
linux_pci_unregister_driver(pdrv)

Modified: head/sys/compat/linuxkpi/common/src/linux_pci.c
==============================================================================
--- head/sys/compat/linuxkpi/common/src/linux_pci.c     Fri May 10 22:49:01 
2019        (r347469)
+++ head/sys/compat/linuxkpi/common/src/linux_pci.c     Fri May 10 23:10:22 
2019        (r347470)
@@ -417,6 +417,22 @@ linux_pci_unregister_driver(struct pci_driver *pdrv)
        mtx_unlock(&Giant);
 }
 
+void
+linux_pci_unregister_drm_driver(struct pci_driver *pdrv)
+{
+       devclass_t bus;
+
+       bus = devclass_find("vgapci");
+
+       spin_lock(&pci_lock);
+       list_del(&pdrv->links);
+       spin_unlock(&pci_lock);
+       mtx_lock(&Giant);
+       if (bus != NULL)
+               devclass_delete_driver(bus, &pdrv->bsddriver);
+       mtx_unlock(&Giant);
+}
+
 CTASSERT(sizeof(dma_addr_t) <= sizeof(uint64_t));
 
 struct linux_dma_obj {
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to