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
3c6c3721
Commit
3c6c3721
authored
Jan 10, 2005
by
Tony Luck
Browse files
Options
Browse Files
Download
Plain Diff
Merge intel.com:/data/home/aegl/BK/Linus
into intel.com:/data/home/aegl/BK/linux-ia64-release-2.6.11
parents
307bc76b
872a9465
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
341 additions
and
18 deletions
+341
-18
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+5
-1
arch/ia64/Kconfig
arch/ia64/Kconfig
+17
-7
arch/ia64/Kconfig.debug
arch/ia64/Kconfig.debug
+1
-1
arch/ia64/Makefile
arch/ia64/Makefile
+2
-0
arch/ia64/hp/common/Makefile
arch/ia64/hp/common/Makefile
+2
-0
arch/ia64/hp/zx1/Makefile
arch/ia64/hp/zx1/Makefile
+1
-1
arch/ia64/kernel/Makefile
arch/ia64/kernel/Makefile
+1
-0
arch/ia64/kernel/acpi.c
arch/ia64/kernel/acpi.c
+2
-0
arch/ia64/kernel/setup.c
arch/ia64/kernel/setup.c
+23
-2
arch/ia64/lib/swiotlb.c
arch/ia64/lib/swiotlb.c
+13
-3
arch/ia64/pci/pci.c
arch/ia64/pci/pci.c
+113
-1
arch/ia64/sn/pci/pci_dma.c
arch/ia64/sn/pci/pci_dma.c
+64
-0
drivers/char/agp/Kconfig
drivers/char/agp/Kconfig
+1
-1
include/asm-ia64/machvec.h
include/asm-ia64/machvec.h
+26
-0
include/asm-ia64/machvec_init.h
include/asm-ia64/machvec_init.h
+3
-0
include/asm-ia64/machvec_sn2.h
include/asm-ia64/machvec_sn2.h
+6
-0
include/asm-ia64/numnodes.h
include/asm-ia64/numnodes.h
+1
-1
include/asm-ia64/pci.h
include/asm-ia64/pci.h
+14
-0
include/asm-ia64/sn/sn_sal.h
include/asm-ia64/sn/sn_sal.h
+46
-0
No files found.
Documentation/kernel-parameters.txt
View file @
3c6c3721
...
@@ -673,7 +673,11 @@ running once the system is up.
...
@@ -673,7 +673,11 @@ running once the system is up.
mac53c9x= [HW,SCSI]
mac53c9x= [HW,SCSI]
Format: <num_esps>,<disconnect>,<nosync>,<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags>
Format: <num_esps>,<disconnect>,<nosync>,<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags>
machvec= [IA64]
Force the use of a particular machine-vector (machvec) in a generic
kernel. Example: machvec=hpzx1_swiotlb
mad16= [HW,OSS]
mad16= [HW,OSS]
Format: <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick>
Format: <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick>
...
...
arch/ia64/Kconfig
View file @
3c6c3721
...
@@ -61,11 +61,12 @@ config IA64_GENERIC
...
@@ -61,11 +61,12 @@ config IA64_GENERIC
will run on any supported IA-64 system. However, if you configure
will run on any supported IA-64 system. However, if you configure
a kernel for your specific system, it will be faster and smaller.
a kernel for your specific system, it will be faster and smaller.
generic For any supported IA-64 system
generic For any supported IA-64 system
DIG-compliant For DIG ("Developer's Interface Guide") compliant systems
DIG-compliant For DIG ("Developer's Interface Guide") compliant systems
HP-zx1/sx1000 For HP systems
HP-zx1/sx1000 For HP systems
SGI-SN2 For SGI Altix systems
HP-zx1/sx1000+swiotlb For HP systems with (broken) DMA-constrained devices.
Ski-simulator For the HP simulator <http://www.hpl.hp.com/research/linux/ski/>
SGI-SN2 For SGI Altix systems
Ski-simulator For the HP simulator <http://www.hpl.hp.com/research/linux/ski/>
If you don't know what to do, choose "generic".
If you don't know what to do, choose "generic".
...
@@ -78,6 +79,15 @@ config IA64_HP_ZX1
...
@@ -78,6 +79,15 @@ config IA64_HP_ZX1
Build a kernel that runs on HP zx1 and sx1000 systems. This adds
Build a kernel that runs on HP zx1 and sx1000 systems. This adds
support for the HP I/O MMU.
support for the HP I/O MMU.
config IA64_HP_ZX1_SWIOTLB
bool "HP-zx1/sx1000 with software I/O TLB"
help
Build a kernel that runs on HP zx1 and sx1000 systems even when they
have broken PCI devices which cannot DMA to full 32 bits. Apart
from support for the HP I/O MMU, this includes support for the software
I/O TLB, which allows supporting the broken devices at the expense of
wasting some kernel memory (about 2MB by default).
config IA64_SGI_SN2
config IA64_SGI_SN2
bool "SGI-SN2"
bool "SGI-SN2"
help
help
...
@@ -188,7 +198,7 @@ config HOLES_IN_ZONE
...
@@ -188,7 +198,7 @@ config HOLES_IN_ZONE
config DISCONTIGMEM
config DISCONTIGMEM
bool "Discontiguous memory support"
bool "Discontiguous memory support"
depends on (IA64_DIG || IA64_SGI_SN2 || IA64_GENERIC || IA64_HP_ZX1) && NUMA && VIRTUAL_MEM_MAP
depends on (IA64_DIG || IA64_SGI_SN2 || IA64_GENERIC || IA64_HP_ZX1
|| IA64_HP_ZX1_SWIOTLB
) && NUMA && VIRTUAL_MEM_MAP
default y if (IA64_SGI_SN2 || IA64_GENERIC) && NUMA
default y if (IA64_SGI_SN2 || IA64_GENERIC) && NUMA
help
help
Say Y to support efficient handling of discontiguous physical memory,
Say Y to support efficient handling of discontiguous physical memory,
...
@@ -326,7 +336,7 @@ menu "Power management and ACPI"
...
@@ -326,7 +336,7 @@ menu "Power management and ACPI"
config PM
config PM
bool "Power Management support"
bool "Power Management support"
depends on IA64_GENERIC || IA64_DIG || IA64_HP_ZX1
depends on IA64_GENERIC || IA64_DIG || IA64_HP_ZX1
|| IA64_HP_ZX1_SWIOTLB
default y
default y
help
help
"Power Management" means that parts of your computer are shut
"Power Management" means that parts of your computer are shut
...
...
arch/ia64/Kconfig.debug
View file @
3c6c3721
...
@@ -16,7 +16,7 @@ config IA64_GRANULE_16MB
...
@@ -16,7 +16,7 @@ config IA64_GRANULE_16MB
config IA64_GRANULE_64MB
config IA64_GRANULE_64MB
bool "64MB"
bool "64MB"
depends on !(IA64_GENERIC || IA64_HP_ZX1 || IA64_SGI_SN2)
depends on !(IA64_GENERIC || IA64_HP_ZX1 || IA64_
HP_ZX1_SWIOTLB || IA64_
SGI_SN2)
endchoice
endchoice
...
...
arch/ia64/Makefile
View file @
3c6c3721
...
@@ -57,11 +57,13 @@ core-$(CONFIG_IA32_SUPPORT) += arch/ia64/ia32/
...
@@ -57,11 +57,13 @@ core-$(CONFIG_IA32_SUPPORT) += arch/ia64/ia32/
core-$(CONFIG_IA64_DIG)
+=
arch
/ia64/dig/
core-$(CONFIG_IA64_DIG)
+=
arch
/ia64/dig/
core-$(CONFIG_IA64_GENERIC)
+=
arch
/ia64/dig/
core-$(CONFIG_IA64_GENERIC)
+=
arch
/ia64/dig/
core-$(CONFIG_IA64_HP_ZX1)
+=
arch
/ia64/dig/
core-$(CONFIG_IA64_HP_ZX1)
+=
arch
/ia64/dig/
core-$(CONFIG_IA64_HP_ZX1_SWIOTLB)
+=
arch
/ia64/dig/
core-$(CONFIG_IA64_SGI_SN2)
+=
arch
/ia64/sn/
core-$(CONFIG_IA64_SGI_SN2)
+=
arch
/ia64/sn/
drivers-$(CONFIG_PCI)
+=
arch
/ia64/pci/
drivers-$(CONFIG_PCI)
+=
arch
/ia64/pci/
drivers-$(CONFIG_IA64_HP_SIM)
+=
arch
/ia64/hp/sim/
drivers-$(CONFIG_IA64_HP_SIM)
+=
arch
/ia64/hp/sim/
drivers-$(CONFIG_IA64_HP_ZX1)
+=
arch
/ia64/hp/common/
arch
/ia64/hp/zx1/
drivers-$(CONFIG_IA64_HP_ZX1)
+=
arch
/ia64/hp/common/
arch
/ia64/hp/zx1/
drivers-$(CONFIG_IA64_HP_ZX1_SWIOTLB)
+=
arch
/ia64/hp/common/
arch
/ia64/hp/zx1/
drivers-$(CONFIG_IA64_GENERIC)
+=
arch
/ia64/hp/common/
arch
/ia64/hp/zx1/
arch
/ia64/hp/sim/
arch
/ia64/sn/
drivers-$(CONFIG_IA64_GENERIC)
+=
arch
/ia64/hp/common/
arch
/ia64/hp/zx1/
arch
/ia64/hp/sim/
arch
/ia64/sn/
drivers-$(CONFIG_OPROFILE)
+=
arch
/ia64/oprofile/
drivers-$(CONFIG_OPROFILE)
+=
arch
/ia64/oprofile/
...
...
arch/ia64/hp/common/Makefile
View file @
3c6c3721
...
@@ -6,3 +6,5 @@
...
@@ -6,3 +6,5 @@
#
#
obj-y
:=
sba_iommu.o
obj-y
:=
sba_iommu.o
obj-$(CONFIG_IA64_HP_ZX1_SWIOTLB)
+=
hwsw_iommu.o
obj-$(CONFIG_IA64_GENERIC)
+=
hwsw_iommu.o
arch/ia64/hp/zx1/Makefile
View file @
3c6c3721
...
@@ -5,4 +5,4 @@
...
@@ -5,4 +5,4 @@
# Copyright (C) Alex Williamson (alex_williamson@hp.com)
# Copyright (C) Alex Williamson (alex_williamson@hp.com)
#
#
obj-$(CONFIG_IA64_GENERIC)
+=
hpzx1_machvec.o
obj-$(CONFIG_IA64_GENERIC)
+=
hpzx1_machvec.o
hpzx1_swiotlb_machvec.o
arch/ia64/kernel/Makefile
View file @
3c6c3721
...
@@ -12,6 +12,7 @@ obj-y := acpi.o entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o i
...
@@ -12,6 +12,7 @@ obj-y := acpi.o entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o i
obj-$(CONFIG_IA64_BRL_EMU)
+=
brl_emu.o
obj-$(CONFIG_IA64_BRL_EMU)
+=
brl_emu.o
obj-$(CONFIG_IA64_GENERIC)
+=
acpi-ext.o
obj-$(CONFIG_IA64_GENERIC)
+=
acpi-ext.o
obj-$(CONFIG_IA64_HP_ZX1)
+=
acpi-ext.o
obj-$(CONFIG_IA64_HP_ZX1)
+=
acpi-ext.o
obj-$(CONFIG_IA64_HP_ZX1_SWIOTLB)
+=
acpi-ext.o
obj-$(CONFIG_IA64_PALINFO)
+=
palinfo.o
obj-$(CONFIG_IA64_PALINFO)
+=
palinfo.o
obj-$(CONFIG_IOSAPIC)
+=
iosapic.o
obj-$(CONFIG_IOSAPIC)
+=
iosapic.o
obj-$(CONFIG_MODULES)
+=
module.o
obj-$(CONFIG_MODULES)
+=
module.o
...
...
arch/ia64/kernel/acpi.c
View file @
3c6c3721
...
@@ -113,6 +113,8 @@ acpi_get_sysname (void)
...
@@ -113,6 +113,8 @@ acpi_get_sysname (void)
return
"hpsim"
;
return
"hpsim"
;
# elif defined (CONFIG_IA64_HP_ZX1)
# elif defined (CONFIG_IA64_HP_ZX1)
return
"hpzx1"
;
return
"hpzx1"
;
# elif defined (CONFIG_IA64_HP_ZX1_SWIOTLB)
return
"hpzx1_swiotlb"
;
# elif defined (CONFIG_IA64_SGI_SN2)
# elif defined (CONFIG_IA64_SGI_SN2)
return
"sn2"
;
return
"sn2"
;
# elif defined (CONFIG_IA64_DIG)
# elif defined (CONFIG_IA64_DIG)
...
...
arch/ia64/kernel/setup.c
View file @
3c6c3721
/*
/*
* Architecture-specific setup.
* Architecture-specific setup.
*
*
* Copyright (C) 1998-2001, 2003 Hewlett-Packard Co
* Copyright (C) 1998-2001, 2003
-2004
Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
* David Mosberger-Tang <davidm@hpl.hp.com>
* Stephane Eranian <eranian@hpl.hp.com>
* Stephane Eranian <eranian@hpl.hp.com>
* Copyright (C) 2000, Rohit Seth <rohit.seth@intel.com>
* Copyright (C) 2000, Rohit Seth <rohit.seth@intel.com>
...
@@ -312,7 +312,28 @@ setup_arch (char **cmdline_p)
...
@@ -312,7 +312,28 @@ setup_arch (char **cmdline_p)
io_port_init
();
io_port_init
();
#ifdef CONFIG_IA64_GENERIC
#ifdef CONFIG_IA64_GENERIC
machvec_init
(
acpi_get_sysname
());
{
const
char
*
mvec_name
=
strstr
(
*
cmdline_p
,
"machvec="
);
char
str
[
64
];
if
(
mvec_name
)
{
const
char
*
end
;
size_t
len
;
mvec_name
+=
8
;
end
=
strchr
(
mvec_name
,
' '
);
if
(
end
)
len
=
end
-
mvec_name
;
else
len
=
strlen
(
mvec_name
);
len
=
min
(
len
,
sizeof
(
str
)
-
1
);
strncpy
(
str
,
mvec_name
,
len
);
str
[
len
]
=
'\0'
;
mvec_name
=
str
;
}
else
mvec_name
=
acpi_get_sysname
();
machvec_init
(
mvec_name
);
}
#endif
#endif
if
(
early_console_setup
(
*
cmdline_p
)
==
0
)
if
(
early_console_setup
(
*
cmdline_p
)
==
0
)
...
...
arch/ia64/lib/swiotlb.c
View file @
3c6c3721
...
@@ -61,9 +61,8 @@ static char *io_tlb_start, *io_tlb_end;
...
@@ -61,9 +61,8 @@ static char *io_tlb_start, *io_tlb_end;
/*
/*
* The number of IO TLB blocks (in groups of 64) betweeen io_tlb_start and
* The number of IO TLB blocks (in groups of 64) betweeen io_tlb_start and
* io_tlb_end. This is command line adjustable via setup_io_tlb_npages.
* io_tlb_end. This is command line adjustable via setup_io_tlb_npages.
* Default to 64MB.
*/
*/
static
unsigned
long
io_tlb_nslabs
=
32768
;
static
unsigned
long
io_tlb_nslabs
;
/*
/*
* When the IOMMU overflows we return a fallback buffer. This sets the size.
* When the IOMMU overflows we return a fallback buffer. This sets the size.
...
@@ -113,10 +112,15 @@ __setup("swiotlb=", setup_io_tlb_npages);
...
@@ -113,10 +112,15 @@ __setup("swiotlb=", setup_io_tlb_npages);
* structures for the software IO TLB used to implement the PCI DMA API.
* structures for the software IO TLB used to implement the PCI DMA API.
*/
*/
void
void
swiotlb_init
(
void
)
swiotlb_init
_with_default_size
(
size_t
default_size
)
{
{
unsigned
long
i
;
unsigned
long
i
;
if
(
!
io_tlb_nslabs
)
{
io_tlb_nslabs
=
(
default_size
>>
PAGE_SHIFT
);
io_tlb_nslabs
=
ALIGN
(
io_tlb_nslabs
,
IO_TLB_SEGSIZE
);
}
/*
/*
* Get IO TLB memory from the low pages
* Get IO TLB memory from the low pages
*/
*/
...
@@ -145,6 +149,12 @@ swiotlb_init(void)
...
@@ -145,6 +149,12 @@ swiotlb_init(void)
virt_to_phys
(
io_tlb_start
),
virt_to_phys
(
io_tlb_end
));
virt_to_phys
(
io_tlb_start
),
virt_to_phys
(
io_tlb_end
));
}
}
void
swiotlb_init
(
void
)
{
swiotlb_init_with_default_size
(
64
*
(
1
<<
20
));
/* default to 64MB */
}
static
inline
int
static
inline
int
address_needs_mapping
(
struct
device
*
hwdev
,
dma_addr_t
addr
)
address_needs_mapping
(
struct
device
*
hwdev
,
dma_addr_t
addr
)
{
{
...
...
arch/ia64/pci/pci.c
View file @
3c6c3721
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
* Copyright (C) 2002 Hewlett-Packard Co
* Copyright (C) 2002 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
* David Mosberger-Tang <davidm@hpl.hp.com>
* Bjorn Helgaas <bjorn_helgaas@hp.com>
* Bjorn Helgaas <bjorn_helgaas@hp.com>
* Copyright (C) 2004 Silicon Graphics, Inc.
*
*
* Note: Above list of copyright holders is incomplete...
* Note: Above list of copyright holders is incomplete...
*/
*/
...
@@ -526,7 +527,7 @@ pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma,
...
@@ -526,7 +527,7 @@ pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma,
* Leave vm_pgoff as-is, the PCI space address is the physical
* Leave vm_pgoff as-is, the PCI space address is the physical
* address on this platform.
* address on this platform.
*/
*/
vma
->
vm_flags
|=
(
VM_SHM
|
VM_
LOCK
ED
|
VM_IO
);
vma
->
vm_flags
|=
(
VM_SHM
|
VM_
RESERV
ED
|
VM_IO
);
if
(
write_combine
)
if
(
write_combine
)
vma
->
vm_page_prot
=
pgprot_writecombine
(
vma
->
vm_page_prot
);
vma
->
vm_page_prot
=
pgprot_writecombine
(
vma
->
vm_page_prot
);
...
@@ -540,6 +541,117 @@ pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma,
...
@@ -540,6 +541,117 @@ pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma,
return
0
;
return
0
;
}
}
/**
* pci_mmap_legacy_page_range - map legacy memory space to userland
* @bus: bus whose legacy space we're mapping
* @vma: vma passed in by mmap
*
* Map legacy memory space for this device back to userspace using a machine
* vector to get the base address.
*/
int
pci_mmap_legacy_page_range
(
struct
pci_bus
*
bus
,
struct
vm_area_struct
*
vma
)
{
char
*
addr
;
addr
=
pci_get_legacy_mem
(
bus
);
if
(
IS_ERR
(
addr
))
return
PTR_ERR
(
addr
);
vma
->
vm_pgoff
+=
(
unsigned
long
)
addr
>>
PAGE_SHIFT
;
vma
->
vm_page_prot
=
pgprot_noncached
(
vma
->
vm_page_prot
);
vma
->
vm_flags
|=
(
VM_SHM
|
VM_RESERVED
|
VM_IO
);
if
(
remap_pfn_range
(
vma
,
vma
->
vm_start
,
vma
->
vm_pgoff
,
vma
->
vm_end
-
vma
->
vm_start
,
vma
->
vm_page_prot
))
return
-
EAGAIN
;
return
0
;
}
/**
* ia64_pci_get_legacy_mem - generic legacy mem routine
* @bus: bus to get legacy memory base address for
*
* Find the base of legacy memory for @bus. This is typically the first
* megabyte of bus address space for @bus or is simply 0 on platforms whose
* chipsets support legacy I/O and memory routing. Returns the base address
* or an error pointer if an error occurred.
*
* This is the ia64 generic version of this routine. Other platforms
* are free to override it with a machine vector.
*/
char
*
ia64_pci_get_legacy_mem
(
struct
pci_bus
*
bus
)
{
return
(
char
*
)
__IA64_UNCACHED_OFFSET
;
}
/**
* ia64_pci_legacy_read - read from legacy I/O space
* @bus: bus to read
* @port: legacy port value
* @val: caller allocated storage for returned value
* @size: number of bytes to read
*
* Simply reads @size bytes from @port and puts the result in @val.
*
* Again, this (and the write routine) are generic versions that can be
* overridden by the platform. This is necessary on platforms that don't
* support legacy I/O routing or that hard fail on legacy I/O timeouts.
*/
int
ia64_pci_legacy_read
(
struct
pci_bus
*
bus
,
u16
port
,
u32
*
val
,
u8
size
)
{
int
ret
=
size
;
switch
(
size
)
{
case
1
:
*
val
=
inb
(
port
);
break
;
case
2
:
*
val
=
inw
(
port
);
break
;
case
4
:
*
val
=
inl
(
port
);
break
;
default:
ret
=
-
EINVAL
;
break
;
}
return
ret
;
}
/**
* ia64_pci_legacy_write - perform a legacy I/O write
* @bus: bus pointer
* @port: port to write
* @val: value to write
* @size: number of bytes to write from @val
*
* Simply writes @size bytes of @val to @port.
*/
int
ia64_pci_legacy_write
(
struct
pci_dev
*
bus
,
u16
port
,
u32
val
,
u8
size
)
{
int
ret
=
0
;
switch
(
size
)
{
case
1
:
outb
(
val
,
port
);
break
;
case
2
:
outw
(
val
,
port
);
break
;
case
4
:
outl
(
val
,
port
);
break
;
default:
ret
=
-
EINVAL
;
break
;
}
return
ret
;
}
/**
/**
* pci_cacheline_size - determine cacheline size for PCI devices
* pci_cacheline_size - determine cacheline size for PCI devices
* @dev: void
* @dev: void
...
...
arch/ia64/sn/pci/pci_dma.c
View file @
3c6c3721
...
@@ -475,3 +475,67 @@ EXPORT_SYMBOL(sn_pci_alloc_consistent);
...
@@ -475,3 +475,67 @@ EXPORT_SYMBOL(sn_pci_alloc_consistent);
EXPORT_SYMBOL
(
sn_pci_free_consistent
);
EXPORT_SYMBOL
(
sn_pci_free_consistent
);
EXPORT_SYMBOL
(
sn_pci_dma_supported
);
EXPORT_SYMBOL
(
sn_pci_dma_supported
);
EXPORT_SYMBOL
(
sn_dma_mapping_error
);
EXPORT_SYMBOL
(
sn_dma_mapping_error
);
char
*
sn_pci_get_legacy_mem
(
struct
pci_bus
*
bus
)
{
if
(
!
SN_PCIBUS_BUSSOFT
(
bus
))
return
ERR_PTR
(
-
ENODEV
);
return
(
char
*
)(
SN_PCIBUS_BUSSOFT
(
bus
)
->
bs_legacy_mem
|
__IA64_UNCACHED_OFFSET
);
}
int
sn_pci_legacy_read
(
struct
pci_bus
*
bus
,
u16
port
,
u32
*
val
,
u8
size
)
{
unsigned
long
addr
;
int
ret
;
if
(
!
SN_PCIBUS_BUSSOFT
(
bus
))
return
-
ENODEV
;
addr
=
SN_PCIBUS_BUSSOFT
(
bus
)
->
bs_legacy_io
|
__IA64_UNCACHED_OFFSET
;
addr
+=
port
;
ret
=
ia64_sn_probe_mem
(
addr
,
(
long
)
size
,
(
void
*
)
val
);
if
(
ret
==
2
)
return
-
EINVAL
;
if
(
ret
==
1
)
*
val
=
-
1
;
return
size
;
}
int
sn_pci_legacy_write
(
struct
pci_bus
*
bus
,
u16
port
,
u32
val
,
u8
size
)
{
int
ret
=
size
;
unsigned
long
paddr
;
unsigned
long
*
addr
;
if
(
!
SN_PCIBUS_BUSSOFT
(
bus
))
{
ret
=
-
ENODEV
;
goto
out
;
}
/* Put the phys addr in uncached space */
paddr
=
SN_PCIBUS_BUSSOFT
(
bus
)
->
bs_legacy_io
|
__IA64_UNCACHED_OFFSET
;
paddr
+=
port
;
addr
=
(
unsigned
long
*
)
paddr
;
switch
(
size
)
{
case
1
:
*
(
volatile
u8
*
)(
addr
)
=
(
u8
)(
val
);
break
;
case
2
:
*
(
volatile
u16
*
)(
addr
)
=
(
u16
)(
val
);
break
;
case
4
:
*
(
volatile
u32
*
)(
addr
)
=
(
u32
)(
val
);
break
;
default:
ret
=
-
EINVAL
;
break
;
}
out:
return
ret
;
}
drivers/char/agp/Kconfig
View file @
3c6c3721
...
@@ -144,7 +144,7 @@ config AGP_I460
...
@@ -144,7 +144,7 @@ config AGP_I460
config AGP_HP_ZX1
config AGP_HP_ZX1
tristate "HP ZX1 chipset AGP support"
tristate "HP ZX1 chipset AGP support"
depends on AGP && (IA64_HP_ZX1 || IA64_GENERIC)
depends on AGP && (IA64_HP_ZX1 || IA64_
HP_ZX1_SWIOTLB || IA64_
GENERIC)
help
help
This option gives you AGP GART support for the HP ZX1 chipset
This option gives you AGP GART support for the HP ZX1 chipset
for IA64 processors.
for IA64 processors.
...
...
include/asm-ia64/machvec.h
View file @
3c6c3721
...
@@ -20,6 +20,7 @@ struct scatterlist;
...
@@ -20,6 +20,7 @@ struct scatterlist;
struct
irq_desc
;
struct
irq_desc
;
struct
page
;
struct
page
;
struct
mm_struct
;
struct
mm_struct
;
struct
pci_bus
;
typedef
void
ia64_mv_setup_t
(
char
**
);
typedef
void
ia64_mv_setup_t
(
char
**
);
typedef
void
ia64_mv_cpu_init_t
(
void
);
typedef
void
ia64_mv_cpu_init_t
(
void
);
...
@@ -31,6 +32,11 @@ typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *);
...
@@ -31,6 +32,11 @@ typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *);
typedef
struct
irq_desc
*
ia64_mv_irq_desc
(
unsigned
int
);
typedef
struct
irq_desc
*
ia64_mv_irq_desc
(
unsigned
int
);
typedef
u8
ia64_mv_irq_to_vector
(
unsigned
int
);
typedef
u8
ia64_mv_irq_to_vector
(
unsigned
int
);
typedef
unsigned
int
ia64_mv_local_vector_to_irq
(
u8
);
typedef
unsigned
int
ia64_mv_local_vector_to_irq
(
u8
);
typedef
char
*
ia64_mv_pci_get_legacy_mem_t
(
struct
pci_bus
*
);
typedef
int
ia64_mv_pci_legacy_read_t
(
struct
pci_bus
*
,
u16
port
,
u32
*
val
,
u8
size
);
typedef
int
ia64_mv_pci_legacy_write_t
(
struct
pci_bus
*
,
u16
port
,
u32
val
,
u8
size
);
/* DMA-mapping interface: */
/* DMA-mapping interface: */
typedef
void
ia64_mv_dma_init
(
void
);
typedef
void
ia64_mv_dma_init
(
void
);
...
@@ -94,6 +100,8 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *);
...
@@ -94,6 +100,8 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *);
# include <asm/machvec_dig.h>
# include <asm/machvec_dig.h>
# elif defined (CONFIG_IA64_HP_ZX1)
# elif defined (CONFIG_IA64_HP_ZX1)
# include <asm/machvec_hpzx1.h>
# include <asm/machvec_hpzx1.h>
# elif defined (CONFIG_IA64_HP_ZX1_SWIOTLB)
# include <asm/machvec_hpzx1_swiotlb.h>
# elif defined (CONFIG_IA64_SGI_SN2)
# elif defined (CONFIG_IA64_SGI_SN2)
# include <asm/machvec_sn2.h>
# include <asm/machvec_sn2.h>
# elif defined (CONFIG_IA64_GENERIC)
# elif defined (CONFIG_IA64_GENERIC)
...
@@ -125,6 +133,9 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *);
...
@@ -125,6 +133,9 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *);
# define platform_irq_desc ia64_mv.irq_desc
# define platform_irq_desc ia64_mv.irq_desc
# define platform_irq_to_vector ia64_mv.irq_to_vector
# define platform_irq_to_vector ia64_mv.irq_to_vector
# define platform_local_vector_to_irq ia64_mv.local_vector_to_irq
# define platform_local_vector_to_irq ia64_mv.local_vector_to_irq
# define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem
# define platform_pci_legacy_read ia64_mv.pci_legacy_read
# define platform_pci_legacy_write ia64_mv.pci_legacy_write
# define platform_inb ia64_mv.inb
# define platform_inb ia64_mv.inb
# define platform_inw ia64_mv.inw
# define platform_inw ia64_mv.inw
# define platform_inl ia64_mv.inl
# define platform_inl ia64_mv.inl
...
@@ -172,6 +183,9 @@ struct ia64_machine_vector {
...
@@ -172,6 +183,9 @@ struct ia64_machine_vector {
ia64_mv_irq_desc
*
irq_desc
;
ia64_mv_irq_desc
*
irq_desc
;
ia64_mv_irq_to_vector
*
irq_to_vector
;
ia64_mv_irq_to_vector
*
irq_to_vector
;
ia64_mv_local_vector_to_irq
*
local_vector_to_irq
;
ia64_mv_local_vector_to_irq
*
local_vector_to_irq
;
ia64_mv_pci_get_legacy_mem_t
*
pci_get_legacy_mem
;
ia64_mv_pci_legacy_read_t
*
pci_legacy_read
;
ia64_mv_pci_legacy_write_t
*
pci_legacy_write
;
ia64_mv_inb_t
*
inb
;
ia64_mv_inb_t
*
inb
;
ia64_mv_inw_t
*
inw
;
ia64_mv_inw_t
*
inw
;
ia64_mv_inl_t
*
inl
;
ia64_mv_inl_t
*
inl
;
...
@@ -215,6 +229,9 @@ struct ia64_machine_vector {
...
@@ -215,6 +229,9 @@ struct ia64_machine_vector {
platform_irq_desc, \
platform_irq_desc, \
platform_irq_to_vector, \
platform_irq_to_vector, \
platform_local_vector_to_irq, \
platform_local_vector_to_irq, \
platform_pci_get_legacy_mem, \
platform_pci_legacy_read, \
platform_pci_legacy_write, \
platform_inb, \
platform_inb, \
platform_inw, \
platform_inw, \
platform_inl, \
platform_inl, \
...
@@ -330,6 +347,15 @@ extern ia64_mv_dma_supported swiotlb_dma_supported;
...
@@ -330,6 +347,15 @@ extern ia64_mv_dma_supported swiotlb_dma_supported;
#ifndef platform_local_vector_to_irq
#ifndef platform_local_vector_to_irq
# define platform_local_vector_to_irq __ia64_local_vector_to_irq
# define platform_local_vector_to_irq __ia64_local_vector_to_irq
#endif
#endif
#ifndef platform_pci_get_legacy_mem
# define platform_pci_get_legacy_mem ia64_pci_get_legacy_mem
#endif
#ifndef platform_pci_legacy_read
# define platform_pci_legacy_read ia64_pci_legacy_read
#endif
#ifndef platform_pci_legacy_write
# define platform_pci_legacy_write ia64_pci_legacy_write
#endif
#ifndef platform_inb
#ifndef platform_inb
# define platform_inb __ia64_inb
# define platform_inb __ia64_inb
#endif
#endif
...
...
include/asm-ia64/machvec_init.h
View file @
3c6c3721
...
@@ -5,6 +5,9 @@ extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge;
...
@@ -5,6 +5,9 @@ extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge;
extern
ia64_mv_irq_desc
__ia64_irq_desc
;
extern
ia64_mv_irq_desc
__ia64_irq_desc
;
extern
ia64_mv_irq_to_vector
__ia64_irq_to_vector
;
extern
ia64_mv_irq_to_vector
__ia64_irq_to_vector
;
extern
ia64_mv_local_vector_to_irq
__ia64_local_vector_to_irq
;
extern
ia64_mv_local_vector_to_irq
__ia64_local_vector_to_irq
;
extern
ia64_mv_pci_get_legacy_mem_t
ia64_pci_get_legacy_mem
;
extern
ia64_mv_pci_legacy_read_t
ia64_pci_legacy_read
;
extern
ia64_mv_pci_legacy_write_t
ia64_pci_legacy_write
;
extern
ia64_mv_inb_t
__ia64_inb
;
extern
ia64_mv_inb_t
__ia64_inb
;
extern
ia64_mv_inw_t
__ia64_inw
;
extern
ia64_mv_inw_t
__ia64_inw
;
...
...
include/asm-ia64/machvec_sn2.h
View file @
3c6c3721
...
@@ -43,6 +43,9 @@ extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish;
...
@@ -43,6 +43,9 @@ extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish;
extern
ia64_mv_irq_desc
sn_irq_desc
;
extern
ia64_mv_irq_desc
sn_irq_desc
;
extern
ia64_mv_irq_to_vector
sn_irq_to_vector
;
extern
ia64_mv_irq_to_vector
sn_irq_to_vector
;
extern
ia64_mv_local_vector_to_irq
sn_local_vector_to_irq
;
extern
ia64_mv_local_vector_to_irq
sn_local_vector_to_irq
;
extern
ia64_mv_pci_get_legacy_mem_t
sn_pci_get_legacy_mem
;
extern
ia64_mv_pci_legacy_read_t
sn_pci_legacy_read
;
extern
ia64_mv_pci_legacy_write_t
sn_pci_legacy_write
;
extern
ia64_mv_inb_t
__sn_inb
;
extern
ia64_mv_inb_t
__sn_inb
;
extern
ia64_mv_inw_t
__sn_inw
;
extern
ia64_mv_inw_t
__sn_inw
;
extern
ia64_mv_inl_t
__sn_inl
;
extern
ia64_mv_inl_t
__sn_inl
;
...
@@ -105,6 +108,9 @@ extern ia64_mv_dma_supported sn_dma_supported;
...
@@ -105,6 +108,9 @@ extern ia64_mv_dma_supported sn_dma_supported;
#define platform_irq_desc sn_irq_desc
#define platform_irq_desc sn_irq_desc
#define platform_irq_to_vector sn_irq_to_vector
#define platform_irq_to_vector sn_irq_to_vector
#define platform_local_vector_to_irq sn_local_vector_to_irq
#define platform_local_vector_to_irq sn_local_vector_to_irq
#define platform_pci_get_legacy_mem sn_pci_get_legacy_mem
#define platform_pci_legacy_read sn_pci_legacy_read
#define platform_pci_legacy_write sn_pci_legacy_write
#define platform_dma_init machvec_noop
#define platform_dma_init machvec_noop
#define platform_dma_alloc_coherent sn_dma_alloc_coherent
#define platform_dma_alloc_coherent sn_dma_alloc_coherent
#define platform_dma_free_coherent sn_dma_free_coherent
#define platform_dma_free_coherent sn_dma_free_coherent
...
...
include/asm-ia64/numnodes.h
View file @
3c6c3721
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
#ifdef CONFIG_IA64_DIG
#ifdef CONFIG_IA64_DIG
/* Max 8 Nodes */
/* Max 8 Nodes */
#define NODES_SHIFT 3
#define NODES_SHIFT 3
#elif defined(CONFIG_IA64_HP_ZX1)
#elif defined(CONFIG_IA64_HP_ZX1)
|| defined(CONFIG_IA64_HP_ZX1_SWIOTLB)
/* Max 32 Nodes */
/* Max 32 Nodes */
#define NODES_SHIFT 5
#define NODES_SHIFT 5
#elif defined(CONFIG_IA64_SGI_SN2) || defined(CONFIG_IA64_GENERIC)
#elif defined(CONFIG_IA64_SGI_SN2) || defined(CONFIG_IA64_GENERIC)
...
...
include/asm-ia64/pci.h
View file @
3c6c3721
...
@@ -85,6 +85,20 @@ extern int pcibios_prep_mwi (struct pci_dev *);
...
@@ -85,6 +85,20 @@ extern int pcibios_prep_mwi (struct pci_dev *);
#define HAVE_PCI_MMAP
#define HAVE_PCI_MMAP
extern
int
pci_mmap_page_range
(
struct
pci_dev
*
dev
,
struct
vm_area_struct
*
vma
,
extern
int
pci_mmap_page_range
(
struct
pci_dev
*
dev
,
struct
vm_area_struct
*
vma
,
enum
pci_mmap_state
mmap_state
,
int
write_combine
);
enum
pci_mmap_state
mmap_state
,
int
write_combine
);
#define HAVE_PCI_LEGACY
extern
int
pci_mmap_legacy_page_range
(
struct
pci_bus
*
bus
,
struct
vm_area_struct
*
vma
);
extern
ssize_t
pci_read_legacy_io
(
struct
kobject
*
kobj
,
char
*
buf
,
loff_t
off
,
size_t
count
);
extern
ssize_t
pci_write_legacy_io
(
struct
kobject
*
kobj
,
char
*
buf
,
loff_t
off
,
size_t
count
);
extern
int
pci_mmap_legacy_mem
(
struct
kobject
*
kobj
,
struct
bin_attribute
*
attr
,
struct
vm_area_struct
*
vma
);
#define pci_get_legacy_mem platform_pci_get_legacy_mem
#define pci_legacy_read platform_pci_legacy_read
#define pci_legacy_write platform_pci_legacy_write
struct
pci_window
{
struct
pci_window
{
struct
resource
resource
;
struct
resource
resource
;
...
...
include/asm-ia64/sn/sn_sal.h
View file @
3c6c3721
...
@@ -474,6 +474,52 @@ ia64_sn_pod_mode(void)
...
@@ -474,6 +474,52 @@ ia64_sn_pod_mode(void)
return
isrv
.
v0
;
return
isrv
.
v0
;
}
}
/**
* ia64_sn_probe_mem - read from memory safely
* @addr: address to probe
* @size: number bytes to read (1,2,4,8)
* @data_ptr: address to store value read by probe (-1 returned if probe fails)
*
* Call into the SAL to do a memory read. If the read generates a machine
* check, this routine will recover gracefully and return -1 to the caller.
* @addr is usually a kernel virtual address in uncached space (i.e. the
* address starts with 0xc), but if called in physical mode, @addr should
* be a physical address.
*
* Return values:
* 0 - probe successful
* 1 - probe failed (generated MCA)
* 2 - Bad arg
* <0 - PAL error
*/
static
inline
u64
ia64_sn_probe_mem
(
long
addr
,
long
size
,
void
*
data_ptr
)
{
struct
ia64_sal_retval
isrv
;
SAL_CALL
(
isrv
,
SN_SAL_PROBE
,
addr
,
size
,
0
,
0
,
0
,
0
,
0
);
if
(
data_ptr
)
{
switch
(
size
)
{
case
1
:
*
((
u8
*
)
data_ptr
)
=
(
u8
)
isrv
.
v0
;
break
;
case
2
:
*
((
u16
*
)
data_ptr
)
=
(
u16
)
isrv
.
v0
;
break
;
case
4
:
*
((
u32
*
)
data_ptr
)
=
(
u32
)
isrv
.
v0
;
break
;
case
8
:
*
((
u64
*
)
data_ptr
)
=
(
u64
)
isrv
.
v0
;
break
;
default:
isrv
.
status
=
2
;
}
}
return
isrv
.
status
;
}
/*
/*
* Retrieve the system serial number as an ASCII string.
* Retrieve the system serial number as an ASCII string.
*/
*/
...
...
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