[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