* [PATCH] Fix kvm build for ia64
@ 2009-12-18 1:05 Luck, Tony
2009-12-19 12:05 ` Zhang, Xiantao
2009-12-20 8:27 ` Avi Kivity
0 siblings, 2 replies; 3+ messages in thread
From: Luck, Tony @ 2009-12-18 1:05 UTC (permalink / raw)
To: linux-ia64
Len Brown pointed out that allmodconfig is broken for
ia64 because of:
arch/ia64/kvm/vmm.c: In function 'vmm_spin_unlock':
arch/ia64/kvm/vmm.c:70: error: 'spinlock_t' has no member named 'raw_lock'
KVM has it's own spinlock routines. It should not depend on the base kernel
spinlock_t type (which changed when ia64 switched to ticket locks). Define
its own vmm_spinlock_t type.
Signed-off-by: Tony Luck <tony.luck@intel.com>
---
repost with Signed-off-by and re-written commit log.
diff --git a/arch/ia64/kvm/vcpu.h b/arch/ia64/kvm/vcpu.h
index 360724d..988911b 100644
--- a/arch/ia64/kvm/vcpu.h
+++ b/arch/ia64/kvm/vcpu.h
@@ -388,6 +388,9 @@ static inline u64 __gpfn_is_io(u64 gpfn)
#define _vmm_raw_spin_lock(x) do {}while(0)
#define _vmm_raw_spin_unlock(x) do {}while(0)
#else
+typedef struct {
+ volatile unsigned int lock;
+} vmm_spinlock_t;
#define _vmm_raw_spin_lock(x) \
do { \
__u32 *ia64_spinlock_ptr = (__u32 *) (x); \
@@ -405,12 +408,12 @@ static inline u64 __gpfn_is_io(u64 gpfn)
#define _vmm_raw_spin_unlock(x) \
do { barrier(); \
- ((spinlock_t *)x)->raw_lock.lock = 0; } \
+ ((vmm_spinlock_t *)x)->lock = 0; } \
while (0)
#endif
-void vmm_spin_lock(spinlock_t *lock);
-void vmm_spin_unlock(spinlock_t *lock);
+void vmm_spin_lock(vmm_spinlock_t *lock);
+void vmm_spin_unlock(vmm_spinlock_t *lock);
enum {
I_TLB = 1,
D_TLB = 2
diff --git a/arch/ia64/kvm/vmm.c b/arch/ia64/kvm/vmm.c
index f4b4c89..7a62f75 100644
--- a/arch/ia64/kvm/vmm.c
+++ b/arch/ia64/kvm/vmm.c
@@ -60,12 +60,12 @@ static void __exit kvm_vmm_exit(void)
return ;
}
-void vmm_spin_lock(spinlock_t *lock)
+void vmm_spin_lock(vmm_spinlock_t *lock)
{
_vmm_raw_spin_lock(lock);
}
-void vmm_spin_unlock(spinlock_t *lock)
+void vmm_spin_unlock(vmm_spinlock_t *lock)
{
_vmm_raw_spin_unlock(lock);
}
diff --git a/arch/ia64/kvm/vtlb.c b/arch/ia64/kvm/vtlb.c
index 20b3852..4332f7e 100644
--- a/arch/ia64/kvm/vtlb.c
+++ b/arch/ia64/kvm/vtlb.c
@@ -182,7 +182,7 @@ void mark_pages_dirty(struct kvm_vcpu *v, u64 pte, u64 ps)
{
u64 i, dirty_pages = 1;
u64 base_gfn = (pte&_PAGE_PPN_MASK) >> PAGE_SHIFT;
- spinlock_t *lock = __kvm_va(v->arch.dirty_log_lock_pa);
+ vmm_spinlock_t *lock = __kvm_va(v->arch.dirty_log_lock_pa);
void *dirty_bitmap = (void *)KVM_MEM_DIRTY_LOG_BASE;
dirty_pages <<= ps <= PAGE_SHIFT ? 0 : ps - PAGE_SHIFT;
^ permalink raw reply related [flat|nested] 3+ messages in thread* RE: [PATCH] Fix kvm build for ia64
2009-12-18 1:05 [PATCH] Fix kvm build for ia64 Luck, Tony
@ 2009-12-19 12:05 ` Zhang, Xiantao
2009-12-20 8:27 ` Avi Kivity
1 sibling, 0 replies; 3+ messages in thread
From: Zhang, Xiantao @ 2009-12-19 12:05 UTC (permalink / raw)
To: linux-ia64
Okay for me. Thanks, Tony!
Xiantao
Luck, Tony wrote:
> Len Brown pointed out that allmodconfig is broken for
> ia64 because of:
>
> arch/ia64/kvm/vmm.c: In function 'vmm_spin_unlock':
> arch/ia64/kvm/vmm.c:70: error: 'spinlock_t' has no member named
> 'raw_lock'
>
> KVM has it's own spinlock routines. It should not depend on the base
> kernel spinlock_t type (which changed when ia64 switched to ticket
> locks). Define its own vmm_spinlock_t type.
>
> Signed-off-by: Tony Luck <tony.luck@intel.com>
>
> ---
>
> repost with Signed-off-by and re-written commit log.
>
> diff --git a/arch/ia64/kvm/vcpu.h b/arch/ia64/kvm/vcpu.h
> index 360724d..988911b 100644
> --- a/arch/ia64/kvm/vcpu.h
> +++ b/arch/ia64/kvm/vcpu.h
> @@ -388,6 +388,9 @@ static inline u64 __gpfn_is_io(u64 gpfn)
> #define _vmm_raw_spin_lock(x) do {}while(0)
> #define _vmm_raw_spin_unlock(x) do {}while(0)
> #else
> +typedef struct {
> + volatile unsigned int lock;
> +} vmm_spinlock_t;
> #define _vmm_raw_spin_lock(x) \
> do { \
> __u32 *ia64_spinlock_ptr = (__u32 *) (x); \
> @@ -405,12 +408,12 @@ static inline u64 __gpfn_is_io(u64 gpfn)
>
> #define _vmm_raw_spin_unlock(x) \
> do { barrier(); \
> - ((spinlock_t *)x)->raw_lock.lock = 0; } \
> + ((vmm_spinlock_t *)x)->lock = 0; } \
> while (0)
> #endif
>
> -void vmm_spin_lock(spinlock_t *lock);
> -void vmm_spin_unlock(spinlock_t *lock);
> +void vmm_spin_lock(vmm_spinlock_t *lock);
> +void vmm_spin_unlock(vmm_spinlock_t *lock);
> enum {
> I_TLB = 1,
> D_TLB = 2
> diff --git a/arch/ia64/kvm/vmm.c b/arch/ia64/kvm/vmm.c
> index f4b4c89..7a62f75 100644
> --- a/arch/ia64/kvm/vmm.c
> +++ b/arch/ia64/kvm/vmm.c
> @@ -60,12 +60,12 @@ static void __exit kvm_vmm_exit(void)
> return ;
> }
>
> -void vmm_spin_lock(spinlock_t *lock)
> +void vmm_spin_lock(vmm_spinlock_t *lock)
> {
> _vmm_raw_spin_lock(lock);
> }
>
> -void vmm_spin_unlock(spinlock_t *lock)
> +void vmm_spin_unlock(vmm_spinlock_t *lock)
> {
> _vmm_raw_spin_unlock(lock);
> }
> diff --git a/arch/ia64/kvm/vtlb.c b/arch/ia64/kvm/vtlb.c
> index 20b3852..4332f7e 100644
> --- a/arch/ia64/kvm/vtlb.c
> +++ b/arch/ia64/kvm/vtlb.c
> @@ -182,7 +182,7 @@ void mark_pages_dirty(struct kvm_vcpu *v, u64
> pte, u64 ps) {
> u64 i, dirty_pages = 1;
> u64 base_gfn = (pte&_PAGE_PPN_MASK) >> PAGE_SHIFT;
> - spinlock_t *lock = __kvm_va(v->arch.dirty_log_lock_pa);
> + vmm_spinlock_t *lock = __kvm_va(v->arch.dirty_log_lock_pa);
> void *dirty_bitmap = (void *)KVM_MEM_DIRTY_LOG_BASE;
>
> dirty_pages <<= ps <= PAGE_SHIFT ? 0 : ps - PAGE_SHIFT;
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] Fix kvm build for ia64
2009-12-18 1:05 [PATCH] Fix kvm build for ia64 Luck, Tony
2009-12-19 12:05 ` Zhang, Xiantao
@ 2009-12-20 8:27 ` Avi Kivity
1 sibling, 0 replies; 3+ messages in thread
From: Avi Kivity @ 2009-12-20 8:27 UTC (permalink / raw)
To: linux-ia64
On 12/18/2009 03:05 AM, Luck, Tony wrote:
> Len Brown pointed out that allmodconfig is broken for
> ia64 because of:
>
> arch/ia64/kvm/vmm.c: In function 'vmm_spin_unlock':
> arch/ia64/kvm/vmm.c:70: error: 'spinlock_t' has no member named 'raw_lock'
>
> KVM has it's own spinlock routines. It should not depend on the base kernel
> spinlock_t type (which changed when ia64 switched to ticket locks). Define
> its own vmm_spinlock_t type.
>
Applied and queued for 2.6.33. Thanks.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-12-20 8:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-18 1:05 [PATCH] Fix kvm build for ia64 Luck, Tony
2009-12-19 12:05 ` Zhang, Xiantao
2009-12-20 8:27 ` Avi Kivity
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox