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
Kirill Smelkov
linux
Commits
cb90cf3c
Commit
cb90cf3c
authored
May 20, 2004
by
Andrew Morton
Committed by
Linus Torvalds
May 20, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] Feed arch/i386/kernel/msr.c through Lindent
parent
2c28ee5a
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
163 additions
and
169 deletions
+163
-169
arch/i386/kernel/msr.c
arch/i386/kernel/msr.c
+163
-169
No files found.
arch/i386/kernel/msr.c
View file @
cb90cf3c
...
@@ -48,29 +48,24 @@ static inline int wrmsr_eio(u32 reg, u32 eax, u32 edx)
...
@@ -48,29 +48,24 @@ static inline int wrmsr_eio(u32 reg, u32 eax, u32 edx)
{
{
int
err
;
int
err
;
asm
volatile
(
asm
volatile
(
"1: wrmsr
\n
"
"1: wrmsr
\n
"
"2:
\n
"
"2:
\n
"
".section .fixup,
\"
ax
\"\n
"
".section .fixup,
\"
ax
\"\n
"
"3: movl %4,%0
\n
"
"3: movl %4,%0
\n
"
" jmp 2b
\n
"
" jmp 2b
\n
"
".previous
\n
"
".previous
\n
"
".section __ex_table,
\"
a
\"\n
"
".section __ex_table,
\"
a
\"\n
"
" .align 4
\n
"
" .align 4
\n
"
" .long 1b,3b
\n
"
".previous"
:
"=&bDS"
(
err
)
" .long 1b,3b
\n
"
:
"a"
(
eax
),
"d"
(
edx
),
"c"
(
reg
),
"i"
(
-
EIO
),
"0"
(
0
));
".previous"
:
"=&bDS"
(
err
)
:
"a"
(
eax
),
"d"
(
edx
),
"c"
(
reg
),
"i"
(
-
EIO
),
"0"
(
0
));
return
err
;
return
err
;
}
}
static
inline
int
rdmsr_eio
(
u32
reg
,
u32
*
eax
,
u32
*
edx
)
static
inline
int
rdmsr_eio
(
u32
reg
,
u32
*
eax
,
u32
*
edx
)
{
{
int
err
;
int
err
;
asm
volatile
(
asm
volatile
(
"1: rdmsr
\n
"
"1: rdmsr
\n
"
"2:
\n
"
"2:
\n
"
".section .fixup,
\"
ax
\"\n
"
".section .fixup,
\"
ax
\"\n
"
"3: movl %4,%0
\n
"
"3: movl %4,%0
\n
"
...
@@ -79,9 +74,8 @@ static inline int rdmsr_eio(u32 reg, u32 *eax, u32 *edx)
...
@@ -79,9 +74,8 @@ static inline int rdmsr_eio(u32 reg, u32 *eax, u32 *edx)
".section __ex_table,
\"
a
\"\n
"
".section __ex_table,
\"
a
\"\n
"
" .align 4
\n
"
" .align 4
\n
"
" .long 1b,3b
\n
"
" .long 1b,3b
\n
"
".previous"
".previous"
:
"=&bDS"
(
err
),
"=a"
(
*
eax
),
"=d"
(
*
edx
)
:
"=&bDS"
(
err
),
"=a"
(
*
eax
),
"=d"
(
*
edx
)
:
"c"
(
reg
),
"i"
(
-
EIO
),
"0"
(
0
));
:
"c"
(
reg
),
"i"
(
-
EIO
),
"0"
(
0
));
return
err
;
return
err
;
}
}
...
@@ -97,17 +91,17 @@ struct msr_command {
...
@@ -97,17 +91,17 @@ struct msr_command {
static
void
msr_smp_wrmsr
(
void
*
cmd_block
)
static
void
msr_smp_wrmsr
(
void
*
cmd_block
)
{
{
struct
msr_command
*
cmd
=
(
struct
msr_command
*
)
cmd_block
;
struct
msr_command
*
cmd
=
(
struct
msr_command
*
)
cmd_block
;
if
(
cmd
->
cpu
==
smp_processor_id
()
)
if
(
cmd
->
cpu
==
smp_processor_id
()
)
cmd
->
err
=
wrmsr_eio
(
cmd
->
reg
,
cmd
->
data
[
0
],
cmd
->
data
[
1
]);
cmd
->
err
=
wrmsr_eio
(
cmd
->
reg
,
cmd
->
data
[
0
],
cmd
->
data
[
1
]);
}
}
static
void
msr_smp_rdmsr
(
void
*
cmd_block
)
static
void
msr_smp_rdmsr
(
void
*
cmd_block
)
{
{
struct
msr_command
*
cmd
=
(
struct
msr_command
*
)
cmd_block
;
struct
msr_command
*
cmd
=
(
struct
msr_command
*
)
cmd_block
;
if
(
cmd
->
cpu
==
smp_processor_id
()
)
if
(
cmd
->
cpu
==
smp_processor_id
()
)
cmd
->
err
=
rdmsr_eio
(
cmd
->
reg
,
&
cmd
->
data
[
0
],
&
cmd
->
data
[
1
]);
cmd
->
err
=
rdmsr_eio
(
cmd
->
reg
,
&
cmd
->
data
[
0
],
&
cmd
->
data
[
1
]);
}
}
...
@@ -117,7 +111,7 @@ static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
...
@@ -117,7 +111,7 @@ static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
int
ret
;
int
ret
;
preempt_disable
();
preempt_disable
();
if
(
cpu
==
smp_processor_id
()
)
{
if
(
cpu
==
smp_processor_id
()
)
{
ret
=
wrmsr_eio
(
reg
,
eax
,
edx
);
ret
=
wrmsr_eio
(
reg
,
eax
,
edx
);
}
else
{
}
else
{
cmd
.
cpu
=
cpu
;
cmd
.
cpu
=
cpu
;
...
@@ -132,13 +126,13 @@ static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
...
@@ -132,13 +126,13 @@ static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
return
ret
;
return
ret
;
}
}
static
inline
int
do_rdmsr
(
int
cpu
,
u32
reg
,
u32
*
eax
,
u32
*
edx
)
static
inline
int
do_rdmsr
(
int
cpu
,
u32
reg
,
u32
*
eax
,
u32
*
edx
)
{
{
struct
msr_command
cmd
;
struct
msr_command
cmd
;
int
ret
;
int
ret
;
preempt_disable
();
preempt_disable
();
if
(
cpu
==
smp_processor_id
()
)
{
if
(
cpu
==
smp_processor_id
()
)
{
ret
=
rdmsr_eio
(
reg
,
eax
,
edx
);
ret
=
rdmsr_eio
(
reg
,
eax
,
edx
);
}
else
{
}
else
{
cmd
.
cpu
=
cpu
;
cmd
.
cpu
=
cpu
;
...
@@ -162,7 +156,7 @@ static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
...
@@ -162,7 +156,7 @@ static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
return
wrmsr_eio
(
reg
,
eax
,
edx
);
return
wrmsr_eio
(
reg
,
eax
,
edx
);
}
}
static
inline
int
do_rdmsr
(
int
cpu
,
u32
reg
,
u32
*
eax
,
u32
*
edx
)
static
inline
int
do_rdmsr
(
int
cpu
,
u32
reg
,
u32
*
eax
,
u32
*
edx
)
{
{
return
rdmsr_eio
(
reg
,
eax
,
edx
);
return
rdmsr_eio
(
reg
,
eax
,
edx
);
}
}
...
@@ -186,24 +180,24 @@ static loff_t msr_seek(struct file *file, loff_t offset, int orig)
...
@@ -186,24 +180,24 @@ static loff_t msr_seek(struct file *file, loff_t offset, int orig)
return
ret
;
return
ret
;
}
}
static
ssize_t
msr_read
(
struct
file
*
file
,
char
__user
*
buf
,
static
ssize_t
msr_read
(
struct
file
*
file
,
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
)
size_t
count
,
loff_t
*
ppos
)
{
{
u32
*
tmp
=
(
u32
*
)
buf
;
u32
*
tmp
=
(
u32
*
)
buf
;
u32
data
[
2
];
u32
data
[
2
];
size_t
rv
;
size_t
rv
;
u32
reg
=
*
ppos
;
u32
reg
=
*
ppos
;
int
cpu
=
iminor
(
file
->
f_dentry
->
d_inode
);
int
cpu
=
iminor
(
file
->
f_dentry
->
d_inode
);
int
err
;
int
err
;
if
(
count
%
8
)
if
(
count
%
8
)
return
-
EINVAL
;
/* Invalid chunk size */
return
-
EINVAL
;
/* Invalid chunk size */
for
(
rv
=
0
;
count
;
count
-=
8
)
{
for
(
rv
=
0
;
count
;
count
-=
8
)
{
err
=
do_rdmsr
(
cpu
,
reg
,
&
data
[
0
],
&
data
[
1
]);
err
=
do_rdmsr
(
cpu
,
reg
,
&
data
[
0
],
&
data
[
1
]);
if
(
err
)
if
(
err
)
return
err
;
return
err
;
if
(
copy_to_user
(
tmp
,
&
data
,
8
)
)
if
(
copy_to_user
(
tmp
,
&
data
,
8
)
)
return
-
EFAULT
;
return
-
EFAULT
;
tmp
+=
2
;
tmp
+=
2
;
}
}
...
@@ -211,8 +205,8 @@ static ssize_t msr_read(struct file * file, char __user * buf,
...
@@ -211,8 +205,8 @@ static ssize_t msr_read(struct file * file, char __user * buf,
return
((
char
*
)
tmp
)
-
buf
;
return
((
char
*
)
tmp
)
-
buf
;
}
}
static
ssize_t
msr_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
static
ssize_t
msr_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
)
size_t
count
,
loff_t
*
ppos
)
{
{
const
u32
*
tmp
=
(
const
u32
*
)
buf
;
const
u32
*
tmp
=
(
const
u32
*
)
buf
;
u32
data
[
2
];
u32
data
[
2
];
...
@@ -221,14 +215,14 @@ static ssize_t msr_write(struct file * file, const char __user * buf,
...
@@ -221,14 +215,14 @@ static ssize_t msr_write(struct file * file, const char __user * buf,
int
cpu
=
iminor
(
file
->
f_dentry
->
d_inode
);
int
cpu
=
iminor
(
file
->
f_dentry
->
d_inode
);
int
err
;
int
err
;
if
(
count
%
8
)
if
(
count
%
8
)
return
-
EINVAL
;
/* Invalid chunk size */
return
-
EINVAL
;
/* Invalid chunk size */
for
(
rv
=
0
;
count
;
count
-=
8
)
{
for
(
rv
=
0
;
count
;
count
-=
8
)
{
if
(
copy_from_user
(
&
data
,
tmp
,
8
)
)
if
(
copy_from_user
(
&
data
,
tmp
,
8
)
)
return
-
EFAULT
;
return
-
EFAULT
;
err
=
do_wrmsr
(
cpu
,
reg
,
data
[
0
],
data
[
1
]);
err
=
do_wrmsr
(
cpu
,
reg
,
data
[
0
],
data
[
1
]);
if
(
err
)
if
(
err
)
return
err
;
return
err
;
tmp
+=
2
;
tmp
+=
2
;
}
}
...
@@ -243,7 +237,7 @@ static int msr_open(struct inode *inode, struct file *file)
...
@@ -243,7 +237,7 @@ static int msr_open(struct inode *inode, struct file *file)
if
(
!
cpu_online
(
cpu
))
if
(
!
cpu_online
(
cpu
))
return
-
ENXIO
;
/* No such CPU */
return
-
ENXIO
;
/* No such CPU */
if
(
!
cpu_has
(
c
,
X86_FEATURE_MSR
)
)
if
(
!
cpu_has
(
c
,
X86_FEATURE_MSR
)
)
return
-
EIO
;
/* MSR not supported */
return
-
EIO
;
/* MSR not supported */
return
0
;
return
0
;
...
@@ -279,6 +273,6 @@ void __exit msr_exit(void)
...
@@ -279,6 +273,6 @@ void __exit msr_exit(void)
module_init
(
msr_init
);
module_init
(
msr_init
);
module_exit
(
msr_exit
)
module_exit
(
msr_exit
)
MODULE_AUTHOR
(
"H. Peter Anvin <hpa@zytor.com>"
);
MODULE_AUTHOR
(
"H. Peter Anvin <hpa@zytor.com>"
);
MODULE_DESCRIPTION
(
"x86 generic MSR driver"
);
MODULE_DESCRIPTION
(
"x86 generic MSR driver"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
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