KVM - Fix rmode_tss_base declaration
PATCH 1/1 KVM - Fix rmode_tss_base declaration
The long return value of rmode_tss_base is truncated by its declared return type of int.
--
drivers/kvm/vmx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/kvm/vmx.c +1 -1
@@ -884,7 +884,7 @@ static void enter_pmode(struct kvm_vcpuvmcs_write32 (GUEST_CS_AR_BYTES ,0x9b ); } -static int rmode_tss_base (struct kvm * kvm) +static unsigned long rmode_tss_base (struct kvm * kvm) {gfn_t base_gfn = kvm->memslots[0 ].base_gfn + kvm->memslots[0 ].npages -3 ;return base_gfn <<PAGE_SHIFT ;
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
Quoted 14 lines
The long return value of
rmode_tss_baseis truncated by its declared return type of int.Signed-off-by Jeff Dike <jdike-VuQAYsv1563Yd54FQh9/[email protected]>--
drivers/kvm/vmx.c| 2 +-1 file changed, 1 insertion(+), 1 deletion(-)Index:
kvm/drivers/kvm/vmx.c
===================================================================
drivers/kvm/vmx.c static void enter_pmode(struct kvm_vcpu · line 887
Quoted 5 lines
drivers/kvm/vmx.c +1
-1@@ -884,7 +884,7 @@ static void enter_pmode(struct kvm_vcpuvmcs_write32 (GUEST_CS_AR_BYTES ,0x9b ); } -static int rmode_tss_base (struct kvm * kvm) +static unsigned long rmode_tss_base (struct kvm * kvm)
Should use gpa_t instead.
-Xin
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
Quoted 4 lines · Xin B
drivers/kvm/vmx.c static void enter_pmode(struct kvm_vcpu · line 887
Quoted 2 lines
drivers/kvm/vmx.c +1
-1-static int rmode_tss_base (struct kvm * kvm) +static unsigned long rmode_tss_base (struct kvm * kvm)Should use
gpa_tinstead.
Right you are, I didn't notice that type.
Will fix.
Jeff
Signature · 7 lines
Work email - jdike at linux dot intel dot com ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/
Quoted 11 lines · Jeff Dike
Quoted 5 lines · Xin B
drivers/kvm/vmx.c static void enter_pmode(struct kvm_vcpu · line 887
Quoted 3 lines
drivers/kvm/vmx.c +1
-1-static int rmode_tss_base (struct kvm * kvm) +static unsigned long rmode_tss_base (struct kvm * kvm)Should use
gpa_tinstead.Right you are, I didn't notice that type.
Some extra logic is needed on i386 with >= 4GB. Current code will wraparound since gfn_t is 32-bits long, but casting it to 64-bits is not the answer since the processor will truncate it back to 32 bits (the return value is eventually used as a long in enter_rmode()).
Signature · 8 lines
Do not meddle in the internals of kernels, for they are subtle and quick to panic. ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/
Quoted 4 lines · Avi Kivity
Some extra logic is needed on i386 with >= 4GB. Current code will wraparound since
gfn_tis 32-bits long, but casting it to 64-bits is not the answer since the processor will truncate it back to 32 bits (the return value is eventually used as a long inenter_rmode()).
Is it necessary to initialize TR in enter_rmode? I can't see anything that says it has any meaning in real mode.
And if not, would not the guest be responsible for finding room for the TSS?
Jeff
Signature · 7 lines
Work email - jdike at linux dot intel dot com ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/
Quoted 12 lines · Jeff Dike
Quoted 5 lines · Avi Kivity
Some extra logic is needed on i386 with >= 4GB. Current code will wraparound since
gfn_tis 32-bits long, but casting it to 64-bits is not the answer since the processor will truncate it back to 32 bits (the return value is eventually used as a long inenter_rmode()).Is it necessary to initialize TR in
enter_rmode? I can't see anything that says it has any meaning in real mode.
VT doesn't support real mode. kvm uses virtual-8086 mode to virtualize real mode. Virtual 8086 mode does require a task state segment.
Signature · 1 line
error compiling committee.c: too many arguments to function