From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753309AbcAVPbQ (ORCPT ); Fri, 22 Jan 2016 10:31:16 -0500 Received: from mail-by2on0054.outbound.protection.outlook.com ([207.46.100.54]:8640 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751083AbcAVPbL (ORCPT ); Fri, 22 Jan 2016 10:31:11 -0500 X-Greylist: delayed 78226 seconds by postgrey-1.27 at vger.kernel.org; Fri, 22 Jan 2016 10:31:11 EST Authentication-Results: spf=fail (sender IP is 66.35.236.236) 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; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=tthayer@opensource.altera.com; Reply-To: Subject: Re: [PATCHv8 1/4] EDAC, altera: Add Altera L2 Cache and OCRAM EDAC Support References: <1453397668-32094-1-git-send-email-tthayer@opensource.altera.com> <56A1C5DE.1080501@mentor.com> To: Vladimir Zapolskiy , , , , , , , , , , , CC: , , , , , From: Thor Thayer Message-ID: <56A24C34.3000303@opensource.altera.com> Date: Fri, 22 Jan 2016 09:35:16 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <56A1C5DE.1080501@mentor.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: BLUPR0301CA0004.namprd03.prod.outlook.com (25.162.113.142) To CY1PR03MB1487.namprd03.prod.outlook.com (25.163.17.17) X-MS-Office365-Filtering-Correlation-Id: 3087731d-8818-4dd1-5a6e-08d323410cbe X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1487;2:dexRtmMu+wr7eg0VoVVjbcriUQ+2eatNOyOqeNju0cdcIknOFx+Iv13u79bDd6FuBjqinMYWrYegmhf1HSvm7BEZ4gf4Pm8K6yKNg0q7SeLmjPqoFXq1k3mzpHtk9NWFZ90FVVcXfzpBvD5khAZceGwhT6X0XZ8gBSYSOzPAtoDxF3pF18RWlGPKcj/j56tN;3:mrBFOcplUuvdSK3h+iBmNkD/eOqoR67pbkTRHgVSW+m248PU2vz8uMtIYrWajkOOe8P+ZodJrlupzX51QbyBROH0Z484KJCAxMi343oUuBsAuX3s0pFYq/kDrkGG0YkM;25:1C1mWv46IK4krdRAojRy2c8j9M36uBmhmLOV8zHTxl+oz1N8BCWVIVxkkhTW/4drghNMXyRlpZkJikD98ARxPPKbHX6YJU3j5azr+ay7/fi9y0SsQkhrNJNgBRkA1XJoVk129frR24EgFOIKyK9WPa6W94lIHFHeHyko1I/slA3k9eiJLI1GSBGKkkTP5ErokLHN5jvItCPtUY0RQzf7zjbKGI3f950EOvDXSevxDit6HCfj0OZ5nd+5inVb4vrX;20:9LKtyYXVaCoRmkcNCQ24UY1HRUf7Cugaq4JlJmoTMBnhLa0ku7bjsRVDHJJMX7Yup0Eaw0QUtVSKPPlc2Y2Ylx39n+upetelYkNFO8o1OMHCgYf5D4gymZ9b/Yy5JLzK3efunvSz0tZvfoYpRWMaQ5hBBB9m/Nrd69UuMU95sOQ= X-Exchange-Antispam-Report-Test: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1487;UriScan:(80048183373757)(204874498639787);UriScan:;BCL:0;PCL:0;RULEID:(3001016);SRVR:BLUPR03MB421;UriScan:(80048183373757)(204874498639787); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(123027)(601004)(2401047)(5005006)(8121501046)(520078)(3002001)(10201501046);SRVR:CY1PR03MB1487;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1487;BCL:0;PCL:0;RULEID:(601004)(2401047)(13024025)(8121501046)(520078)(13018025)(13015025)(13017025)(13023025)(5005006)(3002001)(10201501046);SRVR:BLUPR03MB421;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB421; X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1487;4:IaBX4hEkUNVmF6aE9eXuhBiZfiiv2s/CykD5d9F2xOlML1GXUq9KydBfzsOY8/+U+gcjS2NPmXv/RmXjOXlzw5xUnAKQwFPefoTZmPtvjuQBGK1sxPEYezl4HkFAhWMCJhUhNAJPp86zjTI5Jliws584kDI0th29vvhnEbtBd7ZTIIXR+ImswwWDPpAYBBiD4bDuPga+JRATetMvjoBQG7MQnQTsibCAsV4x0/j3KAY1qGPiQKwpL9bzPI+BcNHqXbuqrWMluh9HX0O51B9eSdRAS8L63FtDxIqzoeDED6iXjp1EQNfno3dzRHhmIw57slf0JWyE6ucInI2I18XEy8TQ79G1iRHBGWjB4z51+iWcfm62vOue7ZUaZ65Rr/UR+I6FJfbpM4Qyyi6TVpQsQnZLW+q9RRiTOjScViwJUn/va80jTOi8yki9LX95tswnmwSyfYwMRgvDySH/rzpyEODdNhnTT0NG5WKQZ142rgQ= X-Forefront-PRVS: 08296C9B35 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(24454002)(199003)(189002)(479174004)(377454003)(586003)(66066001)(5001770100001)(50466002)(2201001)(189998001)(3846002)(77096005)(1096002)(6116002)(5001960100002)(2950100001)(81156007)(5004730100002)(105586002)(42186005)(230700001)(86362001)(4001350100001)(97736004)(4326007)(2906002)(106356001)(50986999)(19580395003)(19580405001)(87266999)(101416001)(65816999)(83506001)(53806999)(33656002)(43066003)(40100003)(122386002)(76176999)(87976001)(64126003)(65806001)(59896002)(47776003)(65956001)(5008740100001)(23676002)(54356999)(80316001)(921003)(1121003)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR03MB1487;H:[137.57.160.203];FPR:;SPF:None;PTR:InfoNoRecords;A:0;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?utf-8?B?MTtDWTFQUjAzTUIxNDg3OzIzOk5DVWd0YVBXQWluL0Z1ZnI4WlFnVkVienNX?= =?utf-8?B?NXRsNVBBYW1Ua0drQUFuSzJJV0ZnRFEyaE5XUnhkZkpmLzNER3RXaEx2VXd5?= =?utf-8?B?Y2x2ZmRIa3l1UXVQRVh6UVpvd3NrbkplcnpqSnlRTzlLNjdjaWQxekFoYjY5?= =?utf-8?B?cnQzUHBKa0pJaUZzYWZZK0dMcFVsNFFwS0toZllQMktNb3lWajhHdG5RbTdw?= =?utf-8?B?Q3duSFBOc3V1NFVpZEdtamtkR1V1Ri9pbkUrY0JZZC9vUmMvMmFGbWFQT2F0?= =?utf-8?B?MXlJMFJOVktxaWFOTnlSV0xzZDN0MjlBUnc5dG93MUxFcWFsL1M4cExHOGtq?= =?utf-8?B?ZitZem84d3E5NlptaEpBNm9VSlBrN1VXUm9yeGVaNWxLZWNQWU1BdG10eC8y?= =?utf-8?B?bXNMSmU5Y3FNYkVtRCtGSHJSOCtWWDQvUkY4MCtxWUwrT1RlUFFqM0lCbDV1?= =?utf-8?B?bnJxQlRaUlpiQjV0bWFBeFV2NHlFWnFpUFZ6bXIwUEV6TnhRSm5ienRSRUdP?= =?utf-8?B?UC96WWgxbUpIQWlNMWVBYm5sSWxTRUJRazBpQ0lFMjdkeEp5SzdTZEpDSXBn?= =?utf-8?B?dWVETUxtVDNVQzBWTWtCdlppdGNjd3FGVmlIT2dxakNkRHIwV1c4WTM1VzZV?= =?utf-8?B?UjdlNlkwb1ZPT2JVckJoWW1mdFdnMGpVQ0lGWWtUMjROWEtEMmd2clYwdU1t?= =?utf-8?B?dm9haS9lTWZtYm5ETk0ycFVMWnYxVm5ZMXBCVDlkdVJLTDhlRUswV3djQ241?= =?utf-8?B?bzdsMXhkdCs3bVpXS21EeStOS2p1Rm9reDRVZ21oT2ZyMnF2K3YydC85S0My?= =?utf-8?B?QzZnUUZrYWxxQ1ZWR1NucjUybkFYeUNrODJlcHkzNHY4VXJ4WGhWVk1lUEV0?= =?utf-8?B?TnM4eVVZZVJLUzdyTW9abXIwcG80ZXpXeEFTZUFxY2NPNk1hVzFtSFBGckNU?= =?utf-8?B?cWRmMi9vNklUWnZRVERpYllXc2ladmxrdHRuOFJTQS9qU1MzUlhXVDdlQU5Q?= =?utf-8?B?NUNkdFdPM1VvN0lwOUNwdGF1MytDYVBQUm5rbjRBbjNpVlFFYWRRVHhuNXhU?= =?utf-8?B?STdWeFpWcGFQUVJTM24wN1FmNVI3b3pGZnVBSG1EYytVTldjUlVoRHo1VjMr?= =?utf-8?B?OExsRG1vQ2ZGUE1RRE8wMzhXc05mYm5oTnp4Z1RNUE5TQmF2aVI5NERCTE4x?= =?utf-8?B?Z1UxUU4xVmxNU3hIbzU1cUFyNHArRHFQR1h5Z25zMlFMT1RCWklOSFhDWkRn?= =?utf-8?B?ZlhZaFlteEFRM0c2RFBINU5veEo3aGxOamdaRjdMSUpTWFJpUG00bWFkbW1s?= =?utf-8?B?U2VjWFVYWlI3SmJacXEvTnMrYnN5UjZBZlFNMzkzMkkrd0xoUDNiNm9LajJI?= =?utf-8?B?ZmlwYWhOOENwUStVcEZVMjlGSlYwMUczTFErWkJ0ZVlkbm12V2szRk03aFov?= =?utf-8?B?OWtlZjBJV0V1NmdVc0NjM21LWkpVdDZsUEpxV0o0QXVxK1ZrRjFzMC9UVkFI?= =?utf-8?B?RDZSRWJPRHgrRUtTTVp0ZHh4d0VrcU5tbGIzMkZDZU5XYzNYa1MwNWcvU1py?= =?utf-8?B?TUwyUzJrV1Nkc085Q1lHWlE3ZlNVeDByTzJYSVdlWjl3bjl5dmtxYkY0L0lw?= =?utf-8?B?Q1ZiNCtldlRzdTlrcEsyU0l5V1FrM2Q3UUZ1RDdLSzBXUlVKdjc2VGhyUVdh?= =?utf-8?B?YTNLdlYyQStrbTR3N1RHTisxbHk5THY4OU5IbHRhYlBpeFpqL2c1bHFwMnhO?= =?utf-8?B?RXV2S1dBYkttWEFTM2FEYnBYN0Fya2RHZVdmaWRDRXBJN3ZpRDVXS09kbmZN?= =?utf-8?B?eWc0UW0za1NObHJ4eERZdXlJTVN4ZHYyczE4TkxRaFliL0hOdmVtY1RsYmJ6?= =?utf-8?Q?bMW2DNBOVH4W9GD0H4AoipyWAfL2tG2I?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1487;5:FomPk1JB7tboM1Kagalq5oAvdmzHBARsgdYt3MpPvD7RSpsQT2AxqudRiUIWK9HNNiqF6PcjFAYQ3u4H70LJzKkxXQtdWFgW4+wX5I2exb4RO+sR3ISTJfHxQKUcMqcNJahrbSQyW+yNcyKX4H+mhQ==;24:w+K3miou8RWikz6EBLdDM2SFK/8Fp8sSPRAlUtOFi8VumHGJ70F4Of1cI5dKO2teH0zN0hC27Y00T9HW9VjZZIqMmqVBOjOmnpBegTnVA60=;20:qg6GEHTctNqGEHzUZB+2dSm4QSZP2PBlMdfdVwkEbfA/HBRBQIQBlHm/01IZnfmJ7ocUIiEpb9Q/+CMlg+sxpi/3cBrtal5zoco0vZdcl1CNFZQ6VzHmoBCej1vbqGqsn7oOTpH1zDV2iEt9IVrPyzumarOFqx3DtEw0W4cXVSM= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1487 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BY2FFO11FD023.protection.gbl X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD023;1:tiwd3Gqss1d6ZPuFBQZtcJnsbqdTq/rsVC9E8LWp1PjxxiTsEZQxM7EOogpzaeLolOyfREIYmoZhFYPM/JOI8I/yWjphWZaUCsau23LFmD21dzMQlcSEAtbPwefmh0x4uKwBOFRyaaopTDNLt+uztgMg8Kdi+tzIzRSonMQj+lLX6xLsXt2hCQw9RyU/KzptxC7UoDk73eALMZAKhSpoCACbo6zXGesaM+YEGxQ4IITsHKfw28t8/tF3bRDmK1hroYlAKDW7PDOVs/hfmRD111T0DFQBAh7K9M+KWg/+zTErOZ+WfvRbS22adX4TUbwvafv0+XfAi7DA3pHcyilTewIPpNZCbKxBBE15QmiSEkwy7C+YCj0efOFyQ+D8UYNlXrrxPjCEPq94SDgU1lXBcfdYFlQT2yYJ9k0ByJhvQi6Txpn2kMW34I/LxQvyLtbR/tP+e94NDOPSxXQ8A2F12g== X-Forefront-Antispam-Report: CIP:66.35.236.236;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(24454002)(479174004)(377454003)(189002)(53806999)(2906002)(80316001)(2950100001)(16796002)(83506001)(189998001)(64126003)(19580395003)(65956001)(33656002)(122386002)(50986999)(66066001)(50466002)(87936001)(43066003)(21840400001)(47776003)(6806005)(5008740100001)(1096002)(5004730100002)(85426001)(956001)(1220700001)(6070500001)(19580405001)(77096005)(90366008)(40100003)(65816999)(97736004)(81156007)(11100500001)(76176999)(65806001)(3846002)(59896002)(4001350100001)(6116002)(230700001)(106466001)(2201001)(54356999)(5001770100001)(86362001)(4326007)(23676002)(105606002)(586003)(5001960100002)(87266999)(7099028)(921003)(217873001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR03MB421;H:sj-itexedge04.altera.priv.altera.com;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:0;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB421;2:3LV8DL3eIbCr3sWmNhDmlB5wFd7KwkE+o7Obl2kwJPPFF8wudP3hhH4v9suxrs9jrLoNOirTTBUMNJTqpKm4infmGX4h1e4EuZBDCD0rBa+gGdsZeTAmNu6PxgrZPHQ3/QqXEYdE9e5WKI7OpsZRD99AEcL5zB2vJqfPoJuuuZgY5XZ+aMo5E7dC8gs6v96y;3:RSaB9nbbfhla4MFlORdetSIHCSWxbaRqqfFNR+wjKuAo0KCe5L3QTlzRRSB0RnJZpuM3t/0xzN+kTkn9PUGKyoOR9DgwLDVgVXzBS8jt6W+Z9aRVVvkc6j+6TjniueDVjfVwB6NFRqQ2WNBMNJuRhgAVGPV/NFsNcfTIw9VpedUZKTzNswlZzVNf3QCTlCM/7hOSuWcSLHWDpjpBV9IX7cpZ6YEaq3T3yom3QOh8ds0nmz/gkNbM79T2kiujnF3w;25:Ojn0JddAjCDMMVyAmQHn/vhfPreLWEPyadhRztKpD0elAfqMEWmDqJ0vroRIVltCzJShFaennGNvpQ/hzViAXdA9W5LTwpPmfwaZ9KE0+YTtzC/a+x3jynjM0ryN++zuXL8gzfYNdWGhO9sISktDHjNS67drsBNcWu7RXfuTMGuJoL/02VHinkyGoGnsXKfjgdNb8mPJQljInsDmorvBVIMJmG+YVYJIGCxVrVhXLU7Bwcx+MaQH4pt00JjWmhkh;20:UrL/J5WrbYWmrXu8mZ26f77kAvKZ+xi9mYWHKLF+5U81tv88FjtnI48ynEh3E+cvF75HqHlD0YNNuheWHakQykrlEV5VrQrz7iYripJ/x303jws/YqRGyk2/nqDkm+nTeYAZY8ZUBNeQTSlgoL1BqLqUjE9xdI6B899Tv3Wi0d4= X-DkimResult-Test: Passed X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB421;4:8Z/5gtNoCphBnTNC7FNM9i3ocLzpuwQYHO/pVpViVDeaS3VT0GGCS/8J3EZLrCtGUzqgsBnmPX/vxgYKZsWFzqwWJtc2EskuX3vKA0JZWksr1HSzP9jiQmI5L2OzatAHwnQ/Rc/MfWt0rejP6GoA7mEUuknjIhc9OKvvfQGzu/8qfPz8YEeLaRDMlJTGsWiMKn3nQpHJ+N2yOhos+WqFk5IwX7NCJ6DoPpbMVK2cjAPyR/JDBJiyLGZZ3e8i1JOk9QHzxOS8/yZmsGpZ68NpnADdoO0BB2Syoiibo+hX0YNM9OW2XK+BHV7XVtoz5p9fg6LEInuWPeb7UjyWB4+0elyXmnjdRIOT86aoveqxMcdlOJ60MBmW7aMGuT6Kobg1ja7a+WxFyR0az0hTQRtSJ33evnwEhuPTJPM0PGcfi4n9KS7sfptA03mAVythbM70ciZ6ZAGEaIt0T4TZ12Ua80St8nA6bXwGBejkSL5rhV/Ss3hjqDAKHeWqBeuIaE8y0s+WwT/L6FEipGrwkDV66qxHc38q3gh8709GYsy+hLv4ZE57Mfw1HMKimUxF7fuv X-Forefront-PRVS: 08296C9B35 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjAzTUI0MjE7MjM6RWZRRHBWY2VaUVVVd1dScC9VZ2k5alp1dkQ2?= =?utf-8?B?RVVUeXhPanN1SU50OUdOa3lTSFpJM1JzT250RlFlcVhVTDhTeTI3cnVZaG4x?= =?utf-8?B?Z1RDbXhZZXRwTkI3UWQ4RXVJeWJhdEJNZjAvNEdZSjVjTktRMmhYbk9CdjFq?= =?utf-8?B?MXlBbjAzTENMWXdpZUFva3l1NTh0S2loaXUwbHFQcUd3RDMzOGhGcDk4N284?= =?utf-8?B?WjllMGZ4ZG1FZDV0NEVjWW05NGxSRjVwcWNiOXpMcmZUS3F3R2hidmI2WlNn?= =?utf-8?B?ZytTL29qQXF2dU9peVpadnc2ZkRES09BZ3c4QVJVSTZWVnU3N2cxcFphUzAy?= =?utf-8?B?Ym5zRzN3aGJ3ak5xRDZtWS9VVEtjOWhJb2tKMDE1K24yQjJSOWRQd1NDUUJR?= =?utf-8?B?TXc2SVNydWtrWnRGZDRRbTZvUmEzUFRpamFQYjlqVDRlenhDZ1JKbmRnMlFU?= =?utf-8?B?RENuVHcyYXM5NjI3VXpUNzhRenMwZ0tBSCsxMXN1d3lHT1hmN01pWnJpcC9C?= =?utf-8?B?cElwVElBYXRiTXJybFV3VTJoTCtZakhkS2xoRHVmejBac0JOM1pJZ2c4dlBt?= =?utf-8?B?VjJLNjFZZHJPbFVtMXRSdHJIZURoeUFiSFl5Ym0zMURRYzJzVTQ4Sjh0TnVL?= =?utf-8?B?YmFKNHlQUzZIeG1MTW4zc1ZXOVBsSU8zOU5MWVZFK0tHSWgzKyszUE85eU8v?= =?utf-8?B?UEJDTEIxc0syc0NhNGdLVWNSeTh5VWZrZVJoMFh2UmgvalBVYmVjL0VPN0Fu?= =?utf-8?B?R0RGdys0blhland6NGg0c2g4aWF4RFJBTy9GUVNPL0hsNzNOZTlkOGI1K1hv?= =?utf-8?B?UlJqUStPN2gyeDRYU1NyNmU4YVl5Y05saHNZOEc0WHAxa0Mxc1pUTFRWV2lu?= =?utf-8?B?cllaamdYVEJ4eDhJVVE2M1pialU0VVZOQmRmdTNuWGZKTDZBbHhqTmphKy90?= =?utf-8?B?SVNDVW0zR2ZNS1JYaDVDb0N6bDBsZTRza1ZVQ25UUjA0OTlYWkdSS0g4SlBz?= =?utf-8?B?dENRNGZzek0za3pYelltSG1kdU9LSEdHNWo5MDhRcjkwcWw4RWRjWG9VT0RT?= =?utf-8?B?N2ZsVDg1UnowNUJJRnRkNVFQNDNmYnhCTGV5RHY1QzZmcllPRGpEeGFyaEsr?= =?utf-8?B?dW1rTTlycjNaS0JJcFlickh5YTFMdXlMRjhZUmpQVG44ZGhBa0E5UnJRajBz?= =?utf-8?B?Q21ra0twcVhmL2hnL1lIRW80YlhidGRpWjRzd1k5aFB6Vm5VclA3VXZIcGdK?= =?utf-8?B?RUlyZ3dyeVZXNU8xanVzNkE3WlFjV3QwU2o0S1lqbUtwajFxOXN4SEtXQ1Mv?= =?utf-8?B?WEg1RG9uSnJCZlVndnZLeFBMR1dkRCtsRHJVQ1RHMkY0VDY1YUxrcGlnSWl1?= =?utf-8?B?Z3ZHUjJNRlZwY01hc09reGxHcUJUekRCbjFYZHQ5Y2RJb2U3T3pBNnRENHlW?= =?utf-8?B?M2ZQc29ITjFYWVRhOGxEZmdQOW8wSWF1Z3lzMW9kVUdPZXBUNDhSQUpSQmhL?= =?utf-8?B?enNRbEhvOWt5ZmVBVkduRHlkRE9JbUM0S1czdndkZ3hEdEtHU0dJU0U4RWkr?= =?utf-8?B?RWV0eDJHTmt6RlVVajJzWHJDWUloYnppSTJxWm9IWUdZaEJrTmRtbnF5Sjls?= =?utf-8?B?V3B1dGVGWFJrbW5udnV5blRBaE93OVhzNjRTaEFTL09lOG1nL0UzejdmdlVH?= =?utf-8?B?VEEzRHJKS204ejlNc2lFTjVteXl0NkVsaGthdUUydVJwbGVqcUJLMHNuZzRK?= =?utf-8?B?NFhEVHVkWjNZdENudFloblBsMTZDa1FmdkhFZjl6MEtsRkc3blJsbm4yUDVU?= =?utf-8?B?QlpJeTFycWtwSy9XcUp6US9PZVRvMEtwUGtXdTJGTGdVbEhEcHRTd2Vqb2Mz?= =?utf-8?B?dWpOSzNVODVZWFoyTmRxcnhoV3Z0S25qcDk4WHhlRm5hQ25BcDFlS05Rb3Nk?= =?utf-8?B?aFVrN0NJbDF1a0luWURYSERtRURWR0dEZWdWNEpQbVJFNllocE9LNDRWQ2cv?= =?utf-8?B?cjU2MUpsQkxWTm5NRWVsK3R1Q3FlV3hEZExVUnRqQm54M2dEMW5QT0tadTRq?= =?utf-8?B?NFE5WGVodWpXdytkVm52QWJGQ2RKVml4aTlpd2w2VzkxZDRJNjA4U2VHcURU?= =?utf-8?B?ZjdmbEgrNTJ6alVVZEZ2WTFocFo1OFcxNEpJN3J5blVtc2JWZUJtYlZwR2V4?= =?utf-8?B?MVlLNzJ0RTdNTXNJRXdYR04rN2hJY3o1di9veHRXZ21vV2ZXMDdXWnJrMS9K?= =?utf-8?Q?OIAGof1ebVFWDifK9?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB421;5:cUDVWUOn0SrxMDqGTA4URbmbZXuFQUbQm3ktQNceOONy66ookNt3k4Za19UuU4b5Uc+dloG1yuAj3Oko0qmLxHFuVOSdYKjkMeJhx7sePcIkwMKPhW5Z6BWvFriugIKdkbypVM3+z8NGYsPz8vlViA==;24:/cAHN/kcjWomuAya6Xdx4ZST0Yildn/UUrCWzmLjwAcBxyFb6/P5C3v1Ncbb+7jVkRksF7rqiXHuP5PEcxR4IcRZmi9zXcJcPbzLjmbjFII=;20:sGDYVH9Ai+ElyOczI3yqjYMjcdFe8D5Sn//2kSIOtnIqBkjlmgyfcj08v1e67aTsV1QVSJ+Fw4NUgHf/pk7/Vpziie8LqCNvs/kHJaYkIrbKucmnD80wM9SVMUJFANzajo4jgQv9fMcFXy/A2j+Vq1Nzmig7ozAQnDAAlmubq4o= X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2016 15:31:08.0679 (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.236];Helo=[sj-itexedge04.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB421 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Vladimir, On 01/22/2016 12:02 AM, Vladimir Zapolskiy wrote: > Hi Thor, > > On 21.01.2016 19:34, tthayer@opensource.altera.com wrote: >> From: Thor Thayer >> >> Adding L2 Cache and On-Chip RAM EDAC support for the >> Altera SoCs using the EDAC device model. The SDRAM >> controller is using the Memory Controller model. >> >> Each type of ECC is individually configurable. >> >> Signed-off-by: Thor Thayer >> Signed-off-by: Dinh Nguyen > > You are sending a change authored by yourself for review, but you add Dinh's > SoB, what's his role here? > > See Documentation/SubmittingPatches "Sign your work". > > [snip] While I was working in a different group at Altera last year, Dinh submitted the previous patch revision so I kept his signed off by for continuity. I'll just use myself in the future. Thank you for clarifying. > >> +/* >> + * altr_edac_device_probe() >> + * This is a generic EDAC device driver that will support >> + * various Altera memory devices such as the L2 cache ECC and >> + * OCRAM ECC as well as the memories for other peripherals. >> + * Module specific initialization is done by passing the >> + * function index in the device tree. >> + */ >> +static int altr_edac_device_probe(struct platform_device *pdev) >> +{ >> + struct edac_device_ctl_info *dci; >> + struct altr_edac_device_dev *drvdata; >> + struct resource *r; >> + int res = 0; >> + struct device_node *np = pdev->dev.of_node; >> + char *ecc_name = (char *)np->name; >> + static int dev_instance; >> + struct dentry *debugfs; >> + >> + if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) { >> + edac_printk(KERN_ERR, EDAC_DEVICE, >> + "Unable to open devm\n"); >> + return -ENOMEM; >> + } >> + >> + r = platform_get_resource(pdev, IORESOURCE_MEM, 0); >> + if (!r) { >> + edac_printk(KERN_ERR, EDAC_DEVICE, >> + "Unable to get mem resource\n"); > > Missing devres_release_group(&pdev->dev, NULL) on error path. > Yes. Thank you. >> + return -ENODEV; >> + } >> + >> + if (!devm_request_mem_region(&pdev->dev, r->start, resource_size(r), >> + dev_name(&pdev->dev))) { >> + edac_printk(KERN_ERR, EDAC_DEVICE, >> + "%s:Error requesting mem region\n", ecc_name); > > See above. > >> + return -EBUSY; >> + } >> + >> + dci = edac_device_alloc_ctl_info(sizeof(*drvdata), ecc_name, >> + 1, ecc_name, 1, 0, NULL, 0, >> + dev_instance++); >> + >> + if (!dci) { >> + edac_printk(KERN_ERR, EDAC_DEVICE, >> + "%s: Unable to allocate EDAC device\n", ecc_name); > > See above. > >> + return -ENOMEM; >> + } >> + >> + drvdata = dci->pvt_info; >> + dci->dev = &pdev->dev; >> + platform_set_drvdata(pdev, dci); >> + drvdata->edac_dev_name = ecc_name; >> + >> + drvdata->base = devm_ioremap(&pdev->dev, r->start, resource_size(r)); >> + if (!drvdata->base) >> + goto err; >> + >> + /* Get driver specific data for this EDAC device */ >> + drvdata->data = of_match_node(altr_edac_device_of_match, np)->data; >> + >> + /* Check specific dependencies for the module */ >> + if (drvdata->data->setup) { >> + res = drvdata->data->setup(pdev, drvdata->base); >> + if (res < 0) >> + goto err; >> + } >> + >> + drvdata->sb_irq = platform_get_irq(pdev, 0); >> + res = devm_request_irq(&pdev->dev, drvdata->sb_irq, >> + altr_edac_device_handler, >> + 0, dev_name(&pdev->dev), dci); >> + if (res < 0) >> + goto err; >> + >> + drvdata->db_irq = platform_get_irq(pdev, 1); >> + res = devm_request_irq(&pdev->dev, drvdata->db_irq, >> + altr_edac_device_handler, >> + 0, dev_name(&pdev->dev), dci); >> + if (res < 0) >> + goto err; >> + >> + dci->mod_name = "Altera ECC Manager"; >> + dci->dev_name = drvdata->edac_dev_name; >> + >> + debugfs = edac_debugfs_create_dir(ecc_name); >> + if (debugfs) >> + altr_create_edacdev_dbgfs(dci, drvdata->data, debugfs); >> + >> + if (edac_device_add_device(dci)) >> + goto err; >> + >> + devres_close_group(&pdev->dev, NULL); >> + >> + return 0; >> +err: >> + edac_printk(KERN_ERR, EDAC_DEVICE, >> + "%s:Error setting up EDAC device: %d\n", ecc_name, res); >> + devres_release_group(&pdev->dev, NULL); >> + edac_device_free_ctl_info(dci); >> + >> + return res; >> +} >> + >> +static int altr_edac_device_remove(struct platform_device *pdev) >> +{ >> + struct edac_device_ctl_info *dci = platform_get_drvdata(pdev); >> + >> + edac_device_del_device(&pdev->dev); >> + edac_device_free_ctl_info(dci); >> + >> + return 0; >> +} >> + >> +static struct platform_driver altr_edac_device_driver = { >> + .probe = altr_edac_device_probe, >> + .remove = altr_edac_device_remove, >> + .driver = { >> + .name = "altr_edac_device", >> + .of_match_table = altr_edac_device_of_match, >> + }, >> +}; >> +module_platform_driver(altr_edac_device_driver); >> + >> +/*********************** OCRAM EDAC Device Functions *********************/ >> + >> +#ifdef CONFIG_EDAC_ALTERA_OCRAM >> + >> +static void *ocram_alloc_mem(size_t size, void **other) >> +{ >> + struct device_node *np; >> + struct gen_pool *gp; >> + void *sram_addr; >> + >> + np = of_find_compatible_node(NULL, NULL, "altr,socfpga-ocram-ecc"); >> + if (!np) >> + return NULL; >> + >> + gp = of_gen_pool_get(np, "iram", 0); >> + if (!gp) { >> + of_node_put(np); >> + return NULL; >> + } >> + of_node_put(np); > > gp = of_gen_pool_get(np, "iram", 0); > of_node_put(np); > if (!gp) > return NULL; > > version is better. > I'm sorry, can you elaborate? Are you saying I should return something other than NULL? >> + >> + sram_addr = (void *)gen_pool_alloc(gp, size / sizeof(size_t)); >> + if (!sram_addr) >> + return NULL; >> + >> + memset(sram_addr, 0, size); > > Potential memory corruption, you allocate (size / sizeof(size_t)) bytes and > then write size bytes. > Yes, good catch. I thought I'd fixed this but missed it when I came back. >> + wmb(); /* Ensure data is written out */ >> + >> + *other = gp; /* Remember this handle for freeing later */ >> + >> + return sram_addr; >> +} >> + >> +static void ocram_free_mem(void *p, size_t size, void *other) >> +{ >> + gen_pool_free((struct gen_pool *)other, (u32)p, size / sizeof(size_t)); > > See a comment above. > >> +} >> + > > -- > With best wishes, > Vladimir > Thank you for reviewing.