Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
4b463f78
L
linux
项目概览
xiphi1978
/
linux
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4b463f78
编写于
5月 25, 2005
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge of /home/davem/src/GIT/linux-2.6/.git/
上级
6df16d0c
384f1fcd
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
103 addition
and
80 deletion
+103
-80
Makefile
Makefile
+1
-1
arch/i386/mach-voyager/voyager_smp.c
arch/i386/mach-voyager/voyager_smp.c
+8
-9
arch/ppc64/kernel/mf.c
arch/ppc64/kernel/mf.c
+65
-20
arch/ppc64/kernel/rtc.c
arch/ppc64/kernel/rtc.c
+1
-38
arch/ppc64/kernel/time.c
arch/ppc64/kernel/time.c
+1
-0
drivers/ide/ide-cd.c
drivers/ide/ide-cd.c
+1
-1
drivers/media/video/saa7134/saa6752hs.c
drivers/media/video/saa7134/saa6752hs.c
+5
-5
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
+5
-2
drivers/usb/atm/speedtch.c
drivers/usb/atm/speedtch.c
+2
-0
include/asm-ppc64/iSeries/mf.h
include/asm-ppc64/iSeries/mf.h
+1
-0
kernel/signal.c
kernel/signal.c
+10
-1
mm/rmap.c
mm/rmap.c
+3
-3
未找到文件。
Makefile
浏览文件 @
4b463f78
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
12
EXTRAVERSION
=
-rc
4
EXTRAVERSION
=
-rc
5
NAME
=
Woozy Numbat
# *DOCUMENTATION*
...
...
arch/i386/mach-voyager/voyager_smp.c
浏览文件 @
4b463f78
...
...
@@ -97,7 +97,6 @@ static void ack_vic_irq(unsigned int irq);
static
void
vic_enable_cpi
(
void
);
static
void
do_boot_cpu
(
__u8
cpuid
);
static
void
do_quad_bootstrap
(
void
);
static
inline
void
wrapper_smp_local_timer_interrupt
(
struct
pt_regs
*
);
int
hard_smp_processor_id
(
void
);
...
...
@@ -125,6 +124,14 @@ send_QIC_CPI(__u32 cpuset, __u8 cpi)
}
}
static
inline
void
wrapper_smp_local_timer_interrupt
(
struct
pt_regs
*
regs
)
{
irq_enter
();
smp_local_timer_interrupt
(
regs
);
irq_exit
();
}
static
inline
void
send_one_CPI
(
__u8
cpu
,
__u8
cpi
)
{
...
...
@@ -1249,14 +1256,6 @@ smp_vic_timer_interrupt(struct pt_regs *regs)
smp_local_timer_interrupt
(
regs
);
}
static
inline
void
wrapper_smp_local_timer_interrupt
(
struct
pt_regs
*
regs
)
{
irq_enter
();
smp_local_timer_interrupt
(
regs
);
irq_exit
();
}
/* local (per CPU) timer interrupt. It does both profiling and
* process statistics/rescheduling.
*
...
...
arch/ppc64/kernel/mf.c
浏览文件 @
4b463f78
/*
* mf.c
* Copyright (C) 2001 Troy D. Armstrong IBM Corporation
* Copyright (C) 2004 Stephen Rothwell IBM Corporation
* Copyright (C) 2004
-2005
Stephen Rothwell IBM Corporation
*
* This modules exists as an interface between a Linux secondary partition
* running on an iSeries and the primary partition's Virtual Service
...
...
@@ -36,10 +36,12 @@
#include <asm/time.h>
#include <asm/uaccess.h>
#include <asm/paca.h>
#include <asm/iSeries/vio.h>
#include <asm/iSeries/mf.h>
#include <asm/iSeries/HvLpConfig.h>
#include <asm/iSeries/ItSpCommArea.h>
#include <asm/iSeries/ItLpQueue.h>
/*
* This is the structure layout for the Machine Facilites LPAR event
...
...
@@ -696,36 +698,23 @@ static void get_rtc_time_complete(void *token, struct ce_msg_data *ce_msg)
complete
(
&
rtc
->
com
);
}
int
mf_get_rtc
(
struct
rtc_time
*
tm
)
static
int
rtc_set_tm
(
int
rc
,
u8
*
ce_msg
,
struct
rtc_time
*
tm
)
{
struct
ce_msg_comp_data
ce_complete
;
struct
rtc_time_data
rtc_data
;
int
rc
;
memset
(
&
ce_complete
,
0
,
sizeof
(
ce_complete
));
memset
(
&
rtc_data
,
0
,
sizeof
(
rtc_data
));
init_completion
(
&
rtc_data
.
com
);
ce_complete
.
handler
=
&
get_rtc_time_complete
;
ce_complete
.
token
=
&
rtc_data
;
rc
=
signal_ce_msg_simple
(
0x40
,
&
ce_complete
);
if
(
rc
)
return
rc
;
wait_for_completion
(
&
rtc_data
.
com
);
tm
->
tm_wday
=
0
;
tm
->
tm_yday
=
0
;
tm
->
tm_isdst
=
0
;
if
(
r
tc_data
.
r
c
)
{
if
(
rc
)
{
tm
->
tm_sec
=
0
;
tm
->
tm_min
=
0
;
tm
->
tm_hour
=
0
;
tm
->
tm_mday
=
15
;
tm
->
tm_mon
=
5
;
tm
->
tm_year
=
52
;
return
r
tc_data
.
r
c
;
return
rc
;
}
if
((
rtc_data
.
ce_msg
.
ce_msg
[
2
]
==
0xa9
)
||
(
rtc_data
.
ce_msg
.
ce_msg
[
2
]
==
0xaf
))
{
if
((
ce_msg
[
2
]
==
0xa9
)
||
(
ce_msg
[
2
]
==
0xaf
))
{
/* TOD clock is not set */
tm
->
tm_sec
=
1
;
tm
->
tm_min
=
1
;
...
...
@@ -736,7 +725,6 @@ int mf_get_rtc(struct rtc_time *tm)
mf_set_rtc
(
tm
);
}
{
u8
*
ce_msg
=
rtc_data
.
ce_msg
.
ce_msg
;
u8
year
=
ce_msg
[
5
];
u8
sec
=
ce_msg
[
6
];
u8
min
=
ce_msg
[
7
];
...
...
@@ -765,6 +753,63 @@ int mf_get_rtc(struct rtc_time *tm)
return
0
;
}
int
mf_get_rtc
(
struct
rtc_time
*
tm
)
{
struct
ce_msg_comp_data
ce_complete
;
struct
rtc_time_data
rtc_data
;
int
rc
;
memset
(
&
ce_complete
,
0
,
sizeof
(
ce_complete
));
memset
(
&
rtc_data
,
0
,
sizeof
(
rtc_data
));
init_completion
(
&
rtc_data
.
com
);
ce_complete
.
handler
=
&
get_rtc_time_complete
;
ce_complete
.
token
=
&
rtc_data
;
rc
=
signal_ce_msg_simple
(
0x40
,
&
ce_complete
);
if
(
rc
)
return
rc
;
wait_for_completion
(
&
rtc_data
.
com
);
return
rtc_set_tm
(
rtc_data
.
rc
,
rtc_data
.
ce_msg
.
ce_msg
,
tm
);
}
struct
boot_rtc_time_data
{
int
busy
;
struct
ce_msg_data
ce_msg
;
int
rc
;
};
static
void
get_boot_rtc_time_complete
(
void
*
token
,
struct
ce_msg_data
*
ce_msg
)
{
struct
boot_rtc_time_data
*
rtc
=
token
;
memcpy
(
&
rtc
->
ce_msg
,
ce_msg
,
sizeof
(
rtc
->
ce_msg
));
rtc
->
rc
=
0
;
rtc
->
busy
=
0
;
}
int
mf_get_boot_rtc
(
struct
rtc_time
*
tm
)
{
struct
ce_msg_comp_data
ce_complete
;
struct
boot_rtc_time_data
rtc_data
;
int
rc
;
memset
(
&
ce_complete
,
0
,
sizeof
(
ce_complete
));
memset
(
&
rtc_data
,
0
,
sizeof
(
rtc_data
));
rtc_data
.
busy
=
1
;
ce_complete
.
handler
=
&
get_boot_rtc_time_complete
;
ce_complete
.
token
=
&
rtc_data
;
rc
=
signal_ce_msg_simple
(
0x40
,
&
ce_complete
);
if
(
rc
)
return
rc
;
/* We need to poll here as we are not yet taking interrupts */
while
(
rtc_data
.
busy
)
{
extern
unsigned
long
lpevent_count
;
struct
ItLpQueue
*
lpq
=
get_paca
()
->
lpqueue_ptr
;
if
(
lpq
&&
ItLpQueue_isLpIntPending
(
lpq
))
lpevent_count
+=
ItLpQueue_process
(
lpq
,
NULL
);
}
return
rtc_set_tm
(
rtc_data
.
rc
,
rtc_data
.
ce_msg
.
ce_msg
,
tm
);
}
int
mf_set_rtc
(
struct
rtc_time
*
tm
)
{
char
ce_time
[
12
];
...
...
arch/ppc64/kernel/rtc.c
浏览文件 @
4b463f78
...
...
@@ -292,47 +292,10 @@ int iSeries_set_rtc_time(struct rtc_time *tm)
void
iSeries_get_boot_time
(
struct
rtc_time
*
tm
)
{
unsigned
long
time
;
static
unsigned
long
lastsec
=
1
;
u32
dataWord1
=
*
((
u32
*
)(
&
xSpCommArea
.
xBcdTimeAtIplStart
));
u32
dataWord2
=
*
(((
u32
*
)
&
(
xSpCommArea
.
xBcdTimeAtIplStart
))
+
1
);
int
year
=
1970
;
int
year1
=
(
dataWord1
>>
24
)
&
0x000000FF
;
int
year2
=
(
dataWord1
>>
16
)
&
0x000000FF
;
int
sec
=
(
dataWord1
>>
8
)
&
0x000000FF
;
int
min
=
dataWord1
&
0x000000FF
;
int
hour
=
(
dataWord2
>>
24
)
&
0x000000FF
;
int
day
=
(
dataWord2
>>
8
)
&
0x000000FF
;
int
mon
=
dataWord2
&
0x000000FF
;
if
(
piranha_simulator
)
return
;
BCD_TO_BIN
(
sec
);
BCD_TO_BIN
(
min
);
BCD_TO_BIN
(
hour
);
BCD_TO_BIN
(
day
);
BCD_TO_BIN
(
mon
);
BCD_TO_BIN
(
year1
);
BCD_TO_BIN
(
year2
);
year
=
year1
*
100
+
year2
;
time
=
mktime
(
year
,
mon
,
day
,
hour
,
min
,
sec
);
time
+=
(
jiffies
/
HZ
);
/* Now THIS is a nasty hack!
* It ensures that the first two calls get different answers.
* That way the loop in init_time (time.c) will not think
* the clock is stuck.
*/
if
(
lastsec
)
{
time
-=
lastsec
;
--
lastsec
;
}
to_tm
(
time
,
tm
);
tm
->
tm_year
-=
1900
;
mf_get_boot_rtc
(
tm
);
tm
->
tm_mon
-=
1
;
}
#endif
...
...
arch/ppc64/kernel/time.c
浏览文件 @
4b463f78
...
...
@@ -515,6 +515,7 @@ void __init time_init(void)
do_gtod
.
varp
=
&
do_gtod
.
vars
[
0
];
do_gtod
.
var_idx
=
0
;
do_gtod
.
varp
->
tb_orig_stamp
=
tb_last_stamp
;
get_paca
()
->
next_jiffy_update_tb
=
tb_last_stamp
+
tb_ticks_per_jiffy
;
do_gtod
.
varp
->
stamp_xsec
=
xtime
.
tv_sec
*
XSEC_PER_SEC
;
do_gtod
.
tb_ticks_per_sec
=
tb_ticks_per_sec
;
do_gtod
.
varp
->
tb_to_xs
=
tb_to_xs
;
...
...
drivers/ide/ide-cd.c
浏览文件 @
4b463f78
...
...
@@ -1933,7 +1933,7 @@ static ide_startstop_t cdrom_do_block_pc(ide_drive_t *drive, struct request *rq)
/*
* check if dma is safe
*/
if
((
rq
->
data_len
&
mask
)
||
(
addr
&
mask
))
if
((
rq
->
data_len
&
3
)
||
(
addr
&
mask
))
info
->
dma
=
0
;
}
...
...
drivers/media/video/saa7134/saa6752hs.c
浏览文件 @
4b463f78
...
...
@@ -43,15 +43,15 @@ enum saa6752hs_videoformat {
static
const
struct
v4l2_format
v4l2_format_table
[]
=
{
[
SAA6752HS_VF_D1
]
=
{
.
fmt
.
pix
.
width
=
720
,
.
fmt
.
pix
.
height
=
576
},
.
fmt
=
{
.
pix
=
{
.
width
=
720
,
.
height
=
576
},
},
},
[
SAA6752HS_VF_2_3_D1
]
=
{
.
fmt
.
pix
.
width
=
480
,
.
fmt
.
pix
.
height
=
576
},
.
fmt
=
{
.
pix
=
{
.
width
=
480
,
.
height
=
576
},
},
},
[
SAA6752HS_VF_1_2_D1
]
=
{
.
fmt
.
pix
.
width
=
352
,
.
fmt
.
pix
.
height
=
576
},
.
fmt
=
{
.
pix
=
{
.
width
=
352
,
.
height
=
576
},
},
},
[
SAA6752HS_VF_SIF
]
=
{
.
fmt
.
pix
.
width
=
352
,
.
fmt
.
pix
.
height
=
288
},
.
fmt
=
{
.
pix
=
{
.
width
=
352
,
.
height
=
288
},
},
},
[
SAA6752HS_VF_UNKNOWN
]
=
{
.
fmt
.
pix
.
width
=
0
,
.
fmt
.
pix
.
height
=
0
},
.
fmt
=
{
.
pix
=
{
.
width
=
0
,
.
height
=
0
},
},
},
};
struct
saa6752hs_state
{
...
...
drivers/scsi/aic7xxx/aic7xxx_osm.c
浏览文件 @
4b463f78
...
...
@@ -659,8 +659,11 @@ ahc_linux_slave_alloc(struct scsi_device *device)
ahc_lock
(
ahc
,
&
flags
);
targ
=
ahc
->
platform_data
->
targets
[
target_offset
];
if
(
targ
==
NULL
)
{
targ
=
ahc_linux_alloc_target
(
ahc
,
starget
->
channel
,
starget
->
id
);
struct
seeprom_config
*
sc
=
ahc
->
seep_config
;
struct
seeprom_config
*
sc
;
targ
=
ahc_linux_alloc_target
(
ahc
,
starget
->
channel
,
starget
->
id
);
sc
=
ahc
->
seep_config
;
if
(
targ
==
NULL
)
goto
out
;
...
...
drivers/usb/atm/speedtch.c
浏览文件 @
4b463f78
...
...
@@ -386,6 +386,8 @@ static void speedtch_poll_status(struct speedtch_instance_data *instance)
if
(
instance
->
u
.
atm_dev
->
signal
!=
ATM_PHY_SIG_LOST
)
{
instance
->
u
.
atm_dev
->
signal
=
ATM_PHY_SIG_LOST
;
printk
(
KERN_NOTICE
"ADSL line is down
\n
"
);
/* It'll never resync again unless we ask it to... */
speedtch_start_synchro
(
instance
);
}
break
;
...
...
include/asm-ppc64/iSeries/mf.h
浏览文件 @
4b463f78
...
...
@@ -52,6 +52,7 @@ extern void mf_clear_src(void);
extern
void
mf_init
(
void
);
extern
int
mf_get_rtc
(
struct
rtc_time
*
tm
);
extern
int
mf_get_boot_rtc
(
struct
rtc_time
*
tm
);
extern
int
mf_set_rtc
(
struct
rtc_time
*
tm
);
#endif
/* _ASM_PPC64_ISERIES_MF_H */
kernel/signal.c
浏览文件 @
4b463f78
...
...
@@ -522,7 +522,16 @@ static int __dequeue_signal(struct sigpending *pending, sigset_t *mask,
{
int
sig
=
0
;
sig
=
next_signal
(
pending
,
mask
);
/* SIGKILL must have priority, otherwise it is quite easy
* to create an unkillable process, sending sig < SIGKILL
* to self */
if
(
unlikely
(
sigismember
(
&
pending
->
signal
,
SIGKILL
)))
{
if
(
!
sigismember
(
mask
,
SIGKILL
))
sig
=
SIGKILL
;
}
if
(
likely
(
!
sig
))
sig
=
next_signal
(
pending
,
mask
);
if
(
sig
)
{
if
(
current
->
notifier
)
{
if
(
sigismember
(
current
->
notifier_mask
,
sig
))
{
...
...
mm/rmap.c
浏览文件 @
4b463f78
...
...
@@ -626,7 +626,7 @@ static void try_to_unmap_cluster(unsigned long cursor,
pgd_t
*
pgd
;
pud_t
*
pud
;
pmd_t
*
pmd
;
pte_t
*
pte
;
pte_t
*
pte
,
*
original_pte
;
pte_t
pteval
;
struct
page
*
page
;
unsigned
long
address
;
...
...
@@ -658,7 +658,7 @@ static void try_to_unmap_cluster(unsigned long cursor,
if
(
!
pmd_present
(
*
pmd
))
goto
out_unlock
;
for
(
pte
=
pte_offset_map
(
pmd
,
address
);
for
(
original_pte
=
pte
=
pte_offset_map
(
pmd
,
address
);
address
<
end
;
pte
++
,
address
+=
PAGE_SIZE
)
{
if
(
!
pte_present
(
*
pte
))
...
...
@@ -694,7 +694,7 @@ static void try_to_unmap_cluster(unsigned long cursor,
(
*
mapcount
)
--
;
}
pte_unmap
(
pte
);
pte_unmap
(
original_
pte
);
out_unlock:
spin_unlock
(
&
mm
->
page_table_lock
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录