@ -60,7 +60,6 @@ struct intel_gtt_driver {
} ;
static struct _intel_private {
struct intel_gtt base ;
const struct intel_gtt_driver * driver ;
struct pci_dev * pcidev ; /* device one */
struct pci_dev * bridge_dev ;
@ -80,6 +79,13 @@ static struct _intel_private {
/* Whether i915 needs to use the dmar apis or not. */
unsigned int needs_dmar : 1 ;
phys_addr_t gma_bus_addr ;
/* Size of memory reserved for graphics by the BIOS */
unsigned int stolen_size ;
/* Total number of gtt entries. */
unsigned int gtt_total_entries ;
/* Part of the gtt that is mappable by the cpu, for those chips where
* this is not the full gtt . */
unsigned int gtt_mappable_entries ;
} intel_private ;
# define INTEL_GTT_GEN intel_private.driver->gen
@ -510,7 +516,7 @@ static unsigned int intel_gtt_total_entries(void)
/* On previous hardware, the GTT size was just what was
* required to map the aperture .
*/
return intel_private . base . gtt_mappable_entries ;
return intel_private . gtt_mappable_entries ;
}
}
@ -576,8 +582,8 @@ static int intel_gtt_init(void)
if ( ret ! = 0 )
return ret ;
intel_private . base . gtt_mappable_entries = intel_gtt_mappable_entries ( ) ;
intel_private . base . gtt_total_entries = intel_gtt_total_entries ( ) ;
intel_private . gtt_mappable_entries = intel_gtt_mappable_entries ( ) ;
intel_private . gtt_total_entries = intel_gtt_total_entries ( ) ;
/* save the PGETBL reg for resume */
intel_private . PGETBL_save =
@ -589,10 +595,10 @@ static int intel_gtt_init(void)
dev_info ( & intel_private . bridge_dev - > dev ,
" detected gtt size: %dK total, %dK mappable \n " ,
intel_private . base . gtt_total_entries * 4 ,
intel_private . base . gtt_mappable_entries * 4 ) ;
intel_private . gtt_total_entries * 4 ,
intel_private . gtt_mappable_entries * 4 ) ;
gtt_map_size = intel_private . base . gtt_total_entries * 4 ;
gtt_map_size = intel_private . gtt_total_entries * 4 ;
intel_private . gtt = NULL ;
if ( INTEL_GTT_GEN < 6 & & INTEL_GTT_GEN > 2 )
@ -609,7 +615,7 @@ static int intel_gtt_init(void)
global_cache_flush ( ) ; /* FIXME: ? */
intel_private . base . stolen_size = intel_gtt_stolen_size ( ) ;
intel_private . stolen_size = intel_gtt_stolen_size ( ) ;
intel_private . needs_dmar = USE_PCI_DMA_API & & INTEL_GTT_GEN > 2 ;
@ -637,8 +643,7 @@ static int intel_fake_agp_fetch_size(void)
unsigned int aper_size ;
int i ;
aper_size = ( intel_private . base . gtt_mappable_entries < < PAGE_SHIFT )
/ MB ( 1 ) ;
aper_size = ( intel_private . gtt_mappable_entries < < PAGE_SHIFT ) / MB ( 1 ) ;
for ( i = 0 ; i < num_sizes ; i + + ) {
if ( aper_size = = intel_fake_agp_sizes [ i ] . size ) {
@ -845,8 +850,8 @@ static int intel_fake_agp_insert_entries(struct agp_memory *mem,
int ret = - EINVAL ;
if ( intel_private . clear_fake_agp ) {
int start = intel_private . base . stolen_size / PAGE_SIZE ;
int end = intel_private . base . gtt_mappable_entries ;
int start = intel_private . stolen_size / PAGE_SIZE ;
int end = intel_private . gtt_mappable_entries ;
intel_gtt_clear_range ( start , end - start ) ;
intel_private . clear_fake_agp = false ;
}
@ -857,7 +862,7 @@ static int intel_fake_agp_insert_entries(struct agp_memory *mem,
if ( mem - > page_count = = 0 )
goto out ;
if ( pg_start + mem - > page_count > intel_private . base . gtt_total_entries )
if ( pg_start + mem - > page_count > intel_private . gtt_total_entries )
goto out_err ;
if ( type ! = mem - > type )
@ -1366,9 +1371,10 @@ int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev,
}
EXPORT_SYMBOL ( intel_gmch_probe ) ;
struct intel_gtt * intel_gtt_get ( void )
void intel_gtt_get ( size_t * gtt_total , size_t * stolen_size )
{
return & intel_private . base ;
* gtt_total = intel_private . gtt_total_entries < < PAGE_SHIFT ;
* stolen_size = intel_private . stolen_size ;
}
EXPORT_SYMBOL ( intel_gtt_get ) ;