[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] linux-next: manual merge of the xen-tip tree with the tip tree
On 08/12/2015 02:26 PM, Andy Lutomirski wrote: On Wed, Aug 12, 2015 at 11:17 AM, Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> wrote:On 08/12/2015 01:46 PM, Peter Zijlstra wrote:On Wed, Aug 12, 2015 at 07:21:05PM +0200, Peter Zijlstra wrote:On Wed, Aug 12, 2015 at 09:27:38AM -0400, Boris Ostrovsky wrote:Incidentally, 11276d53 ("locking/static_keys: Add a new static_key interface") breaks old-ish compilers (gcc version 4.4.4 20100503 (Red Hat 4.4.4-2) (GCC)): CC arch/x86/kernel/nmi.o In file included from /home/build/linux-boris/include/linux/jump_label.h:109, from /home/build/linux-boris/arch/x86/include/asm/spinlock.h:5, from /home/build/linux-boris/include/linux/spinlock.h:88, from /home/build/linux-boris/arch/x86/kernel/nmi.c:14: /home/build/linux-boris/arch/x86/include/asm/jump_label.h: In function ânmi_handleâ: /home/build/linux-boris/arch/x86/include/asm/jump_label.h:21: warning: asm operand 0 probably doesnât match constraints /home/build/linux-boris/arch/x86/include/asm/jump_label.h:21: error: impossible constraint in âasmâ make[3]: *** [arch/x86/kernel/nmi.o] Error 1 make[2]: *** [arch/x86/kernel] Error 2 make[1]: *** [arch/x86] Error 2Ugh bugger. I bet its that: &((char *)key)[branch] business, an earlier variant thereof tripped up more recent GCCs too. So its an __always_inline function, and both argument are always compile time constants, @key is the address of an object in static storage (a global) and @branch is a simple 0/1 at the call site. Now we wish to compute (unsigned long)key + branch at compile/link time to feed to the assembler as an immediate, which should be possible, given its all 'constants'. It just appears GCC is having a hard time with this. Let me see if I have a sufficiently old GCC around to play with.Could you feed the below to your compiler? Its a bit cumbersome, but its the next best I could come up with...No, it produces the same error. This is Fedora 13, btw, uses gcc 4.4.4.Is the problem just that it's being misdetected as supporting asm goto? What does gcc -E say? static inline __attribute__((no_instrument_function)) __attribute__((always_inline)) bool arch_static_branch(struct static_key *key, bool branch) {do { asm goto("1:" ".byte " "0x0f,0x1f,0x44,0x00,0" "\n\t" ".pushsection __jump_table, \"aw\" \n\t" " " ".balign 8" " " "\n\t" " " ".quad" " " "1b, %l[l_yes], %c0 \n\t" ".popsection \n\t" : : "i" (&((char *)key)[branch]) : : l_yes); asm (""); } while (0) return false; l_yes: return true; } -boris _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |