Skip to contentSkip to conversation

kvm: how big is type?

DISCUSSION Applied Harvey Harrison 3 participants 4 messages Apr 27, 2008 – Apr 28, 2008

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
Quoted 10 lines · Harvey Harrison

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?

Signature · 8 lines
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
#2 lore raw
Quoted 14 lines · Avi Kivity
Quoted 5 lines · Harvey Harrison

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)

Quoted 7 lines

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.

Quoted 5 lines

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 <[email protected]>
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.

---
 arch/x86/kvm/x86.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
arch/x86/kvm/x86.c +2 -2
index 0ce5563..5c360bb 100644
@@ -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);
 	}
Signature · 5 lines
1.5.3.6


-- 
woof.
Applied
#3 lore raw
Quoted 22 lines · Izik Eidus
Quoted 11 lines · Avi Kivity
Quoted 9 lines · Harvey Harrison

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);
Quoted 9 lines
Quoted 4 lines

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?

Quoted 6 lines

From cf6e76c69a38a983df0c84a3dcc2336042eb3436 Mon Sep 17 00:00:00 2001
From: Izik Eidus <[email protected]>
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.

Signature · 1 line
error compiling committee.c: too many arguments to function