From: Avi Kivity <avi@qumranet.com>
To: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
Anthony Liguori <aliguori@us.ibm.com>,
Alexandre Oliva <aoliva@redhat.com>,
kvm-devel <kvm@vger.kernel.org>
Subject: Re: KVM: pvmmu breakage with gcc 4.3.0
Date: Sun, 29 Jun 2008 13:16:55 +0300 [thread overview]
Message-ID: <48676117.4060006@qumranet.com> (raw)
In-Reply-To: <200806261708.09579.borntraeger@de.ibm.com>
Christian Borntraeger wrote:
> Am Donnerstag, 26. Juni 2008 schrieb Avi Kivity:
>
>> I don't think "p" should force the contents into memory? Perhaps
>> "m"(*(char *)buffer)?
>>
>> Anthony, I don't see why a memory clobber would tell gcc that the
>> variables is actually used. The problem is with the void * -> unsigned
>> long cast (__pa), once that happens gcc loses track. It's probably
>> needed anyway since hypercalls _do_ clobber memory.
>>
>
> I I think about that again, the correct solution should be to use 2 input
> constraints for parameters together with the memory clobber on hypercall.
>
> I think something like the following covers all cases:
>
> static inline long kvm_hypercall1(unsigned int nr, unsigned long p1)
> {
> long ret;
> asm volatile(KVM_HYPERCALL
> : "=a"(ret)
> : "a"(nr), "b"(p1), "m"(*(char *) p1)
> : "memory" );
> return ret;
> }
>
>
> The address and the memory content of p1 (if it is a pointer) is not ommitted
> by gcc. Furthermore, the memory clobbering nature of a hypercall is specified
> as well.
>
That only works if p1 is a virtual address. x86 (and ppc) hypercalls
use physical addresses.
--
error compiling committee.c: too many arguments to function
prev parent reply other threads:[~2008-06-29 10:16 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-26 2:10 KVM: pvmmu breakage with gcc 4.3.0 Marcelo Tosatti
2008-06-26 3:10 ` Anthony Liguori
2008-06-26 13:18 ` Christian Borntraeger
2008-06-26 18:06 ` Alexandre Oliva
2008-06-29 8:56 ` Avi Kivity
2008-06-26 11:43 ` Avi Kivity
2008-06-26 12:47 ` Anthony Liguori
2008-06-27 16:11 ` Bill Davidsen
2008-06-26 15:08 ` Christian Borntraeger
2008-06-26 15:21 ` Anthony Liguori
2008-06-26 15:41 ` Anthony Liguori
2008-06-26 16:34 ` Christian Borntraeger
2008-06-29 10:16 ` Avi Kivity [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48676117.4060006@qumranet.com \
--to=avi@qumranet.com \
--cc=aliguori@us.ibm.com \
--cc=aoliva@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.