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
44ce64b1
Commit
44ce64b1
authored
Apr 22, 2004
by
Steve French
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linux.bkbits.net/linux-2.5
into hostme.bitkeeper.com:/repos/c/cifs/linux-2.5cifs
parents
da476734
7ce42ae1
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
99 additions
and
130 deletions
+99
-130
arch/ia64/ia32/ia32_entry.S
arch/ia64/ia32/ia32_entry.S
+8
-0
arch/ia64/ia32/ia32_signal.c
arch/ia64/ia32/ia32_signal.c
+6
-2
arch/ia64/kernel/entry.S
arch/ia64/kernel/entry.S
+6
-6
arch/ia64/kernel/fsys.S
arch/ia64/kernel/fsys.S
+6
-6
arch/ia64/kernel/iosapic.c
arch/ia64/kernel/iosapic.c
+1
-1
arch/ia64/kernel/signal.c
arch/ia64/kernel/signal.c
+7
-34
arch/ia64/kernel/traps.c
arch/ia64/kernel/traps.c
+2
-0
arch/ia64/pci/pci.c
arch/ia64/pci/pci.c
+32
-59
fs/buffer.c
fs/buffer.c
+1
-1
fs/ext3/inode.c
fs/ext3/inode.c
+3
-3
fs/ntfs/aops.c
fs/ntfs/aops.c
+5
-14
fs/reiserfs/inode.c
fs/reiserfs/inode.c
+1
-1
include/asm-ia64/ia32.h
include/asm-ia64/ia32.h
+1
-1
include/asm-ia64/siginfo.h
include/asm-ia64/siginfo.h
+0
-2
include/asm-ia64/unistd.h
include/asm-ia64/unistd.h
+6
-0
include/linux/mm.h
include/linux/mm.h
+2
-0
mm/page-writeback.c
mm/page-writeback.c
+12
-0
No files found.
arch/ia64/ia32/ia32_entry.S
View file @
44ce64b1
...
...
@@ -483,6 +483,14 @@ ia32_syscall_table:
data8
sys32_fadvise64_64
data8
sys_ni_syscall
data8
sys_ni_syscall
data8
sys_ni_syscall
/*
275
*/
data8
sys_ni_syscall
data8
compat_sys_mq_open
data8
sys_mq_unlink
data8
compat_sys_mq_timedsend
data8
compat_sys_mq_timedreceive
/*
280
*/
data8
compat_sys_mq_notify
data8
compat_sys_mq_getsetattr
//
guard
against
failures
to
increase
IA32_NR_syscalls
.
org
ia32_syscall_table
+
8
*
IA32_NR_syscalls
arch/ia64/ia32/ia32_signal.c
View file @
44ce64b1
...
...
@@ -169,7 +169,12 @@ copy_siginfo_to_user32 (siginfo_t32 *to, siginfo_t *from)
addr
=
(
unsigned
long
)
from
->
si_ptr
;
err
|=
__put_user
(
addr
,
&
to
->
si_ptr
);
break
;
/* case __SI_RT: This is not generated by the kernel as of now. */
case
__SI_RT
>>
16
:
/* Not generated by the kernel as of now. */
case
__SI_MESGQ
>>
16
:
err
|=
__put_user
(
from
->
si_uid
,
&
to
->
si_uid
);
err
|=
__put_user
(
from
->
si_pid
,
&
to
->
si_pid
);
err
|=
__put_user
(
from
->
si_ptr
,
&
to
->
si_ptr
);
break
;
}
}
return
err
;
...
...
@@ -612,7 +617,6 @@ sys32_rt_sigtimedwait (compat_sigset_t *uthese, siginfo_t32 *uinfo,
asmlinkage
long
sys32_rt_sigqueueinfo
(
int
pid
,
int
sig
,
siginfo_t32
*
uinfo
)
{
extern
int
copy_siginfo_from_user32
(
siginfo_t
*
to
,
siginfo_t32
*
from
);
mm_segment_t
old_fs
=
get_fs
();
siginfo_t
info
;
int
ret
;
...
...
arch/ia64/kernel/entry.S
View file @
44ce64b1
...
...
@@ -1504,12 +1504,12 @@ sys_call_table:
data8
sys_ni_syscall
data8
sys_ni_syscall
//
1260
data8
sys_ni_syscall
data8
sys_
ni_syscall
data8
sys_
ni_syscall
data8
sys_
ni_syscall
data8
sys_
ni_syscall
//
1265
data8
sys_
ni_syscall
data8
sys_
ni_syscall
data8
sys_
mq_open
data8
sys_
mq_unlink
data8
sys_
mq_timedsend
data8
sys_
mq_timedreceive
//
1265
data8
sys_
mq_notify
data8
sys_
mq_getsetattr
data8
sys_ni_syscall
data8
sys_ni_syscall
data8
sys_ni_syscall
//
1270
...
...
arch/ia64/kernel/fsys.S
View file @
44ce64b1
...
...
@@ -851,12 +851,12 @@ fsyscall_table:
data8
0
data8
0
//
1260
data8
0
data8
0
data8
0
data8
0
data8
0
//
1265
data8
0
data8
0
data8
0
//
mq_open
data8
0
//
mq_unlink
data8
0
//
mq_timedsend
data8
0
//
mq_timedreceive
//
1265
data8
0
//
mq_notify
data8
0
//
mq_getsetattr
data8
0
data8
0
data8
0
//
1270
...
...
arch/ia64/kernel/iosapic.c
View file @
44ce64b1
...
...
@@ -293,7 +293,7 @@ iosapic_set_affinity (unsigned int irq, cpumask_t mask)
irq
&=
(
~
IA64_IRQ_REDIRECTED
);
vec
=
irq_to_vector
(
irq
);
if
(
cpus_empty
(
mask
)
||
vec
>=
IA64_NUM_VECTORS
)
if
(
cpus_empty
(
mask
))
return
;
dest
=
cpu_physical_id
(
first_cpu
(
mask
));
...
...
arch/ia64/kernel/signal.c
View file @
44ce64b1
...
...
@@ -205,6 +205,12 @@ copy_siginfo_to_user (siginfo_t *to, siginfo_t *from)
err
|=
__put_user
(
from
->
si_overrun
,
&
to
->
si_overrun
);
err
|=
__put_user
(
from
->
si_ptr
,
&
to
->
si_ptr
);
break
;
case
__SI_RT
>>
16
:
/* Not generated by the kernel as of now. */
case
__SI_MESGQ
>>
16
:
err
|=
__put_user
(
from
->
si_uid
,
&
to
->
si_uid
);
err
|=
__put_user
(
from
->
si_pid
,
&
to
->
si_pid
);
err
|=
__put_user
(
from
->
si_ptr
,
&
to
->
si_ptr
);
break
;
case
__SI_CHLD
>>
16
:
err
|=
__put_user
(
from
->
si_utime
,
&
to
->
si_utime
);
err
|=
__put_user
(
from
->
si_stime
,
&
to
->
si_stime
);
...
...
@@ -213,45 +219,11 @@ copy_siginfo_to_user (siginfo_t *to, siginfo_t *from)
err
|=
__put_user
(
from
->
si_uid
,
&
to
->
si_uid
);
err
|=
__put_user
(
from
->
si_pid
,
&
to
->
si_pid
);
break
;
/* case __SI_RT: This is not generated by the kernel as of now. */
}
return
err
;
}
}
int
copy_siginfo_from_user
(
siginfo_t
*
to
,
siginfo_t
*
from
)
{
if
(
!
access_ok
(
VERIFY_READ
,
from
,
sizeof
(
siginfo_t
)))
return
-
EFAULT
;
if
(
__copy_from_user
(
to
,
from
,
sizeof
(
siginfo_t
))
!=
0
)
return
-
EFAULT
;
if
(
SI_FROMUSER
(
to
))
return
0
;
to
->
si_code
&=
~
__SI_MASK
;
if
(
to
->
si_code
!=
0
)
{
switch
(
to
->
si_signo
)
{
case
SIGILL
:
case
SIGFPE
:
case
SIGSEGV
:
case
SIGBUS
:
case
SIGTRAP
:
to
->
si_code
|=
__SI_FAULT
;
break
;
case
SIGCHLD
:
to
->
si_code
|=
__SI_CHLD
;
break
;
case
SIGPOLL
:
to
->
si_code
|=
__SI_POLL
;
break
;
default:
break
;
}
}
return
0
;
}
long
ia64_rt_sigreturn
(
struct
sigscratch
*
scr
)
{
...
...
@@ -445,6 +417,7 @@ setup_frame (int sig, struct k_sigaction *ka, siginfo_t *info, sigset_t *set,
scr
->
pt
.
ar_fpsr
=
FPSR_DEFAULT
;
/* reset fpsr for signal handler */
scr
->
pt
.
cr_iip
=
tramp_addr
;
ia64_psr
(
&
scr
->
pt
)
->
ri
=
0
;
/* start executing in first slot */
ia64_psr
(
&
scr
->
pt
)
->
be
=
0
;
/* force little-endian byte-order */
/*
* Force the interruption function mask to zero. This has no effect when a
* system-call got interrupted by a signal (since, in that case, scr->pt_cr_ifs is
...
...
arch/ia64/kernel/traps.c
View file @
44ce64b1
...
...
@@ -13,6 +13,7 @@
#include <linux/sched.h>
#include <linux/tty.h>
#include <linux/vt_kern.h>
/* For unblank_screen() */
#include <linux/module.h>
/* for EXPORT_SYMBOL */
#include <asm/fpswa.h>
#include <asm/hardirq.h>
...
...
@@ -47,6 +48,7 @@ register double f30 asm ("f30"); register double f31 asm ("f31");
extern
spinlock_t
timerlist_lock
;
fpswa_interface_t
*
fpswa_interface
;
EXPORT_SYMBOL
(
fpswa_interface
);
void
__init
trap_init
(
void
)
...
...
arch/ia64/pci/pci.c
View file @
44ce64b1
...
...
@@ -54,56 +54,33 @@ struct pci_fixup pcibios_fixups[1];
* synchronization mechanism here.
*/
#define PCI_SAL_ADDRESS(seg, bus, devfn, reg)
\
((u64)(seg << 24) | (u64)(bus << 16) |
\
#define PCI_SAL_ADDRESS(seg, bus, devfn, reg)
\
((u64)(seg << 24) | (u64)(bus << 16) |
\
(u64)(devfn << 8) | (u64)(reg))
static
int
pci_sal_read
(
int
seg
,
int
bus
,
int
devfn
,
int
reg
,
int
len
,
u32
*
value
)
{
int
result
=
0
;
u64
data
=
0
;
if
((
seg
>
255
)
||
(
bus
>
255
)
||
(
devfn
>
255
)
||
(
reg
>
255
))
return
-
EINVAL
;
result
=
ia64_sal_pci_config_read
(
PCI_SAL_ADDRESS
(
seg
,
bus
,
devfn
,
reg
),
0
,
len
,
&
data
);
*
value
=
(
u32
)
data
;
return
result
;
}
static
int
pci_sal_write
(
int
seg
,
int
bus
,
int
devfn
,
int
reg
,
int
len
,
u32
value
)
{
if
((
seg
>
255
)
||
(
bus
>
255
)
||
(
devfn
>
255
)
||
(
reg
>
255
))
return
-
EINVAL
;
return
ia64_sal_pci_config_write
(
PCI_SAL_ADDRESS
(
seg
,
bus
,
devfn
,
reg
),
0
,
len
,
value
);
}
static
struct
pci_raw_ops
pci_sal_ops
=
{
.
read
=
pci_sal_read
,
.
write
=
pci_sal_write
};
/* SAL 3.2 adds support for extended config space. */
#define PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg)
\
((u64)(seg << 28) | (u64)(bus << 20) |
\
#define PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg)
\
((u64)(seg << 28) | (u64)(bus << 20) |
\
(u64)(devfn << 12) | (u64)(reg))
static
int
pci_sal_
ext_
read
(
int
seg
,
int
bus
,
int
devfn
,
int
reg
,
int
len
,
u32
*
value
)
pci_sal_read
(
int
seg
,
int
bus
,
int
devfn
,
int
reg
,
int
len
,
u32
*
value
)
{
u64
addr
,
mode
,
data
=
0
;
int
result
=
0
;
u64
data
=
0
;
if
((
seg
>
6553
5
)
||
(
bus
>
255
)
||
(
devfn
>
255
)
||
(
reg
>
4095
))
if
((
seg
>
25
5
)
||
(
bus
>
255
)
||
(
devfn
>
255
)
||
(
reg
>
4095
))
return
-
EINVAL
;
result
=
ia64_sal_pci_config_read
(
PCI_SAL_EXT_ADDRESS
(
seg
,
bus
,
devfn
,
reg
),
1
,
len
,
&
data
);
if
((
seg
|
reg
)
<=
255
)
{
addr
=
PCI_SAL_ADDRESS
(
seg
,
bus
,
devfn
,
reg
);
mode
=
0
;
}
else
{
addr
=
PCI_SAL_EXT_ADDRESS
(
seg
,
bus
,
devfn
,
reg
);
mode
=
1
;
}
result
=
ia64_sal_pci_config_read
(
addr
,
mode
,
len
,
&
data
);
*
value
=
(
u32
)
data
;
...
...
@@ -111,46 +88,42 @@ pci_sal_ext_read (int seg, int bus, int devfn, int reg, int len, u32 *value)
}
static
int
pci_sal_
ext_
write
(
int
seg
,
int
bus
,
int
devfn
,
int
reg
,
int
len
,
u32
value
)
pci_sal_write
(
int
seg
,
int
bus
,
int
devfn
,
int
reg
,
int
len
,
u32
value
)
{
u64
addr
,
mode
;
if
((
seg
>
65535
)
||
(
bus
>
255
)
||
(
devfn
>
255
)
||
(
reg
>
4095
))
return
-
EINVAL
;
return
ia64_sal_pci_config_write
(
PCI_SAL_EXT_ADDRESS
(
seg
,
bus
,
devfn
,
reg
),
1
,
len
,
value
);
}
static
struct
pci_raw_ops
pci_sal_ext_ops
=
{
.
read
=
pci_sal_ext_read
,
.
write
=
pci_sal_ext_write
};
struct
pci_raw_ops
*
raw_pci_ops
=
&
pci_sal_ops
;
/* default to SAL < 3.2 */
static
int
__init
pci_set_sal_ops
(
void
)
{
if
(
sal_revision
>=
SAL_VERSION_CODE
(
3
,
2
))
{
printk
(
"Using SAL 3.2 to access PCI config space
\n
"
);
raw_pci_ops
=
&
pci_sal_ext_ops
;
if
((
seg
|
reg
)
<=
255
)
{
addr
=
PCI_SAL_ADDRESS
(
seg
,
bus
,
devfn
,
reg
);
mode
=
0
;
}
else
{
addr
=
PCI_SAL_EXT_ADDRESS
(
seg
,
bus
,
devfn
,
reg
);
mode
=
1
;
}
return
0
;
return
ia64_sal_pci_config_write
(
addr
,
mode
,
len
,
value
)
;
}
arch_initcall
(
pci_set_sal_ops
);
static
struct
pci_raw_ops
pci_sal_ops
=
{
.
read
=
pci_sal_read
,
.
write
=
pci_sal_write
};
struct
pci_raw_ops
*
raw_pci_ops
=
&
pci_sal_ops
;
static
int
pci_read
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
,
int
where
,
int
size
,
u32
*
value
)
{
return
raw_pci_ops
->
read
(
pci_domain_nr
(
bus
),
bus
->
number
,
devfn
,
where
,
size
,
value
);
devfn
,
where
,
size
,
value
);
}
static
int
pci_write
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
,
int
where
,
int
size
,
u32
value
)
{
return
raw_pci_ops
->
write
(
pci_domain_nr
(
bus
),
bus
->
number
,
devfn
,
where
,
size
,
value
);
devfn
,
where
,
size
,
value
);
}
static
struct
pci_ops
pci_root_ops
=
{
...
...
fs/buffer.c
View file @
44ce64b1
...
...
@@ -1826,7 +1826,7 @@ static int __block_write_full_page(struct inode *inode, struct page *page,
if
(
wbc
->
sync_mode
!=
WB_SYNC_NONE
||
!
wbc
->
nonblocking
)
{
lock_buffer
(
bh
);
}
else
if
(
test_set_buffer_locked
(
bh
))
{
__set_page_dirty_nobuffers
(
page
);
redirty_page_for_writepage
(
wbc
,
page
);
continue
;
}
if
(
test_clear_buffer_dirty
(
bh
))
{
...
...
fs/ext3/inode.c
View file @
44ce64b1
...
...
@@ -1393,7 +1393,7 @@ static int ext3_ordered_writepage(struct page *page,
return
ret
;
out_fail:
__set_page_dirty_nobuffers
(
page
);
redirty_page_for_writepage
(
wbc
,
page
);
unlock_page
(
page
);
return
ret
;
}
...
...
@@ -1422,7 +1422,7 @@ static int ext3_writeback_writepage(struct page *page,
return
ret
;
out_fail:
__set_page_dirty_nobuffers
(
page
);
redirty_page_for_writepage
(
wbc
,
page
);
unlock_page
(
page
);
return
ret
;
}
...
...
@@ -1478,7 +1478,7 @@ static int ext3_journalled_writepage(struct page *page,
return
ret
;
no_write:
__set_page_dirty_nobuffers
(
page
);
redirty_page_for_writepage
(
wbc
,
page
);
out_unlock:
unlock_page
(
page
);
goto
out
;
...
...
fs/ntfs/aops.c
View file @
44ce64b1
...
...
@@ -458,7 +458,7 @@ int ntfs_readpage(struct file *file, struct page *page)
*
* Based on ntfs_read_block() and __block_write_full_page().
*/
static
int
ntfs_write_block
(
struct
page
*
page
)
static
int
ntfs_write_block
(
struct
writeback_control
*
wbc
,
struct
page
*
page
)
{
VCN
vcn
;
LCN
lcn
;
...
...
@@ -499,10 +499,7 @@ static int ntfs_write_block(struct page *page)
* Put the page back on mapping->dirty_pages, but leave its
* buffer's dirty state as-is.
*/
// FIXME: Once Andrew's -EAGAIN patch goes in, remove the
// __set_page_dirty_nobuffers(page) and return -EAGAIN instead
// of zero.
__set_page_dirty_nobuffers
(
page
);
redirty_page_for_writepage
(
wbc
,
page
);
unlock_page
(
page
);
return
0
;
}
...
...
@@ -733,10 +730,7 @@ static int ntfs_write_block(struct page *page)
* Put the page back on mapping->dirty_pages, but
* leave its buffer's dirty state as-is.
*/
// FIXME: Once Andrew's -EAGAIN patch goes in, remove
// the __set_page_dirty_nobuffers(page) and set err to
// -EAGAIN instead of zero.
__set_page_dirty_nobuffers
(
page
);
redirty_page_for_writepage
(
wbc
,
page
);
err
=
0
;
}
else
SetPageError
(
page
);
...
...
@@ -869,7 +863,7 @@ static int ntfs_writepage(struct page *page, struct writeback_control *wbc)
}
/* Normal data stream. */
return
ntfs_write_block
(
page
);
return
ntfs_write_block
(
wbc
,
page
);
}
/*
...
...
@@ -986,10 +980,7 @@ static int ntfs_writepage(struct page *page, struct writeback_control *wbc)
* Put the page back on mapping->dirty_pages, but leave its
* buffer's dirty state as-is.
*/
// FIXME: Once Andrew's -EAGAIN patch goes in, remove the
// __set_page_dirty_nobuffers(page) and set err to -EAGAIN
// instead of zero.
__set_page_dirty_nobuffers
(
page
);
redirty_page_for_writepage
(
wbc
,
page
);
err
=
0
;
}
else
{
ntfs_error
(
vi
->
i_sb
,
"Resident attribute write failed with "
...
...
fs/reiserfs/inode.c
View file @
44ce64b1
...
...
@@ -2112,7 +2112,7 @@ static int reiserfs_write_full_page(struct page *page, struct writeback_control
lock_buffer
(
bh
);
}
else
{
if
(
test_set_buffer_locked
(
bh
))
{
__set_page_dirty_nobuffers
(
page
);
redirty_page_for_writepage
(
wbc
,
page
);
continue
;
}
}
...
...
include/asm-ia64/ia32.h
View file @
44ce64b1
...
...
@@ -6,7 +6,7 @@
#include <asm/ptrace.h>
#include <asm/signal.h>
#define IA32_NR_syscalls 2
75
/* length of syscall table */
#define IA32_NR_syscalls 2
83
/* length of syscall table */
#ifndef __ASSEMBLY__
...
...
include/asm-ia64/siginfo.h
View file @
44ce64b1
...
...
@@ -136,8 +136,6 @@ copy_siginfo (siginfo_t *to, siginfo_t *from)
memcpy
(
to
,
from
,
4
*
sizeof
(
int
)
+
sizeof
(
from
->
_sifields
.
_sigchld
));
}
extern
int
copy_siginfo_from_user
(
siginfo_t
*
to
,
siginfo_t
*
from
);
#endif
/* __KERNEL__ */
#endif
/* _ASM_IA64_SIGINFO_H */
include/asm-ia64/unistd.h
View file @
44ce64b1
...
...
@@ -251,6 +251,12 @@
#define __NR_reserved1 1259
/* reserved for NUMA interface */
#define __NR_reserved2 1260
/* reserved for NUMA interface */
#define __NR_reserved3 1261
/* reserved for NUMA interface */
#define __NR_mq_open 1262
#define __NR_mq_unlink 1263
#define __NR_mq_timedsend 1264
#define __NR_mq_timedreceive 1265
#define __NR_mq_notify 1266
#define __NR_mq_getsetattr 1267
#ifdef __KERNEL__
...
...
include/linux/mm.h
View file @
44ce64b1
...
...
@@ -486,6 +486,8 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long
int
__set_page_dirty_buffers
(
struct
page
*
page
);
int
__set_page_dirty_nobuffers
(
struct
page
*
page
);
int
redirty_page_for_writepage
(
struct
writeback_control
*
wbc
,
struct
page
*
page
);
int
FASTCALL
(
set_page_dirty
(
struct
page
*
page
));
int
set_page_dirty_lock
(
struct
page
*
page
);
int
clear_page_dirty_for_io
(
struct
page
*
page
);
...
...
mm/page-writeback.c
View file @
44ce64b1
...
...
@@ -579,6 +579,18 @@ int __set_page_dirty_nobuffers(struct page *page)
}
EXPORT_SYMBOL
(
__set_page_dirty_nobuffers
);
/*
* When a writepage implementation decides that it doesn't want to write this
* page for some reason, it should redirty the locked page via
* redirty_page_for_writepage() and it should then unlock the page and return 0
*/
int
redirty_page_for_writepage
(
struct
writeback_control
*
wbc
,
struct
page
*
page
)
{
wbc
->
pages_skipped
++
;
return
__set_page_dirty_nobuffers
(
page
);
}
EXPORT_SYMBOL
(
redirty_page_for_writepage
);
/*
* If the mapping doesn't provide a set_page_dirty a_op, then
* just fall through and assume that it wants buffer_heads.
...
...
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