Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp1415810ybk; Thu, 21 May 2020 06:26:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyaoeJajNw9FAxyEOMzeZAF7gpMulR7Xcp4xqDzO0Q6SZ00qB9WUDur2miafv4goG+mVBZx X-Received: by 2002:a17:906:1c94:: with SMTP id g20mr3430291ejh.319.1590067613069; Thu, 21 May 2020 06:26:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590067613; cv=none; d=google.com; s=arc-20160816; b=uXDOQNLJT2amX6cAyCaVdLYIePpNmq+8Dn3BA+oWnphfYVkwvoy474++seK4XZQNnC 72YLIbk998TRqffZCrxnfNYN3+gE9JN4UOFkTAbaxWi9VdZxwlDm1MTfF6ErutgapEtf 99Odoq+M2xfaSe1bcXioSip98iHUz8PW73XG9g6iUN9daX+yixe+shq/GXUeMGQxXY5G ODdg7w/l0QsBUh1FbciR1lBDMnl0e/kHaKHz07VDrj6DOq1gIWoA7YzThRlGfEW8ILPM gd6+tKHUo9TQlRZr/f5KoCIe1uT4muFEdR/DTlmrpMuTr6P+d3z0n21ZPcIxifyZ5hqU REWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:in-reply-to :subject:cc:to:from; bh=TIxdWQdJ8Ox1IWT9tR86peZjNpAZgcIr9leMlIiNU58=; b=GqmTsFGKXabcPn+bZV5RyIXfjhp4qSPaKWdM+80bGosepGK91Fk/MynbV3tkpq3oOp GT3wTjSU23Ed1eT/fNlVfjhtUcFfMdcf2dnSJoP/epYwUcJS3DKAxxCIWakHTQU/HP+o rtohqrNFsRDUHlO0e5xoKTxXePyZra2QKYYvKQM5E41f4o7lx2LUUO9T+RAo0Q5+SacV 5uht5YQy3SpGDEgwVon81OYZ2TpCvTOzVNloURPgsaJLvGIAXXPf3p9+ddsl6AO1tMbR sU8ZYY17AxG8IuQMf3Oveu7pb5JGkdEQoQTrMi7I7MVsINSvU0qN2sopdhQR775//ktk njKw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gh22si3109340ejb.532.2020.05.21.06.26.29; Thu, 21 May 2020 06:26:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729401AbgEUNYC (ORCPT + 99 others); Thu, 21 May 2020 09:24:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729352AbgEUNYC (ORCPT ); Thu, 21 May 2020 09:24:02 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7325C061A0E for ; Thu, 21 May 2020 06:24:01 -0700 (PDT) Received: from p5de0bf0b.dip0.t-ipconnect.de ([93.224.191.11] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1jbl9o-0000mn-Ld; Thu, 21 May 2020 15:22:44 +0200 Received: by nanos.tec.linutronix.de (Postfix, from userid 1000) id C5455100C2D; Thu, 21 May 2020 15:22:43 +0200 (CEST) From: Thomas Gleixner To: Andy Lutomirski Cc: LKML , X86 ML , "Paul E. McKenney" , Andy Lutomirski , Alexandre Chartre , Frederic Weisbecker , Paolo Bonzini , Sean Christopherson , Masami Hiramatsu , Petr Mladek , Steven Rostedt , Joel Fernandes , Boris Ostrovsky , Juergen Gross , Brian Gerst , Mathieu Desnoyers , Josh Poimboeuf , Will Deacon , Tom Lendacky , Wei Liu , Michael Kelley , Jason Chen CJ , Zhao Yakui , "Peter Zijlstra \(Intel\)" Subject: Re: [patch V6 19/37] x86/irq: Convey vector as argument and not in ptregs In-Reply-To: Date: Thu, 21 May 2020 15:22:43 +0200 Message-ID: <87sgfttobg.fsf@nanos.tec.linutronix.de> MIME-Version: 1.0 Content-Type: text/plain X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Andy Lutomirski writes: > On Fri, May 15, 2020 at 5:10 PM Thomas Gleixner wrote: > > + .align 8 >> +SYM_CODE_START(irq_entries_start) >> + vector=FIRST_EXTERNAL_VECTOR >> + .rept (FIRST_SYSTEM_VECTOR - FIRST_EXTERNAL_VECTOR) >> + UNWIND_HINT_IRET_REGS >> + .byte 0x6a, vector >> + jmp common_interrupt >> + .align 8 >> + vector=vector+1 >> + .endr >> +SYM_CODE_END(irq_entries_start) > > Having battled code like this in the past (for early exceptions), I > prefer the variant like: > > pos = .; > .rept blah blah blah > .byte whatever > jmp whatever > . = pos + 8; > vector = vector + 1 > .endr > > or maybe: > > .rept blah blah blah > .byte whatever > jmp whatever; > . = irq_entries_start + 8 * vector; > vector = vector + 1 > .endr > > The reason is that these variants will fail to assemble if something > goes wrong and the code expands to more than 8 bytes, whereas using > .align will cause gas to happily emit 16 bytes and result in > hard-to-debug mayhem. Yes. They just make objtool very unhappy: arch/x86/entry/entry_64.o: warning: objtool: .entry.text+0xfd0: special: can't find orig instruction Peter suggested to use: .pos = . .byte.. jmp .nops (pos + 8) - . That works ...