intel-gtt: Read 64bit for gmar_bus_addr
PATCH 1/1 intel-gtt: Read 64bit for gmar_bus_addr
That bar could be 64bit pref mem.
Signed-off-by Yinghai Lu <[email protected]>
Cc David Airlie <[email protected]>
Reviewed-by Daniel Vetter <[email protected]>
--- drivers/char/agp/intel-gtt.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
drivers/char/agp/intel-gtt.c +10 -4
@@ -649,8 +649,10 @@ static void intel_gtt_cleanup(void)static int intel_gtt_init (void ) {u32 gma_addr; +u32 addr_hi =0 ;u32 gtt_map_size;int ret; +int pos; ret = intel_private.driver->setup ();if (ret !=0 )
@@ -696,13 +698,17 @@ static int intel_gtt_init(void) }if (INTEL_GTT_GEN <=2 ) -pci_read_config_dword (intel_private.pcidev,I810_GMADDR , - &gma_addr); + pos =I810_GMADDR ;else -pci_read_config_dword (intel_private.pcidev,I915_GMADDR , - &gma_addr); + pos =I915_GMADDR ; + +pci_read_config_dword (intel_private.pcidev, pos, &gma_addr); + +if (gma_addr &PCI_BASE_ADDRESS_MEM_TYPE_64 ) +pci_read_config_dword (intel_private.pcidev, pos +4 , &addr_hi); intel_private.base.gma_bus_addr = (gma_addr &PCI_BASE_ADDRESS_MEM_MASK ); + intel_private.base.gma_bus_addr |= (u64 )addr_hi <<32 ;return 0 ; }