* [PATCH] KVM: 'asm' operand has impossible constraints
@ 2007-01-25 23:40 S.Çağlar Onur
[not found] ` <200701260140.47760.caglar-caicS1wCkhO6A22drWdTBw@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: S.Çağlar Onur @ 2007-01-25 23:40 UTC (permalink / raw)
To: lkml; +Cc: Avi Kivity, kvm-devel
[-- Attachment #1: Type: text/plain, Size: 1142 bytes --]
Hi;
-rc6 fails with latest gcc 4.2 snapshot as following;
CC [M] drivers/kvm/svm.o
drivers/kvm/svm.c:206: warning: 'inject_db' defined but not used
drivers/kvm/svm.c: In function 'svm_vcpu_run':
drivers/kvm/kvm.h:560: error: 'asm' operand has impossible constraints
make[2]: *** [drivers/kvm/svm.o] Error 1
make[1]: *** [drivers/kvm] Error 2
make: *** [drivers] Error 2
And according to this thread http://lkml.org/lkml/2006/11/11/129, solution is
converting g to rm, patch follows
Signed-off-by: S.Çağlar Onur <caglar@pardus.org.tr>
Index: linux-2.6/drivers/kvm/kvm.h
===================================================================
--- linux-2.6.orig/drivers/kvm/kvm.h 2007-01-26 01:38:35.000000000 +0200
+++ linux-2.6/drivers/kvm/kvm.h 2007-01-26 01:37:48.000000000 +0200
@@ -557,7 +557,7 @@
#ifndef load_ldt
static inline void load_ldt(u16 sel)
{
- asm ("lldt %0" : : "g"(sel));
+ asm ("lldt %0" : : "rm"(sel));
}
#endif
--
S.Çağlar Onur <caglar@pardus.org.tr>
http://cekirdek.pardus.org.tr/~caglar/
Linux is like living in a teepee. No Windows, no Gates and an Apache in house!
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread[parent not found: <200701260140.47760.caglar-caicS1wCkhO6A22drWdTBw@public.gmane.org>]
* Re: [PATCH] KVM: 'asm' operand has impossible constraints [not found] ` <200701260140.47760.caglar-caicS1wCkhO6A22drWdTBw@public.gmane.org> @ 2007-01-27 9:05 ` Avi Kivity 2007-01-27 16:36 ` Paweł Sikora 2007-01-27 21:28 ` S.Çağlar Onur 0 siblings, 2 replies; 8+ messages in thread From: Avi Kivity @ 2007-01-27 9:05 UTC (permalink / raw) To: caglar-caicS1wCkhO6A22drWdTBw Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, lkml S.Çağlar Onur wrote: > Hi; > > -rc6 fails with latest gcc 4.2 snapshot as following; > > CC [M] drivers/kvm/svm.o > drivers/kvm/svm.c:206: warning: 'inject_db' defined but not used > drivers/kvm/svm.c: In function 'svm_vcpu_run': > drivers/kvm/kvm.h:560: error: 'asm' operand has impossible constraints > make[2]: *** [drivers/kvm/svm.o] Error 1 > make[1]: *** [drivers/kvm] Error 2 > make: *** [drivers] Error 2 > > And according to this thread http://lkml.org/lkml/2006/11/11/129, solution is > converting g to rm, patch follows > > The patch looks correct, but I don't understand the gcc error message. Are we sure this isn't a gcc 4.2 bug? "g" appears to be equivalent to "rmi", if "i" is impossible, gcc is free to use "r" or "m", no? > Signed-off-by: S.Çağlar Onur <caglar@pardus.org.tr> > > Index: linux-2.6/drivers/kvm/kvm.h > =================================================================== > --- linux-2.6.orig/drivers/kvm/kvm.h 2007-01-26 01:38:35.000000000 +0200 > +++ linux-2.6/drivers/kvm/kvm.h 2007-01-26 01:37:48.000000000 +0200 > @@ -557,7 +557,7 @@ > #ifndef load_ldt > static inline void load_ldt(u16 sel) > { > - asm ("lldt %0" : : "g"(sel)); > + asm ("lldt %0" : : "rm"(sel)); > } > #endif > > > -- Do not meddle in the internals of kernels, for they are subtle and quick to panic. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] KVM: 'asm' operand has impossible constraints 2007-01-27 9:05 ` Avi Kivity @ 2007-01-27 16:36 ` Paweł Sikora [not found] ` <200701271736.30271.pluto-PIIpFW8S9c0@public.gmane.org> 2007-01-27 21:28 ` S.Çağlar Onur 1 sibling, 1 reply; 8+ messages in thread From: Paweł Sikora @ 2007-01-27 16:36 UTC (permalink / raw) To: linux-kernel; +Cc: Avi Kivity, caglar, kvm-devel On Saturday 27 of January 2007 10:05:53 Avi Kivity wrote: > "g" appears to be equivalent to "rmi", if "i" is impossible, gcc is free > to use "r" or "m", no? `r' A register operand is allowed provided that it is in a general register. `g' Any register, memory or immediate integer operand is allowed, except for registers that are not general registers. so, it looks like g == !r for registers ( not general vs. general regs ). ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <200701271736.30271.pluto-PIIpFW8S9c0@public.gmane.org>]
* Re: [PATCH] KVM: 'asm' operand has impossible constraints [not found] ` <200701271736.30271.pluto-PIIpFW8S9c0@public.gmane.org> @ 2007-01-28 9:41 ` Avi Kivity 0 siblings, 0 replies; 8+ messages in thread From: Avi Kivity @ 2007-01-28 9:41 UTC (permalink / raw) To: Paweł Sikora Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, caglar-caicS1wCkhO6A22drWdTBw, linux-kernel-u79uwXL29TY76Z2rM5mHXA Paweł Sikora wrote: > On Saturday 27 of January 2007 10:05:53 Avi Kivity wrote: > > >> "g" appears to be equivalent to "rmi", if "i" is impossible, gcc is free >> to use "r" or "m", no? >> > > `r' > A register operand is allowed provided that it is in a general > register. > `g' > Any register, memory or immediate integer operand is allowed, > except for registers that are not general registers. > > so, it looks like g == !r for registers ( not general vs. general regs ). > I read it as g == !!r for registers ("except" and "not" constitute a double negative). -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] KVM: 'asm' operand has impossible constraints 2007-01-27 9:05 ` Avi Kivity 2007-01-27 16:36 ` Paweł Sikora @ 2007-01-27 21:28 ` S.Çağlar Onur 2007-01-27 21:46 ` D. Hazelton ` (2 more replies) 1 sibling, 3 replies; 8+ messages in thread From: S.Çağlar Onur @ 2007-01-27 21:28 UTC (permalink / raw) To: Avi Kivity; +Cc: lkml, kvm-devel [-- Attachment #1: Type: text/plain, Size: 717 bytes --] 27 Oca 2007 Cts tarihinde, Avi Kivity şunları yazmıştı: > The patch looks correct, but I don't understand the gcc error message. > Are we sure this isn't a gcc 4.2 bug? > > "g" appears to be equivalent to "rmi", if "i" is impossible, gcc is free > to use "r" or "m", no? Accorgind to GCC devs. its not a bug (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29808), on comment #5 the problem described like; "g" means "r"+"i" so the register allocator in the -O0 case is selecting "r" while in the optimize case is selecting "i" -- S.Çağlar Onur <caglar@pardus.org.tr> http://cekirdek.pardus.org.tr/~caglar/ Linux is like living in a teepee. No Windows, no Gates and an Apache in house! [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] KVM: 'asm' operand has impossible constraints 2007-01-27 21:28 ` S.Çağlar Onur @ 2007-01-27 21:46 ` D. Hazelton 2007-01-28 7:55 ` H. Peter Anvin [not found] ` <200701272328.31532.caglar-caicS1wCkhO6A22drWdTBw@public.gmane.org> 2 siblings, 0 replies; 8+ messages in thread From: D. Hazelton @ 2007-01-27 21:46 UTC (permalink / raw) To: caglar; +Cc: Avi Kivity, lkml, kvm-devel On Saturday 27 January 2007 16:28, S.Çağlar Onur wrote: > 27 Oca 2007 Cts tarihinde, Avi Kivity şunları yazmıştı: > > The patch looks correct, but I don't understand the gcc error message. > > Are we sure this isn't a gcc 4.2 bug? > > > > "g" appears to be equivalent to "rmi", if "i" is impossible, gcc is free > > to use "r" or "m", no? > > Accorgind to GCC devs. its not a bug > (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29808), on comment #5 the > problem described like; > > "g" means "r"+"i" so the register allocator in the -O0 case is selecting > "r" while in the optimize case is selecting "i" Sounds like a bug to me! After all, shouldn't the different sections of code be selecting the *same* bits ? DRH ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] KVM: 'asm' operand has impossible constraints 2007-01-27 21:28 ` S.Çağlar Onur 2007-01-27 21:46 ` D. Hazelton @ 2007-01-28 7:55 ` H. Peter Anvin [not found] ` <200701272328.31532.caglar-caicS1wCkhO6A22drWdTBw@public.gmane.org> 2 siblings, 0 replies; 8+ messages in thread From: H. Peter Anvin @ 2007-01-28 7:55 UTC (permalink / raw) To: caglar; +Cc: Avi Kivity, lkml, kvm-devel S.Çağlar Onur wrote: > > "g" means "r"+"i" so the register allocator in the -O0 case is selecting "r" > while in the optimize case is selecting "i" > "g" means "rmi", not "ri". -hpa ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <200701272328.31532.caglar-caicS1wCkhO6A22drWdTBw@public.gmane.org>]
* Re: [PATCH] KVM: 'asm' operand has impossible constraints [not found] ` <200701272328.31532.caglar-caicS1wCkhO6A22drWdTBw@public.gmane.org> @ 2007-01-28 9:45 ` Avi Kivity 0 siblings, 0 replies; 8+ messages in thread From: Avi Kivity @ 2007-01-28 9:45 UTC (permalink / raw) To: caglar-caicS1wCkhO6A22drWdTBw Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, lkml S.Çağlar Onur wrote: > 27 Oca 2007 Cts tarihinde, Avi Kivity şunları yazmıştı: > >> The patch looks correct, but I don't understand the gcc error message. >> Are we sure this isn't a gcc 4.2 bug? >> >> "g" appears to be equivalent to "rmi", if "i" is impossible, gcc is free >> to use "r" or "m", no? >> > > Accorgind to GCC devs. its not a bug > (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29808), on comment #5 the > problem described like; > > "g" means "r"+"i" so the register allocator in the -O0 case is selecting "r" > while in the optimize case is selecting "i" > > That's a different bug. The gcc PR has an assembler error message, as expected, whereas the kvm miscompile has a compiler error, which I don't understand. Anyhow, your patch is correct (because selecting "i" is indeed erroneous) so I'll apply it, but I'm worried that there's a gcc bug in there that we ought to report. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2007-01-28 9:45 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-25 23:40 [PATCH] KVM: 'asm' operand has impossible constraints S.Çağlar Onur
[not found] ` <200701260140.47760.caglar-caicS1wCkhO6A22drWdTBw@public.gmane.org>
2007-01-27 9:05 ` Avi Kivity
2007-01-27 16:36 ` Paweł Sikora
[not found] ` <200701271736.30271.pluto-PIIpFW8S9c0@public.gmane.org>
2007-01-28 9:41 ` Avi Kivity
2007-01-27 21:28 ` S.Çağlar Onur
2007-01-27 21:46 ` D. Hazelton
2007-01-28 7:55 ` H. Peter Anvin
[not found] ` <200701272328.31532.caglar-caicS1wCkhO6A22drWdTBw@public.gmane.org>
2007-01-28 9:45 ` Avi Kivity
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox