Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-28 Thread Avi Kivity

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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-28 Thread Avi Kivity

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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-28 Thread H. Peter Anvin

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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-28 Thread H. Peter Anvin

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
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-28 Thread Avi Kivity

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

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-28 Thread Avi Kivity

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

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-27 Thread D. Hazelton
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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-27 Thread S.Çağlar Onur
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 <[EMAIL PROTECTED]>
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!


pgpFqCCG4LPCh.pgp
Description: PGP signature


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-27 Thread Paweł Sikora
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 ).
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-27 Thread Avi Kivity

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 <[EMAIL PROTECTED]>

Index: linux-2.6/drivers/kvm/kvm.h
===
--- linux-2.6.orig/drivers/kvm/kvm.h2007-01-26 01:38:35.0 +0200
+++ linux-2.6/drivers/kvm/kvm.h 2007-01-26 01:37:48.0 +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.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-27 Thread Avi Kivity

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 [EMAIL PROTECTED]

Index: linux-2.6/drivers/kvm/kvm.h
===
--- linux-2.6.orig/drivers/kvm/kvm.h2007-01-26 01:38:35.0 +0200
+++ linux-2.6/drivers/kvm/kvm.h 2007-01-26 01:37:48.0 +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.

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-27 Thread Paweł Sikora
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 ).
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-27 Thread S.Çağlar Onur
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 [EMAIL PROTECTED]
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!


pgpFqCCG4LPCh.pgp
Description: PGP signature


Re: [PATCH] KVM: 'asm' operand has impossible constraints

2007-01-27 Thread D. Hazelton
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
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] KVM: 'asm' operand has impossible constraints

2007-01-25 Thread S.Çağlar Onur
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 <[EMAIL PROTECTED]>

Index: linux-2.6/drivers/kvm/kvm.h
===
--- linux-2.6.orig/drivers/kvm/kvm.h2007-01-26 01:38:35.0 +0200
+++ linux-2.6/drivers/kvm/kvm.h 2007-01-26 01:37:48.0 +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 <[EMAIL PROTECTED]>
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!


pgp6Vpq3XRuCJ.pgp
Description: PGP signature


[PATCH] KVM: 'asm' operand has impossible constraints

2007-01-25 Thread S.Çağlar Onur
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 [EMAIL PROTECTED]

Index: linux-2.6/drivers/kvm/kvm.h
===
--- linux-2.6.orig/drivers/kvm/kvm.h2007-01-26 01:38:35.0 +0200
+++ linux-2.6/drivers/kvm/kvm.h 2007-01-26 01:37:48.0 +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 [EMAIL PROTECTED]
http://cekirdek.pardus.org.tr/~caglar/

Linux is like living in a teepee. No Windows, no Gates and an Apache in house!


pgp6Vpq3XRuCJ.pgp
Description: PGP signature