From patchwork Wed May 25 16:29:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: tthayer@opensource.altera.com X-Patchwork-Id: 9135829 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A5100607D7 for ; Wed, 25 May 2016 16:29:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 78C6F28249 for ; Wed, 25 May 2016 16:29:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6D7F3282BB; Wed, 25 May 2016 16:29:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id D36A728249 for ; Wed, 25 May 2016 16:29:16 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1b5bez-0006cE-Tq; Wed, 25 May 2016 16:27:53 +0000 Received: from mail-bl2on0063.outbound.protection.outlook.com ([65.55.169.63] helo=na01-bl2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1b5bej-0006OC-Pe for linux-arm-kernel@lists.infradead.org; Wed, 25 May 2016 16:27:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.onmicrosoft.com; s=selector1-opensource-altera-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=onbWwU64ZW2WiFx/lpbVRb7opFeGCKPXhB3o/TOcgDI=; b=YMWbehO5i4XA3yiqINPfNS1FCMJdgwswXv/idAgzdTpIVqAGCghhvnWSvCPmcS/Z3LLyDaD0/NgaBmbhun4VuNNb3CtkzrBwbr/sMLedp8qtbqmaI174gB7DHV2YdIVyw+SF1OeT070CG5qoiM5VvsGkc6TOc36R9/qQcNGjYZw= Received: from CH1PR03CA006.namprd03.prod.outlook.com (10.255.156.151) by BL2PR03MB515.namprd03.prod.outlook.com (10.141.94.23) with Microsoft SMTP Server (TLS) id 15.1.492.11; Wed, 25 May 2016 16:27:16 +0000 Received: from BN1AFFO11FD012.protection.gbl (10.255.156.132) by CH1PR03CA006.outlook.office365.com (10.255.156.151) with Microsoft SMTP Server (TLS) id 15.1.501.7 via Frontend Transport; Wed, 25 May 2016 16:27:16 +0000 Authentication-Results: spf=fail (sender IP is 66.35.236.227) smtp.mailfrom=opensource.altera.com; vger.kernel.org; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com; vger.kernel.org; dmarc=none action=none header.from=opensource.altera.com; Received-SPF: Fail (protection.outlook.com: domain of opensource.altera.com does not designate 66.35.236.227 as permitted sender) receiver=protection.outlook.com; client-ip=66.35.236.227; helo=sj-itexedge03.altera.priv.altera.com; Received: from sj-itexedge03.altera.priv.altera.com (66.35.236.227) by BN1AFFO11FD012.mail.protection.outlook.com (10.58.52.72) with Microsoft SMTP Server (TLS) id 15.1.497.8 via Frontend Transport; Wed, 25 May 2016 16:27:15 +0000 Received: from na01-bn1-obe.outbound.protection.outlook.com (207.46.163.141) by webmail.altera.com (66.35.236.227) with Microsoft SMTP Server (TLS) id 14.3.174.1; Wed, 25 May 2016 09:26:07 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.onmicrosoft.com; s=selector1-opensource-altera-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=onbWwU64ZW2WiFx/lpbVRb7opFeGCKPXhB3o/TOcgDI=; b=YMWbehO5i4XA3yiqINPfNS1FCMJdgwswXv/idAgzdTpIVqAGCghhvnWSvCPmcS/Z3LLyDaD0/NgaBmbhun4VuNNb3CtkzrBwbr/sMLedp8qtbqmaI174gB7DHV2YdIVyw+SF1OeT070CG5qoiM5VvsGkc6TOc36R9/qQcNGjYZw= Authentication-Results: alien8.de; dkim=none (message not signed) header.d=none;alien8.de; dmarc=none action=none header.from=opensource.altera.com; Received: from tthayer-HP-Z620-Ubuntu.137.57.187.33 (64.129.157.38) by BN3PR03MB1480.namprd03.prod.outlook.com (10.163.35.143) with Microsoft SMTP Server (TLS) id 15.1.501.7; Wed, 25 May 2016 16:27:02 +0000 From: To: , , , , , , , , , , Subject: [PATCH 2/5] EDAC, altera: ECC Manager IRQ controller support Date: Wed, 25 May 2016 11:29:40 -0500 Message-ID: <1464193783-5071-3-git-send-email-tthayer@opensource.altera.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1464193783-5071-1-git-send-email-tthayer@opensource.altera.com> References: <1464193783-5071-1-git-send-email-tthayer@opensource.altera.com> MIME-Version: 1.0 X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BY2PR1001CA0055.namprd10.prod.outlook.com (10.164.163.23) To BN3PR03MB1480.namprd03.prod.outlook.com (10.163.35.143) X-MS-Office365-Filtering-Correlation-Id: 7d6355b7-f061-40f4-b1ee-08d384b96f25 X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1480; 2:QGXnIQsqfxj9wmoQ/QHvgVpkbelAa5wh9G3B9aHrcuCfaFv3FlTiNDd2AglWDkmYNHXCcAIiEFXdSm9DOZIvQk/fJyfsgZp7fESfLjcLDYhZ6X9l5s5xMtPC+YccnnlnXpaLoXVSuAp99Lc80+EMtUUzepqVdxPMEY2DaENRlzdQ48GeXrUHV9lw8YnDAj4R; 3:RJ391xbMpicI7C+j8QW5vAOPPRzcpUT8nnOrSsr5CpXR+8z5dpxOpGtfKRLW7od6M1xuU+hG2L8Rclrud30u0k+5ebPXkUz3jIFFOaMiPLOKri00+OuID0eeg4L5YKLS; 25:zp0wCSMO0pNAQ88jpPsaXH8/QnwFdVZ6kAxZqESYhyFSDCzJ+bNTgYFl2xjN0JQyUJlvij7CuEJQ0esR+cnGZP8p8oQ8ZydC6Tl+RJUM+ux8upmvdfdxpl5olXgC4QWdr19ymeD30r1d4+c+/u9pYYU/83o2CNRlsmJNVZUlqw3G99yrqWZjhJtjSi1+PqUYz8sJyOsjc6oLPS8v7BydBjottUAQbrQLGDUohJDFFK3oQ5PQIXkN53n/LcSQUVbWIsSV0Zgy2OiUQl5ga3iwurQYfGCop8ysl46LaJiQabTXDUVEDfBekWyGmGfkxxp70S8uYP+ijBIWK8T+xrsl6Yex8b0UgLUG4m3H8t5/wYloHRFloWoBj7oSgRf9CPy3VTbJilyfBTQHHS3bcdE/gx2FYEF7eF2jC4Yns+m8Frc=; 20:xlWf7Kg8Uw4VAF21VXvTXxY3OVHglTDKmMJa/OZP4+XgoB5JujJKTHxMBk2RRrvpp3rzq/k6cpTlL4BC3AqJhV0H7dmzTTnO38hPYqjFsRUWycB9wlOmfVDMib4Q8/fD+q8KXwCc55i+YOPAwCPGnbVZ+yzBpMtJdfY/4jJXaW8= X-Microsoft-Antispam-Untrusted: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN3PR03MB1480; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:;UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026); SRVR:BN3PR03MB1480; BCL:0; PCL:0; RULEID:; SRVR:BN3PR03MB1480; BCL:0; PCL:0; RULEID:(601004)(2401047)(13023025)(13015025)(13018025)(13024025)(8121501046)(5005006)(13017025)(3002001)(10201501046)(6055026); SRVR:BL2PR03MB515; BCL:0; PCL:0; RULEID:; SRVR:BL2PR03MB515; X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1480; 4:UV++ClxiB3c2TN5hkiXwKZ2lC8FzzSAtzjPGEikXxyuyXFnZKUo6WpRisjqaABqZIuz2VoBtj1u9tG6aujGlWaQ5Lz0ZUQpbtCiYl42NKcD8KsQftCJ8Afob5qTDxVS/1HXi4noHIgSAx/4SuDSnqVvGvNbsNmNJ0Fcv7QDziRIHabWA363sj2q50y3/kRAONVGR84/pY8DVa6MX19xWxXUWCo/lFVYpZGYyaGlxsrToVhbNQBPDwmvzs25/gAEchJF/qqazFuB5hn3J5YIKWd0rkVnTpKlOFFMkNumbz7LvcRcDHTQvYk1kFKotuTTWWa6hMD/sI5qwhgWs+Kqh/ZiuQWMTq15b7APgWkNLE1NCf0UF2+i2ul1WqxayMgG8Ysiwq/W4ZXIi0rcYEDCaVw== X-Forefront-PRVS: 09538D3531 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(5001770100001)(76176999)(48376002)(92566002)(50986999)(50466002)(5004730100002)(6116002)(575784001)(19580395003)(3846002)(2201001)(586003)(86362001)(86152002)(107886002)(77096005)(229853001)(42186005)(189998001)(2950100001)(33646002)(19580405001)(47776003)(66066001)(5003940100001)(2876002)(50226002)(2906002)(4326007)(5008740100001)(81166006)(8676002)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR03MB1480; H:tthayer-HP-Z620-Ubuntu.137.57.187.33; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1; BN3PR03MB1480; 23:h9SgEyvFKoXMIoOqJ3IBZXe7ImjizpU1N+NzrHLYE?= =?us-ascii?Q?YyBr7Ew4Z5TJCKZqksSngqzqG2h3DSbUXYGVtA6FimgyWp1+zg1wIalGjO2y?= =?us-ascii?Q?tCo7MmSSfJIR0tWFRrytPSoUJbn+Ao7v2l7AqmTCwBpmA2umytD4/5UGip8p?= =?us-ascii?Q?Yu4grqyLI6nN9jhqCpSS7G5Ql/hGJLwWlIvPZl/m9IuGVaOOE9cgLKqC8I8J?= =?us-ascii?Q?dFIoyYWAY7O5xdN5eD+YXj/VMUv4/nxgKwnkbWwcZyUJEKBb8sHd4OSAMxPA?= =?us-ascii?Q?JCyjZxVus1iWxVyRHVKMr9bVmvcSJs8/KmRJ7cjaHzDGerIlcDzUFMm+qLJK?= =?us-ascii?Q?kA+1ixHgNImpVCgH1tKbXOlPvCf0yoJBH570KNoTTnnTSLgfVMGOSAxr72v/?= =?us-ascii?Q?RupfH7W9CGrIUYVw0qfd6VXazZTV2As9DShq3HaYlcaTmMf870hQI2115CJd?= =?us-ascii?Q?itipDoUuxnLDfbk6LQ/vk4ZPI4VF5jSgwCbIImSTCSv0GZ0siXuiPLQqEBnv?= =?us-ascii?Q?6dS+n7uc830Z5Tu27H6ydnMDOdi7VVQA1rwggGevzTsTtY/NyQrPorF78pVH?= =?us-ascii?Q?lFDqT/qGom3Gx3s2rrSrMX2gsk9DSzshewyTZvJlTvyWjL55ERCEXb5HzQC2?= =?us-ascii?Q?gqgj0eHVZZ6XrV+yjIHtUHxx+7E/qbE6GN+MkyL3vS/1QZ2winIad6af6Bp5?= =?us-ascii?Q?/BX35cMSmsontIhBWmDXZBVXJ1CBFJK5uR/NedOguhjwK/S9YEMSmuzHdrI7?= =?us-ascii?Q?r4MFF1zhFQk/VMa1EmAkGN7Fi+8fEyP6u2Oa0siXamBX1HtO/0n0g14i/ji/?= =?us-ascii?Q?HSDaa5a5ZEQoRiOWR3vGFbw5lxN0e13awKVAP9Ej8gxrrOgWPnDGbs0pcG4I?= =?us-ascii?Q?a6fWLWvcqsRKnZPj1+dibU26grUcH4S7DHlawdlOXxvbInE+EQbcSYnl6aTs?= =?us-ascii?Q?adILvVKFNEn0OZy7zL15bs8Xv2d5qp7MRdztXGgN6wAZlxYTSD+92c6NpDqL?= =?us-ascii?Q?EceoQmwGzu0pRd5pbAdFsEW?= X-Microsoft-Exchange-Diagnostics-untrusted: 1; BN3PR03MB1480; 5:WlCYRxgSLc9Pd03x2Dfb9KH3DqMx+HEj+rzhS4oCi5+8LZlSvnPumlBUfH9jJrmCk0y+FpMggPJ4gyJMTUOQ5+8VJPupKHyrHYIFpNJ1cEc8GGB11ikfqyOKVP7u3zygIJ6V9lG2j73bAirY7b52FQ==; 24:uTh5A6ABmRvZldxoIgm+rUiDe2ytLU84Ve9QN8yLuQFZD6/pb7RANUw6GIWSqX0aHMtQUe2k2jSOpI3kSMWued4LvG5N/DSCCT4RnSD0xlU=; 7:l97alRFRTWBWod611amHjr8hftpWjtW8E4A8mRpICuuYUKCYgNgq9oOvwgD/emSYEnKnWu683OWFt0l2BAeUXLZGEBcxDVfqfVKBno3X6cddDVybrVqYmDvLkKwq2bhVqrnYVYPRp9Fsn8HZKcW2y25nJsoQ/aRcCCH1XtslGjA+j+/tmkAjXAGp6whii/WN; 20:dfqOBdgeOBqOKR54zc8kU6z48wHu5x6LoV6DDyfl7721whGI2P9TvZV/rBDGd6GfgebzG4/cj83aLT4f4T25uTP6KUmYnHjjghLGOJXjS6quWLLNXlatCsPa21RSAlmefO/Z6QG3idZiI7HaYVaXZHmg3biOtDjJo1Jp7j1EicA= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB1480 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BN1AFFO11FD012.protection.gbl X-Forefront-Antispam-Report: CIP:66.35.236.227; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(2876002)(16796002)(19580395003)(5003940100001)(76176999)(21840400001)(189998001)(81166006)(4326007)(33646002)(92566002)(5004730100002)(5001770100001)(8936002)(2201001)(11100500001)(8676002)(6806005)(3846002)(3720700001)(47776003)(5008740100001)(229853001)(1220700001)(6116002)(19580405001)(66066001)(86362001)(586003)(106466001)(50986999)(50226002)(2906002)(86152002)(107886002)(2950100001)(575784001)(48376002)(87936001)(956001)(105606002)(85426001)(77096005)(50466002)(7099028)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR03MB515; H:sj-itexedge03.altera.priv.altera.com; FPR:; SPF:Fail; MLV:sfv; MX:1; A:0; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD012; 1:Ik6qlafKTSHqd6clFk0+gNXd63eNP7XHPg+PA8AeeWcGOX4/qFYVoq8PSYWsS8YyRBp4V7Hm491IMxTw5DmZTVQ/072UL6+d4DMRU+WNrkHHacRr2nU9spFaQEaC69eueM+erdCTZT+a18YY7bGg62lhrxwCpqDG5QQpD4SHWcAlkcge/Vtipk7w/hXs5ufR4rlMvqTkykFC9A8Vs0vdNM9CAV3ZgAyBDnPE2QYK2NJDjBNrl5W26zm+Hzc4w0h2Y7jXXgV+GhAlc5lzcyXO2QUgMiSvhkB1ED2ovNtH8562W+wGAM0+TARilcAlarqU6bLGbEdLKgy+6dFIejTxQ+uV5d4t5+2AhSJw1lrPoVlm4LScTF6DCNxRbeJE6QyEbPW/CDZzagweWnals6pwvKGRZc92ZYe+ApVkh6ic5eS/RZq88dw/XPijPiEgZzwDaqS0n9o87YjsgEbPld6+8GvDEyx8AwyeNUHGQcQmVZrFDy+VDjWN3cEODhgnhTC+zNs2dSETNo3GJG9pVLb/fLxEXXwhLOFPUgs3DPncysY= X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB515; 2:adq3jk5k4gREyhJNOQ/zflv0YSdFlY3lLA5zvV0xnSsZYt3RjsFqPscJM/PQoi3RrvACaRzB19IPcS3hYGzmduJH9WQ8vQMKaWKdeQ0nfhPWhSpn/u9KEzkEtPFUgM4gKmYrucZvA+7YAqStAJS+bVdyk/9lewHTLpo6ED3fqiQYXmggAOOCLCY1UqEwoIBq; 3:WIfKd9TwF0CqdHDxKjzHYiCzDxB/D8lH1jS3+VsTNgwB92m0fX/dkOHLMTE6FzvJV4vZBRpASjCMD9s+ghabuO6QIba4uxvo8tr8GNLu2iR0UBK2eyFEViUfriTfYncfvSaUuO2AQtd1eRmhTkBUfN86eHx7PwK/j6Oz+TQJV4Ps50gfFakjIMHusSKDnULCyeujq7IfVLeryndD/wlozKsra2EK84r1KLKn2pz0vXjDqaPzFwcECxOKCyL7Bkq/; 25:jnCTJ30efjsbYgKV4YvyH9cSkoEbowZthGjHSr+oUjaClvre7olw/kKM4xVarHTdfb/GRGIojhbI8a0UMI4hcjwjy5jfbRbxSh3ykpWFORA0UX10+u4886qosTDm7+QGnZWkBYpUZECcEuFI6V1CMeSiiZ81w71HJZfNPF3qok7YrAhnq6sggMX9e3bJNIBgbj2i/7fRmj/fLTNege6hndB+7HS/fXPsuZCN8Huf9KlHe2iKK7RoqHPPda2i0cBGnHr0IcjhrMlDBV/rFtsq/8evWJFonbdBMKqCqA4PBjN0QQeMbSQvsvgccDlJfyI9yONUSwUkMRRyT6MNVC8xQ1/T/+/1/i0nbitkQneBNQKrNGrxR9gKupScNP7aItq5YnY4kB3u/gcIpupNioOJBBLnMXq4Ts69CaMAYeCWqws= X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(3001016); SRVR:BL2PR03MB515; X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB515; 20:Xf7PbMqH94qr19N9louN8JyPx5Uso0JeSb4LDXXE2n5ot2x1gTqJOVyLjHD1zq3J/bNfoK6JsG8CTP/LguS56frPuNT9qhnsWLV2UZCho8Ww9uuhlG5ZPa7XNN1j5ShPr+jIomWH2IbB8X34MQPVIr6YT6kIL5SHKiPuJVwEuRs=; 4:hm63V4l2bOm8EtJTyQLo2YeJE6f9htBw/cKFa8GOkeF6ubTBkyBIHuBnzue8qN6rkvflmDySufh5sOxPxseulgmzQexOIxoXBr6yE1cKbaIKp8nRo3KfjvMH2i5r4Bl7UW/7CVKQYNeye1hxxoRNdam6SSK742HSKqJvPaEgcUkdGwo71FdvVIGfXv3fEs2qJ1gWhsx0CHoQclIkByoU5e4mDBHGlIgMrMvj/iZLXtKUyENk16gFzdvsigu5S52JDu7wNpqDY4YUfx/qL4HDoLJoL0oFJr/fJKRtZt1HUe8PVA7xbFssQplLy/P4xxuYPnoYQn3HymWciEUH1976LnThg97Z9Ad1OKJBMrpBKZ8pRqVE79OEgUUu6qjue2odse0wXA1cpwvsfrxueL2+5h7cVd4GM06uHU7C1iv1p3q9xMXi+rdnRQe00sCrgRXmNiEHuQ3qUlU+NigsR5ONwTZ8PtOXsr5uI3MHTDd+DZQ= X-Forefront-PRVS: 09538D3531 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR03MB515; 23:Yhxb4HYiLzhvBzE/tbIaYoo6yhYzO0VlL5rGH7Vo23?= =?us-ascii?Q?+zctVwqF192ZfgDmrJLmisGDcz+9ytCUk0VQkh73g3WgaGNMo6Kmu7YY5TK6?= =?us-ascii?Q?ARNpYyEjO0FDdwb0HHmt7RRAl58AXO5WzQWlHHtK8xjH7jk46FBsPsZQYOLf?= =?us-ascii?Q?+NhLou2K0kPL8QZf49HAqawtc5aO9xe3DLEqb1jxSrSnqrXGYkmtbq+Cw8de?= =?us-ascii?Q?ItmkbYolhfGPnTUv16/weKP2UP+ja6vklTYjszWpzaAhFOYcCmTl+SnRD+Z9?= =?us-ascii?Q?7MlGSlFhfdPr0SyPzYBe8iAEUb9WUrBhl8oDariOu9sEGaMX/v0BiI4jLGet?= =?us-ascii?Q?WWhFDUXG7210M89067pGzIus+mRI4f3WbEyJJ+xJbfIdAOw+BXIQXKFPexdT?= =?us-ascii?Q?PbBiMcGv/34OUAcOf0x5fkaUrcd47rWDiunkUCKOtr+4CZdnBLYE7S7eI7tQ?= =?us-ascii?Q?eFA82a/OZgPdDKiqS8+WQslNTmBOHRR0KgZwjCJXPMGeHz8HI4HwIq6znVzB?= =?us-ascii?Q?4EbSAuzZCsrWRkwFriFEgItusjFS+0qBhMEhFBZqX93IYTa8akR745Ju9kNq?= =?us-ascii?Q?CQLuoLIs2m3HyhrE8mZGnymxcYmpxpH7vY5QRgCVBb+RhokVzFZyFFBfQ02F?= =?us-ascii?Q?2TIXZLyXZ73Kp6BK3EhdNCWv9bVzh3giBUD+5js4MBZiIrZB84gAsA/2nR7C?= =?us-ascii?Q?zbW1n+y3KKyVcp0RWRV+4WhKDl4Hr0DT9A839WsfH5CAdqUHyNOw9L8/OCTn?= =?us-ascii?Q?YNL66eDxbip1/Yl04JdCdXMxZQaOkFiL670F6ak6QmHTOB9YB+9HjvEp1OD/?= =?us-ascii?Q?UJuAeC0ZQpE4yyYZBtcDuf7c704rQ41Dx5PMDW32+vIv2BXxAxl9AwgduXch?= =?us-ascii?Q?ZMXzpgWxFbpgner205llSPtL/XpbUCVbnN7RvyT5YHdaNtRZMqTRlzpB+tA6?= =?us-ascii?Q?7abHp/Izd8R8YCA6mzguEmceHDpYTzy8x34eBotShJbKyxwQeyttth5O8g6J?= =?us-ascii?Q?6wps2rVJA8PJCC/tPTy0buJ59WXWtBWdmBLN3Hmm1fnPf/CH5AaHsaAF3MRq?= =?us-ascii?Q?NwpYbjF+eIpTBtmyi5aDx1/h1/9TgdMjY1C1x32ZLfNwT80Bcy8maUV+vywe?= =?us-ascii?Q?i/dDiMW1p21CIHTL8DtyzDMng2VyRAW9vi/9oRTuI81zdqxvwNH17Wf4Uj9B?= =?us-ascii?Q?N4+3+OB4ANzgjlei5mp8UHk8ULfYKE/F8ne0LOw0x+keVNII5x7YCdNfy+ih?= =?us-ascii?Q?fKjyuffFoAtXKXDi/zOJkgAqxYOMpS/f3FxcnfEYvIifnuG0lmsqydTFLf+U?= =?us-ascii?Q?Is4Tk4tTsuv33GmSsX6tTF9CTaOBY2dQJ260s7jxdhewqfBocr4HMwidcu9i?= =?us-ascii?Q?T42VAWiVAe6sUu8PIIQfawhBo=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB515; 5:6gtRQrqwJ9alLrKbrHGGXRHosBwG/S0c/8KpwdDphGAcMWr7dHV0N5H0Ns8qA25HZ2gTilFCHFH7SUEmXHBCNIH2S0t2+h26VvsX5hWGcAzZczpWFIYr6dkH8lrBAFAueW7PU5zRFsCI0+asXbdr6w==; 24:ovEB8mODCib87uXM1nCPu0W2XhMGG8txePE9O7ZEodAcJDN5c5N9aLEAhDjDm+P3kM0XZ86mlqKq+2JUF/L2+Xq6aWmUjg4E9VmPZqgX1rE=; 7:lNMunemsGVb2W0QWmOkIPVl/fWuWN1VyGUQ2bdufff5E8CiuaEmrrDiwd3jtE8CrDMATC4qVOVqmA43jymVnPIOey+j0NSDKjviP0yYywxxgY7+WX8r66TJSju3FiVxjHVNAFQHtKi9qimsl2OS8Ppxk9eEdjz14v7YTbHa/Ir8=; 20:EUsqhLBoNT94fQk4c5R8FbXOlUsQrhBeZP5/rbOQbrKKHTtqdgbvBL1dQgevidS5wS3CSLpVo0wlaVAIX8ASkZmvc7bGeXVKfy5/BMhHxo+0rwq+B3tAw7uvh2fCjTLr/U3YJugtTGiLzGAw4KeFOb/NG1NJyyR30Qp1Chq+vP8= X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2016 16:27:15.4185 (UTC) X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fbd72e03-d4a5-4110-adce-614d51f2077a; Ip=[66.35.236.227]; Helo=[sj-itexedge03.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB515 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160525_092738_270218_B743DBF4 X-CRM114-Status: UNSURE ( 8.42 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, tthayer.linux@gmail.com, tthayer@opensource.altera.com, linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: Thor Thayer To better support child devices, the ECC manager needs to be implemented as an IRQ controller. Signed-off-by: Thor Thayer --- drivers/edac/altera_edac.c | 162 +++++++++++++++++++++++++++++++++----------- drivers/edac/altera_edac.h | 5 +- 2 files changed, 125 insertions(+), 42 deletions(-) diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index 5b4d223..3eb73bc 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c @@ -22,9 +22,11 @@ #include #include #include +#include #include #include #include +#include #include #include #include @@ -882,22 +884,27 @@ static void ocram_free_mem(void *p, size_t size, void *other) gen_pool_free((struct gen_pool *)other, (u32)p, size); } -static irqreturn_t altr_edac_a10_ecc_irq(struct altr_edac_device_dev *dci, - bool sberr) +static irqreturn_t altr_edac_a10_ecc_irq(int irq, void *dev_id) { + irqreturn_t ret_value = IRQ_NONE; + struct altr_edac_device_dev *dci = dev_id; void __iomem *base = dci->base; - if (sberr) { + if (irq == dci->sb_irq) { + ret_value = IRQ_HANDLED; writel(ALTR_A10_ECC_SERRPENA, base + ALTR_A10_ECC_INTSTAT_OFST); edac_device_handle_ce(dci->edac_dev, 0, 0, dci->edac_dev_name); - } else { + } else if (irq == dci->db_irq) { + ret_value = IRQ_HANDLED; writel(ALTR_A10_ECC_DERRPENA, base + ALTR_A10_ECC_INTSTAT_OFST); edac_device_handle_ue(dci->edac_dev, 0, 0, dci->edac_dev_name); panic("\nEDAC:ECC_DEVICE[Uncorrectable errors]\n"); + } else { + WARN_ON(1); } - return IRQ_HANDLED; + return ret_value; } const struct edac_device_prv_data ocramecc_data = { @@ -988,22 +995,28 @@ static int altr_l2_check_deps(struct altr_edac_device_dev *device) return -ENODEV; } -static irqreturn_t altr_edac_a10_l2_irq(struct altr_edac_device_dev *dci, - bool sberr) +static irqreturn_t altr_edac_a10_l2_irq(int irq, void *dev_id) { - if (sberr) { + irqreturn_t ret_value = IRQ_NONE; + struct altr_edac_device_dev *dci = dev_id; + + if (irq == dci->sb_irq) { + ret_value = IRQ_HANDLED; regmap_write(dci->edac->ecc_mgr_map, A10_SYSGMR_MPU_CLEAR_L2_ECC_OFST, A10_SYSGMR_MPU_CLEAR_L2_ECC_SB); edac_device_handle_ce(dci->edac_dev, 0, 0, dci->edac_dev_name); - } else { + } else if (irq == dci->db_irq) { + ret_value = IRQ_HANDLED; regmap_write(dci->edac->ecc_mgr_map, A10_SYSGMR_MPU_CLEAR_L2_ECC_OFST, A10_SYSGMR_MPU_CLEAR_L2_ECC_MB); edac_device_handle_ue(dci->edac_dev, 0, 0, dci->edac_dev_name); panic("\nEDAC:ECC_DEVICE[Uncorrectable errors]\n"); + } else { + WARN_ON(1); } - return IRQ_HANDLED; + return ret_value; } const struct edac_device_prv_data l2ecc_data = { @@ -1075,28 +1088,27 @@ static ssize_t altr_edac_a10_device_trig(struct file *file, return count; } -static irqreturn_t altr_edac_a10_irq_handler(int irq, void *dev_id) +static void altr_edac_a10_irq_handler(struct irq_desc *desc) { - irqreturn_t rc = IRQ_NONE; - struct altr_arria10_edac *edac = dev_id; - struct altr_edac_device_dev *dci; - int irq_status; - bool sberr = (irq == edac->sb_irq) ? 1 : 0; - int sm_offset = sberr ? A10_SYSMGR_ECC_INTSTAT_SERR_OFST : - A10_SYSMGR_ECC_INTSTAT_DERR_OFST; + int dberr, bit, sm_offset, irq_status; + struct altr_arria10_edac *edac = irq_desc_get_handler_data(desc); + struct irq_chip *chip = irq_desc_get_chip(desc); + int irq = irq_desc_get_irq(desc); + + chained_irq_enter(chip, desc); + dberr = (irq == edac->db_irq) ? 1 : 0; + sm_offset = dberr ? A10_SYSMGR_ECC_INTSTAT_DERR_OFST : + A10_SYSMGR_ECC_INTSTAT_SERR_OFST; regmap_read(edac->ecc_mgr_map, sm_offset, &irq_status); - if ((irq != edac->sb_irq) && (irq != edac->db_irq)) { - WARN_ON(1); - } else { - list_for_each_entry(dci, &edac->a10_ecc_devices, next) { - if (irq_status & dci->data->irq_status_mask) - rc = dci->data->ecc_irq_handler(dci, sberr); - } + for_each_set_bit(bit, (unsigned long *)&irq_status, 32) { + irq = irq_linear_revmap(edac->domain, dberr * 32 + bit); + if (irq) + generic_handle_irq(irq); } - return rc; + chained_irq_exit(chip, desc); } static int altr_edac_a10_device_add(struct altr_arria10_edac *edac, @@ -1168,6 +1180,34 @@ static int altr_edac_a10_device_add(struct altr_arria10_edac *edac, goto err_release_group1; } + altdev->sb_irq = irq_of_parse_and_map(np, 0); + if (!altdev->sb_irq) { + edac_printk(KERN_ERR, EDAC_DEVICE, "Error allocating SBIRQ\n"); + rc = -ENODEV; + goto err_release_group1; + } + rc = devm_request_irq(edac->dev, altdev->sb_irq, + prv->ecc_irq_handler, + IRQF_SHARED, ecc_name, altdev); + if (rc) { + edac_printk(KERN_ERR, EDAC_DEVICE, "No DBERR IRQ resource\n"); + goto err_release_group1; + } + + altdev->db_irq = irq_of_parse_and_map(np, 1); + if (!altdev->db_irq) { + edac_printk(KERN_ERR, EDAC_DEVICE, "Error allocating DBIRQ\n"); + rc = -ENODEV; + goto err_release_group1; + } + rc = devm_request_irq(edac->dev, altdev->db_irq, + prv->ecc_irq_handler, + IRQF_SHARED, ecc_name, altdev); + if (rc) { + edac_printk(KERN_ERR, EDAC_DEVICE, "No DBERR IRQ resource\n"); + goto err_release_group1; + } + rc = edac_device_add_device(dci); if (rc) { dev_err(edac->dev, "edac_device_add_device failed\n"); @@ -1186,7 +1226,6 @@ static int altr_edac_a10_device_add(struct altr_arria10_edac *edac, err_release_group1: edac_device_free_ctl_info(dci); err_release_group: - edac_printk(KERN_ALERT, EDAC_DEVICE, "%s: %d\n", __func__, __LINE__); devres_release_group(edac->dev, NULL); edac_printk(KERN_ERR, EDAC_DEVICE, "%s:Error setting up EDAC device: %d\n", ecc_name, rc); @@ -1194,11 +1233,43 @@ err_release_group: return rc; } +static void a10_eccmgr_irq_mask(struct irq_data *d) +{ + struct altr_arria10_edac *edac = irq_data_get_irq_chip_data(d); + + regmap_write(edac->ecc_mgr_map, A10_SYSMGR_ECC_INTMASK_SET_OFST, + BIT(d->hwirq)); +} + +static void a10_eccmgr_irq_unmask(struct irq_data *d) +{ + struct altr_arria10_edac *edac = irq_data_get_irq_chip_data(d); + + regmap_write(edac->ecc_mgr_map, A10_SYSMGR_ECC_INTMASK_CLR_OFST, + BIT(d->hwirq)); +} + +static int a10_eccmgr_irqdomain_map(struct irq_domain *d, unsigned int irq, + irq_hw_number_t hwirq) +{ + struct altr_arria10_edac *edac = d->host_data; + + irq_set_chip_and_handler(irq, &edac->irq_chip, handle_simple_irq); + irq_set_chip_data(irq, edac); + irq_set_noprobe(irq); + + return 0; +} + +struct irq_domain_ops a10_eccmgr_ic_ops = { + .map = a10_eccmgr_irqdomain_map, + .xlate = irq_domain_xlate_twocell, +}; + static int altr_edac_a10_probe(struct platform_device *pdev) { struct altr_arria10_edac *edac; struct device_node *child; - int rc; edac = devm_kzalloc(&pdev->dev, sizeof(*edac), GFP_KERNEL); if (!edac) @@ -1216,23 +1287,34 @@ static int altr_edac_a10_probe(struct platform_device *pdev) return PTR_ERR(edac->ecc_mgr_map); } + edac->irq_chip.name = pdev->dev.of_node->name; + edac->irq_chip.irq_mask = a10_eccmgr_irq_mask; + edac->irq_chip.irq_unmask = a10_eccmgr_irq_unmask; + edac->domain = irq_domain_add_linear(pdev->dev.of_node, 64, + &a10_eccmgr_ic_ops, edac); + if (!edac->domain) { + dev_err(&pdev->dev, "Error adding IRQ domain\n"); + return -ENOMEM; + } + edac->sb_irq = platform_get_irq(pdev, 0); - rc = devm_request_irq(&pdev->dev, edac->sb_irq, - altr_edac_a10_irq_handler, - IRQF_SHARED, dev_name(&pdev->dev), edac); - if (rc) { - edac_printk(KERN_ERR, EDAC_DEVICE, "No SBERR IRQ resource\n"); - return rc; + if (edac->sb_irq < 0) { + dev_err(&pdev->dev, "No SBERR IRQ resource\n"); + return edac->sb_irq; } + irq_set_chained_handler_and_data(edac->sb_irq, + altr_edac_a10_irq_handler, + edac); + edac->db_irq = platform_get_irq(pdev, 1); - rc = devm_request_irq(&pdev->dev, edac->db_irq, - altr_edac_a10_irq_handler, - IRQF_SHARED, dev_name(&pdev->dev), edac); - if (rc) { - edac_printk(KERN_ERR, EDAC_DEVICE, "No DBERR IRQ resource\n"); - return rc; + if (edac->db_irq < 0) { + dev_err(&pdev->dev, "No DBERR IRQ resource\n"); + return edac->db_irq; } + irq_set_chained_handler_and_data(edac->db_irq, + altr_edac_a10_irq_handler, + edac); for_each_child_of_node(pdev->dev.of_node, child) { if (!of_device_is_available(child)) diff --git a/drivers/edac/altera_edac.h b/drivers/edac/altera_edac.h index 42090f3..62b0fa0 100644 --- a/drivers/edac/altera_edac.h +++ b/drivers/edac/altera_edac.h @@ -295,8 +295,7 @@ struct edac_device_prv_data { int ce_set_mask; int ue_set_mask; int set_err_ofst; - irqreturn_t (*ecc_irq_handler)(struct altr_edac_device_dev *dci, - bool sb); + irqreturn_t (*ecc_irq_handler)(int irq, void *dev_id); int trig_alloc_sz; const struct file_operations *inject_fops; }; @@ -320,6 +319,8 @@ struct altr_arria10_edac { struct regmap *ecc_mgr_map; int sb_irq; int db_irq; + struct irq_domain *domain; + struct irq_chip irq_chip; struct list_head a10_ecc_devices; };