Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
4b064e4f
Commit
4b064e4f
authored
Jul 25, 2009
by
Thomas Gleixner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x86: kvm: Convert i8254/i8259 locks to atomic_spinlocks
Signed-off-by:
Thomas Gleixner
<
tglx@linutronix.de
>
parent
a76dd8f3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
10 additions
and
10 deletions
+10
-10
arch/x86/kvm/i8254.c
arch/x86/kvm/i8254.c
+5
-5
arch/x86/kvm/i8254.h
arch/x86/kvm/i8254.h
+1
-1
arch/x86/kvm/i8259.c
arch/x86/kvm/i8259.c
+3
-3
arch/x86/kvm/irq.h
arch/x86/kvm/irq.h
+1
-1
No files found.
arch/x86/kvm/i8254.c
View file @
4b064e4f
...
...
@@ -237,11 +237,11 @@ static void kvm_pit_ack_irq(struct kvm_irq_ack_notifier *kian)
{
struct
kvm_kpit_state
*
ps
=
container_of
(
kian
,
struct
kvm_kpit_state
,
irq_ack_notifier
);
spin_lock
(
&
ps
->
inject_lock
);
atomic_
spin_lock
(
&
ps
->
inject_lock
);
if
(
atomic_dec_return
(
&
ps
->
pit_timer
.
pending
)
<
0
)
atomic_inc
(
&
ps
->
pit_timer
.
pending
);
ps
->
irq_ack
=
1
;
spin_unlock
(
&
ps
->
inject_lock
);
atomic_
spin_unlock
(
&
ps
->
inject_lock
);
}
void
__kvm_migrate_pit_timer
(
struct
kvm_vcpu
*
vcpu
)
...
...
@@ -577,7 +577,7 @@ struct kvm_pit *kvm_create_pit(struct kvm *kvm)
mutex_init
(
&
pit
->
pit_state
.
lock
);
mutex_lock
(
&
pit
->
pit_state
.
lock
);
spin_lock_init
(
&
pit
->
pit_state
.
inject_lock
);
atomic_
spin_lock_init
(
&
pit
->
pit_state
.
inject_lock
);
/* Initialize PIO device */
pit
->
dev
.
read
=
pit_ioport_read
;
...
...
@@ -669,12 +669,12 @@ void kvm_inject_pit_timer_irqs(struct kvm_vcpu *vcpu)
/* Try to inject pending interrupts when
* last one has been acked.
*/
spin_lock
(
&
ps
->
inject_lock
);
atomic_
spin_lock
(
&
ps
->
inject_lock
);
if
(
atomic_read
(
&
ps
->
pit_timer
.
pending
)
&&
ps
->
irq_ack
)
{
ps
->
irq_ack
=
0
;
inject
=
1
;
}
spin_unlock
(
&
ps
->
inject_lock
);
atomic_
spin_unlock
(
&
ps
->
inject_lock
);
if
(
inject
)
__inject_pit_timer_intr
(
kvm
);
}
...
...
arch/x86/kvm/i8254.h
View file @
4b064e4f
...
...
@@ -26,7 +26,7 @@ struct kvm_kpit_state {
u32
speaker_data_on
;
struct
mutex
lock
;
struct
kvm_pit
*
pit
;
spinlock_t
inject_lock
;
atomic_
spinlock_t
inject_lock
;
unsigned
long
irq_ack
;
struct
kvm_irq_ack_notifier
irq_ack_notifier
;
};
...
...
arch/x86/kvm/i8259.c
View file @
4b064e4f
...
...
@@ -34,7 +34,7 @@
static
void
pic_lock
(
struct
kvm_pic
*
s
)
__acquires
(
&
s
->
lock
)
{
spin_lock
(
&
s
->
lock
);
atomic_
spin_lock
(
&
s
->
lock
);
}
static
void
pic_unlock
(
struct
kvm_pic
*
s
)
...
...
@@ -48,7 +48,7 @@ static void pic_unlock(struct kvm_pic *s)
s
->
pending_acks
=
0
;
s
->
wakeup_needed
=
false
;
spin_unlock
(
&
s
->
lock
);
atomic_
spin_unlock
(
&
s
->
lock
);
while
(
acks
)
{
kvm_notify_acked_irq
(
kvm
,
SELECT_PIC
(
__ffs
(
acks
)),
...
...
@@ -522,7 +522,7 @@ struct kvm_pic *kvm_create_pic(struct kvm *kvm)
s
=
kzalloc
(
sizeof
(
struct
kvm_pic
),
GFP_KERNEL
);
if
(
!
s
)
return
NULL
;
spin_lock_init
(
&
s
->
lock
);
atomic_
spin_lock_init
(
&
s
->
lock
);
s
->
kvm
=
kvm
;
s
->
pics
[
0
].
elcr_mask
=
0xf8
;
s
->
pics
[
1
].
elcr_mask
=
0xde
;
...
...
arch/x86/kvm/irq.h
View file @
4b064e4f
...
...
@@ -62,7 +62,7 @@ struct kvm_kpic_state {
};
struct
kvm_pic
{
spinlock_t
lock
;
atomic_
spinlock_t
lock
;
bool
wakeup_needed
;
unsigned
pending_acks
;
struct
kvm
*
kvm
;
...
...
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