diff options
Diffstat (limited to 'drivers/char/agp')
| -rw-r--r-- | drivers/char/agp/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/char/agp/amd-k7-agp.c | 2 | ||||
| -rw-r--r-- | drivers/char/agp/backend.c | 1 | ||||
| -rw-r--r-- | drivers/char/agp/compat_ioctl.c | 1 | ||||
| -rw-r--r-- | drivers/char/agp/generic.c | 1 | ||||
| -rw-r--r-- | drivers/char/agp/hp-agp.c | 1 | ||||
| -rw-r--r-- | drivers/char/agp/intel-agp.c | 40 | ||||
| -rw-r--r-- | drivers/char/agp/nvidia-agp.c | 1 | ||||
| -rw-r--r-- | drivers/char/agp/sgi-agp.c | 1 | ||||
| -rw-r--r-- | drivers/char/agp/uninorth-agp.c | 1 | 
10 files changed, 41 insertions, 10 deletions
diff --git a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig index 2fb3a480f6b..4b66c69eaf5 100644 --- a/drivers/char/agp/Kconfig +++ b/drivers/char/agp/Kconfig @@ -57,7 +57,7 @@ config AGP_AMD  config AGP_AMD64  	tristate "AMD Opteron/Athlon64 on-CPU GART support" -	depends on AGP && X86 +	depends on AGP && X86 && K8_NB  	help  	  This option gives you AGP support for the GLX component of  	  X using the on-CPU northbridge of the AMD Athlon64/Opteron CPUs. diff --git a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c index 73dbf40c874..a7637d72cef 100644 --- a/drivers/char/agp/amd-k7-agp.c +++ b/drivers/char/agp/amd-k7-agp.c @@ -6,9 +6,9 @@  #include <linux/pci.h>  #include <linux/init.h>  #include <linux/agp_backend.h> -#include <linux/gfp.h>  #include <linux/page-flags.h>  #include <linux/mm.h> +#include <linux/slab.h>  #include "agp.h"  #define AMD_MMBASE	0x14 diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index c3ab46da51a..ee4f855611b 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c @@ -30,6 +30,7 @@  #include <linux/module.h>  #include <linux/pci.h>  #include <linux/init.h> +#include <linux/slab.h>  #include <linux/pagemap.h>  #include <linux/miscdevice.h>  #include <linux/pm.h> diff --git a/drivers/char/agp/compat_ioctl.c b/drivers/char/agp/compat_ioctl.c index 58c57cb2518..9d2c97a69cd 100644 --- a/drivers/char/agp/compat_ioctl.c +++ b/drivers/char/agp/compat_ioctl.c @@ -30,6 +30,7 @@  #include <linux/pci.h>  #include <linux/fs.h>  #include <linux/agpgart.h> +#include <linux/slab.h>  #include <asm/uaccess.h>  #include "agp.h"  #include "compat_ioctl.h" diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c index c50543966eb..fb86708e47e 100644 --- a/drivers/char/agp/generic.c +++ b/drivers/char/agp/generic.c @@ -38,6 +38,7 @@  #include <linux/dma-mapping.h>  #include <linux/mm.h>  #include <linux/sched.h> +#include <linux/slab.h>  #include <asm/io.h>  #include <asm/cacheflush.h>  #include <asm/pgtable.h> diff --git a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c index 58752b70efe..056b289a1e8 100644 --- a/drivers/char/agp/hp-agp.c +++ b/drivers/char/agp/hp-agp.c @@ -15,6 +15,7 @@  #include <linux/init.h>  #include <linux/agp_backend.h>  #include <linux/log2.h> +#include <linux/slab.h>  #include <asm/acpi-ext.h> diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index 919a28558d3..aa4248efc5d 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c @@ -4,6 +4,7 @@  #include <linux/module.h>  #include <linux/pci.h> +#include <linux/slab.h>  #include <linux/init.h>  #include <linux/kernel.h>  #include <linux/pagemap.h> @@ -97,6 +98,9 @@ EXPORT_SYMBOL(intel_agp_enabled);  #define IS_PINEVIEW (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_PINEVIEW_M_HB || \  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_PINEVIEW_HB) +#define IS_SNB (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB || \ +		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB) +  #define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_EAGLELAKE_HB || \  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB || \ @@ -107,8 +111,7 @@ EXPORT_SYMBOL(intel_agp_enabled);  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB || \  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB || \  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB || \ -		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB || \ -		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB) +		IS_SNB)  extern int agp_memory_reserved; @@ -175,6 +178,10 @@ extern int agp_memory_reserved;  #define SNB_GMCH_GMS_STOLEN_448M	(0xe << 3)  #define SNB_GMCH_GMS_STOLEN_480M	(0xf << 3)  #define SNB_GMCH_GMS_STOLEN_512M	(0x10 << 3) +#define SNB_GTT_SIZE_0M			(0 << 8) +#define SNB_GTT_SIZE_1M			(1 << 8) +#define SNB_GTT_SIZE_2M			(2 << 8) +#define SNB_GTT_SIZE_MASK		(3 << 8)  static const struct aper_size_info_fixed intel_i810_sizes[] =  { @@ -298,7 +305,7 @@ static void intel_agp_insert_sg_entries(struct agp_memory *mem,  			j++;  		}  	} else { -		/* sg may merge pages, but we have to seperate +		/* sg may merge pages, but we have to separate  		 * per-page addr for GTT */  		unsigned int len, m; @@ -1200,6 +1207,9 @@ static void intel_i9xx_setup_flush(void)  	if (intel_private.ifp_resource.start)  		return; +	if (IS_SNB) +		return; +  	/* setup a resource for this object */  	intel_private.ifp_resource.name = "Intel Flush Page";  	intel_private.ifp_resource.flags = IORESOURCE_MEM; @@ -1438,6 +1448,8 @@ static unsigned long intel_i965_mask_memory(struct agp_bridge_data *bridge,  static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size)  { +	u16 snb_gmch_ctl; +  	switch (agp_bridge->dev->device) {  	case PCI_DEVICE_ID_INTEL_GM45_HB:  	case PCI_DEVICE_ID_INTEL_EAGLELAKE_HB: @@ -1449,9 +1461,26 @@ static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size)  	case PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB:  	case PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB:  	case PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB: +		*gtt_offset = *gtt_size = MB(2); +		break;  	case PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB:  	case PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB: -		*gtt_offset = *gtt_size = MB(2); +		*gtt_offset = MB(2); + +		pci_read_config_word(intel_private.pcidev, SNB_GMCH_CTRL, &snb_gmch_ctl); +		switch (snb_gmch_ctl & SNB_GTT_SIZE_MASK) { +		default: +		case SNB_GTT_SIZE_0M: +			printk(KERN_ERR "Bad GTT size mask: 0x%04x.\n", snb_gmch_ctl); +			*gtt_size = MB(0); +			break; +		case SNB_GTT_SIZE_1M: +			*gtt_size = MB(1); +			break; +		case SNB_GTT_SIZE_2M: +			*gtt_size = MB(2); +			break; +		}  		break;  	default:  		*gtt_offset = *gtt_size = KB(512); @@ -1788,8 +1817,6 @@ static int intel_845_configure(void)  	pci_write_config_byte(agp_bridge->dev, INTEL_I845_AGPM, temp2 | (1 << 1));  	/* clear any possible error conditions */  	pci_write_config_word(agp_bridge->dev, INTEL_I845_ERRSTS, 0x001c); - -	intel_i830_setup_flush();  	return 0;  } @@ -2159,7 +2186,6 @@ static const struct agp_bridge_driver intel_845_driver = {  	.agp_destroy_page	= agp_generic_destroy_page,  	.agp_destroy_pages      = agp_generic_destroy_pages,  	.agp_type_to_mask_type  = agp_generic_type_to_mask_type, -	.chipset_flush		= intel_i830_chipset_flush,  };  static const struct agp_bridge_driver intel_850_driver = { diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c index 7e36d2b4f9d..10f24e349a2 100644 --- a/drivers/char/agp/nvidia-agp.c +++ b/drivers/char/agp/nvidia-agp.c @@ -8,7 +8,6 @@  #include <linux/pci.h>  #include <linux/init.h>  #include <linux/agp_backend.h> -#include <linux/gfp.h>  #include <linux/page-flags.h>  #include <linux/mm.h>  #include <linux/jiffies.h> diff --git a/drivers/char/agp/sgi-agp.c b/drivers/char/agp/sgi-agp.c index 0d426ae39c8..ffa888cd1c8 100644 --- a/drivers/char/agp/sgi-agp.c +++ b/drivers/char/agp/sgi-agp.c @@ -14,6 +14,7 @@  #include <linux/acpi.h>  #include <linux/module.h>  #include <linux/pci.h> +#include <linux/slab.h>  #include <linux/init.h>  #include <linux/agp_backend.h>  #include <asm/sn/addrs.h> diff --git a/drivers/char/agp/uninorth-agp.c b/drivers/char/agp/uninorth-agp.c index d89da4ac061..6f48931ac1c 100644 --- a/drivers/char/agp/uninorth-agp.c +++ b/drivers/char/agp/uninorth-agp.c @@ -3,6 +3,7 @@   */  #include <linux/module.h>  #include <linux/pci.h> +#include <linux/slab.h>  #include <linux/init.h>  #include <linux/pagemap.h>  #include <linux/agp_backend.h>  |