[PATCH 10/10] drm: Pack struct drm_device a bit better

ville.syrjala at linux.intel.com ville.syrjala at linux.intel.com
Fri Oct 4 13:53:42 CEST 2013


From: Ville Syrjälä <ville.syrjala at linux.intel.com>

x86-64:
 pahole before:
        /* size: 1328, cachelines: 21, members: 52 */
        /* sum members: 1290, holes: 9, sum holes: 38 */
        /* paddings: 3, sum paddings: 11 */
        /* last cacheline: 48 bytes */

 pahole after:
        /* size: 1296, cachelines: 21, members: 52 */
        /* sum members: 1290, holes: 1, sum holes: 2 */
        /* padding: 4 */
        /* paddings: 3, sum paddings: 11 */
        /* last cacheline: 16 bytes */

x86:
 pahole before:
        /* size: 772, cachelines: 13, members: 52 */
        /* sum members: 762, holes: 4, sum holes: 10 */
        /* paddings: 3, sum paddings: 7 */
        /* last cacheline: 4 bytes */

 pahole after:
        /* size: 764, cachelines: 12, members: 52 */
        /* sum members: 762, holes: 1, sum holes: 2 */
        /* paddings: 3, sum paddings: 7 */
        /* last cacheline: 60 bytes */

Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 include/drm/drmP.h | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index c72e548..dc84fc0 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1121,6 +1121,8 @@ struct drm_device {
 	atomic_t buf_alloc;		/**< Buffer allocation in progress */
 	/*@} */
 
+	unsigned int num_crtcs;                  /**< Number of CRTCs on this device */
+
 	struct list_head filelist;
 
 	/** \name Memory management */
@@ -1146,11 +1148,12 @@ struct drm_device {
 
 	/** \name Context support */
 	/*@{ */
-	bool irq_enabled;		/**< True if irq handler is enabled */
 	__volatile__ long context_flag;	/**< Context swapping flag */
 	int last_context;		/**< Last current context */
 	/*@} */
 
+	bool irq_enabled;		/**< True if irq handler is enabled */
+
 	/** \name VBLANK IRQ support */
 	/*@{ */
 
@@ -1162,20 +1165,19 @@ struct drm_device {
 	 */
 	bool vblank_disable_allowed;
 
+	/**
+	 * List of events
+	 */
+	spinlock_t event_lock;
+	struct list_head vblank_event_list;
+
 	/* array of size num_crtcs */
 	struct drm_vblank_crtc *vblank;
 
 	spinlock_t vblank_time_lock;    /**< Protects vblank count and time updates during vblank enable/disable */
 	spinlock_t vbl_lock;
-	struct timer_list vblank_disable_timer;
-
 	u32 max_vblank_count;           /**< size of vblank counter register */
-
-	/**
-	 * List of events
-	 */
-	struct list_head vblank_event_list;
-	spinlock_t event_lock;
+	struct timer_list vblank_disable_timer;
 
 	/*@} */
 
@@ -1191,7 +1193,6 @@ struct drm_device {
 	struct usb_device *usbdev;
 
 	struct drm_sg_mem *sg;	/**< Scatter gather memory */
-	unsigned int num_crtcs;                  /**< Number of CRTCs on this device */
 	void *dev_private;		/**< device private data */
 	void *mm_private;
 	struct address_space *dev_mapping;
@@ -1199,8 +1200,6 @@ struct drm_device {
 	sigset_t sigmask;
 
 	struct drm_driver *driver;
-	struct drm_local_map *agp_buffer_map;
-	unsigned int agp_buffer_token;
 	struct drm_minor *control;		/**< Control node for card */
 	struct drm_minor *primary;		/**< render type primary screen head */
 	struct drm_minor *render;		/**< render node for card */
@@ -1215,6 +1214,9 @@ struct drm_device {
 	int switch_power_state;
 
 	atomic_t unplugged; /* device has been unplugged or gone away */
+
+	struct drm_local_map *agp_buffer_map;
+	unsigned int agp_buffer_token;
 };
 
 #define DRM_SWITCH_POWER_ON 0
-- 
1.8.1.5



More information about the dri-devel mailing list