Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
2f519c6e
Commit
2f519c6e
authored
Sep 18, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linux-dj.bkbits.net/agpgart
into laptop.osdl.org:/home/torvalds/v2.5/linux
parents
3ad142f9
e2c8fd94
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
41 additions
and
37 deletions
+41
-37
arch/x86_64/kernel/pci-gart.c
arch/x86_64/kernel/pci-gart.c
+0
-1
drivers/char/agp/Kconfig
drivers/char/agp/Kconfig
+2
-2
drivers/char/agp/alpha-agp.c
drivers/char/agp/alpha-agp.c
+1
-1
drivers/char/agp/amd64-agp.c
drivers/char/agp/amd64-agp.c
+14
-13
drivers/char/agp/ati-agp.c
drivers/char/agp/ati-agp.c
+1
-3
drivers/char/agp/backend.c
drivers/char/agp/backend.c
+1
-1
drivers/char/agp/hp-agp.c
drivers/char/agp/hp-agp.c
+20
-14
drivers/char/agp/intel-agp.c
drivers/char/agp/intel-agp.c
+1
-1
drivers/char/agp/nvidia-agp.c
drivers/char/agp/nvidia-agp.c
+1
-1
No files found.
arch/x86_64/kernel/pci-gart.c
View file @
2f519c6e
...
@@ -76,7 +76,6 @@ static u32 northbridge_flush_word[NR_CPUS + 1];
...
@@ -76,7 +76,6 @@ static u32 northbridge_flush_word[NR_CPUS + 1];
#define EMERGENCY_PAGES 32
/* = 128KB */
#define EMERGENCY_PAGES 32
/* = 128KB */
#ifdef CONFIG_AGP
#ifdef CONFIG_AGP
extern
int
agp_init
(
void
);
#define AGPEXTERN extern
#define AGPEXTERN extern
#else
#else
#define AGPEXTERN
#define AGPEXTERN
...
...
drivers/char/agp/Kconfig
View file @
2f519c6e
...
@@ -80,8 +80,8 @@ config AGP_INTEL
...
@@ -80,8 +80,8 @@ config AGP_INTEL
tristate "Intel 440LX/BX/GX, I8xx and E7x05 chipset support"
tristate "Intel 440LX/BX/GX, I8xx and E7x05 chipset support"
depends on AGP && X86 && !X86_64
depends on AGP && X86 && !X86_64
help
help
This option gives you AGP support for the GLX component of
This option gives you AGP support for the GLX component of
XFree86 4.x
XFree86 4.x on Intel 440LX/BX/GX, 815, 820, 830, 840, 845, 850, 860
on Intel 440LX/BX/GX, 815, 820, 830, 840, 845, 850, 860, 875,
E7205 and E7505 chipsets and full support for the 810, 815, 830M, 845G,
E7205 and E7505 chipsets and full support for the 810, 815, 830M, 845G,
852GM, 855GM and 865G integrated graphics chipsets.
852GM, 855GM and 865G integrated graphics chipsets.
...
...
drivers/char/agp/alpha-agp.c
View file @
2f519c6e
...
@@ -183,7 +183,7 @@ alpha_core_agp_setup(void)
...
@@ -183,7 +183,7 @@ alpha_core_agp_setup(void)
alpha_bridge
->
dev
=
pdev
;
alpha_bridge
->
dev
=
pdev
;
alpha_bridge
->
mode
=
agp
->
capability
.
lw
;
alpha_bridge
->
mode
=
agp
->
capability
.
lw
;
printk
(
KERN_INFO
"Detected AGP on hose %d
\n
"
,
agp
->
hose
->
index
);
printk
(
KERN_INFO
PFX
"Detected AGP on hose %d
\n
"
,
agp
->
hose
->
index
);
return
agp_add_bridge
(
alpha_bridge
);
return
agp_add_bridge
(
alpha_bridge
);
fail:
fail:
...
...
drivers/char/agp/amd64-agp.c
View file @
2f519c6e
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
* work is done in the northbridge(s).
* work is done in the northbridge(s).
*/
*/
#include <linux/config.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/pci.h>
#include <linux/init.h>
#include <linux/init.h>
...
@@ -252,15 +253,15 @@ static int __init aperture_valid(u64 aper, u32 size)
...
@@ -252,15 +253,15 @@ static int __init aperture_valid(u64 aper, u32 size)
static
int
not_first_call
;
static
int
not_first_call
;
u32
pfn
,
c
;
u32
pfn
,
c
;
if
(
aper
==
0
)
{
if
(
aper
==
0
)
{
printk
(
KERN_ERR
"No aperture
\n
"
);
printk
(
KERN_ERR
PFX
"No aperture
\n
"
);
return
0
;
return
0
;
}
}
if
(
size
<
32
*
1024
*
1024
)
{
if
(
size
<
32
*
1024
*
1024
)
{
printk
(
KERN_ERR
"Aperture too small (%d MB)
\n
"
,
size
>>
20
);
printk
(
KERN_ERR
PFX
"Aperture too small (%d MB)
\n
"
,
size
>>
20
);
return
0
;
return
0
;
}
}
if
(
aper
+
size
>
0xffffffff
)
{
if
(
aper
+
size
>
0xffffffff
)
{
printk
(
KERN_ERR
"Aperture out of bounds
\n
"
);
printk
(
KERN_ERR
PFX
"Aperture out of bounds
\n
"
);
return
0
;
return
0
;
}
}
pfn
=
aper
>>
PAGE_SHIFT
;
pfn
=
aper
>>
PAGE_SHIFT
;
...
@@ -268,7 +269,7 @@ static int __init aperture_valid(u64 aper, u32 size)
...
@@ -268,7 +269,7 @@ static int __init aperture_valid(u64 aper, u32 size)
if
(
!
pfn_valid
(
pfn
+
c
))
if
(
!
pfn_valid
(
pfn
+
c
))
break
;
break
;
if
(
!
PageReserved
(
pfn_to_page
(
pfn
+
c
)))
{
if
(
!
PageReserved
(
pfn_to_page
(
pfn
+
c
)))
{
printk
(
KERN_ERR
"Aperture pointing to RAM
\n
"
);
printk
(
KERN_ERR
PFX
"Aperture pointing to RAM
\n
"
);
return
0
;
return
0
;
}
}
}
}
...
@@ -279,7 +280,7 @@ static int __init aperture_valid(u64 aper, u32 size)
...
@@ -279,7 +280,7 @@ static int __init aperture_valid(u64 aper, u32 size)
Maybe better to use pci_assign_resource/pci_enable_device instead trusting
Maybe better to use pci_assign_resource/pci_enable_device instead trusting
the bridges? */
the bridges? */
if
(
!
not_first_call
&&
request_mem_region
(
aper
,
size
,
"aperture"
)
<
0
)
{
if
(
!
not_first_call
&&
request_mem_region
(
aper
,
size
,
"aperture"
)
<
0
)
{
printk
(
KERN_ERR
"Aperture conflicts with PCI mapping.
\n
"
);
printk
(
KERN_ERR
PFX
"Aperture conflicts with PCI mapping.
\n
"
);
return
0
;
return
0
;
}
}
...
@@ -328,7 +329,7 @@ static __init int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp,
...
@@ -328,7 +329,7 @@ static __init int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp,
pci_read_config_dword
(
agp
,
0x10
,
&
aper_low
);
pci_read_config_dword
(
agp
,
0x10
,
&
aper_low
);
pci_read_config_dword
(
agp
,
0x14
,
&
aper_hi
);
pci_read_config_dword
(
agp
,
0x14
,
&
aper_hi
);
aper
=
(
aper_low
&
~
((
1
<<
22
)
-
1
))
|
((
u64
)
aper_hi
<<
32
);
aper
=
(
aper_low
&
~
((
1
<<
22
)
-
1
))
|
((
u64
)
aper_hi
<<
32
);
printk
(
KERN_INFO
"Aperture from AGP @ %Lx size %u MB
\n
"
,
aper
,
32
<<
order
);
printk
(
KERN_INFO
PFX
"Aperture from AGP @ %Lx size %u MB
\n
"
,
aper
,
32
<<
order
);
if
(
order
<
0
||
!
aperture_valid
(
aper
,
(
32
*
1024
*
1024
)
<<
order
))
if
(
order
<
0
||
!
aperture_valid
(
aper
,
(
32
*
1024
*
1024
)
<<
order
))
return
-
1
;
return
-
1
;
...
@@ -347,17 +348,17 @@ static __init int cache_nbs (struct pci_dev *pdev, u32 cap_ptr)
...
@@ -347,17 +348,17 @@ static __init int cache_nbs (struct pci_dev *pdev, u32 cap_ptr)
while
((
loop_dev
=
pci_find_device
(
PCI_VENDOR_ID_AMD
,
0x1103
,
loop_dev
))
while
((
loop_dev
=
pci_find_device
(
PCI_VENDOR_ID_AMD
,
0x1103
,
loop_dev
))
!=
NULL
)
{
!=
NULL
)
{
if
(
fix_northbridge
(
loop_dev
,
pdev
,
cap_ptr
)
<
0
)
{
if
(
fix_northbridge
(
loop_dev
,
pdev
,
cap_ptr
)
<
0
)
{
printk
(
"No usable aperture found.
\n
"
);
printk
(
KERN_INFO
PFX
"No usable aperture found.
\n
"
);
#ifdef __x86_64__
#ifdef __x86_64__
/* should port this to i386 */
/* should port this to i386 */
printk
(
"Consider rebooting with iommu=memaper=2 to get a good aperture.
\n
"
);
printk
(
KERN_INFO
PFX
"Consider rebooting with iommu=memaper=2 to get a good aperture.
\n
"
);
#endif
#endif
return
-
1
;
return
-
1
;
}
}
hammers
[
i
++
]
=
loop_dev
;
hammers
[
i
++
]
=
loop_dev
;
nr_garts
=
i
;
nr_garts
=
i
;
if
(
i
==
MAX_HAMMER_GARTS
)
{
if
(
i
==
MAX_HAMMER_GARTS
)
{
printk
(
KERN_INFO
"Too many northbridges for AGP
\n
"
);
printk
(
KERN_INFO
PFX
"Too many northbridges for AGP
\n
"
);
return
-
1
;
return
-
1
;
}
}
}
}
...
@@ -495,14 +496,14 @@ int __init agp_amd64_init(void)
...
@@ -495,14 +496,14 @@ int __init agp_amd64_init(void)
int
err
=
0
;
int
err
=
0
;
if
(
agp_off
)
if
(
agp_off
)
return
-
EINVAL
;
return
-
EINVAL
;
if
(
pci_module_init
(
&
agp_amd64_pci_driver
)
==
0
)
{
if
(
pci_module_init
(
&
agp_amd64_pci_driver
)
>
0
)
{
struct
pci_dev
*
dev
;
struct
pci_dev
*
dev
;
if
(
!
agp_try_unsupported
&&
!
agp_try_unsupported_boot
)
{
if
(
!
agp_try_unsupported
&&
!
agp_try_unsupported_boot
)
{
printk
(
KERN_INFO
"No supported AGP bridge found.
\n
"
);
printk
(
KERN_INFO
PFX
"No supported AGP bridge found.
\n
"
);
#ifdef MODULE
#ifdef MODULE
printk
(
KERN_INFO
"You can try agp_try_unsupported=1
\n
"
);
printk
(
KERN_INFO
PFX
"You can try agp_try_unsupported=1
\n
"
);
#else
#else
printk
(
KERN_INFO
"You can boot with agp=try_unsupported
\n
"
);
printk
(
KERN_INFO
PFX
"You can boot with agp=try_unsupported
\n
"
);
#endif
#endif
return
-
ENODEV
;
return
-
ENODEV
;
}
}
...
...
drivers/char/agp/ati-agp.c
View file @
2f519c6e
...
@@ -214,7 +214,7 @@ static int ati_configure(void)
...
@@ -214,7 +214,7 @@ static int ati_configure(void)
/*
/*
pci_read_config_dword(agp_bridge.dev, AGP_APBASE, &temp);
pci_read_config_dword(agp_bridge.dev, AGP_APBASE, &temp);
agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
printk(KERN_INFO "IGP320 gart_bus_addr: %x\n", agp_bridge.gart_bus_addr);
printk(KERN_INFO
PFX
"IGP320 gart_bus_addr: %x\n", agp_bridge.gart_bus_addr);
*/
*/
OUTREG32
(
ati_generic_private
.
registers
,
ATI_GART_FEATURE_ID
,
0x60000
);
OUTREG32
(
ati_generic_private
.
registers
,
ATI_GART_FEATURE_ID
,
0x60000
);
...
@@ -226,8 +226,6 @@ static int ati_configure(void)
...
@@ -226,8 +226,6 @@ static int ati_configure(void)
OUTREG32
(
ati_generic_private
.
registers
,
ATI_GART_BASE
,
OUTREG32
(
ati_generic_private
.
registers
,
ATI_GART_BASE
,
agp_bridge
->
gatt_bus_addr
);
agp_bridge
->
gatt_bus_addr
);
/* Flush the tlb */
OUTREG32
(
ati_generic_private
.
registers
,
ATI_GART_CACHE_CNTRL
,
1
);
return
0
;
return
0
;
}
}
...
...
drivers/char/agp/backend.c
View file @
2f519c6e
...
@@ -26,7 +26,6 @@
...
@@ -26,7 +26,6 @@
* TODO:
* TODO:
* - Allocate more than order 0 pages to avoid too much linear map splitting.
* - Allocate more than order 0 pages to avoid too much linear map splitting.
*/
*/
#include <linux/config.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/pci.h>
#include <linux/init.h>
#include <linux/init.h>
...
@@ -34,6 +33,7 @@
...
@@ -34,6 +33,7 @@
#include <linux/miscdevice.h>
#include <linux/miscdevice.h>
#include <linux/pm.h>
#include <linux/pm.h>
#include <linux/agp_backend.h>
#include <linux/agp_backend.h>
#include <linux/agpgart.h>
#include <linux/vmalloc.h>
#include <linux/vmalloc.h>
#include <asm/io.h>
#include <asm/io.h>
#include "agp.h"
#include "agp.h"
...
...
drivers/char/agp/hp-agp.c
View file @
2f519c6e
...
@@ -42,6 +42,8 @@
...
@@ -42,6 +42,8 @@
/* AGP bridge need not be PCI device, but DRM thinks it is. */
/* AGP bridge need not be PCI device, but DRM thinks it is. */
static
struct
pci_dev
fake_bridge_dev
;
static
struct
pci_dev
fake_bridge_dev
;
static
int
hp_zx1_gart_found
;
static
struct
aper_size_info_fixed
hp_zx1_sizes
[]
=
static
struct
aper_size_info_fixed
hp_zx1_sizes
[]
=
{
{
{
0
,
0
,
0
},
/* filled in by hp_zx1_fetch_size() */
{
0
,
0
,
0
},
/* filled in by hp_zx1_fetch_size() */
...
@@ -386,8 +388,6 @@ hp_zx1_setup (u64 ioc_hpa, u64 lba_hpa)
...
@@ -386,8 +388,6 @@ hp_zx1_setup (u64 ioc_hpa, u64 lba_hpa)
struct
agp_bridge_data
*
bridge
;
struct
agp_bridge_data
*
bridge
;
int
error
;
int
error
;
printk
(
KERN_INFO
PFX
"Detected HP ZX1 AGP chipset (ioc=%lx, lba=%lx)
\n
"
,
ioc_hpa
,
lba_hpa
);
error
=
hp_zx1_ioc_init
(
ioc_hpa
,
lba_hpa
);
error
=
hp_zx1_ioc_init
(
ioc_hpa
,
lba_hpa
);
if
(
error
)
if
(
error
)
return
error
;
return
error
;
...
@@ -416,7 +416,7 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
...
@@ -416,7 +416,7 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
status
=
hp_acpi_csr_space
(
obj
,
&
lba_hpa
,
&
length
);
status
=
hp_acpi_csr_space
(
obj
,
&
lba_hpa
,
&
length
);
if
(
ACPI_FAILURE
(
status
))
if
(
ACPI_FAILURE
(
status
))
return
1
;
return
AE_OK
;
/* Look for an enclosing IOC scope and find its CSR space */
/* Look for an enclosing IOC scope and find its CSR space */
handle
=
obj
;
handle
=
obj
;
...
@@ -436,7 +436,7 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
...
@@ -436,7 +436,7 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
else
{
else
{
printk
(
KERN_ERR
PFX
"Detected HP ZX1 "
printk
(
KERN_ERR
PFX
"Detected HP ZX1 "
"AGP LBA but no IOC.
\n
"
);
"AGP LBA but no IOC.
\n
"
);
return
status
;
return
AE_OK
;
}
}
}
}
}
}
...
@@ -446,22 +446,28 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
...
@@ -446,22 +446,28 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
}
while
(
ACPI_SUCCESS
(
status
));
}
while
(
ACPI_SUCCESS
(
status
));
if
(
hp_zx1_setup
(
sba_hpa
+
HP_ZX1_IOC_OFFSET
,
lba_hpa
))
if
(
hp_zx1_setup
(
sba_hpa
+
HP_ZX1_IOC_OFFSET
,
lba_hpa
))
return
1
;
return
AE_OK
;
return
0
;
printk
(
KERN_INFO
PFX
"Detected HP ZX1 %s AGP chipset (ioc=%lx, lba=%lx)
\n
"
,
(
char
*
)
context
,
sba_hpa
+
HP_ZX1_IOC_OFFSET
,
lba_hpa
);
hp_zx1_gart_found
=
1
;
return
AE_CTRL_TERMINATE
;
}
}
static
int
__init
static
int
__init
agp_hp_init
(
void
)
agp_hp_init
(
void
)
{
{
acpi_status
status
;
status
=
acpi_get_devices
(
"HWP0003"
,
zx1_gart_probe
,
"HWP0003 AGP LBA"
,
NULL
);
acpi_get_devices
(
"HWP0003"
,
zx1_gart_probe
,
"HWP0003"
,
NULL
);
if
(
!
(
ACPI_SUCCESS
(
status
)))
{
if
(
hp_zx1_gart_found
)
agp_bridge
->
type
=
NOT_SUPPORTED
;
return
0
;
printk
(
KERN_INFO
PFX
"Failed to initialize zx1 AGP.
\n
"
);
return
-
ENODEV
;
acpi_get_devices
(
"HWP0007"
,
zx1_gart_probe
,
"HWP0007"
,
NULL
);
}
if
(
hp_zx1_gart_found
)
return
0
;
return
0
;
return
-
ENODEV
;
}
}
static
void
__exit
static
void
__exit
...
...
drivers/char/agp/intel-agp.c
View file @
2f519c6e
...
@@ -445,7 +445,7 @@ static int intel_i830_insert_entries(struct agp_memory *mem,off_t pg_start,
...
@@ -445,7 +445,7 @@ static int intel_i830_insert_entries(struct agp_memory *mem,off_t pg_start,
num_entries
=
A_SIZE_FIX
(
temp
)
->
num_entries
;
num_entries
=
A_SIZE_FIX
(
temp
)
->
num_entries
;
if
(
pg_start
<
intel_i830_private
.
gtt_entries
)
{
if
(
pg_start
<
intel_i830_private
.
gtt_entries
)
{
printk
(
KERN_DEBUG
"pg_start == 0x%.8lx,intel_i830_private.gtt_entries == 0x%.8x
\n
"
,
printk
(
KERN_DEBUG
PFX
"pg_start == 0x%.8lx,intel_i830_private.gtt_entries == 0x%.8x
\n
"
,
pg_start
,
intel_i830_private
.
gtt_entries
);
pg_start
,
intel_i830_private
.
gtt_entries
);
printk
(
KERN_INFO
PFX
"Trying to insert into local/stolen memory
\n
"
);
printk
(
KERN_INFO
PFX
"Trying to insert into local/stolen memory
\n
"
);
...
...
drivers/char/agp/nvidia-agp.c
View file @
2f519c6e
...
@@ -196,7 +196,7 @@ static void nvidia_tlbflush(struct agp_memory *mem)
...
@@ -196,7 +196,7 @@ static void nvidia_tlbflush(struct agp_memory *mem)
pci_read_config_dword
(
nvidia_private
.
dev_1
,
pci_read_config_dword
(
nvidia_private
.
dev_1
,
NVIDIA_1_WBC
,
&
wbc_reg
);
NVIDIA_1_WBC
,
&
wbc_reg
);
if
((
signed
)(
end
-
jiffies
)
<=
0
)
{
if
((
signed
)(
end
-
jiffies
)
<=
0
)
{
printk
(
KERN_ERR
printk
(
KERN_ERR
PFX
"TLB flush took more than 3 seconds.
\n
"
);
"TLB flush took more than 3 seconds.
\n
"
);
}
}
}
while
(
wbc_reg
&
nvidia_private
.
wbc_mask
);
}
while
(
wbc_reg
&
nvidia_private
.
wbc_mask
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment