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
2d4e1a0f
Commit
2d4e1a0f
authored
Mar 30, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/net-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
7d82bd26
942e4c16
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
142 additions
and
8 deletions
+142
-8
arch/sparc64/defconfig
arch/sparc64/defconfig
+2
-1
arch/sparc64/kernel/irq.c
arch/sparc64/kernel/irq.c
+3
-3
arch/sparc64/kernel/pci.c
arch/sparc64/kernel/pci.c
+86
-0
arch/sparc64/kernel/pci_iommu.c
arch/sparc64/kernel/pci_iommu.c
+28
-0
arch/sparc64/kernel/rtrap.S
arch/sparc64/kernel/rtrap.S
+2
-0
arch/sparc64/kernel/traps.c
arch/sparc64/kernel/traps.c
+12
-0
drivers/usb/host/ohci-pci.c
drivers/usb/host/ohci-pci.c
+1
-1
include/asm-sparc64/pci.h
include/asm-sparc64/pci.h
+8
-3
No files found.
arch/sparc64/defconfig
View file @
2d4e1a0f
...
@@ -41,6 +41,7 @@ CONFIG_NR_CPUS=4
...
@@ -41,6 +41,7 @@ CONFIG_NR_CPUS=4
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_US3_FREQ=m
CONFIG_US3_FREQ=m
CONFIG_US2E_FREQ=m
CONFIG_CPU_FREQ_PROC_INTF=y
CONFIG_CPU_FREQ_PROC_INTF=y
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
# CONFIG_CPU_FREQ_24_API is not set
# CONFIG_CPU_FREQ_24_API is not set
...
@@ -361,11 +362,11 @@ CONFIG_INET_ECN=y
...
@@ -361,11 +362,11 @@ CONFIG_INET_ECN=y
# CONFIG_SYN_COOKIES is not set
# CONFIG_SYN_COOKIES is not set
CONFIG_INET_AH=y
CONFIG_INET_AH=y
CONFIG_INET_ESP=y
CONFIG_INET_ESP=y
CONFIG_XFRM_USER=m
CONFIG_IPV6=m
CONFIG_IPV6=m
CONFIG_IPV6_PRIVACY=y
CONFIG_IPV6_PRIVACY=y
CONFIG_INET6_AH=m
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_ESP=m
CONFIG_XFRM_USER=m
#
#
# SCTP Configuration (EXPERIMENTAL)
# SCTP Configuration (EXPERIMENTAL)
...
...
arch/sparc64/kernel/irq.c
View file @
2d4e1a0f
...
@@ -356,7 +356,7 @@ int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *)
...
@@ -356,7 +356,7 @@ int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *)
}
}
if
(
action
==
NULL
)
if
(
action
==
NULL
)
action
=
(
struct
irqaction
*
)
kmalloc
(
sizeof
(
struct
irqaction
),
action
=
(
struct
irqaction
*
)
kmalloc
(
sizeof
(
struct
irqaction
),
GFP_
KERNEL
);
GFP_
ATOMIC
);
if
(
!
action
)
{
if
(
!
action
)
{
spin_unlock_irqrestore
(
&
irq_action_lock
,
flags
);
spin_unlock_irqrestore
(
&
irq_action_lock
,
flags
);
...
@@ -376,7 +376,7 @@ int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *)
...
@@ -376,7 +376,7 @@ int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *)
goto
free_and_ebusy
;
goto
free_and_ebusy
;
}
}
if
((
bucket
->
flags
&
IBF_MULTI
)
==
0
)
{
if
((
bucket
->
flags
&
IBF_MULTI
)
==
0
)
{
vector
=
kmalloc
(
sizeof
(
void
*
)
*
4
,
GFP_
KERNEL
);
vector
=
kmalloc
(
sizeof
(
void
*
)
*
4
,
GFP_
ATOMIC
);
if
(
vector
==
NULL
)
if
(
vector
==
NULL
)
goto
free_and_enomem
;
goto
free_and_enomem
;
...
@@ -900,7 +900,7 @@ int request_fast_irq(unsigned int irq,
...
@@ -900,7 +900,7 @@ int request_fast_irq(unsigned int irq,
}
}
if
(
action
==
NULL
)
if
(
action
==
NULL
)
action
=
(
struct
irqaction
*
)
kmalloc
(
sizeof
(
struct
irqaction
),
action
=
(
struct
irqaction
*
)
kmalloc
(
sizeof
(
struct
irqaction
),
GFP_
KERNEL
);
GFP_
ATOMIC
);
if
(
!
action
)
{
if
(
!
action
)
{
spin_unlock_irqrestore
(
&
irq_action_lock
,
flags
);
spin_unlock_irqrestore
(
&
irq_action_lock
,
flags
);
return
-
ENOMEM
;
return
-
ENOMEM
;
...
...
arch/sparc64/kernel/pci.c
View file @
2d4e1a0f
...
@@ -470,6 +470,54 @@ int pci_assign_resource(struct pci_dev *pdev, int resource)
...
@@ -470,6 +470,54 @@ int pci_assign_resource(struct pci_dev *pdev, int resource)
return
err
;
return
err
;
}
}
/* Sort resources by alignment */
void
pdev_sort_resources
(
struct
pci_dev
*
dev
,
struct
resource_list
*
head
)
{
int
i
;
for
(
i
=
0
;
i
<
PCI_NUM_RESOURCES
;
i
++
)
{
struct
resource
*
r
;
struct
resource_list
*
list
,
*
tmp
;
unsigned
long
r_align
;
r
=
&
dev
->
resource
[
i
];
r_align
=
r
->
end
-
r
->
start
;
if
(
!
(
r
->
flags
)
||
r
->
parent
)
continue
;
if
(
!
r_align
)
{
printk
(
KERN_WARNING
"PCI: Ignore bogus resource %d "
"[%lx:%lx] of %s
\n
"
,
i
,
r
->
start
,
r
->
end
,
dev
->
dev
.
name
);
continue
;
}
r_align
=
(
i
<
PCI_BRIDGE_RESOURCES
)
?
r_align
+
1
:
r
->
start
;
for
(
list
=
head
;
;
list
=
list
->
next
)
{
unsigned
long
align
=
0
;
struct
resource_list
*
ln
=
list
->
next
;
int
idx
;
if
(
ln
)
{
idx
=
ln
->
res
-
&
ln
->
dev
->
resource
[
0
];
align
=
(
idx
<
PCI_BRIDGE_RESOURCES
)
?
ln
->
res
->
end
-
ln
->
res
->
start
+
1
:
ln
->
res
->
start
;
}
if
(
r_align
>
align
)
{
tmp
=
kmalloc
(
sizeof
(
*
tmp
),
GFP_KERNEL
);
if
(
!
tmp
)
panic
(
"pdev_sort_resources(): "
"kmalloc() failed!
\n
"
);
tmp
->
next
=
ln
;
tmp
->
res
=
r
;
tmp
->
dev
=
dev
;
list
->
next
=
tmp
;
break
;
}
}
}
}
void
pcibios_update_irq
(
struct
pci_dev
*
pdev
,
int
irq
)
void
pcibios_update_irq
(
struct
pci_dev
*
pdev
,
int
irq
)
{
{
}
}
...
@@ -484,6 +532,44 @@ int pcibios_enable_device(struct pci_dev *pdev, int mask)
...
@@ -484,6 +532,44 @@ int pcibios_enable_device(struct pci_dev *pdev, int mask)
return
0
;
return
0
;
}
}
void
pcibios_resource_to_bus
(
struct
pci_dev
*
pdev
,
struct
pci_bus_region
*
region
,
struct
resource
*
res
)
{
struct
pci_pbm_info
*
pbm
=
pci_bus2pbm
[
pdev
->
bus
->
number
];
struct
resource
zero_res
,
*
root
;
zero_res
.
start
=
0
;
zero_res
.
end
=
0
;
zero_res
.
flags
=
res
->
flags
;
if
(
res
->
flags
&
IORESOURCE_IO
)
root
=
&
pbm
->
io_space
;
else
root
=
&
pbm
->
mem_space
;
pbm
->
parent
->
resource_adjust
(
pdev
,
&
zero_res
,
root
);
region
->
start
=
res
->
start
-
zero_res
.
start
;
region
->
end
=
res
->
end
-
zero_res
.
start
;
}
void
pcibios_bus_to_resource
(
struct
pci_dev
*
pdev
,
struct
resource
*
res
,
struct
pci_bus_region
*
region
)
{
struct
pci_pbm_info
*
pbm
=
pci_bus2pbm
[
pdev
->
bus
->
number
];
struct
resource
*
root
;
res
->
start
=
region
->
start
;
res
->
end
=
region
->
end
;
if
(
res
->
flags
&
IORESOURCE_IO
)
root
=
&
pbm
->
io_space
;
else
root
=
&
pbm
->
mem_space
;
pbm
->
parent
->
resource_adjust
(
pdev
,
res
,
root
);
}
char
*
__init
pcibios_setup
(
char
*
str
)
char
*
__init
pcibios_setup
(
char
*
str
)
{
{
if
(
!
strcmp
(
str
,
"onboardfirst"
))
{
if
(
!
strcmp
(
str
,
"onboardfirst"
))
{
...
...
arch/sparc64/kernel/pci_iommu.c
View file @
2d4e1a0f
...
@@ -784,6 +784,26 @@ void pci_dma_sync_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelem
...
@@ -784,6 +784,26 @@ void pci_dma_sync_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelem
spin_unlock_irqrestore
(
&
iommu
->
lock
,
flags
);
spin_unlock_irqrestore
(
&
iommu
->
lock
,
flags
);
}
}
static
void
ali_sound_dma_hack
(
struct
pci_dev
*
pdev
,
int
set_bit
)
{
struct
pci_dev
*
ali_isa_bridge
;
u8
val
;
/* ALI sound chips generate 31-bits of DMA, a special register
* determines what bit 31 is emitted as.
*/
ali_isa_bridge
=
pci_find_device
(
PCI_VENDOR_ID_AL
,
PCI_DEVICE_ID_AL_M1533
,
NULL
);
pci_read_config_byte
(
ali_isa_bridge
,
0x7e
,
&
val
);
if
(
set_bit
)
val
|=
0x01
;
else
val
&=
~
0x01
;
pci_write_config_byte
(
ali_isa_bridge
,
0x7e
,
val
);
}
int
pci_dma_supported
(
struct
pci_dev
*
pdev
,
u64
device_mask
)
int
pci_dma_supported
(
struct
pci_dev
*
pdev
,
u64
device_mask
)
{
{
struct
pcidev_cookie
*
pcp
=
pdev
->
sysdata
;
struct
pcidev_cookie
*
pcp
=
pdev
->
sysdata
;
...
@@ -795,6 +815,14 @@ int pci_dma_supported(struct pci_dev *pdev, u64 device_mask)
...
@@ -795,6 +815,14 @@ int pci_dma_supported(struct pci_dev *pdev, u64 device_mask)
struct
pci_iommu
*
iommu
=
pcp
->
pbm
->
iommu
;
struct
pci_iommu
*
iommu
=
pcp
->
pbm
->
iommu
;
dma_addr_mask
=
iommu
->
dma_addr_mask
;
dma_addr_mask
=
iommu
->
dma_addr_mask
;
if
(
pdev
->
vendor
==
PCI_VENDOR_ID_AL
&&
pdev
->
device
==
PCI_DEVICE_ID_AL_M5451
&&
device_mask
==
0x7fffffff
)
{
ali_sound_dma_hack
(
pdev
,
(
dma_addr_mask
&
0x80000000
)
!=
0
);
return
1
;
}
}
}
return
(
device_mask
&
dma_addr_mask
)
==
dma_addr_mask
;
return
(
device_mask
&
dma_addr_mask
)
==
dma_addr_mask
;
...
...
arch/sparc64/kernel/rtrap.S
View file @
2d4e1a0f
...
@@ -185,6 +185,7 @@ rtrap_xcall:
...
@@ -185,6 +185,7 @@ rtrap_xcall:
*
sched
+
signal
checks
with
IRQs
disabled
.
*
sched
+
signal
checks
with
IRQs
disabled
.
*/
*/
to_user
:
wrpr
%
g0
,
RTRAP_PSTATE_IRQOFF
,
%
pstate
to_user
:
wrpr
%
g0
,
RTRAP_PSTATE_IRQOFF
,
%
pstate
wrpr
0
,
%
pil
__handle_preemption_continue
:
__handle_preemption_continue
:
ldx
[%
g6
+
TI_FLAGS
],
%
l0
ldx
[%
g6
+
TI_FLAGS
],
%
l0
sethi
%
hi
(
_TIF_USER_WORK_MASK
),
%
o0
sethi
%
hi
(
_TIF_USER_WORK_MASK
),
%
o0
...
@@ -271,6 +272,7 @@ to_kernel:
...
@@ -271,6 +272,7 @@ to_kernel:
brnz
%
l5
,
kern_fpucheck
brnz
%
l5
,
kern_fpucheck
sethi
%
hi
(
PREEMPT_ACTIVE
),
%
l6
sethi
%
hi
(
PREEMPT_ACTIVE
),
%
l6
stw
%
l6
,
[%
g6
+
TI_PRE_COUNT
]
stw
%
l6
,
[%
g6
+
TI_PRE_COUNT
]
wrpr
0
,
%
pil
call
schedule
call
schedule
nop
nop
ba
,
pt
%
xcc
,
rtrap
ba
,
pt
%
xcc
,
rtrap
...
...
arch/sparc64/kernel/traps.c
View file @
2d4e1a0f
...
@@ -1575,6 +1575,9 @@ void show_trace_raw(struct thread_info *tp, unsigned long ksp)
...
@@ -1575,6 +1575,9 @@ void show_trace_raw(struct thread_info *tp, unsigned long ksp)
struct
reg_window
*
rw
;
struct
reg_window
*
rw
;
int
count
=
0
;
int
count
=
0
;
if
(
tp
==
current_thread_info
())
flushw_all
();
fp
=
ksp
+
STACK_BIAS
;
fp
=
ksp
+
STACK_BIAS
;
thread_base
=
(
unsigned
long
)
tp
;
thread_base
=
(
unsigned
long
)
tp
;
do
{
do
{
...
@@ -1597,6 +1600,15 @@ void show_trace_task(struct task_struct *tsk)
...
@@ -1597,6 +1600,15 @@ void show_trace_task(struct task_struct *tsk)
tsk
->
thread_info
->
ksp
);
tsk
->
thread_info
->
ksp
);
}
}
void
dump_stack
(
void
)
{
unsigned
long
ksp
;
__asm__
__volatile__
(
"mov %%fp, %0"
:
"=r"
(
ksp
));
show_trace_raw
(
current_thread_info
(),
ksp
);
}
void
die_if_kernel
(
char
*
str
,
struct
pt_regs
*
regs
)
void
die_if_kernel
(
char
*
str
,
struct
pt_regs
*
regs
)
{
{
static
int
die_counter
;
static
int
die_counter
;
...
...
drivers/usb/host/ohci-pci.c
View file @
2d4e1a0f
...
@@ -389,7 +389,7 @@ static int __init ohci_hcd_pci_init (void)
...
@@ -389,7 +389,7 @@ static int __init ohci_hcd_pci_init (void)
if
(
usb_disabled
())
if
(
usb_disabled
())
return
-
ENODEV
;
return
-
ENODEV
;
printk
(
KERN_DEBUG
"%s: block sizes: ed %
d td %
d
\n
"
,
hcd_name
,
printk
(
KERN_DEBUG
"%s: block sizes: ed %
Zd td %Z
d
\n
"
,
hcd_name
,
sizeof
(
struct
ed
),
sizeof
(
struct
td
));
sizeof
(
struct
ed
),
sizeof
(
struct
td
));
return
pci_module_init
(
&
ohci_pci_driver
);
return
pci_module_init
(
&
ohci_pci_driver
);
}
}
...
...
include/asm-sparc64/pci.h
View file @
2d4e1a0f
...
@@ -205,9 +205,14 @@ extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
...
@@ -205,9 +205,14 @@ extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
#define HAVE_ARCH_PCI_MWI
#define HAVE_ARCH_PCI_MWI
extern
int
pcibios_prep_mwi
(
struct
pci_dev
*
dev
);
extern
int
pcibios_prep_mwi
(
struct
pci_dev
*
dev
);
#endif
/* __KERNEL__ */
extern
void
pcibios_resource_to_bus
(
struct
pci_dev
*
dev
,
struct
pci_bus_region
*
region
,
struct
resource
*
res
);
extern
void
pcibios_bus_to_resource
(
struct
pci_dev
*
dev
,
struct
resource
*
res
,
struct
pci_bus_region
*
region
);
/* generic pci stuff */
#endif
/* __KERNEL__ */
#include <asm-generic/pci.h>
#endif
/* __SPARC64_PCI_H */
#endif
/* __SPARC64_PCI_H */
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