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
13e65280
Commit
13e65280
authored
May 08, 2005
by
David Woodhouse
Browse files
Options
Browse Files
Download
Plain Diff
Merge with master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
parents
4332bdd3
88d7bd8c
88d7bd8c
Changes
48
Hide whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
301 additions
and
375 deletions
+301
-375
Makefile
Makefile
+1
-1
arch/i386/kernel/acpi/boot.c
arch/i386/kernel/acpi/boot.c
+1
-1
arch/ppc/Kconfig
arch/ppc/Kconfig
+2
-0
arch/ppc64/Kconfig
arch/ppc64/Kconfig
+1
-0
arch/ppc64/kernel/pSeries_smp.c
arch/ppc64/kernel/pSeries_smp.c
+0
-7
arch/ppc64/kernel/xics.c
arch/ppc64/kernel/xics.c
+12
-4
arch/um/include/user_util.h
arch/um/include/user_util.h
+0
-1
arch/um/kernel/Makefile
arch/um/kernel/Makefile
+1
-5
arch/um/kernel/process_kern.c
arch/um/kernel/process_kern.c
+9
-11
arch/um/kernel/ptrace.c
arch/um/kernel/ptrace.c
+29
-50
arch/um/kernel/skas/include/mode_kern-skas.h
arch/um/kernel/skas/include/mode_kern-skas.h
+0
-1
arch/um/kernel/skas/include/uaccess-skas.h
arch/um/kernel/skas/include/uaccess-skas.h
+2
-2
arch/um/kernel/skas/process.c
arch/um/kernel/skas/process.c
+22
-13
arch/um/kernel/skas/process_kern.c
arch/um/kernel/skas/process_kern.c
+0
-4
arch/um/kernel/skas/uaccess.c
arch/um/kernel/skas/uaccess.c
+5
-2
arch/um/kernel/syscall_kern.c
arch/um/kernel/syscall_kern.c
+0
-1
arch/um/kernel/trap_kern.c
arch/um/kernel/trap_kern.c
+1
-1
arch/um/kernel/tt/include/mode_kern-tt.h
arch/um/kernel/tt/include/mode_kern-tt.h
+0
-1
arch/um/kernel/tt/include/uaccess-tt.h
arch/um/kernel/tt/include/uaccess-tt.h
+2
-2
arch/um/kernel/tt/mem.c
arch/um/kernel/tt/mem.c
+1
-7
arch/um/kernel/tt/process_kern.c
arch/um/kernel/tt/process_kern.c
+11
-9
arch/um/kernel/tt/syscall_user.c
arch/um/kernel/tt/syscall_user.c
+4
-0
arch/um/kernel/um_arch.c
arch/um/kernel/um_arch.c
+4
-3
arch/um/sys-i386/ptrace.c
arch/um/sys-i386/ptrace.c
+40
-0
arch/um/sys-ppc/ptrace.c
arch/um/sys-ppc/ptrace.c
+40
-0
arch/um/sys-x86_64/ptrace.c
arch/um/sys-x86_64/ptrace.c
+44
-0
arch/um/sys-x86_64/signal.c
arch/um/sys-x86_64/signal.c
+1
-1
arch/um/sys-x86_64/syscalls.c
arch/um/sys-x86_64/syscalls.c
+2
-0
drivers/block/rd.c
drivers/block/rd.c
+1
-1
drivers/media/video/tuner-core.c
drivers/media/video/tuner-core.c
+12
-2
drivers/s390/scsi/zfcp_aux.c
drivers/s390/scsi/zfcp_aux.c
+1
-1
drivers/s390/scsi/zfcp_def.h
drivers/s390/scsi/zfcp_def.h
+0
-1
drivers/scsi/aacraid/linit.c
drivers/scsi/aacraid/linit.c
+1
-1
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
+0
-2
drivers/scsi/aic7xxx/aic7xxx_osm.h
drivers/scsi/aic7xxx/aic7xxx_osm.h
+0
-6
drivers/scsi/qla2xxx/qla_attr.c
drivers/scsi/qla2xxx/qla_attr.c
+1
-7
drivers/scsi/qla2xxx/qla_gbl.h
drivers/scsi/qla2xxx/qla_gbl.h
+2
-2
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/qla2xxx/qla_os.c
+2
-1
drivers/scsi/scsi.c
drivers/scsi/scsi.c
+1
-1
drivers/scsi/scsi_transport_spi.c
drivers/scsi/scsi_transport_spi.c
+34
-15
drivers/scsi/sr_ioctl.c
drivers/scsi/sr_ioctl.c
+3
-0
drivers/scsi/sym53c8xx_2/sym_glue.c
drivers/scsi/sym53c8xx_2/sym_glue.c
+3
-2
drivers/serial/8250_pci.c
drivers/serial/8250_pci.c
+2
-0
fs/partitions/msdos.c
fs/partitions/msdos.c
+0
-5
include/asm-ppc64/xics.h
include/asm-ppc64/xics.h
+0
-3
include/asm-um/elf.h
include/asm-um/elf.h
+0
-196
include/asm-um/setup.h
include/asm-um/setup.h
+2
-1
sound/pci/via82xx.c
sound/pci/via82xx.c
+1
-1
No files found.
Makefile
View file @
13e65280
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
12
EXTRAVERSION
=
-rc
3
EXTRAVERSION
=
-rc
4
NAME
=
Woozy Numbat
# *DOCUMENTATION*
...
...
arch/i386/kernel/acpi/boot.c
View file @
13e65280
...
...
@@ -650,7 +650,7 @@ acpi_find_rsdp (void)
*/
rsdp_phys
=
acpi_scan_rsdp
(
0
,
0x400
);
if
(
!
rsdp_phys
)
rsdp_phys
=
acpi_scan_rsdp
(
0xE0000
,
0x
FFFFF
);
rsdp_phys
=
acpi_scan_rsdp
(
0xE0000
,
0x
20000
);
return
rsdp_phys
;
}
...
...
arch/ppc/Kconfig
View file @
13e65280
...
...
@@ -77,9 +77,11 @@ config 44x
bool "44x"
config POWER3
select PPC_FPU
bool "POWER3"
config POWER4
select PPC_FPU
bool "POWER4 and 970 (G5)"
config 8xx
...
...
arch/ppc64/Kconfig
View file @
13e65280
...
...
@@ -262,6 +262,7 @@ config PPC_RTAS
config RTAS_PROC
bool "Proc interface to RTAS"
depends on PPC_RTAS
default y
config RTAS_FLASH
tristate "Firmware flash interface"
...
...
arch/ppc64/kernel/pSeries_smp.c
View file @
13e65280
...
...
@@ -326,13 +326,6 @@ static void __devinit smp_xics_setup_cpu(int cpu)
cpu_clear
(
cpu
,
of_spin_map
);
/*
* Put the calling processor into the GIQ. This is really only
* necessary from a secondary thread as the OF start-cpu interface
* performs this function for us on primary threads.
*/
rtas_set_indicator
(
GLOBAL_INTERRUPT_QUEUE
,
(
1UL
<<
interrupt_server_size
)
-
1
-
default_distrib_server
,
1
);
}
static
DEFINE_SPINLOCK
(
timebase_lock
);
...
...
arch/ppc64/kernel/xics.c
View file @
13e65280
...
...
@@ -432,6 +432,7 @@ void xics_cause_IPI(int cpu)
{
ops
->
qirr_info
(
cpu
,
IPI_PRIORITY
);
}
#endif
/* CONFIG_SMP */
void
xics_setup_cpu
(
void
)
{
...
...
@@ -439,9 +440,17 @@ void xics_setup_cpu(void)
ops
->
cppr_info
(
cpu
,
0xff
);
iosync
();
}
#endif
/* CONFIG_SMP */
/*
* Put the calling processor into the GIQ. This is really only
* necessary from a secondary thread as the OF start-cpu interface
* performs this function for us on primary threads.
*
* XXX: undo of teardown on kexec needs this too, as may hotplug
*/
rtas_set_indicator
(
GLOBAL_INTERRUPT_QUEUE
,
(
1UL
<<
interrupt_server_size
)
-
1
-
default_distrib_server
,
1
);
}
void
xics_init_IRQ
(
void
)
{
...
...
@@ -563,8 +572,7 @@ void xics_init_IRQ(void)
for
(;
i
<
NR_IRQS
;
++
i
)
get_irq_desc
(
i
)
->
handler
=
&
xics_pic
;
ops
->
cppr_info
(
boot_cpuid
,
0xff
);
iosync
();
xics_setup_cpu
();
ppc64_boot_msg
(
0x21
,
"XICS Done"
);
}
...
...
arch/um/include/user_util.h
View file @
13e65280
...
...
@@ -67,7 +67,6 @@ extern void *um_kmalloc(int size);
extern
int
switcheroo
(
int
fd
,
int
prot
,
void
*
from
,
void
*
to
,
int
size
);
extern
void
setup_machinename
(
char
*
machine_out
);
extern
void
setup_hostinfo
(
void
);
extern
void
add_arg
(
char
*
arg
);
extern
void
init_new_thread_stack
(
void
*
sig_stack
,
void
(
*
usr1_handler
)(
int
));
extern
void
init_new_thread_signals
(
int
altstack
);
extern
void
do_exec
(
int
old_pid
,
int
new_pid
);
...
...
arch/um/kernel/Makefile
View file @
13e65280
...
...
@@ -23,14 +23,10 @@ obj-$(CONFIG_SYSCALL_DEBUG) += syscall_user.o
obj-$(CONFIG_MODE_TT)
+=
tt/
obj-$(CONFIG_MODE_SKAS)
+=
skas/
# This needs be compiled with frame pointers regardless of how the rest of the
# kernel is built.
CFLAGS_frame.o
:=
-fno-omit-frame-pointer
user-objs-$(CONFIG_TTY_LOG)
+=
tty_log.o
USER_OBJS
:=
$
(
user-objs-y
)
config.o helper.o main.o process.o tempfile.o
\
time.o tty_log.o umid.o user_util.o
frame.o
time.o tty_log.o umid.o user_util.o
include
arch/um/scripts/Makefile.rules
...
...
arch/um/kernel/process_kern.c
View file @
13e65280
...
...
@@ -115,16 +115,6 @@ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
return
(
pid
);
}
void
switch_mm
(
struct
mm_struct
*
prev
,
struct
mm_struct
*
next
,
struct
task_struct
*
tsk
)
{
int
cpu
=
smp_processor_id
();
if
(
prev
!=
next
)
cpu_clear
(
cpu
,
prev
->
cpu_vm_mask
);
cpu_set
(
cpu
,
next
->
cpu_vm_mask
);
}
void
set_current
(
void
*
t
)
{
struct
task_struct
*
task
=
t
;
...
...
@@ -152,7 +142,6 @@ void release_thread(struct task_struct *task)
void
exit_thread
(
void
)
{
CHOOSE_MODE
(
exit_thread_tt
(),
exit_thread_skas
());
unprotect_stack
((
unsigned
long
)
current_thread
);
}
...
...
@@ -476,12 +465,21 @@ int singlestepping(void * t)
return
2
;
}
/*
* Only x86 and x86_64 have an arch_align_stack().
* All other arches have "#define arch_align_stack(x) (x)"
* in their asm/system.h
* As this is included in UML from asm-um/system-generic.h,
* we can use it to behave as the subarch does.
*/
#ifndef arch_align_stack
unsigned
long
arch_align_stack
(
unsigned
long
sp
)
{
if
(
randomize_va_space
)
sp
-=
get_random_int
()
%
8192
;
return
sp
&
~
0xf
;
}
#endif
/*
...
...
arch/um/kernel/ptrace.c
View file @
13e65280
...
...
@@ -19,15 +19,30 @@
#include "skas_ptrace.h"
#include "sysdep/ptrace.h"
static
inline
void
set_singlestepping
(
struct
task_struct
*
child
,
int
on
)
{
if
(
on
)
child
->
ptrace
|=
PT_DTRACE
;
else
child
->
ptrace
&=
~
PT_DTRACE
;
child
->
thread
.
singlestep_syscall
=
0
;
#ifdef SUBARCH_SET_SINGLESTEPPING
SUBARCH_SET_SINGLESTEPPING
(
child
,
on
)
#endif
}
/*
* Called by kernel/ptrace.c when detaching..
*/
void
ptrace_disable
(
struct
task_struct
*
child
)
{
child
->
ptrace
&=
~
PT_DTRACE
;
child
->
thread
.
singlestep_syscall
=
0
;
set_singlestepping
(
child
,
0
);
}
extern
int
peek_user
(
struct
task_struct
*
child
,
long
addr
,
long
data
);
extern
int
poke_user
(
struct
task_struct
*
child
,
long
addr
,
long
data
);
long
sys_ptrace
(
long
request
,
long
pid
,
long
addr
,
long
data
)
{
struct
task_struct
*
child
;
...
...
@@ -67,6 +82,10 @@ long sys_ptrace(long request, long pid, long addr, long data)
goto
out_tsk
;
}
#ifdef SUBACH_PTRACE_SPECIAL
SUBARCH_PTRACE_SPECIAL
(
child
,
request
,
addr
,
data
)
#endif
ret
=
ptrace_check_attach
(
child
,
request
==
PTRACE_KILL
);
if
(
ret
<
0
)
goto
out_tsk
;
...
...
@@ -87,28 +106,9 @@ long sys_ptrace(long request, long pid, long addr, long data)
}
/* read the word at location addr in the USER area. */
case
PTRACE_PEEKUSR
:
{
unsigned
long
tmp
;
ret
=
-
EIO
;
if
((
addr
&
3
)
||
addr
<
0
)
break
;
tmp
=
0
;
/* Default return condition */
if
(
addr
<
MAX_REG_OFFSET
){
tmp
=
getreg
(
child
,
addr
);
}
#if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT)
else
if
((
addr
>=
offsetof
(
struct
user
,
u_debugreg
[
0
]))
&&
(
addr
<=
offsetof
(
struct
user
,
u_debugreg
[
7
]))){
addr
-=
offsetof
(
struct
user
,
u_debugreg
[
0
]);
addr
=
addr
>>
2
;
tmp
=
child
->
thread
.
arch
.
debugregs
[
addr
];
}
#endif
ret
=
put_user
(
tmp
,
(
unsigned
long
__user
*
)
data
);
break
;
}
case
PTRACE_PEEKUSR
:
ret
=
peek_user
(
child
,
addr
,
data
);
break
;
/* when I and D space are separate, this will have to be fixed. */
case
PTRACE_POKETEXT
:
/* write the word at location addr. */
...
...
@@ -121,26 +121,8 @@ long sys_ptrace(long request, long pid, long addr, long data)
break
;
case
PTRACE_POKEUSR
:
/* write the word at location addr in the USER area */
ret
=
-
EIO
;
if
((
addr
&
3
)
||
addr
<
0
)
break
;
if
(
addr
<
MAX_REG_OFFSET
)
{
ret
=
putreg
(
child
,
addr
,
data
);
break
;
}
#if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT)
else
if
((
addr
>=
offsetof
(
struct
user
,
u_debugreg
[
0
]))
&&
(
addr
<=
offsetof
(
struct
user
,
u_debugreg
[
7
]))){
addr
-=
offsetof
(
struct
user
,
u_debugreg
[
0
]);
addr
=
addr
>>
2
;
if
((
addr
==
4
)
||
(
addr
==
5
))
break
;
child
->
thread
.
arch
.
debugregs
[
addr
]
=
data
;
ret
=
0
;
}
#endif
break
;
ret
=
poke_user
(
child
,
addr
,
data
);
break
;
case
PTRACE_SYSCALL
:
/* continue and stop at next (return from) syscall */
case
PTRACE_CONT
:
{
/* restart after signal. */
...
...
@@ -148,8 +130,7 @@ long sys_ptrace(long request, long pid, long addr, long data)
if
(
!
valid_signal
(
data
))
break
;
child
->
ptrace
&=
~
PT_DTRACE
;
child
->
thread
.
singlestep_syscall
=
0
;
set_singlestepping
(
child
,
0
);
if
(
request
==
PTRACE_SYSCALL
)
{
set_tsk_thread_flag
(
child
,
TIF_SYSCALL_TRACE
);
}
...
...
@@ -172,8 +153,7 @@ long sys_ptrace(long request, long pid, long addr, long data)
if
(
child
->
exit_state
==
EXIT_ZOMBIE
)
/* already dead */
break
;
child
->
ptrace
&=
~
PT_DTRACE
;
child
->
thread
.
singlestep_syscall
=
0
;
set_singlestepping
(
child
,
0
);
child
->
exit_code
=
SIGKILL
;
wake_up_process
(
child
);
break
;
...
...
@@ -184,8 +164,7 @@ long sys_ptrace(long request, long pid, long addr, long data)
if
(
!
valid_signal
(
data
))
break
;
clear_tsk_thread_flag
(
child
,
TIF_SYSCALL_TRACE
);
child
->
ptrace
|=
PT_DTRACE
;
child
->
thread
.
singlestep_syscall
=
0
;
set_singlestepping
(
child
,
1
);
child
->
exit_code
=
data
;
/* give it a chance to run. */
wake_up_process
(
child
);
...
...
arch/um/kernel/skas/include/mode_kern-skas.h
View file @
13e65280
...
...
@@ -18,7 +18,6 @@ extern int copy_thread_skas(int nr, unsigned long clone_flags,
unsigned
long
sp
,
unsigned
long
stack_top
,
struct
task_struct
*
p
,
struct
pt_regs
*
regs
);
extern
void
release_thread_skas
(
struct
task_struct
*
task
);
extern
void
exit_thread_skas
(
void
);
extern
void
initial_thread_cb_skas
(
void
(
*
proc
)(
void
*
),
void
*
arg
);
extern
void
init_idle_skas
(
void
);
extern
void
flush_tlb_kernel_range_skas
(
unsigned
long
start
,
...
...
arch/um/kernel/skas/include/uaccess-skas.h
View file @
13e65280
...
...
@@ -18,8 +18,8 @@
((unsigned long) (addr) + (size) <= FIXADDR_USER_END) && \
((unsigned long) (addr) + (size) >= (unsigned long)(addr))))
static
inline
int
__deprecated
verify_area_skas
(
int
type
,
const
void
*
addr
,
unsigned
long
size
)
static
inline
int
verify_area_skas
(
int
type
,
const
void
*
addr
,
unsigned
long
size
)
{
return
(
access_ok_skas
(
type
,
addr
,
size
)
?
0
:
-
EFAULT
);
}
...
...
arch/um/kernel/skas/process.c
View file @
13e65280
...
...
@@ -201,6 +201,11 @@ void userspace(union uml_pt_regs *regs)
}
}
}
#define INIT_JMP_NEW_THREAD 0
#define INIT_JMP_REMOVE_SIGSTACK 1
#define INIT_JMP_CALLBACK 2
#define INIT_JMP_HALT 3
#define INIT_JMP_REBOOT 4
void
new_thread
(
void
*
stack
,
void
**
switch_buf_ptr
,
void
**
fork_buf_ptr
,
void
(
*
handler
)(
int
))
...
...
@@ -236,7 +241,7 @@ void thread_wait(void *sw, void *fb)
*
switch_buf
=
&
buf
;
fork_buf
=
fb
;
if
(
sigsetjmp
(
buf
,
1
)
==
0
)
siglongjmp
(
*
fork_buf
,
1
);
siglongjmp
(
*
fork_buf
,
INIT_JMP_REMOVE_SIGSTACK
);
}
void
switch_threads
(
void
*
me
,
void
*
next
)
...
...
@@ -266,21 +271,25 @@ int start_idle_thread(void *stack, void *switch_buf_ptr, void **fork_buf_ptr)
*
fork_buf_ptr
=
&
initial_jmpbuf
;
n
=
sigsetjmp
(
initial_jmpbuf
,
1
);
if
(
n
==
0
)
new_thread_proc
((
void
*
)
stack
,
new_thread_handler
);
else
if
(
n
==
1
)
remove_sigstack
();
else
if
(
n
==
2
){
switch
(
n
){
case
INIT_JMP_NEW_THREAD
:
new_thread_proc
((
void
*
)
stack
,
new_thread_handler
);
break
;
case
INIT_JMP_REMOVE_SIGSTACK
:
remove_sigstack
();
break
;
case
INIT_JMP_CALLBACK
:
(
*
cb_proc
)(
cb_arg
);
siglongjmp
(
*
cb_back
,
1
);
}
else
if
(
n
==
3
){
break
;
case
INIT_JMP_HALT
:
kmalloc_ok
=
0
;
return
(
0
);
}
else
if
(
n
==
4
){
case
INIT_JMP_REBOOT
:
kmalloc_ok
=
0
;
return
(
1
);
default:
panic
(
"Bad sigsetjmp return in start_idle_thread - %d
\n
"
,
n
);
}
siglongjmp
(
**
switch_buf
,
1
);
}
...
...
@@ -305,7 +314,7 @@ void initial_thread_cb_skas(void (*proc)(void *), void *arg)
block_signals
();
if
(
sigsetjmp
(
here
,
1
)
==
0
)
siglongjmp
(
initial_jmpbuf
,
2
);
siglongjmp
(
initial_jmpbuf
,
INIT_JMP_CALLBACK
);
unblock_signals
();
cb_proc
=
NULL
;
...
...
@@ -316,13 +325,13 @@ void initial_thread_cb_skas(void (*proc)(void *), void *arg)
void
halt_skas
(
void
)
{
block_signals
();
siglongjmp
(
initial_jmpbuf
,
3
);
siglongjmp
(
initial_jmpbuf
,
INIT_JMP_HALT
);
}
void
reboot_skas
(
void
)
{
block_signals
();
siglongjmp
(
initial_jmpbuf
,
4
);
siglongjmp
(
initial_jmpbuf
,
INIT_JMP_REBOOT
);
}
void
switch_mm_skas
(
int
mm_fd
)
...
...
arch/um/kernel/skas/process_kern.c
View file @
13e65280
...
...
@@ -83,10 +83,6 @@ void release_thread_skas(struct task_struct *task)
{
}
void
exit_thread_skas
(
void
)
{
}
void
fork_handler
(
int
sig
)
{
change_sig
(
SIGUSR1
,
1
);
...
...
arch/um/kernel/skas/uaccess.c
View file @
13e65280
...
...
@@ -29,9 +29,12 @@ static unsigned long maybe_map(unsigned long virt, int is_write)
if
(
IS_ERR
(
phys
)
||
(
is_write
&&
!
pte_write
(
pte
))){
err
=
handle_page_fault
(
virt
,
0
,
is_write
,
1
,
&
dummy_code
);
if
(
err
)
return
(
0
);
return
(
-
1UL
);
phys
=
um_virt_to_phys
(
current
,
virt
,
NULL
);
}
if
(
IS_ERR
(
phys
))
phys
=
(
void
*
)
-
1
;
return
((
unsigned
long
)
phys
);
}
...
...
@@ -42,7 +45,7 @@ static int do_op(unsigned long addr, int len, int is_write,
int
n
;
addr
=
maybe_map
(
addr
,
is_write
);
if
(
addr
==
-
1
)
if
(
addr
==
-
1
UL
)
return
(
-
1
);
page
=
phys_to_page
(
addr
);
...
...
arch/um/kernel/syscall_kern.c
View file @
13e65280
...
...
@@ -17,7 +17,6 @@
#include "linux/utime.h"
#include "asm/mman.h"
#include "asm/uaccess.h"
#include "asm/ipc.h"
#include "kern_util.h"
#include "user_util.h"
#include "sysdep/syscalls.h"
...
...
arch/um/kernel/trap_kern.c
View file @
13e65280
...
...
@@ -48,7 +48,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
goto
good_area
;
else
if
(
!
(
vma
->
vm_flags
&
VM_GROWSDOWN
))
goto
out
;
else
if
(
!
ARCH_IS_STACKGROW
(
address
))
else
if
(
is_user
&&
!
ARCH_IS_STACKGROW
(
address
))
goto
out
;
else
if
(
expand_stack
(
vma
,
address
))
goto
out
;
...
...
arch/um/kernel/tt/include/mode_kern-tt.h
View file @
13e65280
...
...
@@ -19,7 +19,6 @@ extern int copy_thread_tt(int nr, unsigned long clone_flags, unsigned long sp,
unsigned
long
stack_top
,
struct
task_struct
*
p
,
struct
pt_regs
*
regs
);
extern
void
release_thread_tt
(
struct
task_struct
*
task
);
extern
void
exit_thread_tt
(
void
);
extern
void
initial_thread_cb_tt
(
void
(
*
proc
)(
void
*
),
void
*
arg
);
extern
void
init_idle_tt
(
void
);
extern
void
flush_tlb_kernel_range_tt
(
unsigned
long
start
,
unsigned
long
end
);
...
...
arch/um/kernel/tt/include/uaccess-tt.h
View file @
13e65280
...
...
@@ -33,8 +33,8 @@ extern unsigned long uml_physmem;
(((unsigned long) (addr) <= ((unsigned long) (addr) + (size))) && \
(under_task_size(addr, size) || is_stack(addr, size))))
static
inline
int
__deprecated
verify_area_tt
(
int
type
,
const
void
*
addr
,
unsigned
long
size
)
static
inline
int
verify_area_tt
(
int
type
,
const
void
*
addr
,
unsigned
long
size
)
{
return
(
access_ok_tt
(
type
,
addr
,
size
)
?
0
:
-
EFAULT
);
}
...
...
arch/um/kernel/tt/mem.c
View file @
13e65280
...
...
@@ -21,14 +21,8 @@ void before_mem_tt(unsigned long brk_start)
remap_data
(
UML_ROUND_DOWN
(
&
__bss_start
),
UML_ROUND_UP
(
&
_end
),
1
);
}
#ifdef CONFIG_HOST_2G_2G
#define TOP 0x80000000
#else
#define TOP 0xc0000000
#endif
#define SIZE ((CONFIG_NEST_LEVEL + CONFIG_KERNEL_HALF_GIGS) * 0x20000000)
#define START (
TOP
- SIZE)
#define START (
CONFIG_TOP_ADDR
- SIZE)
unsigned
long
set_task_sizes_tt
(
int
arg
,
unsigned
long
*
host_size_out
,
unsigned
long
*
task_size_out
)
...
...
arch/um/kernel/tt/process_kern.c
View file @
13e65280
...
...
@@ -65,8 +65,7 @@ void *switch_to_tt(void *prev, void *next, void *last)
panic
(
"write of switch_pipe failed, err = %d"
,
-
err
);
reading
=
1
;
if
((
from
->
exit_state
==
EXIT_ZOMBIE
)
||
(
from
->
exit_state
==
EXIT_DEAD
))
if
(
from
->
thread
.
mode
.
tt
.
switch_pipe
[
0
]
==
-
1
)
os_kill_process
(
os_getpid
(),
0
);
err
=
os_read_file
(
from
->
thread
.
mode
.
tt
.
switch_pipe
[
0
],
&
c
,
sizeof
(
c
));
...
...
@@ -81,8 +80,7 @@ void *switch_to_tt(void *prev, void *next, void *last)
* in case it has not already killed itself.
*/
prev_sched
=
current
->
thread
.
prev_sched
;
if
((
prev_sched
->
exit_state
==
EXIT_ZOMBIE
)
||
(
prev_sched
->
exit_state
==
EXIT_DEAD
))
if
(
prev_sched
->
thread
.
mode
.
tt
.
switch_pipe
[
0
]
==
-
1
)
os_kill_process
(
prev_sched
->
thread
.
mode
.
tt
.
extern_pid
,
1
);
change_sig
(
SIGVTALRM
,
vtalrm
);
...
...
@@ -101,14 +99,18 @@ void release_thread_tt(struct task_struct *task)
{
int
pid
=
task
->
thread
.
mode
.
tt
.
extern_pid
;
/*
* We first have to kill the other process, before
* closing its switch_pipe. Else it might wake up
* and receive "EOF" before we could kill it.
*/
if
(
os_getpid
()
!=
pid
)
os_kill_process
(
pid
,
0
);
}
void
exit_thread_tt
(
void
)
{
os_close_file
(
current
->
thread
.
mode
.
tt
.
switch_pipe
[
0
]);
os_close_file
(
current
->
thread
.
mode
.
tt
.
switch_pipe
[
1
])
;
os_close_file
(
task
->
thread
.
mode
.
tt
.
switch_pipe
[
0
]);
os_close_file
(
task
->
thread
.
mode
.
tt
.
switch_pipe
[
1
]);
/* use switch_pipe as flag: thread is released */
task
->
thread
.
mode
.
tt
.
switch_pipe
[
0
]
=
-
1
;
}
void
suspend_new_thread
(
int
fd
)
...
...
arch/um/kernel/tt/syscall_user.c
View file @
13e65280
...
...
@@ -63,6 +63,10 @@ void do_syscall(void *task, int pid, int local_using_sysemu)
UPT_SYSCALL_NR
(
TASK_REGS
(
task
))
=
PT_SYSCALL_NR
(
proc_regs
);
#ifdef UPT_ORIGGPR2
UPT_ORIGGPR2
(
TASK_REGS
(
task
))
=
REGS_ORIGGPR2
(
proc_regs
);
#endif
if
(((
unsigned
long
*
)
PT_IP
(
proc_regs
)
>=
&
_stext
)
&&
((
unsigned
long
*
)
PT_IP
(
proc_regs
)
<=
&
_etext
))
tracer_panic
(
"I'm tracing myself and I can't get out"
);
...
...
arch/um/kernel/um_arch.c
View file @
13e65280
...
...
@@ -23,6 +23,7 @@
#include "asm/ptrace.h"
#include "asm/elf.h"
#include "asm/user.h"
#include "asm/setup.h"
#include "ubd_user.h"
#include "asm/current.h"
#include "asm/setup.h"
...
...
@@ -42,9 +43,9 @@
#define DEFAULT_COMMAND_LINE "root=98:0"
/* Changed in linux_main and setup_arch, which run before SMP is started */
char
command_line
[
COMMAND_LINE_SIZE
]
=
{
0
};
static
char
command_line
[
COMMAND_LINE_SIZE
]
=
{
0
};
void
add_arg
(
char
*
arg
)
static
void
add_arg
(
char
*
arg
)
{
if
(
strlen
(
command_line
)
+
strlen
(
arg
)
+
1
>
COMMAND_LINE_SIZE
)
{
printf
(
"add_arg: Too many command line arguments!
\n
"
);
...
...
@@ -449,7 +450,7 @@ void __init setup_arch(char **cmdline_p)
{
notifier_chain_register
(
&
panic_notifier_list
,
&
panic_exit_notifier
);
paging_init
();
strlcpy
(
saved_command_line
,
command_line
,
COMMAND_LINE_SIZE
);
strlcpy
(
saved_command_line
,
command_line
,
COMMAND_LINE_SIZE
);
*
cmdline_p
=
command_line
;
setup_hostinfo
();
}
...
...
arch/um/sys-i386/ptrace.c
View file @
13e65280
...
...
@@ -73,6 +73,25 @@ int putreg(struct task_struct *child, int regno, unsigned long value)
return
0
;
}
int
poke_user
(
struct
task_struct
*
child
,
long
addr
,
long
data
)
{
if
((
addr
&
3
)
||
addr
<
0
)
return
-
EIO
;
if
(
addr
<
MAX_REG_OFFSET
)
return
putreg
(
child
,
addr
,
data
);
else
if
((
addr
>=
offsetof
(
struct
user
,
u_debugreg
[
0
]))
&&
(
addr
<=
offsetof
(
struct
user
,
u_debugreg
[
7
]))){
addr
-=
offsetof
(
struct
user
,
u_debugreg
[
0
]);
addr
=
addr
>>
2
;
if
((
addr
==
4
)
||
(
addr
==
5
))
return
-
EIO
;
child
->
thread
.
arch
.
debugregs
[
addr
]
=
data
;
return
0
;
}
return
-
EIO
;
}
unsigned
long
getreg
(
struct
task_struct
*
child
,
int
regno
)
{
unsigned
long
retval
=
~
0UL
;
...
...
@@ -93,6 +112,27 @@ unsigned long getreg(struct task_struct *child, int regno)
return
retval
;
}
int
peek_user
(
struct
task_struct
*
child
,
long
addr
,
long
data
)
{
/* read the word at location addr in the USER area. */
unsigned
long
tmp
;
if
((
addr
&
3
)
||
addr
<
0
)
return
-
EIO
;
tmp
=
0
;
/* Default return condition */
if
(
addr
<
MAX_REG_OFFSET
){
tmp
=
getreg
(
child
,
addr
);
}
else
if
((
addr
>=
offsetof
(
struct
user
,
u_debugreg
[
0
]))
&&
(
addr
<=
offsetof
(
struct
user
,
u_debugreg
[
7
]))){
addr
-=
offsetof
(
struct
user
,
u_debugreg
[
0
]);
addr
=
addr
>>
2
;
tmp
=
child
->
thread
.
arch
.
debugregs
[
addr
];
}
return
put_user
(
tmp
,
(
unsigned
long
*
)
data
);
}
struct
i387_fxsave_struct
{
unsigned
short
cwd
;
unsigned
short
swd
;
...
...
arch/um/sys-ppc/ptrace.c
View file @
13e65280
...
...
@@ -8,6 +8,25 @@ int putreg(struct task_struct *child, unsigned long regno,
return
0
;
}
int
poke_user
(
struct
task_struct
*
child
,
long
addr
,
long
data
)
{
if
((
addr
&
3
)
||
addr
<
0
)
return
-
EIO
;
if
(
addr
<
MAX_REG_OFFSET
)
return
putreg
(
child
,
addr
,
data
);
else
if
((
addr
>=
offsetof
(
struct
user
,
u_debugreg
[
0
]))
&&
(
addr
<=
offsetof
(
struct
user
,
u_debugreg
[
7
]))){
addr
-=
offsetof
(
struct
user
,
u_debugreg
[
0
]);
addr
=
addr
>>
2
;
if
((
addr
==
4
)
||
(
addr
==
5
))
return
-
EIO
;
child
->
thread
.
arch
.
debugregs
[
addr
]
=
data
;
return
0
;
}
return
-
EIO
;
}
unsigned
long
getreg
(
struct
task_struct
*
child
,
unsigned
long
regno
)
{
unsigned
long
retval
=
~
0UL
;
...
...
@@ -16,6 +35,27 @@ unsigned long getreg(struct task_struct *child, unsigned long regno)
return
retval
;
}
int
peek_user
(
struct
task_struct
*
child
,
long
addr
,
long
data
)
{
/* read the word at location addr in the USER area. */
unsigned
long
tmp
;
if
((
addr
&
3
)
||
addr
<
0
)
return
-
EIO
;
tmp
=
0
;
/* Default return condition */
if
(
addr
<
MAX_REG_OFFSET
){
tmp
=
getreg
(
child
,
addr
);
}
else
if
((
addr
>=
offsetof
(
struct
user
,
u_debugreg
[
0
]))
&&
(
addr
<=
offsetof
(
struct
user
,
u_debugreg
[
7
]))){
addr
-=
offsetof
(
struct
user
,
u_debugreg
[
0
]);
addr
=
addr
>>
2
;
tmp
=
child
->
thread
.
arch
.
debugregs
[
addr
];
}
return
put_user
(
tmp
,
(
unsigned
long
*
)
data
);
}
/*
* Overrides for Emacs so that we follow Linus's tabbing style.
* Emacs will notice this stuff at the end of the file and automatically
...
...
arch/um/sys-x86_64/ptrace.c
View file @
13e65280
...
...
@@ -62,6 +62,27 @@ int putreg(struct task_struct *child, int regno, unsigned long value)
return
0
;
}
int
poke_user
(
struct
task_struct
*
child
,
long
addr
,
long
data
)
{
if
((
addr
&
3
)
||
addr
<
0
)
return
-
EIO
;
if
(
addr
<
MAX_REG_OFFSET
)
return
putreg
(
child
,
addr
,
data
);
#if 0 /* Need x86_64 debugregs handling */
else if((addr >= offsetof(struct user, u_debugreg[0])) &&
(addr <= offsetof(struct user, u_debugreg[7]))){
addr -= offsetof(struct user, u_debugreg[0]);
addr = addr >> 2;
if((addr == 4) || (addr == 5)) return -EIO;
child->thread.arch.debugregs[addr] = data;
return 0;
}
#endif
return
-
EIO
;
}
unsigned
long
getreg
(
struct
task_struct
*
child
,
int
regno
)
{
unsigned
long
retval
=
~
0UL
;
...
...
@@ -84,6 +105,29 @@ unsigned long getreg(struct task_struct *child, int regno)
return
retval
;
}
int
peek_user
(
struct
task_struct
*
child
,
long
addr
,
long
data
)
{
/* read the word at location addr in the USER area. */
unsigned
long
tmp
;
if
((
addr
&
3
)
||
addr
<
0
)
return
-
EIO
;
tmp
=
0
;
/* Default return condition */
if
(
addr
<
MAX_REG_OFFSET
){
tmp
=
getreg
(
child
,
addr
);
}
#if 0 /* Need x86_64 debugregs handling */
else if((addr >= offsetof(struct user, u_debugreg[0])) &&
(addr <= offsetof(struct user, u_debugreg[7]))){
addr -= offsetof(struct user, u_debugreg[0]);
addr = addr >> 2;
tmp = child->thread.arch.debugregs[addr];
}
#endif
return
put_user
(
tmp
,
(
unsigned
long
*
)
data
);
}
void
arch_switch
(
void
)
{
/* XXX
...
...
arch/um/sys-x86_64/signal.c
View file @
13e65280
...
...
@@ -168,7 +168,7 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,
frame
=
(
struct
rt_sigframe
__user
*
)
round_down
(
stack_top
-
sizeof
(
struct
rt_sigframe
),
16
)
-
8
;
frame
-=
128
;
((
unsigned
char
*
)
frame
)
-=
128
;
if
(
!
access_ok
(
VERIFY_WRITE
,
fp
,
sizeof
(
struct
_fpstate
)))
goto
out
;
...
...
arch/um/sys-x86_64/syscalls.c
View file @
13e65280
...
...
@@ -44,6 +44,8 @@ long sys_modify_ldt_tt(int func, void *ptr, unsigned long bytecount)
#ifdef CONFIG_MODE_SKAS
extern
int
userspace_pid
[];
#include "skas_ptrace.h"
long
sys_modify_ldt_skas
(
int
func
,
void
*
ptr
,
unsigned
long
bytecount
)
{
struct
ptrace_ldt
ldt
;
...
...
drivers/block/rd.c
View file @
13e65280
...
...
@@ -74,7 +74,7 @@ static struct request_queue *rd_queue[CONFIG_BLK_DEV_RAM_COUNT];
* architecture-specific setup routine (from the stored boot sector
* information).
*/
static
int
rd_size
=
CONFIG_BLK_DEV_RAM_SIZE
;
/* Size of the RAM disks */
int
rd_size
=
CONFIG_BLK_DEV_RAM_SIZE
;
/* Size of the RAM disks */
/*
* It would be very desirable to have a soft-blocksize (that in the case
* of the ramdisk driver is also the hardblocksize ;) of PAGE_SIZE because
...
...
drivers/media/video/tuner-core.c
View file @
13e65280
...
...
@@ -357,8 +357,16 @@ tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
V4L2_TUNER_RADIO
!=
t
->
mode
)
set_tv_freq
(
client
,
400
*
16
);
t
->
mode
=
f
->
type
;
t
->
freq
=
f
->
frequency
;
set_freq
(
client
,
t
->
freq
);
set_freq
(
client
,
f
->
frequency
);
break
;
}
case
VIDIOC_G_FREQUENCY
:
{
struct
v4l2_frequency
*
f
=
arg
;
SWITCH_V4L2
;
f
->
type
=
t
->
mode
;
f
->
frequency
=
t
->
freq
;
break
;
}
case
VIDIOC_G_TUNER
:
...
...
@@ -368,6 +376,8 @@ tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
SWITCH_V4L2
;
if
(
V4L2_TUNER_RADIO
==
t
->
mode
&&
t
->
has_signal
)
tuner
->
signal
=
t
->
has_signal
(
client
);
tuner
->
rangelow
=
tv_range
[
0
]
*
16
;
tuner
->
rangehigh
=
tv_range
[
1
]
*
16
;
break
;
}
default:
...
...
drivers/s390/scsi/zfcp_aux.c
View file @
13e65280
...
...
@@ -52,7 +52,7 @@ static inline int zfcp_sg_list_copy_from_user(struct zfcp_sg_list *,
static
inline
int
zfcp_sg_list_copy_to_user
(
void
__user
*
,
struct
zfcp_sg_list
*
,
size_t
);
static
int
zfcp_cfdc_dev_ioctl
(
struct
file
*
,
unsigned
int
,
unsigned
long
);
static
long
zfcp_cfdc_dev_ioctl
(
struct
file
*
,
unsigned
int
,
unsigned
long
);
#define ZFCP_CFDC_IOC_MAGIC 0xDD
#define ZFCP_CFDC_IOC \
...
...
drivers/s390/scsi/zfcp_def.h
View file @
13e65280
...
...
@@ -61,7 +61,6 @@
#include <linux/mempool.h>
#include <linux/syscalls.h>
#include <linux/ioctl.h>
#include <linux/ioctl32.h>
/************************ DEBUG FLAGS *****************************************/
...
...
drivers/scsi/aacraid/linit.c
View file @
13e65280
...
...
@@ -450,7 +450,7 @@ static int aac_cfg_open(struct inode *inode, struct file *file)
}
}
return
0
;
return
err
;
}
/**
...
...
drivers/scsi/aic7xxx/aic7xxx_osm.c
View file @
13e65280
...
...
@@ -2335,8 +2335,6 @@ ahc_linux_free_target(struct ahc_softc *ahc, struct ahc_linux_target *targ)
AHC_TRANS_GOAL
,
/*paused*/
FALSE
);
ahc_update_neg_request
(
ahc
,
&
devinfo
,
tstate
,
tinfo
,
AHC_NEG_ALWAYS
);
ahc
->
platform_data
->
targets
[
target_offset
]
=
NULL
;
if
(
targ
->
inq_data
!=
NULL
)
free
(
targ
->
inq_data
,
M_DEVBUF
);
free
(
targ
,
M_DEVBUF
);
}
...
...
drivers/scsi/aic7xxx/aic7xxx_osm.h
View file @
13e65280
...
...
@@ -423,10 +423,6 @@ struct ahc_linux_device {
struct
ahc_linux_target
*
target
;
};
typedef
enum
{
AHC_INQ_VALID
=
0x02
,
}
ahc_linux_targ_flags
;
struct
ahc_linux_target
{
struct
ahc_linux_device
*
devices
[
AHC_NUM_LUNS
];
int
channel
;
...
...
@@ -434,8 +430,6 @@ struct ahc_linux_target {
int
refcount
;
struct
ahc_transinfo
last_tinfo
;
struct
ahc_softc
*
ahc
;
ahc_linux_targ_flags
flags
;
struct
scsi_inquiry_data
*
inq_data
;
};
/********************* Definitions Required by the Core ***********************/
...
...
drivers/scsi/qla2xxx/qla_attr.c
View file @
13e65280
...
...
@@ -300,7 +300,7 @@ qla2x00_set_rport_loss_tmo(struct fc_rport *rport, uint32_t timeout)
rport
->
dev_loss_tmo
=
ha
->
port_down_retry_count
+
5
;
}
st
atic
st
ruct
fc_function_template
qla2xxx_transport_functions
=
{
struct
fc_function_template
qla2xxx_transport_functions
=
{
.
show_host_node_name
=
1
,
.
show_host_port_name
=
1
,
...
...
@@ -322,12 +322,6 @@ static struct fc_function_template qla2xxx_transport_functions = {
};
struct
scsi_transport_template
*
qla2x00_alloc_transport_tmpl
(
void
)
{
return
(
fc_attach_transport
(
&
qla2xxx_transport_functions
));
}
void
qla2x00_init_host_attr
(
scsi_qla_host_t
*
ha
)
{
...
...
drivers/scsi/qla2xxx/qla_gbl.h
View file @
13e65280
...
...
@@ -24,7 +24,6 @@
#define __QLA_GBL_H
#include <linux/interrupt.h>
#include <scsi/scsi_transport.h>
extern
void
qla2x00_remove_one
(
struct
pci_dev
*
);
extern
int
qla2x00_probe_one
(
struct
pci_dev
*
,
struct
qla_board_info
*
);
...
...
@@ -248,9 +247,10 @@ extern void qla2x00_cancel_io_descriptors(scsi_qla_host_t *);
/*
* Global Function Prototypes in qla_attr.c source file.
*/
struct
fc_function_template
;
extern
struct
fc_function_template
qla2xxx_transport_functions
;
extern
void
qla2x00_alloc_sysfs_attr
(
scsi_qla_host_t
*
);
extern
void
qla2x00_free_sysfs_attr
(
scsi_qla_host_t
*
);
extern
struct
scsi_transport_template
*
qla2x00_alloc_transport_tmpl
(
void
);
extern
void
qla2x00_init_host_attr
(
scsi_qla_host_t
*
);
extern
void
qla2x00_alloc_sysfs_attr
(
scsi_qla_host_t
*
);
extern
void
qla2x00_free_sysfs_attr
(
scsi_qla_host_t
*
);
...
...
drivers/scsi/qla2xxx/qla_os.c
View file @
13e65280
...
...
@@ -2350,7 +2350,8 @@ qla2x00_module_init(void)
#if DEBUG_QLA2100
strcat
(
qla2x00_version_str
,
"-debug"
);
#endif
qla2xxx_transport_template
=
qla2x00_alloc_transport_tmpl
();
qla2xxx_transport_template
=
fc_attach_transport
(
&
qla2xxx_transport_functions
);
if
(
!
qla2xxx_transport_template
)
return
-
ENODEV
;
...
...
drivers/scsi/scsi.c
View file @
13e65280
...
...
@@ -542,7 +542,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
* that the device is no longer present */
cmd
->
result
=
DID_NO_CONNECT
<<
16
;
atomic_inc
(
&
cmd
->
device
->
iorequest_cnt
);
scsi_done
(
cmd
);
__
scsi_done
(
cmd
);
/* return 0 (because the command has been processed) */
goto
out
;
}
...
...
drivers/scsi/scsi_transport_spi.c
View file @
13e65280
...
...
@@ -22,6 +22,7 @@
#include <linux/init.h>
#include <linux/module.h>
#include <linux/workqueue.h>
#include <linux/blkdev.h>
#include <asm/semaphore.h>
#include <scsi/scsi.h>
#include "scsi_priv.h"
...
...
@@ -41,6 +42,11 @@
#define SPI_MAX_ECHO_BUFFER_SIZE 4096
#define DV_LOOPS 3
#define DV_TIMEOUT (10*HZ)
#define DV_RETRIES 3
/* should only need at most
* two cc/ua clears */
/* Private data accessors (keep these out of the header file) */
#define spi_dv_pending(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_pending)
#define spi_dv_sem(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_sem)
...
...
@@ -100,6 +106,29 @@ static int sprint_frac(char *dest, int value, int denom)
return
result
;
}
/* Modification of scsi_wait_req that will clear UNIT ATTENTION conditions
* resulting from (likely) bus and device resets */
static
void
spi_wait_req
(
struct
scsi_request
*
sreq
,
const
void
*
cmd
,
void
*
buffer
,
unsigned
bufflen
)
{
int
i
;
for
(
i
=
0
;
i
<
DV_RETRIES
;
i
++
)
{
sreq
->
sr_request
->
flags
|=
REQ_FAILFAST
;
scsi_wait_req
(
sreq
,
cmd
,
buffer
,
bufflen
,
DV_TIMEOUT
,
/* retries */
1
);
if
(
sreq
->
sr_result
&
DRIVER_SENSE
)
{
struct
scsi_sense_hdr
sshdr
;
if
(
scsi_request_normalize_sense
(
sreq
,
&
sshdr
)
&&
sshdr
.
sense_key
==
UNIT_ATTENTION
)
continue
;
}
break
;
}
}
static
struct
{
enum
spi_signal_type
value
;
char
*
name
;
...
...
@@ -378,11 +407,6 @@ static CLASS_DEVICE_ATTR(signalling, S_IRUGO | S_IWUSR,
if(i->f->set_##x) \
i->f->set_##x(sdev->sdev_target, y)
#define DV_LOOPS 3
#define DV_TIMEOUT (10*HZ)
#define DV_RETRIES 3
/* should only need at most
* two cc/ua clears */
enum
spi_compare_returns
{
SPI_COMPARE_SUCCESS
,
SPI_COMPARE_FAILURE
,
...
...
@@ -446,8 +470,7 @@ spi_dv_device_echo_buffer(struct scsi_request *sreq, u8 *buffer,
for
(
r
=
0
;
r
<
retries
;
r
++
)
{
sreq
->
sr_cmd_len
=
0
;
/* wait_req to fill in */
sreq
->
sr_data_direction
=
DMA_TO_DEVICE
;
scsi_wait_req
(
sreq
,
spi_write_buffer
,
buffer
,
len
,
DV_TIMEOUT
,
DV_RETRIES
);
spi_wait_req
(
sreq
,
spi_write_buffer
,
buffer
,
len
);
if
(
sreq
->
sr_result
||
!
scsi_device_online
(
sdev
))
{
struct
scsi_sense_hdr
sshdr
;
...
...
@@ -471,8 +494,7 @@ spi_dv_device_echo_buffer(struct scsi_request *sreq, u8 *buffer,
memset
(
ptr
,
0
,
len
);
sreq
->
sr_cmd_len
=
0
;
/* wait_req to fill in */
sreq
->
sr_data_direction
=
DMA_FROM_DEVICE
;
scsi_wait_req
(
sreq
,
spi_read_buffer
,
ptr
,
len
,
DV_TIMEOUT
,
DV_RETRIES
);
spi_wait_req
(
sreq
,
spi_read_buffer
,
ptr
,
len
);
scsi_device_set_state
(
sdev
,
SDEV_QUIESCE
);
if
(
memcmp
(
buffer
,
ptr
,
len
)
!=
0
)
...
...
@@ -500,8 +522,7 @@ spi_dv_device_compare_inquiry(struct scsi_request *sreq, u8 *buffer,
memset
(
ptr
,
0
,
len
);
scsi_wait_req
(
sreq
,
spi_inquiry
,
ptr
,
len
,
DV_TIMEOUT
,
DV_RETRIES
);
spi_wait_req
(
sreq
,
spi_inquiry
,
ptr
,
len
);
if
(
sreq
->
sr_result
||
!
scsi_device_online
(
sdev
))
{
scsi_device_set_state
(
sdev
,
SDEV_QUIESCE
);
...
...
@@ -593,8 +614,7 @@ spi_dv_device_get_echo_buffer(struct scsi_request *sreq, u8 *buffer)
* (reservation conflict, device not ready, etc) just
* skip the write tests */
for
(
l
=
0
;
;
l
++
)
{
scsi_wait_req
(
sreq
,
spi_test_unit_ready
,
NULL
,
0
,
DV_TIMEOUT
,
DV_RETRIES
);
spi_wait_req
(
sreq
,
spi_test_unit_ready
,
NULL
,
0
);
if
(
sreq
->
sr_result
)
{
if
(
l
>=
3
)
...
...
@@ -608,8 +628,7 @@ spi_dv_device_get_echo_buffer(struct scsi_request *sreq, u8 *buffer)
sreq
->
sr_cmd_len
=
0
;
sreq
->
sr_data_direction
=
DMA_FROM_DEVICE
;
scsi_wait_req
(
sreq
,
spi_read_buffer_descriptor
,
buffer
,
4
,
DV_TIMEOUT
,
DV_RETRIES
);
spi_wait_req
(
sreq
,
spi_read_buffer_descriptor
,
buffer
,
4
);
if
(
sreq
->
sr_result
)
/* Device has no echo buffer */
...
...
drivers/scsi/sr_ioctl.c
View file @
13e65280
...
...
@@ -281,6 +281,9 @@ int sr_get_mcn(struct cdrom_device_info *cdi, struct cdrom_mcn *mcn)
char
*
buffer
=
kmalloc
(
32
,
GFP_KERNEL
|
SR_GFP_DMA
(
cd
));
int
result
;
if
(
!
buffer
)
return
-
ENOMEM
;
memset
(
&
cgc
,
0
,
sizeof
(
struct
packet_command
));
cgc
.
cmd
[
0
]
=
GPCMD_READ_SUBCHANNEL
;
cgc
.
cmd
[
2
]
=
0x40
;
/* I do want the subchannel info */
...
...
drivers/scsi/sym53c8xx_2/sym_glue.c
View file @
13e65280
...
...
@@ -2038,8 +2038,9 @@ static void sym2_set_period(struct scsi_target *starget, int period)
struct
sym_hcb
*
np
=
sym_get_hcb
(
shost
);
struct
sym_tcb
*
tp
=
&
np
->
target
[
starget
->
id
];
/* have to have DT for these transfers */
if
(
period
<=
np
->
minsync
)
/* have to have DT for these transfers, but DT will also
* set width, so check that this is allowed */
if
(
period
<=
np
->
minsync
&&
spi_width
(
starget
))
tp
->
tgoal
.
dt
=
1
;
tp
->
tgoal
.
period
=
period
;
...
...
drivers/serial/8250_pci.c
View file @
13e65280
...
...
@@ -1009,6 +1009,8 @@ get_pci_irq(struct pci_dev *dev, struct pci_board *board, int idx)
* n = number of serial ports
* baud = baud rate
*
* This table is sorted by (in order): baud, bt, bn, n.
*
* Please note: in theory if n = 1, _bt infix should make no difference.
* ie, pbn_b0_1_115200 is the same as pbn_b0_bt_1_115200
*/
...
...
fs/partitions/msdos.c
View file @
13e65280
...
...
@@ -114,9 +114,6 @@ parse_extended(struct parsed_partitions *state, struct block_device *bdev,
*/
for
(
i
=
0
;
i
<
4
;
i
++
,
p
++
)
{
u32
offs
,
size
,
next
;
if
(
SYS_IND
(
p
)
==
0
)
continue
;
if
(
!
NR_SECTS
(
p
)
||
is_extended_partition
(
p
))
continue
;
...
...
@@ -433,8 +430,6 @@ int msdos_partition(struct parsed_partitions *state, struct block_device *bdev)
for
(
slot
=
1
;
slot
<=
4
;
slot
++
,
p
++
)
{
u32
start
=
START_SECT
(
p
)
*
sector_size
;
u32
size
=
NR_SECTS
(
p
)
*
sector_size
;
if
(
SYS_IND
(
p
)
==
0
)
continue
;
if
(
!
size
)
continue
;
if
(
is_extended_partition
(
p
))
{
...
...
include/asm-ppc64/xics.h
View file @
13e65280
...
...
@@ -30,7 +30,4 @@ struct xics_ipi_struct {
extern
struct
xics_ipi_struct
xics_ipi_message
[
NR_CPUS
]
__cacheline_aligned
;
extern
unsigned
int
default_distrib_server
;
extern
unsigned
int
interrupt_server_size
;
#endif
/* _PPC64_KERNEL_XICS_H */
include/asm-um/elf.h
View file @
13e65280
/*
* Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
* Licensed under the GPL
*/
#ifndef __UM_ELF_I386_H
#define __UM_ELF_I386_H
#include "user.h"
#if defined(CONFIG_UML_X86) && !defined(CONFIG_64BIT)
#define R_386_NONE 0
#define R_386_32 1
#define R_386_PC32 2
#define R_386_GOT32 3
#define R_386_PLT32 4
#define R_386_COPY 5
#define R_386_GLOB_DAT 6
#define R_386_JMP_SLOT 7
#define R_386_RELATIVE 8
#define R_386_GOTOFF 9
#define R_386_GOTPC 10
#define R_386_NUM 11
#elif defined(CONFIG_UML_X86) && defined(CONFIG_64BIT)
/* x86-64 relocation types */
#define R_X86_64_NONE 0
/* No reloc */
#define R_X86_64_64 1
/* Direct 64 bit */
#define R_X86_64_PC32 2
/* PC relative 32 bit signed */
#define R_X86_64_GOT32 3
/* 32 bit GOT entry */
#define R_X86_64_PLT32 4
/* 32 bit PLT address */
#define R_X86_64_COPY 5
/* Copy symbol at runtime */
#define R_X86_64_GLOB_DAT 6
/* Create GOT entry */
#define R_X86_64_JUMP_SLOT 7
/* Create PLT entry */
#define R_X86_64_RELATIVE 8
/* Adjust by program base */
#define R_X86_64_GOTPCREL 9
/* 32 bit signed pc relative
offset to GOT */
#define R_X86_64_32 10
/* Direct 32 bit zero extended */
#define R_X86_64_32S 11
/* Direct 32 bit sign extended */
#define R_X86_64_16 12
/* Direct 16 bit zero extended */
#define R_X86_64_PC16 13
/* 16 bit sign extended pc relative */
#define R_X86_64_8 14
/* Direct 8 bit sign extended */
#define R_X86_64_PC8 15
/* 8 bit sign extended pc relative */
#define R_X86_64_NUM 16
#endif
typedef
unsigned
long
elf_greg_t
;
#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
typedef
elf_greg_t
elf_gregset_t
[
ELF_NGREG
];
typedef
struct
user_i387_struct
elf_fpregset_t
;
/*
* This is used to ensure we don't load something for the wrong architecture.
*/
#define elf_check_arch(x) \
(((x)->e_machine == EM_386) || ((x)->e_machine == EM_486))
#define ELF_CLASS ELFCLASS32
#define ELF_DATA ELFDATA2LSB
#define ELF_ARCH EM_386
#define ELF_PLAT_INIT(regs, load_addr) do { \
PT_REGS_EBX(regs) = 0; \
PT_REGS_ECX(regs) = 0; \
PT_REGS_EDX(regs) = 0; \
PT_REGS_ESI(regs) = 0; \
PT_REGS_EDI(regs) = 0; \
PT_REGS_EBP(regs) = 0; \
PT_REGS_EAX(regs) = 0; \
} while(0)
#define USE_ELF_CORE_DUMP
#define ELF_EXEC_PAGESIZE 4096
#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
/* Shamelessly stolen from include/asm-i386/elf.h */
#define ELF_CORE_COPY_REGS(pr_reg, regs) do { \
pr_reg[0] = PT_REGS_EBX(regs); \
pr_reg[1] = PT_REGS_ECX(regs); \
pr_reg[2] = PT_REGS_EDX(regs); \
pr_reg[3] = PT_REGS_ESI(regs); \
pr_reg[4] = PT_REGS_EDI(regs); \
pr_reg[5] = PT_REGS_EBP(regs); \
pr_reg[6] = PT_REGS_EAX(regs); \
pr_reg[7] = PT_REGS_DS(regs); \
pr_reg[8] = PT_REGS_ES(regs); \
/* fake once used fs and gs selectors? */
\
pr_reg[9] = PT_REGS_DS(regs); \
pr_reg[10] = PT_REGS_DS(regs); \
pr_reg[11] = PT_REGS_SYSCALL_NR(regs); \
pr_reg[12] = PT_REGS_IP(regs); \
pr_reg[13] = PT_REGS_CS(regs); \
pr_reg[14] = PT_REGS_EFLAGS(regs); \
pr_reg[15] = PT_REGS_SP(regs); \
pr_reg[16] = PT_REGS_SS(regs); \
} while(0);
extern
long
elf_aux_hwcap
;
#define ELF_HWCAP (elf_aux_hwcap)
extern
char
*
elf_aux_platform
;
#define ELF_PLATFORM (elf_aux_platform)
#define SET_PERSONALITY(ex, ibcs2) do ; while(0)
extern
unsigned
long
vsyscall_ehdr
;
extern
unsigned
long
vsyscall_end
;
extern
unsigned
long
__kernel_vsyscall
;
#define VSYSCALL_BASE vsyscall_ehdr
#define VSYSCALL_END vsyscall_end
/*
* This is the range that is readable by user mode, and things
* acting like user mode such as get_user_pages.
*/
#define FIXADDR_USER_START VSYSCALL_BASE
#define FIXADDR_USER_END VSYSCALL_END
/*
* Architecture-neutral AT_ values in 0-17, leave some room
* for more of them, start the x86-specific ones at 32.
*/
#define AT_SYSINFO 32
#define AT_SYSINFO_EHDR 33
#define ARCH_DLINFO \
do { \
if ( vsyscall_ehdr ) { \
NEW_AUX_ENT(AT_SYSINFO, __kernel_vsyscall); \
NEW_AUX_ENT(AT_SYSINFO_EHDR, vsyscall_ehdr); \
} \
} while (0)
/*
* These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out
* extra segments containing the vsyscall DSO contents. Dumping its
* contents makes post-mortem fully interpretable later without matching up
* the same kernel and hardware config to see what PC values meant.
* Dumping its extra ELF program headers includes all the other information
* a debugger needs to easily find how the vsyscall DSO was being used.
*/
#define ELF_CORE_EXTRA_PHDRS \
(vsyscall_ehdr ? (((struct elfhdr *)vsyscall_ehdr)->e_phnum) : 0 )
#define ELF_CORE_WRITE_EXTRA_PHDRS \
if ( vsyscall_ehdr ) { \
const struct elfhdr *const ehdrp = (struct elfhdr *)vsyscall_ehdr; \
const struct elf_phdr *const phdrp = \
(const struct elf_phdr *) (vsyscall_ehdr + ehdrp->e_phoff); \
int i; \
Elf32_Off ofs = 0; \
for (i = 0; i < ehdrp->e_phnum; ++i) { \
struct elf_phdr phdr = phdrp[i]; \
if (phdr.p_type == PT_LOAD) { \
ofs = phdr.p_offset = offset; \
offset += phdr.p_filesz; \
} \
else \
phdr.p_offset += ofs; \
phdr.p_paddr = 0;
/* match other core phdrs */
\
DUMP_WRITE(&phdr, sizeof(phdr)); \
} \
}
#define ELF_CORE_WRITE_EXTRA_DATA \
if ( vsyscall_ehdr ) { \
const struct elfhdr *const ehdrp = (struct elfhdr *)vsyscall_ehdr; \
const struct elf_phdr *const phdrp = \
(const struct elf_phdr *) (vsyscall_ehdr + ehdrp->e_phoff); \
int i; \
for (i = 0; i < ehdrp->e_phnum; ++i) { \
if (phdrp[i].p_type == PT_LOAD) \
DUMP_WRITE((void *) phdrp[i].p_vaddr, \
phdrp[i].p_filesz); \
} \
}
#endif
/*
* Overrides for Emacs so that we follow Linus's tabbing style.
* Emacs will notice this stuff at the end of the file and automatically
* adjust the settings for this buffer only. This must remain at the end
* of the file.
* ---------------------------------------------------------------------------
* Local variables:
* c-file-style: "linux"
* End:
*/
include/asm-um/setup.h
View file @
13e65280
...
...
@@ -2,7 +2,8 @@
#define SETUP_H_INCLUDED
/* POSIX mandated with _POSIX_ARG_MAX that we can rely on 4096 chars in the
* command line, so this choice is ok.*/
* command line, so this choice is ok.
*/
#define COMMAND_LINE_SIZE 4096
...
...
sound/pci/via82xx.c
View file @
13e65280
...
...
@@ -1836,7 +1836,7 @@ static void __devinit snd_via82xx_proc_init(via82xx_t *chip)
*
*/
static
int
__devinit
snd_via82xx_chip_init
(
via82xx_t
*
chip
)
static
int
snd_via82xx_chip_init
(
via82xx_t
*
chip
)
{
unsigned
int
val
;
int
max_count
;
...
...
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