diff options
author | Dave Airlie <airlied@redhat.com> | 2008-11-27 22:43:47 -0500 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2008-12-29 02:47:21 -0500 |
commit | e7f7ab45ebcb54fd5f814ea15ea079e079662f67 (patch) | |
tree | 53e8206501c0b7a00831ea084b52664f7899d1c0 /include/drm | |
parent | 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 (diff) |
drm: cleanup exit path for module unload
The current sub-module unload exit path is a mess, it tries
to abuse the idr. Just keep a list of devices per driver struct
and free them in-order on rmmod.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include/drm')
-rw-r--r-- | include/drm/drmP.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index d5e8e5c89548..08b8539e7b3c 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
@@ -737,6 +737,8 @@ struct drm_driver { | |||
737 | int num_ioctls; | 737 | int num_ioctls; |
738 | struct file_operations fops; | 738 | struct file_operations fops; |
739 | struct pci_driver pci_driver; | 739 | struct pci_driver pci_driver; |
740 | /* List of devices hanging off this driver */ | ||
741 | struct list_head device_list; | ||
740 | }; | 742 | }; |
741 | 743 | ||
742 | #define DRM_MINOR_UNASSIGNED 0 | 744 | #define DRM_MINOR_UNASSIGNED 0 |
@@ -759,6 +761,7 @@ struct drm_minor { | |||
759 | * may contain multiple heads. | 761 | * may contain multiple heads. |
760 | */ | 762 | */ |
761 | struct drm_device { | 763 | struct drm_device { |
764 | struct list_head driver_item; /**< list of devices per driver */ | ||
762 | char *unique; /**< Unique identifier: e.g., busid */ | 765 | char *unique; /**< Unique identifier: e.g., busid */ |
763 | int unique_len; /**< Length of unique field */ | 766 | int unique_len; /**< Length of unique field */ |
764 | char *devname; /**< For /proc/interrupts */ | 767 | char *devname; /**< For /proc/interrupts */ |