Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
eba4f669
L
linux
项目概览
xiphi1978
/
linux
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
eba4f669
编写于
6月 07, 2005
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge of master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart
上级
93cffffa
66bb8bf8
变更
22
隐藏空白更改
内联
并排
Showing
22 changed file
with
133 addition
and
56 deletion
+133
-56
drivers/char/agp/agp.h
drivers/char/agp/agp.h
+2
-0
drivers/char/agp/ali-agp.c
drivers/char/agp/ali-agp.c
+2
-2
drivers/char/agp/amd-k7-agp.c
drivers/char/agp/amd-k7-agp.c
+3
-3
drivers/char/agp/amd64-agp.c
drivers/char/agp/amd64-agp.c
+2
-2
drivers/char/agp/ati-agp.c
drivers/char/agp/ati-agp.c
+3
-3
drivers/char/agp/backend.c
drivers/char/agp/backend.c
+3
-3
drivers/char/agp/efficeon-agp.c
drivers/char/agp/efficeon-agp.c
+1
-1
drivers/char/agp/generic.c
drivers/char/agp/generic.c
+11
-25
drivers/char/agp/hp-agp.c
drivers/char/agp/hp-agp.c
+2
-2
drivers/char/agp/i460-agp.c
drivers/char/agp/i460-agp.c
+2
-2
drivers/char/agp/intel-agp.c
drivers/char/agp/intel-agp.c
+16
-5
drivers/char/agp/sgi-agp.c
drivers/char/agp/sgi-agp.c
+9
-3
drivers/char/agp/sworks-agp.c
drivers/char/agp/sworks-agp.c
+4
-4
drivers/char/agp/uninorth-agp.c
drivers/char/agp/uninorth-agp.c
+1
-1
include/asm-alpha/agp.h
include/asm-alpha/agp.h
+10
-0
include/asm-i386/agp.h
include/asm-i386/agp.h
+10
-0
include/asm-ia64/agp.h
include/asm-ia64/agp.h
+10
-0
include/asm-ppc/agp.h
include/asm-ppc/agp.h
+10
-0
include/asm-ppc64/agp.h
include/asm-ppc64/agp.h
+10
-0
include/asm-sparc64/agp.h
include/asm-sparc64/agp.h
+10
-0
include/asm-x86_64/agp.h
include/asm-x86_64/agp.h
+10
-0
include/linux/pci_ids.h
include/linux/pci_ids.h
+2
-0
未找到文件。
drivers/char/agp/agp.h
浏览文件 @
eba4f669
...
...
@@ -278,6 +278,8 @@ void agp3_generic_cleanup(void);
#define AGP_GENERIC_SIZES_ENTRIES 11
extern
struct
aper_size_info_16
agp3_generic_sizes
[];
#define virt_to_gart(x) (phys_to_gart(virt_to_phys(x)))
#define gart_to_virt(x) (phys_to_virt(gart_to_phys(x)))
extern
int
agp_off
;
extern
int
agp_try_unsupported_boot
;
...
...
drivers/char/agp/ali-agp.c
浏览文件 @
eba4f669
...
...
@@ -150,7 +150,7 @@ static void *m1541_alloc_page(struct agp_bridge_data *bridge)
pci_read_config_dword
(
agp_bridge
->
dev
,
ALI_CACHE_FLUSH_CTRL
,
&
temp
);
pci_write_config_dword
(
agp_bridge
->
dev
,
ALI_CACHE_FLUSH_CTRL
,
(((
temp
&
ALI_CACHE_FLUSH_ADDR_MASK
)
|
virt_to_
phys
(
addr
))
|
ALI_CACHE_FLUSH_EN
));
virt_to_
gart
(
addr
))
|
ALI_CACHE_FLUSH_EN
));
return
addr
;
}
...
...
@@ -174,7 +174,7 @@ static void m1541_destroy_page(void * addr)
pci_read_config_dword
(
agp_bridge
->
dev
,
ALI_CACHE_FLUSH_CTRL
,
&
temp
);
pci_write_config_dword
(
agp_bridge
->
dev
,
ALI_CACHE_FLUSH_CTRL
,
(((
temp
&
ALI_CACHE_FLUSH_ADDR_MASK
)
|
virt_to_
phys
(
addr
))
|
ALI_CACHE_FLUSH_EN
));
virt_to_
gart
(
addr
))
|
ALI_CACHE_FLUSH_EN
));
agp_generic_destroy_page
(
addr
);
}
...
...
drivers/char/agp/amd-k7-agp.c
浏览文件 @
eba4f669
...
...
@@ -43,7 +43,7 @@ static int amd_create_page_map(struct amd_page_map *page_map)
SetPageReserved
(
virt_to_page
(
page_map
->
real
));
global_cache_flush
();
page_map
->
remapped
=
ioremap_nocache
(
virt_to_
phys
(
page_map
->
real
),
page_map
->
remapped
=
ioremap_nocache
(
virt_to_
gart
(
page_map
->
real
),
PAGE_SIZE
);
if
(
page_map
->
remapped
==
NULL
)
{
ClearPageReserved
(
virt_to_page
(
page_map
->
real
));
...
...
@@ -154,7 +154,7 @@ static int amd_create_gatt_table(struct agp_bridge_data *bridge)
agp_bridge
->
gatt_table_real
=
(
u32
*
)
page_dir
.
real
;
agp_bridge
->
gatt_table
=
(
u32
__iomem
*
)
page_dir
.
remapped
;
agp_bridge
->
gatt_bus_addr
=
virt_to_
phys
(
page_dir
.
real
);
agp_bridge
->
gatt_bus_addr
=
virt_to_
gart
(
page_dir
.
real
);
/* Get the address for the gart region.
* This is a bus address even on the alpha, b/c its
...
...
@@ -167,7 +167,7 @@ static int amd_create_gatt_table(struct agp_bridge_data *bridge)
/* Calculate the agp offset */
for
(
i
=
0
;
i
<
value
->
num_entries
/
1024
;
i
++
,
addr
+=
0x00400000
)
{
writel
(
virt_to_
phys
(
amd_irongate_private
.
gatt_pages
[
i
]
->
real
)
|
1
,
writel
(
virt_to_
gart
(
amd_irongate_private
.
gatt_pages
[
i
]
->
real
)
|
1
,
page_dir
.
remapped
+
GET_PAGE_DIR_OFF
(
addr
));
readl
(
page_dir
.
remapped
+
GET_PAGE_DIR_OFF
(
addr
));
/* PCI Posting. */
}
...
...
drivers/char/agp/amd64-agp.c
浏览文件 @
eba4f669
...
...
@@ -219,7 +219,7 @@ static struct aper_size_info_32 amd_8151_sizes[7] =
static
int
amd_8151_configure
(
void
)
{
unsigned
long
gatt_bus
=
virt_to_
phys
(
agp_bridge
->
gatt_table_real
);
unsigned
long
gatt_bus
=
virt_to_
gart
(
agp_bridge
->
gatt_table_real
);
/* Configure AGP regs in each x86-64 host bridge. */
for_each_nb
()
{
...
...
@@ -591,7 +591,7 @@ static void __devexit agp_amd64_remove(struct pci_dev *pdev)
{
struct
agp_bridge_data
*
bridge
=
pci_get_drvdata
(
pdev
);
release_mem_region
(
virt_to_
phys
(
bridge
->
gatt_table_real
),
release_mem_region
(
virt_to_
gart
(
bridge
->
gatt_table_real
),
amd64_aperture_sizes
[
bridge
->
aperture_size_idx
].
size
);
agp_remove_bridge
(
bridge
);
agp_put_bridge
(
bridge
);
...
...
drivers/char/agp/ati-agp.c
浏览文件 @
eba4f669
...
...
@@ -61,7 +61,7 @@ static int ati_create_page_map(ati_page_map *page_map)
SetPageReserved
(
virt_to_page
(
page_map
->
real
));
err
=
map_page_into_agp
(
virt_to_page
(
page_map
->
real
));
page_map
->
remapped
=
ioremap_nocache
(
virt_to_
phys
(
page_map
->
real
),
page_map
->
remapped
=
ioremap_nocache
(
virt_to_
gart
(
page_map
->
real
),
PAGE_SIZE
);
if
(
page_map
->
remapped
==
NULL
||
err
)
{
ClearPageReserved
(
virt_to_page
(
page_map
->
real
));
...
...
@@ -343,7 +343,7 @@ static int ati_create_gatt_table(struct agp_bridge_data *bridge)
agp_bridge
->
gatt_table_real
=
(
u32
*
)
page_dir
.
real
;
agp_bridge
->
gatt_table
=
(
u32
__iomem
*
)
page_dir
.
remapped
;
agp_bridge
->
gatt_bus_addr
=
virt_to_
bus
(
page_dir
.
real
);
agp_bridge
->
gatt_bus_addr
=
virt_to_
gart
(
page_dir
.
real
);
/* Write out the size register */
current_size
=
A_SIZE_LVL2
(
agp_bridge
->
current_size
);
...
...
@@ -373,7 +373,7 @@ static int ati_create_gatt_table(struct agp_bridge_data *bridge)
/* Calculate the agp offset */
for
(
i
=
0
;
i
<
value
->
num_entries
/
1024
;
i
++
,
addr
+=
0x00400000
)
{
writel
(
virt_to_
bus
(
ati_generic_private
.
gatt_pages
[
i
]
->
real
)
|
1
,
writel
(
virt_to_
gart
(
ati_generic_private
.
gatt_pages
[
i
]
->
real
)
|
1
,
page_dir
.
remapped
+
GET_PAGE_DIR_OFF
(
addr
));
readl
(
page_dir
.
remapped
+
GET_PAGE_DIR_OFF
(
addr
));
/* PCI Posting. */
}
...
...
drivers/char/agp/backend.c
浏览文件 @
eba4f669
...
...
@@ -148,7 +148,7 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
return
-
ENOMEM
;
}
bridge
->
scratch_page_real
=
virt_to_
phys
(
addr
);
bridge
->
scratch_page_real
=
virt_to_
gart
(
addr
);
bridge
->
scratch_page
=
bridge
->
driver
->
mask_memory
(
bridge
,
bridge
->
scratch_page_real
,
0
);
}
...
...
@@ -189,7 +189,7 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)
err_out:
if
(
bridge
->
driver
->
needs_scratch_page
)
bridge
->
driver
->
agp_destroy_page
(
phys
_to_virt
(
bridge
->
scratch_page_real
));
gart
_to_virt
(
bridge
->
scratch_page_real
));
if
(
got_gatt
)
bridge
->
driver
->
free_gatt_table
(
bridge
);
if
(
got_keylist
)
{
...
...
@@ -214,7 +214,7 @@ static void agp_backend_cleanup(struct agp_bridge_data *bridge)
if
(
bridge
->
driver
->
agp_destroy_page
&&
bridge
->
driver
->
needs_scratch_page
)
bridge
->
driver
->
agp_destroy_page
(
phys
_to_virt
(
bridge
->
scratch_page_real
));
gart
_to_virt
(
bridge
->
scratch_page_real
));
}
/* When we remove the global variable agp_bridge from all drivers
...
...
drivers/char/agp/efficeon-agp.c
浏览文件 @
eba4f669
...
...
@@ -219,7 +219,7 @@ static int efficeon_create_gatt_table(struct agp_bridge_data *bridge)
efficeon_private
.
l1_table
[
index
]
=
page
;
value
=
__pa
(
page
)
|
pati
|
present
|
index
;
value
=
virt_to_gart
(
page
)
|
pati
|
present
|
index
;
pci_write_config_dword
(
agp_bridge
->
dev
,
EFFICEON_ATTPAGE
,
value
);
...
...
drivers/char/agp/generic.c
浏览文件 @
eba4f669
...
...
@@ -153,7 +153,7 @@ void agp_free_memory(struct agp_memory *curr)
}
if
(
curr
->
page_count
!=
0
)
{
for
(
i
=
0
;
i
<
curr
->
page_count
;
i
++
)
{
curr
->
bridge
->
driver
->
agp_destroy_page
(
phys
_to_virt
(
curr
->
memory
[
i
]));
curr
->
bridge
->
driver
->
agp_destroy_page
(
gart
_to_virt
(
curr
->
memory
[
i
]));
}
}
agp_free_key
(
curr
->
key
);
...
...
@@ -209,7 +209,7 @@ struct agp_memory *agp_allocate_memory(struct agp_bridge_data *bridge,
agp_free_memory
(
new
);
return
NULL
;
}
new
->
memory
[
i
]
=
virt_to_
phys
(
addr
);
new
->
memory
[
i
]
=
virt_to_
gart
(
addr
);
new
->
page_count
++
;
}
new
->
bridge
=
bridge
;
...
...
@@ -295,19 +295,6 @@ int agp_num_entries(void)
EXPORT_SYMBOL_GPL
(
agp_num_entries
);
static
int
check_bridge_mode
(
struct
pci_dev
*
dev
)
{
u32
agp3
;
u8
cap_ptr
;
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
pci_read_config_dword
(
dev
,
cap_ptr
+
AGPSTAT
,
&
agp3
);
if
(
agp3
&
AGPSTAT_MODE_3_0
)
return
1
;
return
0
;
}
/**
* agp_copy_info - copy bridge state information
*
...
...
@@ -328,7 +315,7 @@ int agp_copy_info(struct agp_bridge_data *bridge, struct agp_kern_info *info)
info
->
version
.
minor
=
bridge
->
version
->
minor
;
info
->
chipset
=
SUPPORTED
;
info
->
device
=
bridge
->
dev
;
if
(
check_bridge_mode
(
bridge
->
dev
)
)
if
(
bridge
->
mode
&
AGPSTAT_MODE_3_0
)
info
->
mode
=
bridge
->
mode
&
~
AGP3_RESERVED_MASK
;
else
info
->
mode
=
bridge
->
mode
&
~
AGP2_RESERVED_MASK
;
...
...
@@ -661,7 +648,7 @@ u32 agp_collect_device_status(struct agp_bridge_data *bridge, u32 requested_mode
bridge_agpstat
&=
~
AGPSTAT_FW
;
/* Check to see if we are operating in 3.0 mode */
if
(
check_bridge_mode
(
agp_bridge
->
dev
)
)
if
(
agp_bridge
->
mode
&
AGPSTAT_MODE_3_0
)
agp_v3_parse_one
(
&
requested_mode
,
&
bridge_agpstat
,
&
vga_agpstat
);
else
agp_v2_parse_one
(
&
requested_mode
,
&
bridge_agpstat
,
&
vga_agpstat
);
...
...
@@ -732,7 +719,7 @@ void agp_generic_enable(struct agp_bridge_data *bridge, u32 requested_mode)
/* Do AGP version specific frobbing. */
if
(
bridge
->
major_version
>=
3
)
{
if
(
check_bridge_mode
(
bridge
->
dev
)
)
{
if
(
bridge
->
mode
&
AGPSTAT_MODE_3_0
)
{
/* If we have 3.5, we can do the isoch stuff. */
if
(
bridge
->
minor_version
>=
5
)
agp_3_5_enable
(
bridge
);
...
...
@@ -806,8 +793,7 @@ int agp_generic_create_gatt_table(struct agp_bridge_data *bridge)
break
;
}
table
=
(
char
*
)
__get_free_pages
(
GFP_KERNEL
,
page_order
);
table
=
alloc_gatt_pages
(
page_order
);
if
(
table
==
NULL
)
{
i
++
;
...
...
@@ -838,7 +824,7 @@ int agp_generic_create_gatt_table(struct agp_bridge_data *bridge)
size
=
((
struct
aper_size_info_fixed
*
)
temp
)
->
size
;
page_order
=
((
struct
aper_size_info_fixed
*
)
temp
)
->
page_order
;
num_entries
=
((
struct
aper_size_info_fixed
*
)
temp
)
->
num_entries
;
table
=
(
char
*
)
__get_free_pages
(
GFP_KERNEL
,
page_order
);
table
=
alloc_gatt_pages
(
page_order
);
}
if
(
table
==
NULL
)
...
...
@@ -853,7 +839,7 @@ int agp_generic_create_gatt_table(struct agp_bridge_data *bridge)
agp_gatt_table
=
(
void
*
)
table
;
bridge
->
driver
->
cache_flush
();
bridge
->
gatt_table
=
ioremap_nocache
(
virt_to_
phys
(
table
),
bridge
->
gatt_table
=
ioremap_nocache
(
virt_to_
gart
(
table
),
(
PAGE_SIZE
*
(
1
<<
page_order
)));
bridge
->
driver
->
cache_flush
();
...
...
@@ -861,11 +847,11 @@ int agp_generic_create_gatt_table(struct agp_bridge_data *bridge)
for
(
page
=
virt_to_page
(
table
);
page
<=
virt_to_page
(
table_end
);
page
++
)
ClearPageReserved
(
page
);
free_
pages
((
unsigned
long
)
table
,
page_order
);
free_
gatt_pages
(
table
,
page_order
);
return
-
ENOMEM
;
}
bridge
->
gatt_bus_addr
=
virt_to_
phys
(
bridge
->
gatt_table_real
);
bridge
->
gatt_bus_addr
=
virt_to_
gart
(
bridge
->
gatt_table_real
);
/* AK: bogus, should encode addresses > 4GB */
for
(
i
=
0
;
i
<
num_entries
;
i
++
)
{
...
...
@@ -919,7 +905,7 @@ int agp_generic_free_gatt_table(struct agp_bridge_data *bridge)
for
(
page
=
virt_to_page
(
table
);
page
<=
virt_to_page
(
table_end
);
page
++
)
ClearPageReserved
(
page
);
free_
pages
((
unsigned
long
)
bridge
->
gatt_table_real
,
page_order
);
free_
gatt_pages
(
bridge
->
gatt_table_real
,
page_order
);
agp_gatt_table
=
NULL
;
bridge
->
gatt_table
=
NULL
;
...
...
drivers/char/agp/hp-agp.c
浏览文件 @
eba4f669
...
...
@@ -110,7 +110,7 @@ static int __init hp_zx1_ioc_shared(void)
hp
->
gart_size
=
HP_ZX1_GART_SIZE
;
hp
->
gatt_entries
=
hp
->
gart_size
/
hp
->
io_page_size
;
hp
->
io_pdir
=
phys
_to_virt
(
readq
(
hp
->
ioc_regs
+
HP_ZX1_PDIR_BASE
));
hp
->
io_pdir
=
gart
_to_virt
(
readq
(
hp
->
ioc_regs
+
HP_ZX1_PDIR_BASE
));
hp
->
gatt
=
&
hp
->
io_pdir
[
HP_ZX1_IOVA_TO_PDIR
(
hp
->
gart_base
)];
if
(
hp
->
gatt
[
0
]
!=
HP_ZX1_SBA_IOMMU_COOKIE
)
{
...
...
@@ -248,7 +248,7 @@ hp_zx1_configure (void)
agp_bridge
->
mode
=
readl
(
hp
->
lba_regs
+
hp
->
lba_cap_offset
+
PCI_AGP_STATUS
);
if
(
hp
->
io_pdir_owner
)
{
writel
(
virt_to_
phys
(
hp
->
io_pdir
),
hp
->
ioc_regs
+
HP_ZX1_PDIR_BASE
);
writel
(
virt_to_
gart
(
hp
->
io_pdir
),
hp
->
ioc_regs
+
HP_ZX1_PDIR_BASE
);
readl
(
hp
->
ioc_regs
+
HP_ZX1_PDIR_BASE
);
writel
(
hp
->
io_tlb_ps
,
hp
->
ioc_regs
+
HP_ZX1_TCNFG
);
readl
(
hp
->
ioc_regs
+
HP_ZX1_TCNFG
);
...
...
drivers/char/agp/i460-agp.c
浏览文件 @
eba4f669
...
...
@@ -372,7 +372,7 @@ static int i460_alloc_large_page (struct lp_desc *lp)
}
memset
(
lp
->
alloced_map
,
0
,
map_size
);
lp
->
paddr
=
virt_to_
phys
(
lpage
);
lp
->
paddr
=
virt_to_
gart
(
lpage
);
lp
->
refcount
=
0
;
atomic_add
(
I460_KPAGES_PER_IOPAGE
,
&
agp_bridge
->
current_memory_agp
);
return
0
;
...
...
@@ -383,7 +383,7 @@ static void i460_free_large_page (struct lp_desc *lp)
kfree
(
lp
->
alloced_map
);
lp
->
alloced_map
=
NULL
;
free_pages
((
unsigned
long
)
phys
_to_virt
(
lp
->
paddr
),
I460_IO_PAGE_SHIFT
-
PAGE_SHIFT
);
free_pages
((
unsigned
long
)
gart
_to_virt
(
lp
->
paddr
),
I460_IO_PAGE_SHIFT
-
PAGE_SHIFT
);
atomic_sub
(
I460_KPAGES_PER_IOPAGE
,
&
agp_bridge
->
current_memory_agp
);
}
...
...
drivers/char/agp/intel-agp.c
浏览文件 @
eba4f669
...
...
@@ -286,7 +286,7 @@ static struct agp_memory *alloc_agpphysmem_i8xx(size_t pg_count, int type)
if
(
new
==
NULL
)
return
NULL
;
new
->
memory
[
0
]
=
virt_to_
phys
(
addr
);
new
->
memory
[
0
]
=
virt_to_
gart
(
addr
);
if
(
pg_count
==
4
)
{
/* kludge to get 4 physical pages for ARGB cursor */
new
->
memory
[
1
]
=
new
->
memory
[
0
]
+
PAGE_SIZE
;
...
...
@@ -329,10 +329,10 @@ static void intel_i810_free_by_type(struct agp_memory *curr)
agp_free_key
(
curr
->
key
);
if
(
curr
->
type
==
AGP_PHYS_MEMORY
)
{
if
(
curr
->
page_count
==
4
)
i8xx_destroy_pages
(
phys
_to_virt
(
curr
->
memory
[
0
]));
i8xx_destroy_pages
(
gart
_to_virt
(
curr
->
memory
[
0
]));
else
agp_bridge
->
driver
->
agp_destroy_page
(
phys
_to_virt
(
curr
->
memory
[
0
]));
gart
_to_virt
(
curr
->
memory
[
0
]));
vfree
(
curr
->
memory
);
}
kfree
(
curr
);
...
...
@@ -418,7 +418,8 @@ static void intel_i830_init_gtt_entries(void)
case
I915_GMCH_GMS_STOLEN_48M
:
/* Check it's really I915G */
if
(
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915G_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915GM_HB
)
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915GM_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82945G_HB
)
gtt_entries
=
MB
(
48
)
-
KB
(
size
);
else
gtt_entries
=
0
;
...
...
@@ -426,7 +427,8 @@ static void intel_i830_init_gtt_entries(void)
case
I915_GMCH_GMS_STOLEN_64M
:
/* Check it's really I915G */
if
(
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915G_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915GM_HB
)
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82915GM_HB
||
agp_bridge
->
dev
->
device
==
PCI_DEVICE_ID_INTEL_82945G_HB
)
gtt_entries
=
MB
(
64
)
-
KB
(
size
);
else
gtt_entries
=
0
;
...
...
@@ -1662,6 +1664,14 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
}
name
=
"915GM"
;
break
;
case
PCI_DEVICE_ID_INTEL_82945G_HB
:
if
(
find_i830
(
PCI_DEVICE_ID_INTEL_82945G_IG
))
{
bridge
->
driver
=
&
intel_915_driver
;
}
else
{
bridge
->
driver
=
&
intel_845_driver
;
}
name
=
"945G"
;
break
;
case
PCI_DEVICE_ID_INTEL_7505_0
:
bridge
->
driver
=
&
intel_7505_driver
;
name
=
"E7505"
;
...
...
@@ -1801,6 +1811,7 @@ static struct pci_device_id agp_intel_pci_table[] = {
ID
(
PCI_DEVICE_ID_INTEL_7205_0
),
ID
(
PCI_DEVICE_ID_INTEL_82915G_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82915GM_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82945G_HB
),
{
}
};
...
...
drivers/char/agp/sgi-agp.c
浏览文件 @
eba4f669
...
...
@@ -133,11 +133,14 @@ static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start,
off_t
j
;
void
*
temp
;
struct
agp_bridge_data
*
bridge
;
u64
*
table
;
bridge
=
mem
->
bridge
;
if
(
!
bridge
)
return
-
EINVAL
;
table
=
(
u64
*
)
bridge
->
gatt_table
;
temp
=
bridge
->
current_size
;
switch
(
bridge
->
driver
->
size_type
)
{
...
...
@@ -175,7 +178,7 @@ static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start,
j
=
pg_start
;
while
(
j
<
(
pg_start
+
mem
->
page_count
))
{
if
(
*
(
bridge
->
gatt_table
+
j
)
)
if
(
table
[
j
]
)
return
-
EBUSY
;
j
++
;
}
...
...
@@ -186,7 +189,7 @@ static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start,
}
for
(
i
=
0
,
j
=
pg_start
;
i
<
mem
->
page_count
;
i
++
,
j
++
)
{
*
(
bridge
->
gatt_table
+
j
)
=
table
[
j
]
=
bridge
->
driver
->
mask_memory
(
bridge
,
mem
->
memory
[
i
],
mem
->
type
);
}
...
...
@@ -200,6 +203,7 @@ static int sgi_tioca_remove_memory(struct agp_memory *mem, off_t pg_start,
{
size_t
i
;
struct
agp_bridge_data
*
bridge
;
u64
*
table
;
bridge
=
mem
->
bridge
;
if
(
!
bridge
)
...
...
@@ -209,8 +213,10 @@ static int sgi_tioca_remove_memory(struct agp_memory *mem, off_t pg_start,
return
-
EINVAL
;
}
table
=
(
u64
*
)
bridge
->
gatt_table
;
for
(
i
=
pg_start
;
i
<
(
mem
->
page_count
+
pg_start
);
i
++
)
{
*
(
bridge
->
gatt_table
+
i
)
=
0
;
table
[
i
]
=
0
;
}
bridge
->
driver
->
tlb_flush
(
mem
);
...
...
drivers/char/agp/sworks-agp.c
浏览文件 @
eba4f669
...
...
@@ -51,7 +51,7 @@ static int serverworks_create_page_map(struct serverworks_page_map *page_map)
}
SetPageReserved
(
virt_to_page
(
page_map
->
real
));
global_cache_flush
();
page_map
->
remapped
=
ioremap_nocache
(
virt_to_
phys
(
page_map
->
real
),
page_map
->
remapped
=
ioremap_nocache
(
virt_to_
gart
(
page_map
->
real
),
PAGE_SIZE
);
if
(
page_map
->
remapped
==
NULL
)
{
ClearPageReserved
(
virt_to_page
(
page_map
->
real
));
...
...
@@ -162,7 +162,7 @@ static int serverworks_create_gatt_table(struct agp_bridge_data *bridge)
/* Create a fake scratch directory */
for
(
i
=
0
;
i
<
1024
;
i
++
)
{
writel
(
agp_bridge
->
scratch_page
,
serverworks_private
.
scratch_dir
.
remapped
+
i
);
writel
(
virt_to_
phys
(
serverworks_private
.
scratch_dir
.
real
)
|
1
,
page_dir
.
remapped
+
i
);
writel
(
virt_to_
gart
(
serverworks_private
.
scratch_dir
.
real
)
|
1
,
page_dir
.
remapped
+
i
);
}
retval
=
serverworks_create_gatt_pages
(
value
->
num_entries
/
1024
);
...
...
@@ -174,7 +174,7 @@ static int serverworks_create_gatt_table(struct agp_bridge_data *bridge)
agp_bridge
->
gatt_table_real
=
(
u32
*
)
page_dir
.
real
;
agp_bridge
->
gatt_table
=
(
u32
__iomem
*
)
page_dir
.
remapped
;
agp_bridge
->
gatt_bus_addr
=
virt_to_
phys
(
page_dir
.
real
);
agp_bridge
->
gatt_bus_addr
=
virt_to_
gart
(
page_dir
.
real
);
/* Get the address for the gart region.
* This is a bus address even on the alpha, b/c its
...
...
@@ -187,7 +187,7 @@ static int serverworks_create_gatt_table(struct agp_bridge_data *bridge)
/* Calculate the agp offset */
for
(
i
=
0
;
i
<
value
->
num_entries
/
1024
;
i
++
)
writel
(
virt_to_
phys
(
serverworks_private
.
gatt_pages
[
i
]
->
real
)
|
1
,
page_dir
.
remapped
+
i
);
writel
(
virt_to_
gart
(
serverworks_private
.
gatt_pages
[
i
]
->
real
)
|
1
,
page_dir
.
remapped
+
i
);
return
0
;
}
...
...
drivers/char/agp/uninorth-agp.c
浏览文件 @
eba4f669
...
...
@@ -407,7 +407,7 @@ static int uninorth_create_gatt_table(struct agp_bridge_data *bridge)
bridge
->
gatt_table_real
=
(
u32
*
)
table
;
bridge
->
gatt_table
=
(
u32
*
)
table
;
bridge
->
gatt_bus_addr
=
virt_to_
phys
(
table
);
bridge
->
gatt_bus_addr
=
virt_to_
gart
(
table
);
for
(
i
=
0
;
i
<
num_entries
;
i
++
)
bridge
->
gatt_table
[
i
]
=
0
;
...
...
include/asm-alpha/agp.h
浏览文件 @
eba4f669
...
...
@@ -10,4 +10,14 @@
#define flush_agp_mappings()
#define flush_agp_cache() mb()
/* Convert a physical address to an address suitable for the GART. */
#define phys_to_gart(x) (x)
#define gart_to_phys(x) (x)
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
#define alloc_gatt_pages(order) \
((char *)__get_free_pages(GFP_KERNEL, (order)))
#define free_gatt_pages(table, order) \
free_pages((unsigned long)(table), (order))
#endif
include/asm-i386/agp.h
浏览文件 @
eba4f669
...
...
@@ -21,4 +21,14 @@ int unmap_page_from_agp(struct page *page);
worth it. Would need a page for it. */
#define flush_agp_cache() asm volatile("wbinvd":::"memory")
/* Convert a physical address to an address suitable for the GART. */
#define phys_to_gart(x) (x)
#define gart_to_phys(x) (x)
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
#define alloc_gatt_pages(order) \
((char *)__get_free_pages(GFP_KERNEL, (order)))
#define free_gatt_pages(table, order) \
free_pages((unsigned long)(table), (order))
#endif
include/asm-ia64/agp.h
浏览文件 @
eba4f669
...
...
@@ -18,4 +18,14 @@
#define flush_agp_mappings()
/* nothing */
#define flush_agp_cache() mb()
/* Convert a physical address to an address suitable for the GART. */
#define phys_to_gart(x) (x)
#define gart_to_phys(x) (x)
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
#define alloc_gatt_pages(order) \
((char *)__get_free_pages(GFP_KERNEL, (order)))
#define free_gatt_pages(table, order) \
free_pages((unsigned long)(table), (order))
#endif
/* _ASM_IA64_AGP_H */
include/asm-ppc/agp.h
浏览文件 @
eba4f669
...
...
@@ -10,4 +10,14 @@
#define flush_agp_mappings()
#define flush_agp_cache() mb()
/* Convert a physical address to an address suitable for the GART. */
#define phys_to_gart(x) (x)
#define gart_to_phys(x) (x)
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
#define alloc_gatt_pages(order) \
((char *)__get_free_pages(GFP_KERNEL, (order)))
#define free_gatt_pages(table, order) \
free_pages((unsigned long)(table), (order))
#endif
include/asm-ppc64/agp.h
浏览文件 @
eba4f669
...
...
@@ -10,4 +10,14 @@
#define flush_agp_mappings()
#define flush_agp_cache() mb()
/* Convert a physical address to an address suitable for the GART. */
#define phys_to_gart(x) (x)
#define gart_to_phys(x) (x)
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
#define alloc_gatt_pages(order) \
((char *)__get_free_pages(GFP_KERNEL, (order)))
#define free_gatt_pages(table, order) \
free_pages((unsigned long)(table), (order))
#endif
include/asm-sparc64/agp.h
浏览文件 @
eba4f669
...
...
@@ -8,4 +8,14 @@
#define flush_agp_mappings()
#define flush_agp_cache() mb()
/* Convert a physical address to an address suitable for the GART. */
#define phys_to_gart(x) (x)
#define gart_to_phys(x) (x)
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
#define alloc_gatt_pages(order) \
((char *)__get_free_pages(GFP_KERNEL, (order)))
#define free_gatt_pages(table, order) \
free_pages((unsigned long)(table), (order))
#endif
include/asm-x86_64/agp.h
浏览文件 @
eba4f669
...
...
@@ -19,4 +19,14 @@ int unmap_page_from_agp(struct page *page);
worth it. Would need a page for it. */
#define flush_agp_cache() asm volatile("wbinvd":::"memory")
/* Convert a physical address to an address suitable for the GART. */
#define phys_to_gart(x) (x)
#define gart_to_phys(x) (x)
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
#define alloc_gatt_pages(order) \
((char *)__get_free_pages(GFP_KERNEL, (order)))
#define free_gatt_pages(table, order) \
free_pages((unsigned long)(table), (order))
#endif
include/linux/pci_ids.h
浏览文件 @
eba4f669
...
...
@@ -2382,6 +2382,8 @@
#define PCI_DEVICE_ID_INTEL_82915G_IG 0x2582
#define PCI_DEVICE_ID_INTEL_82915GM_HB 0x2590
#define PCI_DEVICE_ID_INTEL_82915GM_IG 0x2592
#define PCI_DEVICE_ID_INTEL_82945G_HB 0x2770
#define PCI_DEVICE_ID_INTEL_82945G_IG 0x2772
#define PCI_DEVICE_ID_INTEL_ICH6_0 0x2640
#define PCI_DEVICE_ID_INTEL_ICH6_1 0x2641
#define PCI_DEVICE_ID_INTEL_ICH6_2 0x2642
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录