@ -885,8 +885,8 @@ static int i915_set_status_page(struct drm_device *dev, void *data,
* some RAM for the framebuffer at early boot . This code figures out
* how much was set aside so we can use it for our own purposes .
*/
static int i915_probe_agp ( struct drm_device * dev , unsigned long * aperture_size ,
unsigned long * preallocated_size )
static int i915_probe_agp ( struct drm_device * dev , uint32_t * aperture_size ,
uint32_t * preallocated_size )
{
struct pci_dev * bridge_dev ;
u16 tmp = 0 ;
@ -984,10 +984,11 @@ static int i915_probe_agp(struct drm_device *dev, unsigned long *aperture_size,
return 0 ;
}
static int i915_load_modeset_init ( struct drm_device * dev )
static int i915_load_modeset_init ( struct drm_device * dev ,
unsigned long prealloc_size ,
unsigned long agp_size )
{
struct drm_i915_private * dev_priv = dev - > dev_private ;
unsigned long agp_size , prealloc_size ;
int fb_bar = IS_I9XX ( dev ) ? 2 : 0 ;
int ret = 0 ;
@ -1002,10 +1003,6 @@ static int i915_load_modeset_init(struct drm_device *dev)
if ( IS_I965G ( dev ) | | IS_G33 ( dev ) )
dev_priv - > cursor_needs_physical = false ;
ret = i915_probe_agp ( dev , & agp_size , & prealloc_size ) ;
if ( ret )
goto out ;
/* Basic memrange allocator for stolen space (aka vram) */
drm_mm_init ( & dev_priv - > vram , 0 , prealloc_size ) ;
@ -1136,6 +1133,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
struct drm_i915_private * dev_priv = dev - > dev_private ;
resource_size_t base , size ;
int ret = 0 , mmio_bar = IS_I9XX ( dev ) ? 0 : 1 ;
uint32_t agp_size , prealloc_size ;
/* i915 has 4 more counters */
dev - > counters + = 4 ;
@ -1184,9 +1182,22 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
" performance may suffer. \n " ) ;
}
ret = i915_probe_agp ( dev , & agp_size , & prealloc_size ) ;
if ( ret )
goto out_iomapfree ;
/* enable GEM by default */
dev_priv - > has_gem = 1 ;
if ( prealloc_size > agp_size * 3 / 4 ) {
DRM_ERROR ( " Detected broken video BIOS with %d/%dkB of video "
" memory stolen. \n " ,
prealloc_size / 1024 , agp_size / 1024 ) ;
DRM_ERROR ( " Disabling GEM. (try reducing stolen memory or "
" updating the BIOS to fix). \n " ) ;
dev_priv - > has_gem = 0 ;
}
dev - > driver - > get_vblank_counter = i915_get_vblank_counter ;
dev - > max_vblank_count = 0xffffff ; /* only 24 bits of frame count */
if ( IS_G4X ( dev ) | | IS_IGDNG ( dev ) ) {
@ -1231,7 +1242,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
}
if ( drm_core_check_feature ( dev , DRIVER_MODESET ) ) {
ret = i915_load_modeset_init ( dev ) ;
ret = i915_load_modeset_init ( dev , prealloc_size , agp_size ) ;
if ( ret < 0 ) {
DRM_ERROR ( " failed to init modeset \n " ) ;
goto out_rmmap ;