Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754286AbcKATbB (ORCPT ); Tue, 1 Nov 2016 15:31:01 -0400 Received: from mail-bn3nam01on0041.outbound.protection.outlook.com ([104.47.33.41]:20544 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754206AbcKATa4 (ORCPT ); Tue, 1 Nov 2016 15:30:56 -0400 Authentication-Results: spf=fail (sender IP is 66.35.236.227) smtp.mailfrom=opensource.altera.com; ettus.com; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com;ettus.com; dmarc=none action=none header.from=opensource.altera.com; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=atull@opensource.altera.com; From: Alan Tull To: Greg Kroah-Hartman CC: Rob Herring , , "Moritz Fischer" , Dinh Nguyen , , Alan Tull Subject: [[PATCH repost v21] 01/11] of/overlay: add of overlay notifications Date: Tue, 1 Nov 2016 14:14:22 -0500 Message-ID: <1478027672-4857-2-git-send-email-atull@opensource.altera.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1478027672-4857-1-git-send-email-atull@opensource.altera.com> References: <1478027672-4857-1-git-send-email-atull@opensource.altera.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [67.164.136.211] X-ClientProxiedBy: CO2PR06CA030.namprd06.prod.outlook.com (10.141.242.30) To CY1PR03MB1519.namprd03.prod.outlook.com (10.163.17.25) X-MS-Office365-Filtering-Correlation-Id: 5dab3343-10aa-4617-b983-08d4028b62c8 X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;2:XotbjaJLgtpO22Fv1R/V+mSYESfq5vHdyq7wHQ3uSWF1+Ttvj82AVteODVecu9R+rS6ZnNwi6//+QjUz1BIWuJW9Oyumdy4Iu7KEeebDWQOxPVQHCOPD3RKFBeVS3zzB2b+LHqn1RAc5wA2kgFK0aHLwQHs2m/On/FH36n6E6nI+O4jn9gjz2H7mSwkf/br3EJS/07kgavATlazeVOv35w==;3:K0rnjuOkqELv/IRTgNp+1kVmboQpKpyDwbc1J1XHczT2fSrRxjUowieIddI+3boCCEL21B8AxdFW0GvD9AijeoV6cWyBboHNgDr9rgAi91Fivm/oiBdLjXWclON0aD0AaorGLzIFCjuwdyssfsrNcA== X-Microsoft-Antispam-Untrusted: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1519; X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;25:fy3Zz9o9IpckEfNfEsvXYasMx58kwIWKrqem7ZAhw8Uin/9a+m2drJMbhKGAIbO8ZFP7CNEilWxcFTAgAgLsDe6oreftTLOTuraVcf9igpXpdfId3/3JbclYUaqQYhgf3uejnZvkWtRJV0hYx6tOn4zoEYlKHPvM5rGJqgqxsKwKJ7l2criI7CLKxoy5jmT31Uvb91fo681IZb07TKmcVv3WPy3HFFbY0R4TCQDfpaYP8wZ0hyH3gr9xvFsgA5x5/wHFAH7KU/OooFWGZukhJeYMqgjDOMl3EqSRaFnP2yD2vRL6cg83GQgUZbkNEa2ZGeorM1OArgOL/z6xK8iJqa2i19FxL7hGbISa8ESQURr5nPsLDMb4WQlMyevrzvpy4itNF6GbYPZxD8iK7zzVAUV1ibWZP5IuXhhHIriENGgSo1/JSExONBUzHPKJGQonsT0CZC9VWB4f3gXlwG3sKxaHUuxFn6CwE0mMtZTmQ9EkBIIWiwYmCcLCA4K8PVSxXDHyLNg7RvhqTHCDaV/S+fS4zAng8hoc34eeCfNzGcH6THJ5XUrGUuBWR67oH4BjQTdD9kI7x85EBVsjOhhUfJFAvQUkdZFZdg0oHNs2JMUUm3Q2N4wu0D4iDrXG5YrSk/VSwJIhHzf4oT4HyRCEkkZuoZ1tRiYfYlcbnYXIu7xua3fIHUnvRHe3Tl4lc0oT4QgCa/J1tnLhWUrkEdjjdccykughV5XjO3s/G5m+VuSEReiWEoro7XnsXNZcz7i3lvgNMEBxzuIb3hOQc/XwMYTnQWdzTgngBH19p2cUQIdMmgl0cOyJKx+WLq/gCK0d X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;31:0wOpePPmM5aJEqbXtPLdiEISWkm4wCo0CztM90yDoZghEpOT5bsVVOpqMFSRHm9t5216xBvp0/+Bu1nCmRctHkYXvwKxydDJsZXT69c0057r5CH9YEJ2Z+kwpIJHwc2KfUbd2/WRiC1c9hzQRBB+Lsl3ZL7kpZKMiEmXflhzktlVvaACnPwoUUASOIbDKFeafpUpPYD/Tan1pXItNw3IN5kpmcgbOZh3foQbxh/5mtWkLjdthvgsTz3TxlStveo1LGRrovYrWqNdmhj8/4kso4+vwDoFT+horXSk8gWoAjI=;20:lqdXi+GRc6Bv68vCocvuusppXEBLRqAJbo8++9Xu08t6NqX3oXRM/pZU6ojq770XL6QH9Om00MLnAbHEYH0BfQ58XbT9gbSKKDUequdzDgfaq4yrfjhzKVWY2/sPXeNvpLchoEUEQG5vlD+biVN/+mofx5v49ptVUw8dPWpep/A= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(80048183373757);UriScan:(80048183373757); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(6045074)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6046074)(6072074);SRVR:CY1PR03MB1519;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1519;BCL:0;PCL:0;RULEID:(6040176)(6045074)(601004)(2401047)(13023025)(8121501046)(13024025)(13018025)(13015025)(13017025)(5005006)(3002001)(10201501046)(6055026)(6046074)(6072074);SRVR:SN2PR03MB2302;BCL:0;PCL:0;RULEID:;SRVR:SN2PR03MB2302; X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;4:rByGUrwLLbCvQWagVOqGI4TGuNtVaYE95HbbGyTKXwaVgEjb/s6PIyg4ukkr2qgFOIJJ8G+NUwyY74vIxEjTTgHS3eWbI3rh3m1CHOIUGMZsaJLnw2Mg4VE4JlY+nXdcQVimbbh4nGAudWbPhHxup3HPupTlznfpHu6/TZlgD2Hg9n3uZnUHzHM85V9G+qTHHmv18byIHix78SVSI0Pf5/zF53OU2xOdqKtcHZZfo5ez1GfDMmdykBAkz6IR5eEVPxCluMl0SaVASDHad3Mph22ai79+i/Uf4MGVEeS3hdMTISJXv/fKTfRq+wQTDFluF1dPWJRJ6xJDqyJi9Q16Pjm2VdvBkUsTfD4HslsgVZjIHHiI7221W1YTJ2/9MQI+N0G/pdoAlwxOXfeRG4a2yeyPIk8pvCb8Yan/87rSi7Io3oszBouCid5ugP2mynY4F/VZkYTcKN904S9LJkRA2yrKKS0P9AobOPbAjV1xErGlWS8WOCoSY2jCldjPR1BqfroAL684SnzrX0FP3hHlXw== X-Forefront-PRVS: 01136D2D90 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(92566002)(3846002)(77096005)(7846002)(19580395003)(19580405001)(6666003)(68736007)(15650500001)(81156014)(81166006)(4001430100002)(101416001)(86362001)(8676002)(5660300001)(76176999)(6116002)(305945005)(50986999)(2906002)(7736002)(33646002)(110136003)(66066001)(42882006)(42186005)(105586002)(47776003)(107886002)(5003940100001)(2950100002)(586003)(6916009)(229853001)(4326007)(48376002)(106356001)(50466002)(189998001)(50226002)(97736004);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR03MB1519;H:atull-VirtualBox.hsd1.nm.comcast.net;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1;CY1PR03MB1519;23:hwLV7qhCB7RCQuocPqZODH+0dXYB7XBgcYTGuTVJ5?= =?us-ascii?Q?jyPDr4LNIoLGnLznNZa14RmVM7rGGoROBqUdpfXSQJS3yRs8wbJFrlc3Spn8?= =?us-ascii?Q?TH61VcfpIMlkLLTTaA3dU4yxSvVndjmAGt/E1Qqm1qKPec0KCo3uF1Qq2VJu?= =?us-ascii?Q?3YUCmiZx3VgSwTqFx8Zw5EUq9jSyKIET+/d0W8YAXeUzV+byGvYPR0hlHVgW?= =?us-ascii?Q?k7VgTv0zbjrpEcHmUyKBdxYyyoSlR5TzrfETtc8QiuFDs3yHNDviRTfcyp8H?= =?us-ascii?Q?1AUWom/Wri7C1ye5ucM3CSbA0rlCXzwDEKzztvoA+37F6oRp7k8ZYGLGugz6?= =?us-ascii?Q?E+oCuj0bHmry36X70JlJ20KCW+Q8sBET+fxoF5e5Pn4qBOZP6Jf8IpCr15bi?= =?us-ascii?Q?9/yKRtZ/vsXF4odosTyjedCZIx1rUrsWl+z+Sij56KgAZMDQTw3pwMohqeyP?= =?us-ascii?Q?cgWx2R6tSzEqRxqmrbLNklu7fzgpvD+sQU425aqTnOC3vjS4j+pReqTA0FwD?= =?us-ascii?Q?PwWlKMwKBc7l4/rPIRyLpgsjRsEkE2hF4sRf3d0X2oo44dTrO6WIs7zu6ztK?= =?us-ascii?Q?gLqmujvxuagX1SuSOItYEscS4Asn+WkbBfndskBxrmfGbcA0AEVHyhh1dHKh?= =?us-ascii?Q?3SH1nFFVNJttivFMASG9FVYDKcpEL6yREDv76vr1n0ZzvalmecrqoIYrYqpn?= =?us-ascii?Q?FXh2hgZPvH48HsJtxfDl27Xn3ViXQoYN7zglSngzvtKIMuUsDCKKlbJxOrK/?= =?us-ascii?Q?HZsCIdY4ygYtQbwTqmq19dbw+G9VIqBDi085Z38K4CqcBv5xWJr1IR9MGZmG?= =?us-ascii?Q?yYApcHIF4KwsSToAOM1ji9AJJ4kI6rkt2zGKQGtOfFrwhea89uPDDb73CG4B?= =?us-ascii?Q?UyKkACLVMbarRJ7iZEQyjAqTXzmtfes9Bm+Osc/YhFuj4npWh8Y14/tahubC?= =?us-ascii?Q?Ppicx0KxdxLck5dgYSmuqU36pohg9uM7Dtgk49NlhYss2xHAchWmHjI4tKRl?= =?us-ascii?Q?0WbJgKZQhe1xsY2BUr0PL34H3Rl7ImZzkNhFFO4Z7SVCdnI7GmacgHtH3GZV?= =?us-ascii?Q?EKvxutBTfBlfiRfZ47icU/+rRCTDTLEVrZPDDL4Ja3eMvQ8Jl4+rdENUmfvS?= =?us-ascii?Q?KR5I1/WrnuZZyMYa7wAZL1MtKJSY7W7J2b0VTPLmNQtZans4FXuZQ=3D=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;6:23uQCVYFDgNVfUtt73+MqBbOqBlre2wg8N6yoq3eTNFDXIICzXb9wR6R6JPr4J9wmg33Z8RkoCfU9nuWI3M+drB3VfJJgVwAsqYWnm+D7KlbxJuXWFWlviBttMFyncqDWTmp4BPJRuLHDqpZzzxSESHpRVSa+mm94+nkVg0mepYfXEPXO31RsQAuVmavW18s/kkoJ1vUtQe1WB1GqKB+VrZglhr5ZGw+6rDJNguzKFzXo5vvGp6CgDm/xiNEeMF7S2L2qPU+GeVlV/3QyQskmdV0CnSvExbDcfbO3/bLBzu1STQhJ2oNsWqfTFQMkrtVzMVdXfG4i5HjmFWb/SqB8hfF+oL6zaAGWmfI7habjfChPL7Td91e0sltuRirE9U3;5:tQEr7Z916yh87juNDN2Sn8mqiS8vKJCNWGkMHCUzIJtR5dk4vyvTm++BjmIAEFLSdaKrzSki8tWUUC56TN4OHKViDa2BSChGf9WsBkihzBWCK3rXoNn7T3mZ9IAUsZMy24yIiH7jKtWorfhp1eNIxQ==;24:8m3Z6X8toI11bs/T0mmpfcVrGo5YQKZypF7YCmuE4WPuyQH3B+eAb7vLjkQoRnHZfSN/xfMOypa6G+9GrssjBFpWnJ/554HPUtp1tu7CmnA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics-untrusted: 1;CY1PR03MB1519;7:oWuCV+hDesIEB8d75RfjqNrpCiwVkhuH4jEDCGCSpgYJM/fdj4W+JH9uwZ42WMEU2Tx6rGsyFaY/JFe6qgWedtygC04j+ZCjaIu3wJsvTzZYxt6AV/Is4ggN588bR4KptGxaAszchvxGF3OBjhmO3I+J/Dj2vdrYjAfTsDMJU3E0AjoCZAYsXGT8iamI3lt59ne9zGfOLTf6KikQEOHJY0v7hDaX7K3BvPEXIh+9dmSRMnwZpBKm+9JPKTAA2DAHqDYeTEBGbXfrS+tsl1hQVleJ95C16bdsqzpHMvwKjTOD3IcUIFlfGMdoixG8p8n7zGthDlT9HJGoa3MZXjqXI+UKk6dcFYm1+RPzWiwUeRc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1519 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BY2FFO11FD052.protection.gbl X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:66.35.236.227;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(4326007)(86362001)(48376002)(6116002)(77096005)(50986999)(15650500001)(50466002)(76176999)(42882006)(2950100002)(110136003)(92566002)(586003)(6666003)(3846002)(5660300001)(956001)(97736004)(6916009)(107886002)(47776003)(6070500001)(3720700001)(105606002)(106466001)(336002)(66066001)(229853001)(19580405001)(19580395003)(626004)(189998001)(33646002)(50226002)(5003940100001)(8936002)(81156014)(2906002)(85426001)(356003)(4001430100002)(8676002)(87936001)(81166006)(7736002)(68736007)(305945005)(7846002)(11100500001)(7099028);DIR:OUT;SFP:1101;SCL:1;SRVR:SN2PR03MB2302;H:sj-itexedge03.altera.priv.altera.com;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD052;1:VVxUsNTBq9XgY53xVuNFThaMb/EoHML5SbLBSkV9WLAvBd7ZVVfXOkqcGFhm09r+FvzgJfL1uOhHUy9c3vK1is5GiXz2APkB8NMRUVYU3epgJTlENBmObzA9qpac7mSqT2dmNyQnUpNA9ZQUhLen9h+CBD1npgK6nErs9+JAgxSyPwrQNqNv140i8xoPvm0JKzQJi3j1AFF9HLGoN8vzJKWCHsE8DkHib72g9dYvyaeZkCmJSb3iawTLsu5MCKvB77v3+h+chCpYhGYnGxLPPk6CgGYwLr6S+vHoW3+25y5zzY3Pp0LkyX/yY51vN/3Uy0DZiOC5GXX9I5/78myGIRmcI1beJYuNkaCV/4dlZq1DfW56cNhGACXcO0nRTsANZ7i7akfbTmSQSxCGk+nvbMhBRXYbwz9B+dQJ482CHdpkZr2KXwA1XcvuvoPOaXh6JggzxelTXUjrYohf86G8TR/it4Fh9vEbJOBvyVCgWiJerv6WqyWpwgJ95oO5ro0WZ00KI4vAEoTyKn2BDnazNdtBaIhbjPqJ8bwkhHtgdighEJj5/CqlYz7Y//aH4U+jZkDOhNG2Tt3cn/HFmT383Q== X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2302;2:/9cwFXZQ8QmzklrcPxkYqv9DgEVueuuqkASckbq+wnwFdBeb/BAZco/kHs7PyAXYLs5VJY9xZdy+M+B+ZJ8eRK2JY4O8y8pPVzfgp1gRVaV9UiFLjM3tJ8Xqm4bY+3h8CA6E11kGcmziRY+xAHhjG4T3wzOVCvh9J2N8q18IGe4fuTFBMU8++BtHNxtJHVFWsmF7LD4oIfnGCgWKPxGgKg==;3:AHTxQ5LXT3PB9viJkQwVC4f2SdMAyd/Qm7I4+7hx0Yu94WXMjlylQ+1HeNx5PoPkh6+MeQSEidUcaymOF1c85ySxhH7qyrumQ/d8A03tHV/gmlZzuBdpg6ZLGDCOTPvb5l2YOnaZaRao0kbXCQIQSDD9kuUNrsCQ5osuU43GdeJoUwLKVsZ4RWudbypPSsq3xIOB6vAAN582FlDAKu+sXjpJzHR4MP60cQ+N7bLqKtp8v/Nc+n+psQtu1a7wsVK52VW4MBvIjzADsZOPmx6mpQ== X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(3001016);SRVR:SN2PR03MB2302; X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2302;25:3pqaV0jO8uNUuTqLtcNu6Uqj4Jn/UauyEFkS60aG/DPSqiY3d1dLFw6Kes6Vc09DUjoTsSK2CP6iiKuwgIeTNl/MOzYhxq57g30a+HxgvCi6cOZfP4LNOzm+abKDo8iHwDj4Lk3AIepV/pW4FlHIRco7L88E9LbwHze7zet2cGZ6I2otP45PHwtNJ5FuJSdwL5OJzTMHZTRfPgt8Jnz/N4WhocHjag/aMGKJQToRALbuQv2hc0+31oNGRJHvZ5Zry3ANHFInCtaZDX4vZlOwyFGh55Q5naqdDtYFer7IU1mBfI4p2EhktLvghQFF9KW6DOsTx6atFF+D5UgOqxBfDinWreQghkGPXdR7k0cb4zf1Eo6jOpw/I6om0gonvDBIhGhkWjpuHwIIH11mkDdQCcnTO4bc7uX4E2eEfCyUV9R05o3QyLRjTkrGnFEEaxO6vdGeWKSfQjQtA7eRADn73QyYX1vAK1PdxUW3lOMY7Fom3lU1x1W6Vbf4Gn/rM9rCpdTrexcza8wIWgC1MUjo2VNz0GLUpnTIo+FovM4+CRxId2/QrpfmT+GDTS7wyv0IgNaD6nXpEqZ0cu25yJHAuLMPa4hUUZhOkcV7zFrRYgem/ntU90cfGV4Wk7Nsx09UcnuCvL6ntQNQQDjgtqjxNRQGlMMvXVOu9JpMkBL4blGokUbE112GJCN8wrQmJyyti++jWHOtjq1/kiv3OayY/4zzvMxpIzTLyql3iR4AJU7WBEELHeJafDDHk+LotS4dEUgyJtXpn6+gkZchYMmiyvMrRwMxmryikwAQWX4lwR0FPHbMFEdgNo2RNMs7LtFMrQYi7/KFZ0TsEjPI3pTshQ== X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2302;31:DtpBw8zXGYCVpNN4izMrVeLZLsy7PRN1YfigalpjOHIyuIDuIhXFQqUYOqfoNRbvSJpvt6X0SZw0zegB2nIiUSGIdJFx1tWGdXcNZ6wJk78NOceDMtStXp7kh5+jmP8kjlmaCEAGXlkKqrkdjwNX+xNcp2plfdAWoflX514ny7NuNvKg0ksAoT2Dl4dwmjmfhbb+RvgwFAOraJGZCJKY8fxrFVa7IniRaM6VacAvtCXMHdSD97zhF5V2tdjASf7MKQHccmGv4vT0XqZGm2oGAw==;20:Y7GWroFzm6OPd9kxExX5mnclGNeKygkYFub12LY9C1MegZ4scUh26zJ5Yy6EudLNCyUV7wXe/NxKkVUk+LTJgoXNgTIHj8EhnyT6V9bivy44pKqeKu6jwd0fH/u/K4dCogGn7FB3iQo3jr0deSmJGHKc9C/ZsA7MhyxhPhaSgO0= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2302;4:QGxBPKWq9id/P+4MtupuO9CSTokjRCRBkhuleNiPXoHSlLGGPtuFAY5y/sG7vgN9EeP8whw0+4OKjB2OlcIlsW1za1NE0+Wkf6zXhBMe95ponzYcMRt7oKPcHthaGHQs+6klFi03R1dB0WOE/rpn4zGO/CCW+baQvaKh03fMj1l06EETkExzZCOCnp1nJyYCTYVqJeErQYzOEzCoZ8b6mY7IbAuuMwNtBd1zWTIlmwrF075zXEEvwaL7g/KuW1biAypOx1Z78VNcOnEQENAv/0mZ4k5Ruz9zFlx/+KEnOXSY8pobxU5YLmyukVNXvao0087ocuMmbOUJrUw1M6UTjERSB+NITwvWYmoQEoNsOkRoPflhuOjM48hT0/LyvKPbnV7RpFKUOwsKjvZN/2SrjL7JdnBOO6eR98MPbPhsw6QuHYencQxg1UFA+wWgXAgdLo34iSOUaMYjiT3AwjI8WrpsGhsYXifOGEBqajPVkF8pG8snyZEv+rF281rnG/ZvseQGNY5pApE8XOACyx8ns75w2llVOvG5jzE3nbpISdE8b6fnXbJCtsUEaqMJ/CnSanml2as6zgyocmgdh0ZRQH7KerQX+cTLsnFyNVtD1G8= X-Forefront-PRVS: 01136D2D90 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN2PR03MB2302;23:SNSBzo4VXfbsNGJYzwWV/YeJn45/mSH9WLPkn/0cE?= =?us-ascii?Q?C/YHSImzELe9ry+SPdco/I13EE9UmigqTBwszHIdiYGBcfTQBiR/w1+uXshU?= =?us-ascii?Q?B0253+O5Z+N6dtplkiUWHxWkxer3qkyfG6pbCHQwBd9Do00aP/bTzdHPkhqy?= =?us-ascii?Q?iUg/ono3U/8bd74ZlsoO/NSOvr0gxiJAdi1n8xZDztEtoEIi0qYNjATWFkSe?= =?us-ascii?Q?cXDSbqXffkrUNBCQA4EKUuqjvNJuagPsOsmEiB3PycrItb6bOmiYVsU1rMag?= =?us-ascii?Q?g0ipRMtBl7+JTgZqxZddM56b2LKLsW4vvbO7fCl/DRH65iGTf452mtBgDVN8?= =?us-ascii?Q?+XrqR0T47MFHecR9zBote22QkpeQXTHhjJEss7GSkHC67VAmyku+jzmmu+2w?= =?us-ascii?Q?mejuRBigK0CrGiW+7O6+eVHaN3t0f8CpK3FVBn3TqUlLQrADCqA0yGHaKh6/?= =?us-ascii?Q?EmsgIZKgqRhhmVV+azMMb2tuXYMK2SJ32Ch8oJIJTySIb+u5twnZ2hqQTyQo?= =?us-ascii?Q?S9AD6PgNZeBLVI9HYSGDsYSi7waP8nsdgDkVE/bPmpHTOPDPUJFcfcFQGc1W?= =?us-ascii?Q?B/e8V19Uunwo6qRkB22Syo1XRk92jy3VYpDj78X54T+KFnv1g70zlaoCbMoq?= =?us-ascii?Q?OnxMzqQ1LgJaynwAPv2Dyzlk+CB0y1TZgyK8XkOrlPxvOKSxJWuZAm23UumW?= =?us-ascii?Q?vXxBlHgMs1m/0loR7bxz13b5EH18wFMInEY+37jS8DqAAYOY9eynEBOLNxBq?= =?us-ascii?Q?plbqPZ7gLSSrcyit1Zzvs1fZ3MNGDL4p8Nkgr/yrp6KbPG8+p7l1Otv8Dhqm?= =?us-ascii?Q?t7kcfBK67UjP2ladID+0z5F5z/dHfd0i7v/0quCJ7t4oQ/tfQh2eTCx9cIl6?= =?us-ascii?Q?dJU5FoLq7ttCeWCPHvEfBf74SmE5F7BCycPXt94A0mmiH6x2KOJDgPGQx9c9?= =?us-ascii?Q?e/E2iuaGMATbsg8CKzTR4DrALHlTZNHiTAXFn0NCDW4IUqL49eprtTGMhSBY?= =?us-ascii?Q?XfWp7bmD06384pi8dMG73/QAPCa5GU0WmNn9c3BWixumytAzpCsuEIMPF3zp?= =?us-ascii?Q?zAdG5NY0Ap4aTWLpLYaOIqfmqx1e8nHFR5T+LisD49RQXyaKs6GxerykLpFv?= =?us-ascii?Q?fqSzPN8lSa4pHnbX12pLMvxytagVK0bf4sPd1ykZDnsf4IrOstA77SDugfRm?= =?us-ascii?Q?LVbM2jP2A1QyrxtqMuexTcaY/JE+E2ZVm+bqdmCIESYkVe/EwEJHNq2DTAT8?= =?us-ascii?Q?XAqiAzF6g6Lue+79Jh+3kZpFC5o6mA+FenJvvtMTisRWWKVZ+W6NFyX8+IVf?= =?us-ascii?Q?UCEBHAGpLQoqEO86DDSefuTHgD6Oc4FHa8CLw5kAEbYf1aIgzceleMd+oTGQ?= =?us-ascii?Q?ghNGqd6Dt7lGTxA8HanlSccoRAhaknCeYyxVKCnSL1XK/U+?= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2302;6:VkudU1ik10aYIrcvAPIG4jM4b0KUFwKX12+rqAFo2I4M5jr8WqcdtlYuZmQLEn7p0jAATzAOQPvendM9nVxV2E9e2HFq0QpAnUSMzHRo5fnL7ICPAr06laAzB8BQ7pt+61CGQLVENZiSknFganJRLaTezAtGKg+yKTUWdhkl0/CeKlbrsIkOx31MVUwr/hWfqgCz2x2rMHowDTp59vHtSj0uR8eBbVEW18tJUuk9PkPHXxa0kmYbUIVXIKVIE77PmHDopSGy04Ghfs8Qykf3POvuWuIwz0mZOh6vy56tSP7rSBTWk4xPMejWc4nvBmofEVJ5uC0QRj2XYWA4QifMz5TvknlUSo6OnlbWa8yrTd5yOB7NeeD06Xt3MZz/DmeQ;5:MmkOAEmV9d6qUsuViN0ASLYGjXwlXZ5ZMOBXs17OgXXBTcxcyNzFe8DpWxI3Px/RqfDPLE4G0PcdUCPrUmUW+iY+AEIQ8MDaRtOgFy+x2CI+YRxUXEgNU1DDtLgPNMENqGyDyIuhYsIteXrTZ8g2YA==;24:f/hNicP8hGJET5zdKPr5cOE4RQUqGhhPen5b5c4c+gieK86681jeY2AtSXaPPPPQZhiVy8wHb9OtCr+2CTOmLShs1CpRe2GerHMNC4t+lWk= X-Microsoft-Exchange-Diagnostics: 1;SN2PR03MB2302;7:HOtkH+oY3kQeJVW4QCqk/Pn/mSKIv7GmSpAj1WIuEQhidE5ycUUJcRFVO/x5BLAwqKo/Eu3ZBEl+CE53zdpsfGuqSWIa/JHHx1u6gpy27w4twdYOrJ0DjH2SxHwfQMJFJZHlABh9CZwWNz61UXcR4MXkYd2BeQYFiKhZ5PmQsd59zzzyJc2Zj4mwMcJxSbVHWrMmHeJZonS4s1G5gVpdYB6CMQt9ovX1Bw7ssqr7aOfUIGQZX0XOxatyLNdPEIuavaNepASkKtun62p9+88aXnJKC9gce8FpjC4/uWvH8rYtQ7K130MFxTTOufkCvLAiSlspPsvm/huGKBUG+495aQ== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2016 19:15:02.9174 (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: SN2PR03MB2302 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4826 Lines: 174 This patch add of overlay notifications. When DT overlays are being added, some drivers/subsystems need to see device tree overlays before the changes go into the live tree. This is distinct from reconfig notifiers that are post-apply or post-remove and which issue very granular notifications without providing access to the context of a whole overlay. The following 4 notificatons are issued: OF_OVERLAY_PRE_APPLY OF_OVERLAY_POST_APPLY OF_OVERLAY_PRE_REMOVE OF_OVERLAY_POST_REMOVE In the case of pre-apply notification, if the notifier returns error, the overlay will be rejected. This patch exports two functions for registering/unregistering notifications: of_overlay_notifier_register(struct notifier_block *nb) of_overlay_notifier_unregister(struct notifier_block *nb) The of_mutex is held during these notifications. The notification data includes pointers to the overlay target and the overlay: struct of_overlay_notify_data { struct device_node *overlay; struct device_node *target; }; Signed-off-by: Alan Tull Acked-by: Rob Herring --- drivers/of/overlay.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- include/linux/of.h | 25 +++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c index 318dbb5..0d4cda7 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c @@ -58,6 +58,41 @@ struct of_overlay { static int of_overlay_apply_one(struct of_overlay *ov, struct device_node *target, const struct device_node *overlay); +static BLOCKING_NOTIFIER_HEAD(of_overlay_chain); + +int of_overlay_notifier_register(struct notifier_block *nb) +{ + return blocking_notifier_chain_register(&of_overlay_chain, nb); +} +EXPORT_SYMBOL_GPL(of_overlay_notifier_register); + +int of_overlay_notifier_unregister(struct notifier_block *nb) +{ + return blocking_notifier_chain_unregister(&of_overlay_chain, nb); +} +EXPORT_SYMBOL_GPL(of_overlay_notifier_unregister); + +static int of_overlay_notify(struct of_overlay *ov, + enum of_overlay_notify_action action) +{ + struct of_overlay_notify_data nd; + int i, ret; + + for (i = 0; i < ov->count; i++) { + struct of_overlay_info *ovinfo = &ov->ovinfo_tab[i]; + + nd.target = ovinfo->target; + nd.overlay = ovinfo->overlay; + + ret = blocking_notifier_call_chain(&of_overlay_chain, + action, &nd); + if (ret) + return notifier_to_errno(ret); + } + + return 0; +} + static int of_overlay_apply_single_property(struct of_overlay *ov, struct device_node *target, struct property *prop) { @@ -368,6 +403,13 @@ int of_overlay_create(struct device_node *tree) goto err_free_idr; } + err = of_overlay_notify(ov, OF_OVERLAY_PRE_APPLY); + if (err < 0) { + pr_err("%s: Pre-apply notifier failed (err=%d)\n", + __func__, err); + goto err_free_idr; + } + /* apply the overlay */ err = of_overlay_apply(ov); if (err) @@ -382,6 +424,8 @@ int of_overlay_create(struct device_node *tree) /* add to the tail of the overlay list */ list_add_tail(&ov->node, &ov_list); + of_overlay_notify(ov, OF_OVERLAY_POST_APPLY); + mutex_unlock(&of_mutex); return id; @@ -498,9 +542,10 @@ int of_overlay_destroy(int id) goto out; } - + of_overlay_notify(ov, OF_OVERLAY_PRE_REMOVE); list_del(&ov->node); __of_changeset_revert(&ov->cset); + of_overlay_notify(ov, OF_OVERLAY_POST_REMOVE); of_free_overlay_info(ov); idr_remove(&ov_idr, id); of_changeset_destroy(&ov->cset); diff --git a/include/linux/of.h b/include/linux/of.h index 299aeb1..d72f010 100644 --- a/include/linux/of.h +++ b/include/linux/of.h @@ -1266,6 +1266,18 @@ static inline bool of_device_is_system_power_controller(const struct device_node * Overlay support */ +enum of_overlay_notify_action { + OF_OVERLAY_PRE_APPLY, + OF_OVERLAY_POST_APPLY, + OF_OVERLAY_PRE_REMOVE, + OF_OVERLAY_POST_REMOVE, +}; + +struct of_overlay_notify_data { + struct device_node *overlay; + struct device_node *target; +}; + #ifdef CONFIG_OF_OVERLAY /* ID based overlays; the API for external users */ @@ -1273,6 +1285,9 @@ static inline bool of_device_is_system_power_controller(const struct device_node int of_overlay_destroy(int id); int of_overlay_destroy_all(void); +int of_overlay_notifier_register(struct notifier_block *nb); +int of_overlay_notifier_unregister(struct notifier_block *nb); + #else static inline int of_overlay_create(struct device_node *tree) @@ -1290,6 +1305,16 @@ static inline int of_overlay_destroy_all(void) return -ENOTSUPP; } +static inline int of_overlay_notifier_register(struct notifier_block *nb) +{ + return 0; +} + +static inline int of_overlay_notifier_unregister(struct notifier_block *nb) +{ + return 0; +} + #endif #endif /* _LINUX_OF_H */ -- 1.9.1