Commit 77f94c78 authored by Ivan Kokshaysky's avatar Ivan Kokshaysky Committed by Richard Henderson

[PATCH] alpha_agpgart_size

This allows to set the AGP aperture size from command line.
Default is 64Mb.

Ivan.
parent 6a3354a9
...@@ -874,8 +874,6 @@ marvel_node_mem_size(int nid) ...@@ -874,8 +874,6 @@ marvel_node_mem_size(int nid)
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/delay.h> #include <linux/delay.h>
#define MARVEL_AGP_APER_SIZE (64 * 1024 * 1024)
struct marvel_agp_aperture { struct marvel_agp_aperture {
struct pci_iommu_arena *arena; struct pci_iommu_arena *arena;
long pg_start; long pg_start;
...@@ -887,11 +885,14 @@ marvel_agp_setup(alpha_agp_info *agp) ...@@ -887,11 +885,14 @@ marvel_agp_setup(alpha_agp_info *agp)
{ {
struct marvel_agp_aperture *aper; struct marvel_agp_aperture *aper;
if (!alpha_agpgart_size)
return -ENOMEM;
aper = kmalloc(sizeof(*aper), GFP_KERNEL); aper = kmalloc(sizeof(*aper), GFP_KERNEL);
if (aper == NULL) return -ENOMEM; if (aper == NULL) return -ENOMEM;
aper->arena = agp->hose->sg_pci; aper->arena = agp->hose->sg_pci;
aper->pg_count = MARVEL_AGP_APER_SIZE / PAGE_SIZE; aper->pg_count = alpha_agpgart_size / PAGE_SIZE;
aper->pg_start = iommu_reserve(aper->arena, aper->pg_count, aper->pg_start = iommu_reserve(aper->arena, aper->pg_count,
aper->pg_count - 1); aper->pg_count - 1);
......
...@@ -580,8 +580,6 @@ EXPORT_SYMBOL(titan_iounmap); ...@@ -580,8 +580,6 @@ EXPORT_SYMBOL(titan_iounmap);
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/delay.h> #include <linux/delay.h>
#define TITAN_AGP_APER_SIZE (64 * 1024 * 1024)
struct titan_agp_aperture { struct titan_agp_aperture {
struct pci_iommu_arena *arena; struct pci_iommu_arena *arena;
long pg_start; long pg_start;
...@@ -593,12 +591,15 @@ titan_agp_setup(alpha_agp_info *agp) ...@@ -593,12 +591,15 @@ titan_agp_setup(alpha_agp_info *agp)
{ {
struct titan_agp_aperture *aper; struct titan_agp_aperture *aper;
if (!alpha_agpgart_size)
return -ENOMEM;
aper = kmalloc(sizeof(struct titan_agp_aperture), GFP_KERNEL); aper = kmalloc(sizeof(struct titan_agp_aperture), GFP_KERNEL);
if (aper == NULL) if (aper == NULL)
return -ENOMEM; return -ENOMEM;
aper->arena = agp->hose->sg_pci; aper->arena = agp->hose->sg_pci;
aper->pg_count = TITAN_AGP_APER_SIZE / PAGE_SIZE; aper->pg_count = alpha_agpgart_size / PAGE_SIZE;
aper->pg_start = iommu_reserve(aper->arena, aper->pg_count, aper->pg_start = iommu_reserve(aper->arena, aper->pg_count,
aper->pg_count - 1); aper->pg_count - 1);
if (aper->pg_start < 0) { if (aper->pg_start < 0) {
......
...@@ -71,6 +71,8 @@ struct pci_iommu_arena; ...@@ -71,6 +71,8 @@ struct pci_iommu_arena;
#define IRONGATE_DEFAULT_MEM_BASE ((256*8-16)*1024*1024) #define IRONGATE_DEFAULT_MEM_BASE ((256*8-16)*1024*1024)
#define DEFAULT_AGP_APER_SIZE (64*1024*1024)
/* /*
* A small note about bridges and interrupts. The DECchip 21050 (and * A small note about bridges and interrupts. The DECchip 21050 (and
* later) adheres to the PCI-PCI bridge specification. This says that * later) adheres to the PCI-PCI bridge specification. This says that
...@@ -153,6 +155,8 @@ extern struct pci_controller *pci_isa_hose; ...@@ -153,6 +155,8 @@ extern struct pci_controller *pci_isa_hose;
/* Indicate that we trust the console to configure things properly. */ /* Indicate that we trust the console to configure things properly. */
extern int pci_probe_only; extern int pci_probe_only;
extern unsigned long alpha_agpgart_size;
extern void common_init_pci(void); extern void common_init_pci(void);
extern u8 common_swizzle(struct pci_dev *, u8 *); extern u8 common_swizzle(struct pci_dev *, u8 *);
extern struct pci_controller *alloc_pci_controller(void); extern struct pci_controller *alloc_pci_controller(void);
......
...@@ -89,6 +89,9 @@ int srmcons_output = 0; ...@@ -89,6 +89,9 @@ int srmcons_output = 0;
/* Enforce a memory size limit; useful for testing. By default, none. */ /* Enforce a memory size limit; useful for testing. By default, none. */
unsigned long mem_size_limit = 0; unsigned long mem_size_limit = 0;
/* Set AGP GART window size (0 means disabled). */
unsigned long alpha_agpgart_size = DEFAULT_AGP_APER_SIZE;
#ifdef CONFIG_ALPHA_GENERIC #ifdef CONFIG_ALPHA_GENERIC
struct alpha_machine_vector alpha_mv; struct alpha_machine_vector alpha_mv;
int alpha_using_srm; int alpha_using_srm;
...@@ -577,6 +580,11 @@ setup_arch(char **cmdline_p) ...@@ -577,6 +580,11 @@ setup_arch(char **cmdline_p)
srmcons_output = 1; srmcons_output = 1;
continue; continue;
} }
if (strncmp(p, "gartsize=", 9) == 0) {
alpha_agpgart_size =
get_mem_size_limit(p+9) << PAGE_SHIFT;
continue;
}
} }
/* Replace the command line, now that we've killed it with strsep. */ /* Replace the command line, now that we've killed it with strsep. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment