linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* kvm: how big is type?
@ 2008-04-27 19:18 Harvey Harrison
  2008-04-28 11:44 ` Avi Kivity
  0 siblings, 1 reply; 4+ messages in thread
From: Harvey Harrison @ 2008-04-27 19:18 UTC (permalink / raw)
  To: Avi Kivity; +Cc: LKML

arch/x86/kvm/x86.c:3484:25: warning: cast truncates bits from constant value (100 becomes 0)
arch/x86/kvm/x86.c:3510:24: warning: cast truncates bits from constant value (100 becomes 0)

The problem:
		cseg_desc.type &= ~(1 << 8); //clear the B flag
		nseg_desc.type |= (1 << 8);

type is a 4-bit bitfield on x86....please look into this.

Harvey


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: kvm: how big is type?
  2008-04-27 19:18 kvm: how big is type? Harvey Harrison
@ 2008-04-28 11:44 ` Avi Kivity
  2008-04-28 15:23   ` Izik Eidus
  0 siblings, 1 reply; 4+ messages in thread
From: Avi Kivity @ 2008-04-28 11:44 UTC (permalink / raw)
  To: Harvey Harrison; +Cc: LKML, Izik Eidus, kvm-devel

Harvey Harrison wrote:
> arch/x86/kvm/x86.c:3484:25: warning: cast truncates bits from constant value (100 becomes 0)
> arch/x86/kvm/x86.c:3510:24: warning: cast truncates bits from constant value (100 becomes 0)
>
> The problem:
> 		cseg_desc.type &= ~(1 << 8); //clear the B flag
> 		nseg_desc.type |= (1 << 8);
>
> type is a 4-bit bitfield on x86....please look into this.
>
>   

I think it ought to be (1 << 1), not (1 << 8), as it refers to the 
"busy" bit of the task type.  Izik?


-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: kvm: how big is type?
  2008-04-28 11:44 ` Avi Kivity
@ 2008-04-28 15:23   ` Izik Eidus
  2008-04-28 16:10     ` Avi Kivity
  0 siblings, 1 reply; 4+ messages in thread
From: Izik Eidus @ 2008-04-28 15:23 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Harvey Harrison, LKML, kvm-devel

Avi Kivity wrote:
> Harvey Harrison wrote:
>> arch/x86/kvm/x86.c:3484:25: warning: cast truncates bits from constant
>> value (100 becomes 0)
>> arch/x86/kvm/x86.c:3510:24: warning: cast truncates bits from constant
>> value (100 becomes 0)
>>
>> The problem:
>>         cseg_desc.type &= ~(1 << 8); //clear the B flag
>>         nseg_desc.type |= (1 << 8);
>>
>> type is a 4-bit bitfield on x86....please look into this.
>>
>>   
> 
> I think it ought to be (1 << 1), not (1 << 8), as it refers to the
> "busy" bit of the task type.  Izik?
> 
> 
>From cf6e76c69a38a983df0c84a3dcc2336042eb3436 Mon Sep 17 00:00:00 2001
From: Izik Eidus <izike@qumranet.com>
Date: Mon, 28 Apr 2008 18:16:08 +0300
Subject: [PATCH] KVM: x86: task switch: fix wrong bit setting for the busy flag.
 the busy bit is in offset of 1 inside type and not in 8.

Signed-off-by: Izik Eidus <izike@qumranet.com>
---
 arch/x86/kvm/x86.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 0ce5563..5c360bb 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3481,7 +3481,7 @@ int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int reason)
 	}
 
 	if (reason == TASK_SWITCH_IRET || reason == TASK_SWITCH_JMP) {
-		cseg_desc.type &= ~(1 << 8); //clear the B flag
+		cseg_desc.type &= ~(1 << 1); //clear the B flag
 		save_guest_segment_descriptor(vcpu, tr_seg.selector,
 					      &cseg_desc);
 	}
@@ -3507,7 +3507,7 @@ int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int reason)
 	}
 
 	if (reason != TASK_SWITCH_IRET) {
-		nseg_desc.type |= (1 << 8);
+		nseg_desc.type |= (1 << 1);
 		save_guest_segment_descriptor(vcpu, tss_selector,
 					      &nseg_desc);
 	}
-- 
1.5.3.6


-- 
woof.

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: kvm: how big is type?
  2008-04-28 15:23   ` Izik Eidus
@ 2008-04-28 16:10     ` Avi Kivity
  0 siblings, 0 replies; 4+ messages in thread
From: Avi Kivity @ 2008-04-28 16:10 UTC (permalink / raw)
  To: Izik Eidus; +Cc: Harvey Harrison, LKML, kvm-devel

Izik Eidus wrote:
> Avi Kivity wrote:
>   
>> Harvey Harrison wrote:
>>     
>>> arch/x86/kvm/x86.c:3484:25: warning: cast truncates bits from constant
>>> value (100 becomes 0)
>>> arch/x86/kvm/x86.c:3510:24: warning: cast truncates bits from constant
>>> value (100 becomes 0)
>>>
>>> The problem:
>>>         cseg_desc.type &= ~(1 << 8); //clear the B flag
>>>         nseg_desc.type |= (1 << 8);
>>>
>>> type is a 4-bit bitfield on x86....please look into this.
>>>
>>>   
>>>       
>> I think it ought to be (1 << 1), not (1 << 8), as it refers to the
>> "busy" bit of the task type.  Izik?
>>
>>
>>     
> From cf6e76c69a38a983df0c84a3dcc2336042eb3436 Mon Sep 17 00:00:00 2001
> From: Izik Eidus <izike@qumranet.com>
> Date: Mon, 28 Apr 2008 18:16:08 +0300
> Subject: [PATCH] KVM: x86: task switch: fix wrong bit setting for the busy flag.
>  the busy bit is in offset of 1 inside type and not in 8.
>   

Applied, thanks.


-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-04-28 16:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-27 19:18 kvm: how big is type? Harvey Harrison
2008-04-28 11:44 ` Avi Kivity
2008-04-28 15:23   ` Izik Eidus
2008-04-28 16:10     ` Avi Kivity

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).