From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964876AbdKPNJX convert rfc822-to-8bit (ORCPT ); Thu, 16 Nov 2017 08:09:23 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:35836 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934875AbdKPNJR (ORCPT ); Thu, 16 Nov 2017 08:09:17 -0500 Date: Thu, 16 Nov 2017 18:39:03 +0530 From: "Naveen N. Rao" Subject: Re: [PATCH v4 2/3] powerpc/modules: Don't try to restore r2 after a sibling call To: Josh Poimboeuf Cc: Balbir Singh , Kamalesh Babulal , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, live-patching@vger.kernel.org, Michael Ellerman References: <20171114092910.20399-1-kamalesh@linux.vnet.ibm.com> <20171114092910.20399-3-kamalesh@linux.vnet.ibm.com> <1510654928.8xrjtkjm8m.naveen@linux.ibm.com> <20171114155323.3sjxx3eykinnl2ea@treble> <1510737417.g8rnjuztlf.naveen@linux.ibm.com> <20171116012628.6ajxlychto365sf6@treble> In-Reply-To: <20171116012628.6ajxlychto365sf6@treble> User-Agent: astroid/0.10.2 (https://github.com/astroidmail/astroid) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8BIT X-TM-AS-GCONF: 00 x-cbid: 17111613-0008-0000-0000-000004AC15A9 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17111613-0009-0000-0000-00001E3ECDD2 Message-Id: <1510837263.5d3ac8knzo.naveen@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-11-16_05:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1711160179 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Josh Poimboeuf wrote: > On Wed, Nov 15, 2017 at 02:58:33PM +0530, Naveen N. Rao wrote: >> > +int instr_is_link_branch(unsigned int instr) >> > +{ >> > + return (instr_is_branch_iform(instr) || instr_is_branch_bform(instr)) && >> > + (instr & BRANCH_SET_LINK); >> > +} >> > + >> >> Nitpicking here, but since we're not considering the other branch forms, >> perhaps this can be renamed to instr_is_link_relative_branch() (or maybe >> instr_is_relative_branch_link()), just so we're clear :) > > My understanding is that the absolute/relative bit isn't a "form", but > rather a bit that can be set for either the b-form (conditional) or the > i-form (unconditional). And the above function isn't checking the > absolute bit, so it isn't necessarily a relative branch. Or did I miss > something? Ah, good point. I was coming from the fact that we are only considering the i-form and b-form branches and not the lr/ctr/tar based branches, which are always absolute branches, but can also set the link register. Thinking about this more, aren't we only interested in relative branches here (for relocations), so can we actually filter out the absolute branches? Something like this? int instr_is_relative_branch_link(unsigned int instr) { return ((instr_is_branch_iform(instr) || instr_is_branch_bform(instr)) && !(instr & BRANCH_ABSOLUTE) && (instr & BRANCH_SET_LINK)); } - Naveen