From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932144AbcHBIcC (ORCPT ); Tue, 2 Aug 2016 04:32:02 -0400 Received: from smtpoutz29.laposte.net ([194.117.213.104]:55193 "EHLO smtp.laposte.net" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755791AbcHBIbb (ORCPT ); Tue, 2 Aug 2016 04:31:31 -0400 Subject: Re: [PATCH v2] irqdomain: factorise irq_domain_xlate_onetwocell() To: Thomas Gleixner References: <579F5C3B.5030805@laposte.net> <579F635E.6090505@laposte.net> Cc: Grant Likely , Marc Zyngier , Jason Cooper , LKML , Mason From: Sebastian Frias Message-ID: <57A05A5E.3070503@laposte.net> Date: Tue, 2 Aug 2016 10:31:26 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-VR-SrcIP: 78.31.43.6 X-VR-FullState: 0 X-VR-Score: -100 X-VR-Cause-1: gggruggvucftvghtrhhoucdtuddrfeeltddrjeeigddufeegucetufdoteggodetrfdotffvucfrrhho X-VR-Cause-2: fhhilhgvmecunfetrffquffvgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhht X-VR-Cause-3: shculddquddttddmnecujfgurhepuffvfhfhkffffgggjggtgfesthejrgdttdefheenucfhrhhomhep X-VR-Cause-4: ufgvsggrshhtihgrnhcuhfhrihgrshcuoehsfhekgeeslhgrphhoshhtvgdrnhgvtheqnecukfhppeej X-VR-Cause-5: kedrfedurdegfedrieenucfrrghrrghmpehmohguvgepshhmthhpohhuthdphhgvlhhopegludejvddr X-VR-Cause-6: vdejrddtrddvudegngdpihhnvghtpeejkedrfedurdegfedriedpmhgrihhlfhhrohhmpehsfhekgees X-VR-Cause-7: lhgrphhoshhtvgdrnhgvthdprhgtphhtthhopehtghhlgieslhhinhhuthhrohhnihigrdguvg X-VR-AvState: No X-VR-State: 0 X-VR-State: 0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Thomas, On 08/01/2016 07:07 PM, Thomas Gleixner wrote: > On Mon, 1 Aug 2016, Sebastian Frias wrote: >> Commit 16b2e6e2f31d ("irq_domain: Create common xlate functions that device >> drivers can use") introduced three similar functions: >> >> irq_domain_xlate_onecell() >> irq_domain_xlate_twocell() >> irq_domain_xlate_onetwocell() >> >> yet the last one, irq_domain_xlate_onetwocell(), can be factored to use the >> two previous ones to avoid code duplication. >> >> Fixes: 16b2e6e2f31d ("irq_domain: Create common xlate functions that device >> drivers can use") > > That does not fix anything. It optimizes code. We use the "Fixes" tag only > when the existing code is buggy. Ok, I will remove that. > >> Signed-off-by: Sebastian Frias >> --- >> >> NOTE: the factored code is not strictly the same in the sense that >> 16b2e6e2f31d returns "intspec[1]" as 'out_type', while this patch would >> make it return "intspec[1] & IRQ_TYPE_SENSE_MASK". > > So the proper way to do that is to split this into two patches: > > #1 Change the existing code to do the masking and explain why it is correct. > > #2 Refactor the code and get rid of the duplicated implementation. Ok, I can do two patches. > > >> Feel free to comment on that matter. >> >> --- >> kernel/irq/irqdomain.c | 9 ++++++--- >> 1 file changed, 6 insertions(+), 3 deletions(-) >> >> diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c >> index bee8b02..125a28c 100644 >> --- a/kernel/irq/irqdomain.c >> +++ b/kernel/irq/irqdomain.c >> @@ -839,9 +839,12 @@ int irq_domain_xlate_onetwocell(struct irq_domain *d, >> { >> if (WARN_ON(intsize < 1)) >> return -EINVAL; >> - *out_hwirq = intspec[0]; >> - *out_type = (intsize > 1) ? intspec[1] : IRQ_TYPE_NONE; >> - return 0; >> + if (intsize == 1) >> + return irq_domain_xlate_onecell(d, ctrlr, intspec, intsize, >> + out_hwirq, out_type); >> + else >> + return irq_domain_xlate_twocell(d, ctrlr, intspec, intsize, >> + out_hwirq, out_type); > > So I really wonder how much of a saving that change is. I wouldn't be > surprised if it would create worse code on some architectures. > Maybe it does, although I looked at this from the point of view of reducing duplicated code because of the well known issues duplicated code entails. This case is a good example, since the code was duplicated we ended up with slightly different versions of it. Best regards, Sebastian