From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932846AbcBHXrN (ORCPT ); Mon, 8 Feb 2016 18:47:13 -0500 Received: from mail-by2on0073.outbound.protection.outlook.com ([207.46.100.73]:59174 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932383AbcBHXrK (ORCPT ); Mon, 8 Feb 2016 18:47:10 -0500 Authentication-Results: nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=none action=none header.from=caviumnetworks.com; Message-ID: <56B928F8.3010104@caviumnetworks.com> Date: Mon, 8 Feb 2016 15:47:04 -0800 From: David Daney User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: Stuart Yoder CC: , , , , , , , Subject: Re: [PATCH] of/irq: fix bug in computing output requester-id for an msi-map References: <1454970623-28781-1-git-send-email-stuart.yoder@nxp.com> In-Reply-To: <1454970623-28781-1-git-send-email-stuart.yoder@nxp.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [64.2.3.194] X-ClientProxiedBy: SN2PR07CA015.namprd07.prod.outlook.com (10.255.174.32) To DM3PR07MB2137.namprd07.prod.outlook.com (25.164.4.143) X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2137;2:TOenbOWmMcQdnPeefaXFxGj2b9pN/vAzxy75O4fea/GBg3DFykUFSfGEsFjRQlQ9A1/1OgWQJovoWPZ05HubxjK4O7F4CGsdrQxQlfc8iaHGmmZQvHfgBwQU0pgdKn3M81bU5qJH2GxTaYACNmV2HA==;3:tSVMDhQGiH/Y4aLAulmr4XHEyqeFPSz9I2aMJPG5mOLFrLqRnd+p0Q3a7IsSlRgc9T14WHclLApRH2SIETawBjEpOnInIc5feIrtAS5QrV/+plGQASDxFX4dHaDESBQu;25:bYy5E8E79pqQPCXyKufW/PCViLs3JnUWAKlAsQYycLksx8trGDc5Kzr4jSrzFHD7225pwx5TGunThtxRXAyIa002ltjq1eLLXRDylW9ufsQzVakAzjLutsCk6/jksxWM+iLrSo/DWTECtMs8MtYpTerlfvflh2h+9HhOL1+qj13YFo2IE8leVr0Q4rbFuR71hIwAzIn/W48FR1V4OBH4Zuviw1PDn+5nsr3NTBRQcui87iYdl5fb4pUDWMJ5FHz0axPaFHWOVwK2w1drdlah8U5/6eHJnmfMx+QFu04RKHfsHSX3UH65XDpCkXnlPJV+ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM3PR07MB2137; X-MS-Office365-Filtering-Correlation-Id: f9f1b87e-17b5-4d1d-b4a6-08d330e227b9 X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2137;20:w3OQ2wVMkfTOs3XQ5JDd9pHevWuCtbyJDGCi6iF2+16tjHWnOP6IGaJF53kEd0bN+IXkts/uO+r/l8BP7+CqE/xZnydYlNBZmGLf+lZc3Ra5fLgcRiTBkEtzvefq5xv4f2GZUsB1RYB5BYNGpKR9q1cYtmArzTMBRVd22llHGVHgdqpwlUtsIsg/OmxdCQz0leTxsrhdvsnrFI+ogZ0h+mfcVGDQi8bhPBaaNUWEF92Xdu9ZmqWE8NFg+k85hTse3t7VkWmuVEAouVUTtshj6XRGPySEDsld1pNxFh/aRSqE8ZG5GpZCXj/dWF1PsLnhfzTYCpbzXt00vepx/+Qn/tPgc09m1taJyHKj7Lau2XjSYK8Wum+v3wErKFJ+1qjHvB/mYtbQL/ySRoR6SCaAYjOModWkpbURggGdkGgc0Qkuc4sNfu1Y0Yo8W/JSQBV/o6CMRdzqMuh63iBDAgGIh+h99t85aiiokbBTuUca+gQh7n0rYFV6VHgNAISh4pKO7p0DwNdjXVUzbNu6rOm+kzur2ZiadgW9+bYpFmJLbPbGAYk857AYDinbkhi7fD/1aV1lHmsgfhmH9InKc4U+aUkZHlGj+y56gxzxLP94GdM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046);SRVR:DM3PR07MB2137;BCL:0;PCL:0;RULEID:;SRVR:DM3PR07MB2137; X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2137;4:2oPxeFK1CtuRlE52/bsJPlyFJK3pBHP75PIe4dnOu5GEAslZkH6TrQ+AhpkZWwzRijzGmBRcrNGOI+49m7s07akW/Ccagr21Wf2PNSYdh8Y26ll8TizbL9nw4eGtK+7F9VslUnlnqxXzdFddU8SWWGsbZa4uv0gsp9Ma35cZ3QmSkXJik6PpZrYn8hYeOhbcvX060p3fIxoZwweeF/mDIBm0O5a/Q5DKQiCC76MK7JHroygR6Wbi3gvuJrrOXgXFpdifHS5d92kCWWP2U86vkeiIMdrj8kca28G4SWIbNwh3lh2/80JdSYDjFaRMAH1gPLPWwYxER2g6eZx/ThET2bJi9dg/QpUsTmXpLNHaQtC00xYRJepahMRb+eMnC4vrkCfpBQqiSKU9IE3ilbPRJ+ALeCTt5pu29HcSHvnnBXk= X-Forefront-PRVS: 084674B2CF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(479174004)(24454002)(377454003)(65806001)(40100003)(65956001)(122386002)(64126003)(66066001)(59896002)(1096002)(5001960100002)(110136002)(6116002)(36756003)(19580395003)(80316001)(19580405001)(50466002)(2906002)(586003)(92566002)(4001350100001)(83506001)(4326007)(189998001)(230700001)(3846002)(77096005)(42186005)(33656002)(23756003)(87976001)(5008740100001)(50986999)(53416004)(2950100001)(54356999)(76176999)(87266999)(47776003)(5004730100002)(65816999)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:DM3PR07MB2137;H:dl.caveonetworks.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;DM3PR07MB2137;23:BtkVd2kdkhO/ewPkb2FNKd2fYgs0D2u/+Llr8oA?= =?iso-8859-1?Q?wKSnyBPIgnaAwV+gnyyzrlA5htNstJE8wt4jzJm2SA1eDHQPeUL0JjuWPg?= =?iso-8859-1?Q?fmuaKWi6qRhl3rMErdgNh6Sy+ydBoPTYGBi71cdPdNqlrJulqhS6VBhzvk?= =?iso-8859-1?Q?ii5jgbM4OeH6Jx6pUaput5+DrGmeoSpBy9ThZV2yL6MOXf5xNzdDxOoQaP?= =?iso-8859-1?Q?sXu8x7jNX6csg94urYopq+IHuEyBArx5o8AsefIiFp0geun5gMgQBHkciB?= =?iso-8859-1?Q?bbwgO/uGEnH9Jx5qETTzGuRRTwGMOSXzD2l37cez/83P2mve+Tjxqp+1O1?= =?iso-8859-1?Q?rUbrpve6nuYU1w113AR2IsTYc/skg2NXvULfBASIWC5G+BoOoRBwwXltfW?= =?iso-8859-1?Q?t+Mm28SIboGzip/hRGPAlskFnw671u7gnMnEr0yfdL5PeaEpKamYPvBNtH?= =?iso-8859-1?Q?zwS28NliAs31ft8syXD1NhWCrUZHm7yX7krnGUqhw9KehoVO/m7KxknTJt?= =?iso-8859-1?Q?K5wSC9zroMhsNijI4FAAmCify5Y1HeyBzirjJK5OlmQL2AQQgWagsnBasJ?= =?iso-8859-1?Q?dIlqyhQsZ5+BA+hRuTHRwoczbQklVx8mWN/59Xs4xVfMdo4U7UhToCjeR5?= =?iso-8859-1?Q?ws2hdVlc0PLIbg3LIe3Oi3si0wF1DdrN8Sw7zbN06IKuZpQrpuVc8gS53m?= =?iso-8859-1?Q?dpPfWEV4zngJs0xU4+9lWqb6SRdKWW3gqDzFxqJl1Qz8G5nsBcy8Pn+8MB?= =?iso-8859-1?Q?7EYsp6Kfvu0m/FGtDirgGfUB82LqNPO1rOWATOZaFAlGo4FXXew5gjyHhz?= =?iso-8859-1?Q?+4RAA0ONJocoK685/24W/5XP3rjoauk/PWa0YAnPIfZ4Lx9ZwQeXm2D4YY?= =?iso-8859-1?Q?Ki0M/AzD/O/Dt6Lbf5B16Fx1DCE1H7FXMw6KIT8GpaAW6olnS0uXUUy9p4?= =?iso-8859-1?Q?UsTBCsXwr3xXOPMfTv/M+tgcQIz+B6o+LtEh0cWG2ZQ6xLqhjorjCHm3H8?= =?iso-8859-1?Q?Ti1iB908MW8Ee2TH8zWBG5G9I+5/2Z/4iZNf0IwTbtgz1vKbKco4jXzssx?= =?iso-8859-1?Q?QcaUNLEhtxsXp0/9sPXpu9zX9XMuG2OJEr7pxBov/ndvDXYoLvbayxr7T6?= =?iso-8859-1?Q?H21OATlUJsfI0aXrCWNY14r4147HhIj9XMAUP7jVUTrZWL3D6EYvE3QNG9?= =?iso-8859-1?Q?rMYbcto14zI5izvo1/HHtVvB+riO6jpz+qiY5cFfxFxhaSZO+3l0jY=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR07MB2137;5:9etfCwHRJZUOM87GBKrrSfVZeM6M/FLWAfICLIMHHYQb5ZCWXMcOu4Xx5eDqBDUZpbyGV3LDX25/ZKFl41Bd4WMcYFW0agX58ewKc/Lqw+J3ZH2sE+OA1h9fKBV1bs27kid9+q7B49iDIYGQZhYqmA==;24:Dmm+L8srDqqgYKiZV5vEuPpyW1bBBz4zWO3SEgaaBpmfCLcyra3vIvnTbt8GNTxTq8DUzK108/4aXIywSOgasWU3QUF+EJ7YsIhut4pofsk= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Feb 2016 23:47:06.8626 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR07MB2137 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/08/2016 02:30 PM, Stuart Yoder wrote: > From: Stuart Yoder > > The binding for msi-map specifies that the output requester id > should be computed as: (r - rid-base + msi-base) > > ...update the code accordingly. I agree there is a problem however ... > > Signed-off-by: Stuart Yoder > --- > drivers/of/irq.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/of/irq.c b/drivers/of/irq.c > index 706e3ff..3f5e5fd 100644 > --- a/drivers/of/irq.c > +++ b/drivers/of/irq.c > @@ -589,6 +589,7 @@ static u32 __of_msi_map_rid(struct device *dev, struct device_node **np, > struct device_node *msi_controller_node; > struct device_node *msi_np = *np; > u32 map_mask, masked_rid, rid_base, msi_base, rid_len, phandle; > + u32 masked_rid_base; > int msi_map_len; > bool matched; > u32 rid_out = rid_in; > @@ -654,7 +655,8 @@ static u32 __of_msi_map_rid(struct device *dev, struct device_node **np, > if (!matched) > return rid_out; > > - rid_out = masked_rid + msi_base; > + masked_rid_base = map_mask & rid_base; ... The binding document nowhere, that I see, talks about applying the mask to the rid-base. The device tree should already contain the rid-base in the correct range. If you remove this masking step, I think it may be correct. If you just do: diff --git a/drivers/of/irq.c b/drivers/of/irq.c index 7ee21ae..92abe01 100644 --- a/drivers/of/irq.c +++ b/drivers/of/irq.c @@ -654,7 +654,7 @@ static u32 __of_msi_map_rid(struct device *dev, struct device_node **np, if (!matched) return rid_out; - rid_out = masked_rid + msi_base; + rid_out = msi_base + (masked_rid - rid_base); dev_dbg(dev, "msi-map at: %s, using mask %08x, rid-base: %08x, msi-base: %08x, length: %08x, rid: %08x -> %08x\n", It think it will be correct. I have tested it that way. If you do that, Acked-by: David Daney > + rid_out = msi_base + (masked_rid - masked_rid_base); > dev_dbg(dev, > "msi-map at: %s, using mask %08x, rid-base: %08x, msi-base: %08x, length: %08x, rid: %08x -> %08x\n", > dev_name(parent_dev), map_mask, rid_base, msi_base, >