Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752879AbcKNOd5 (ORCPT ); Mon, 14 Nov 2016 09:33:57 -0500 Received: from mail-dm3nam03on0048.outbound.protection.outlook.com ([104.47.41.48]:6857 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751496AbcKNOdz (ORCPT ); Mon, 14 Nov 2016 09:33:55 -0500 Authentication-Results: spf=fail (sender IP is 66.35.236.236) smtp.mailfrom=opensource.altera.com; xilinx.com; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com;xilinx.com; dmarc=none action=none header.from=opensource.altera.com;xilinx.com; dkim=pass (signature was verified) header.d=altera.onmicrosoft.com; X-IncomingTopHeaderMarker: OriginalChecksum:;UpperCasedChecksum:;SizeAsReceived:8851;Count:38 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=atull@opensource.altera.com; Date: Mon, 14 Nov 2016 08:33:31 -0600 From: atull X-X-Sender: atull@atull-VirtualBox To: Moritz Fischer CC: , , , , , Subject: Re: [PATCH 2/4] fpga mgr: Expose FPGA capabilities to userland via sysfs In-Reply-To: <20161107001326.7395-3-moritz.fischer@ettus.com> Message-ID: References: <20161107001326.7395-1-moritz.fischer@ettus.com> <20161107001326.7395-3-moritz.fischer@ettus.com> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="8323329-1070927116-1479134019=:2786" X-Originating-IP: [24.206.110.125] X-ClientProxiedBy: BN3PR0401CA0020.namprd04.prod.outlook.com (10.162.159.158) To BN3PR03MB1509.namprd03.prod.outlook.com (10.163.35.148) X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;2:UrSaYER/DzqszWaz2x5WREevZ7OJi9EIHkRbzDTrMIdca/rM4YIhU4RJnH1dmIGiGakVJtaVF+BomrylDdrAzjq1a/FYbvLtwOG2on1xitpk3WJvvpwqOfyI40yS9Dn7EBW3uO+kSzrTQPyBdrTnuJOBlKJZ1pmaCbvBYOVYSho=;3:EY9Z59gwChCkZM0HblFTBdKdTLUe9aDxcgxUdYniuZ/gEMyZtcwWjoN5pVkwEP2KEcvgDw5ZTInaWzOwjtRN6q8IRszRU097DJ+tG98w64OE3WKFSJF1kRusE9kqQ9Mwnj2yDJszHSMRlf1SD8WJIt3VlMTZDduakTB59hxhppo=;25:yfsgmP6i9J0XltsP/2WU7fSOPef73G5EYy16ZbYWXjz6z+7ihHFOAQpanZB0XJ3CAGnslmi/dJrtPB+dOFVJ12Vxn87DcH06EwjXq2SwwVkmevIXoGWQoDSEVZQ4hFdCLuWDEFJvDipKnUrpI+eg2grLGcbze04F3UGRMrD/ps4uIBKmE5aLHZzJcnh+5GtXDlu8OpqWkpTo/W2BdyDbmG5QPrIwzaLPUqNEJ26ajcC08O+SK/1oYBlFkHHGmkpOOQ0izNc+JrNu4y6DNu/oop0ENBNKKNvAUadYqVvtNX5CbUGyQoTdOfqtCTcmtRS5d8OllV/AA73PtT9vE4aDW1OoT/iUpFk8h0PlNxJWYw9w+8QezL35caTeZpBae/Wf6zpxBjnf2gGWuwq6+KB7Cl7qQv9xzSSMld/S/oVbkkeAG/HIUtL0P5SkNgHz7rHFeMUR3b+tfhJjMYBfNvZBdg== X-MS-Office365-Filtering-Correlation-Id: 2c2356b0-5486-4189-a8f8-08d40c9b404c X-Microsoft-Antispam-Untrusted: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BN3PR03MB1509; X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;31:gGjG6mXm4mVG8b+zrEO2DlsFtWwbpRQ3rnK6PhoP+GvAPZgDgntAuZ/MmK2oJHmNQrPOlpJp0TSkJ1wfEGvPFkNUfiQ3KZVlvIEFu911kpRqb4x5B4MzZtWxj9aHADW2UCeeuTM1dJ6tL6zTxPQ553kns0VazP23rK7j3hs/pq0n7/WJh/CcPE88ZlJE6+V/N8rlPHkA6PeNUf9B86lnSZnKDhP//Jx7g6PJLjsSk81rKfZsyeoXlFh/x5nLvwzoXvzvr3/739e89+1QEBTy8g==;20:kcf7nvUab/Lc2a9FiZk7r61FKmC2pTooupkk1XAly27HpLQlcfCBfZsv2KQYV4tzFa9mG5yJXf+14BD51JB1mI1T6sC92TRqxzoDTaupKmce/tNvJl1BijPSoEU30/HQPnjmMBcCkr/VB4y4TwPSj6p45/16vZXRYLdfNM+UDxA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(80048183373757)(258649278758335)(192813158149592);UriScan:(9452136761055)(80048183373757)(258649278758335)(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6045074)(6060326)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6046074)(6061321);SRVR:BN3PR03MB1509;BCL:0;PCL:0;RULEID:;SRVR:BN3PR03MB1509;BCL:0;PCL:0;RULEID:(6060326)(6045074)(601004)(2401047)(13018025)(13017025)(8121501046)(13024025)(13015025)(5005006)(13023025)(3002001)(10201501046)(6055026)(6046074)(6061321);SRVR:BN1PR03MB155;BCL:0;PCL:0;RULEID:;SRVR:BN1PR03MB155; X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;4:wlfxaZFJIp1NPJOv/6MldWNysP4Nld6MgSKaQIl5JiO2TWr7YgJ2AfSu+BSJup2R1X7sN101FqI1VkGNVWsy4XCk6WoT//JuXltFxEICOF85dzd9P5/jzGunJkZQFaI7Br82BXEyDflOUeBvwQk+Y/evxAwYv8YBLQhVVaUm0vFqz5sNui7PYYqVmfoxCh+7VSCqch3WKdtKMGBuCZwqaxLtzdAXkSdty8zGCpAje5A6mAbbt36ea74aYKO0utgQ4mg7PX1GC9mmvWIT0kyNRQ86rl0skCAbgelV/mjMBS5rqAjkFJkHdK6Lq79gpgqAUvhG1g8fboPDSDmnqhBdz597xWQt0WhLRUB42Wl/Dy2/8emAK74A541RtlJTC59OnkL/My7Z20a1GmJ269sJQg94cWmuFaum0kVTVD88O6j65ok6Six9jG+HbJy24dWbeYpYhavzggea1/NukeaGNWGiaBp7Beu1TyWC8j7oLkikm3cGvrk+eVI8UFV/bvX/pSX7gm00CwGEkRJXCEhGa4eEikyyyrPevt62+lqiUPBhjXEEK6GnHiMTPaNpryw0Hv5/A8TCkszm1TjqHaOKofG7XzLq9HXOP0WXL7M7LWnLYJxAnWkKTWnKUZ9ZcxQO X-Forefront-PRVS: 0126A32F74 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4630300001)(979002)(6009001)(6049001)(7916002)(50944005)(24454002)(199003)(189002)(512874002)(83506001)(84326002)(60046009)(41446006)(101416001)(68736007)(5009310100001)(189998001)(7736002)(229853002)(33716001)(50986999)(4326007)(86362001)(86152002)(2476003)(586003)(9686002)(6116002)(2906002)(3846002)(66066001)(97736004)(4610100001)(105586002)(92566002)(7846002)(8676002)(42186005)(106356001)(77096005)(4001350100001)(8666005)(81156014)(81166006)(6666003)(2950100002)(5660300001)(305945005)(42882006)(54356999)(76176999)(6916009)(110136003)(7059030)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR03MB1509;H:[10.0.2.15];FPR:;SPF:None;PTR:InfoNoRecords;A:0;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1;BN3PR03MB1509;23:ip62odB91ZkFrtPTiTf+3YdbWaCXFds+91Jl0NBME?= =?us-ascii?Q?nAFr9d9usQPNdbRSe2JnjGhoLU9kIEQ7btCebJiA2EXs6u8hOnVnCbngtMuV?= =?us-ascii?Q?oyjREo0KvxbELZaYL2QC6/ZWLE0P8Aaln6ouItS0Sf910fwE4JolWwQQcAeC?= =?us-ascii?Q?HFqgdsAmK0fwfLaUuh1joYQfwP9afdD93nlQ38bLPD5sEfx63t/WDdTLnNL4?= =?us-ascii?Q?Vu/+fRpW5l89UNqpchMTVIcqZv1CUts+qWfnKFI8QBkcjG4aGjPSMkF4rakC?= =?us-ascii?Q?/v3Wq3cpQOazUD3mNFWjQ7U+FYLd3sQ1oU7uwPRPIplejcGl8Ho5ai1IMUKL?= =?us-ascii?Q?U9QfA2u4E8MgbtUeB++iEG7teA9s5IZEz/3AuYovt/zH7v0IARnB6N+g7zZH?= =?us-ascii?Q?Jz+v9vlCW07DBKrTX0azJ6iaotKOsyRn1QD6JZj9m+JfknYCL1xTDZvD7U5U?= =?us-ascii?Q?t8yplk7v6PfRRqYXfO3ZwqQWw00Uq7OPSjzWEoAP1XBdoLXcfSmVd6ESQp0i?= =?us-ascii?Q?4T+w/0n1y8LLGQjfQ8WA/ym2/MAC9y6yLzpKwJP+hAqqls+GpsUsBxGz6MQd?= =?us-ascii?Q?T50fFGlNz+JbGc1UBm6jk93c6hgpAmX5F7YjOXX0PPrbXufeXdiKjqtaq2Qk?= =?us-ascii?Q?ioMjQ2+5eoyCJI23zQ4yqg4d1UONJdrPnuxT1D+wEVMeVrOe8FOyKEKuN3+r?= =?us-ascii?Q?e1hhH+K0cy8kkKjEK5xIeeGZRNhfRqIBawcInh6AovYEPmoCjOPkBKx5Zsa3?= =?us-ascii?Q?Cb57jPWWYPnv03I/NnAjrXqb0C5OVkyXot2Ep4IMiBdZ7Hlpp8T5mo0yFat8?= =?us-ascii?Q?KIr1QA67YwggGlEMvKkmqgkTW95XLrzP7iH+hOBOCR2I9YzLV8JN1DZtaeFI?= =?us-ascii?Q?I3CIoUyOLxE1NfmprqwmbXVX8mex7MmmxkOLye2g3p0x9nq5PTBg6A1rKQbn?= =?us-ascii?Q?KeiKh3R8B7OpjmepPBpwi5zfBCji4uNo3PQEhpsEx52EA2vppHd61CdrwUG4?= =?us-ascii?Q?l0zZkzkYzMKJhl31rH5KcvQCx274lHeLA5nX9DTP2VIHOLS9qCPv1S8tJuA6?= =?us-ascii?Q?EKSGL/laqHX3Ssn9EYFjbyF39hxuuFcboFZ5DODiiJxZFAD6rpkc7Aqnuk1Y?= =?us-ascii?Q?VbDHCwyKnw7bRWp9WmtGKVmeTSQHc1abM2HAvLHxL2uDHgiiUIAglk84ZXev?= =?us-ascii?Q?7Yn8C6y61sb54R6Mug1C+xrAqdpXa/28+oSQr9NTur8JzAEvY9TONmPtnpLD?= =?us-ascii?Q?YSVzzh83+UZAXOPNI8rgK8MhJxOh0GptcJ1gN71Mh6JIPazosoAufrq70HOW?= =?us-ascii?Q?XZsyfrPdCOclTAVY1urlWCpheQZ4or2/GrSksoprtugX+cuOMwwRcbf9MIKJ?= =?us-ascii?Q?A9+rWDiUOFN2IQHeDDRj6xzRRA=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;6:msSuSKNm/vRWOVRM5t6yFwEGHOQpCm1mXzc84IXZGe/dm34p/unI9RmzHkw5Ej5SWl6wqVY0DLqziP8bfIlMbOGHHMEcT5BEqF1LZ3fnk4c2+TUIN4NzUQsGVGB4mcYCGQuWxWNDd+vttKsveAlyKgQmQObBeJP/97ovqsT22JUKiNGp4cMaIgHhrJmiqLvEMvWInM2hWdPJUYFk0i3BWGaUr8vq0z1YyFM8AZlkmSsYzQzeAB4JxsAqNFdSXOv+eAt05hb8TLljSlPizt6Hv1hgT2suNHBDiQgHg1pTX1LQmtMORoCM0mqV7UDjij5cBjO/2TxaQ8xvx5A+PWGOBjp0lLRx7pdZyoOM7krkwR6+2H3JcyB3T34JAJV7Y8Qt;5:OUQy+bH88QyoJaNdac+NDfCMyoWI5YmOLMXZKy0Ou/rn8T8NUA6QSZ/22VFxXnAQ2GIVH+as9GVTQYQWTgWlRIPo0I8l33h31izI38cfzlkZ1sY3svR8fe/1XfC3HEriJmE0CbVahW7844M7qjgpe/mjkQJipbB89fJUoWXaTcM=;24:sU0Wx7pxCcng9NyoKwk5khrz7CwynDTKgyAWb+65/Z0807onazayPHckzlwaMSsarywbj4iCYwYOkjhQOjqbUSreR9YmZWUSQUHKY9QJG60= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics-untrusted: 1;BN3PR03MB1509;7:tJBGz3cqhpcHuzrYIeyR15nKwLqZtWkbKaqxUv4r573hQ8F17uUulo6Sjbrdo2XPdIIVTRK4Cuyyd4Sfl1RXV9SQRMSBVUlq9t4nvNGV7QdMbySrbXLw6VNOXS+TC1tLhFEchibYeNnv/o6XdYvlKliYc4zYkAKA0rgqqRrxOQ9qcJ60WFcGAHvJSxcgeZ7fy7mY7A3hIFP52CxlRRc4V8KTXJchclNfw59vds4eBGSxqr4pron4ccdNPV0Fe9x7HDBTQ6+FBrzkyfpsk3T+YUhyl83fXs3X218kRz/yruRARFzBAlW1Mf+LkmMx1I/jFKGOeMehczO6VvR2wLphxCtpqTZqCwyBJKeiqN92vX4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB1509 X-IncomingHeaderCount: 38 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BL2FFO11FD047.protection.gbl X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:66.35.236.236;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(979002)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(336003)(189002)(24454002)(50944005)(199003)(2950100002)(6666003)(81166006)(9686002)(5009310100001)(6916009)(8676002)(42882006)(305945005)(86152002)(2906002)(4610100001)(4326007)(356003)(626004)(8666005)(7736002)(7846002)(33716001)(54356999)(50986999)(41446006)(86362001)(84326002)(106466001)(105606002)(512874002)(83506001)(92616002)(77096005)(90366008)(97736004)(956001)(66066001)(110136003)(4001350100001)(189998001)(76176999)(6070500001)(85426001)(60046009)(3846002)(92566002)(6116002)(586003)(68736007)(3720700001)(81156014)(2476003)(87936001)(5660300001)(8936002)(229853002)(7099028)(7059030)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN1PR03MB155;H:sj-itexedge04.altera.priv.altera.com;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD047;1:I+kRlcMwsT3UskkBsQqar57mBhhUw7ZB4rwjkTrfe6pEou+9XsPhkCLnspCVjGBJ5WgjCtR73skjUfERbVn3URouh7/+Efw+erJaDhKbeVSK3rGVpFqSvdKDGunFgOp8uHL8HeVdPP4KEoN1uTgMeuuOoUljv5F1iifTQ03PsH1K5sLXtdXQe5M8z6uiRuuQ43ey/qMNKjXB3UduzbRHnSKJGUyKuoqUMdbs72NcharycUw4UYUcyydbi8l0qD2jVCUtagqNMttQRmchhXhgVehzMMjjry3RjH6NiJSU22Bcjz/q2dogHHdNln2/6t+WAyOTlrUdSEfy8cdYUvBxVpP1+slf07QqcgYpzYEa0q1LSgej7Edi0W8ypmfE0yqE3Vshs0115AP9e+kBzN643jc0dHedi4RIg88gSbH+hdK3qUXszm2oaNqnM6Q+eORgsB/cS1iu/aVnmVIaIOjMuRmk2LrGIVojjbo5NR1+05AYT0YaS6buXd77Ff1IAV5z1AnK4dDIMn0FMmQWUk1GgGLRw15ek9Ci4212/1zYJY5dau7kjECCOcquz/2gB4kcsz+z9atEVwVSN7FWsfs9UoRYHmPanW+Q8MyO8og6oC0= X-Microsoft-Exchange-Diagnostics: 1;BN1PR03MB155;2:Q3K3WTUdyb63tQZbopi3cfyNDa7C13hzGhxVZ3y3N1QgnQUx1wQcnABBYMS54G5m3hS43lcFXeFv54e8i2JHyllAfZJDcBQdRyxSpjXhC+5jxNDbeIVvuzBvAZcOcbj2HgxWIDwlXcGr5BYRgSBSOIHVxYdSRWrzgsrDrPWlp4E=;3:PZN9cpYCBoZ/vbkfELgIkizWyzFBAAR3i2SfQevRhiDTdnauOcCbjWaFgFKMRPNT6RR0ogEF4pxzS+ECpWILprWP39go3CxYde3/QduEHWKyZRPgDYOFZBL7gaRPuGpC0Ll/gJVMfTiV/r84XMoIqXGExz9+TQcczH8pmArUlCcHHilIyBIa8emCR4ufsDczbL+qPrO7Nm7AYFOI/CwJKz5+cwZhWaH6zId4/twz8pzhr6GkmpUBIEt+u3wtHdKMnsryxE6+rg05ozufcMTKfZ7LMsb+CZN2RkmzWMW4x2o= X-DkimResult-Test: Passed X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(3001016);SRVR:BN1PR03MB155; X-Microsoft-Exchange-Diagnostics: 1;BN1PR03MB155;25:9QitoGWVupEdaKh95YEqXxrnXO5XW6BtBXsOFzgIA5iZeU5lZjd0p33F3QUdyYyy9uH2avrjUM9b5rIxX/Exy2pXGApBUgruJOArp+ElP80VESkVjhoWkANA2lCzDlozqLKlwRSo9oYBzPs4ZhCWGuAxzTZ7rjAyDq74GG2DMw3l31kjTLTjX0Xp0TMnKOF/Kk+yVNJDOabmA5x1//wouOgQ9IGtg9BViWVfnbSbD4EghPLIyV33C+bUTTImYuB9gvZIXs6I1lsj7fk1MXGdGQP+AAtdKlmwwZsdGbnw3dTCf4p4V3evU/vL2NpjnFTiULIu7qWKfzYON2aJv3M9ahsUcn4R4+nsg4CT7TZ2wB4Tw03H65/JmMw2uq9iZL6YIIUOB18qiiPeWFSp3MPbK7C/LweXQ8CSPcLyThXMYsbKRBX4PMzYoMG6VM+1F68n7xR6v7NmwL5kNaeN+YTZQQ==;31:E4QaQs5J4PWJPkpwrpVAFULb75whhLGcLFZfLmqvujnjQnGibpSoFaqBPxuf/t/pYcouhMru/wCZKfOXwTCjaUK5nbv1aVcD3EjG09KT622s8FxtmGzIGKoRs9og2ASkXSy6El8tCcucw86gCKjI7lU2+EmR6n2QW+dO5Th1EuHtPle4nIfTsDO6+uvDgVoxy/t2MdeH3E0DiadwfIM3CM+qpLzNlloS/V5tM/IfjJhuAipxLwS2aG4Z2KkLkn0xKV5dAyyqIioLMkM9hWW3sQ==;20:L2KaHg+U7J5Us1M7ejQSyRnYwkstD48M6TRR8aeL8SeLqqyfdVpWgkYf3yltsU4rOrxJD8hk/SoQVOEFJRmk7sWO+i7f5yLBrz1Dupz654MjZ1sCLEQ3vKz/5vmL3TRLlkNU3n09WDOPIYS2xiJyGLK/9++Gii89HQ4IpRZLidk= X-Microsoft-Exchange-Diagnostics: 1;BN1PR03MB155;4:oY1OcY37/VjEmR1hKGOqlN2lQRAcVSpCZ6aCCquKLlYYmwSnPjp0dkQ/hwgl33uRT+3LRVtB7Ys/f9m5bln84kazVT3bx6haEtEG5HR7ztgkt1kcq1xI1PRl0JhcZJbfi7ZdgIG7qcbT5MJSNDFDQasdV/TyQ67ZpUxxu+xs3MtR7L4d7mLqJS+9jipXephTnNdC6zJ5l2PlmdfHcK1HjNlRDA0i+X63QsE+CWXYqo9COpGQvEMtf5aTgYSYXqxfCmZFR/qovqovUL/uJF8eglpHhOulU/U74i7aNUV65XzeqYRlfKIdbp7uIUQxs3rVWKznGSy1cCFcKG1jl6VhnkUeSmT0Raf61XWxgNd723eZE9a2FcUIH5GPgYSZ74Q1FCX5G+kYtrRMwGRqMjRN6PPmsazJdTLFo80nH2++Bcf0mRFwhvUo0LEhRW5kAc8aBmNV/UsWFRcnkgN9FOyWN86SIWgZU8AHGKhAn15fNYoodVBQLChKFHYeW9JiHa2JpqBNri5/+BlR7dO/36bzZ4xn7NSo5OJKmhKHdRUgn/e2NhcPytwgPgJ2bINRGhm2IE1eDP0axqSHWWAU9zb57pgm1zA2HIVv/NH3LI7DkgxQ7rXtg8LWr3yRHxW1MS4J8ZoNyMUeLJDJlV5R/XM3lo9FURb3Sc8Gs3S/L2qDG6os8aCEXr/xApRJgRHVDV+P7Po18XOK+gmL0EyjvRLcBg== X-Forefront-PRVS: 0126A32F74 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN1PR03MB155;23:Rth0D6cIhwWDFIWTo+JuQNnEb0oqLa+JwVBDBYKtz5?= =?us-ascii?Q?wLdQITP4ulZs6luav+6hCWCh66DnG8nVzjI9On2aivtddzH92idn6ISvysxX?= =?us-ascii?Q?ir/vHs5Iema8QRvw7EU6w5HFGOxCdzxV0ixBqwRYtM3flAstEbaAaTtm2HUT?= =?us-ascii?Q?tLGbLYYxfYcx0hE7i/+adm7bfLbt3jnX2F9zLpDk5iyfe3nxbICJLDUU5mYb?= =?us-ascii?Q?Hm2dp0RXHV+EOrF4FDR9t/EEN4duu+QzdQYqiMGRoHSq5KrS+l5XkiXsdLjL?= =?us-ascii?Q?z1Pz+Wosb/wsMcrC59MnttN2Sg2jQYDAZhYz3xLLS0PAE5GY34R3x+MwOske?= =?us-ascii?Q?EGsDjbM+mM2w0pN3APZGzZJLL3hEM9UcHdhFIkXEkbaDgJJqXfGrdDEsnTTr?= =?us-ascii?Q?CnIE+Ct7LS2jGnKAqHSMsLFlWLlsVXpSfslgFChfyuLwCl5P3vSjdQCIM50b?= =?us-ascii?Q?kTp1kpV2QckWi0gMazlC5v23qXuPJXXt8f2jFUQQSXdnWXd1gQSNVA2nA6yD?= =?us-ascii?Q?1H1jfD8Voe5p9zec3vKIAxiy4hqoIvZyvaQfNs5+LGBGyCCGFeNX+kqlURh3?= =?us-ascii?Q?iLFEtXpVZXiX/1FJphUg0ZJ9x07mzys+zqS1JZkXmO34l0kxgW77PLMsuSCN?= =?us-ascii?Q?cZBmTdoz/OGT0FAQt8X12pIyVX7DpfTZpTgYQTjszxvdnZoRgM9FcEgReRLc?= =?us-ascii?Q?JKDcs24/jozDptPSOn9CinWHGhigaqwN4F4ynp4zt/vl3Cdjrq5IOdzYVKvk?= =?us-ascii?Q?L4G9p3584VOqoobijwmzBeB5HVMdBwFDKMx4cP4m4CtfbcUn0Zh5mydRuZ7i?= =?us-ascii?Q?ty1joPnaMzYwZv7y/QERtKCgkNVxPA3SOKhjYevJOEqX1lfgFUb/fq3hPwxQ?= =?us-ascii?Q?DOVgqiR0Y2rPNEdMUjnqkl0p6OBJpGDkS7fw3diXjaHPYrKusxFSPQn2INyU?= =?us-ascii?Q?OPa003jjgIJ9MGG58KEM43xoPMMJCBrf4+JmHLtsXunQvG89ZIJIIIKNMZ3b?= =?us-ascii?Q?eyIhBMOWJGGXyUBeAFSPU7t1oGg2HGqXACDMobnZW1aXusYLeYoby/JLtOvL?= =?us-ascii?Q?X91pRsIv+HcQLk4C+j2Xu4QFjzDhT4kEc3PdKvSUffo3HhrX7WQcHJ58wz36?= =?us-ascii?Q?sYDnYAFuuhlsJooIFdz+CHJ+jbgMctjXjBXlLdPg/bOrwteF1pkxsv5PSQyz?= =?us-ascii?Q?GwblxBGs2Srto9eAB/u5s1mORl8sGBInwxFn1NPLwZGDs0q4R2p/HalnlxAW?= =?us-ascii?Q?SMSyUOnY9VeSfOzdn1Tl6ksu/j+Y6wnnV//CUschW7XzPl4zpBdv5Zi28Zol?= =?us-ascii?Q?Tun3/JfGDya1pUVwPe+20ywJyGz4wRAwCdPnYVgA0dspwcUDC6NBunxHiCRq?= =?us-ascii?Q?PaprzGQnzRxQUoWMSON6W3jKI5MK42WXZt0OjgpKIydrL5/Kck5SnuZDUa5/?= =?us-ascii?Q?6ZatJ25j/VvaPbcjBEmKDyRx1aH70FD8A9ChPglrM3H05ag+ZzpikorbtfSH?= =?us-ascii?Q?NlMh8+BMsgOlOk9so/Ui2m1zf1NhRgJeKRjgrNhdD/Gi5EYbtZutB2G5foqA?= =?us-ascii?Q?DOxlxDFMdww7Jqn270U7eJv5YYPkVT0vlpBb/8lcu1ReqQDuhJ560YXbJJJb?= =?us-ascii?Q?np+HtPkGuTviRPP64TGg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN1PR03MB155;6:qFoUkvypxh4TcjVxGB6F9KJvCmu7FTtpghW0Hw7l+sRIksMA9OQiN33IQa2ttY9I7QPoO6NbdXEBmYsQu921VHVvMbuPSzPi7ar54Y7D54qOL7KyD8bqRRJDb2h6BgSrJthTNJe7AtrKjFEMLHEqX5rghVC8aWAqFRgCm5I/RRY8s8QWTCIdt8tINTgDWfHpGkfvtHlHic9J8yJpOQtyBxguBrJbVuNzC6Gmso+9+T1cZgjalAyoV/VcQ/xm9OBHq9TUp0U8BqPUqg3mGS61tyxQPR4yVkfj/yDuyXsXL/MvFGgSY/1BmXDF95dsRYYeD0B4itXPFS5hQb0fEXz/IJhcJufowWzC3g+Av3jdidVVkR5MPUn9r+qEyrhzO0eQ;5:RLGStAgLuAUsmmMNBpBI0K9Mw1dieJp8EnsHVb74LhKVIH5SDtqPtJezO4xBJZ5mT7TDJNB0lBUAOcQLV/0hb+OAQq70oIlO4kr2LdzCfmh8SndtF2qABukMg6WNbDh2b+6mc/FINNCpE2m6z7kaCMt/HEwB0L9k8UONAh2az68=;24:OLGgQcqLmsBdrZh+zpk+QMWruti9Sl5tiYxUIh+wwZqKnX+VvZXwhl7smAi1LXCnmV5xSNHQfcYC3RLEr9dItC8OG5yMaLxvewlUz9AN6AI= X-Microsoft-Exchange-Diagnostics: 1;BN1PR03MB155;7:Pay24RcTMyur2XS9fx4rtY52r1aztF1chYQjmsh1L1OlKHPRrkEF9hSnFGSjU5IrHSTH56Y4IXnTOsLltMNzRCwThO9DoNneuFN+Hl+ThxE3ABFRbJzUrII6ne4ZYN4rmfvNcZ3q84XrQVMYFMLt5lNOqZXzPi/gD4m/R1H/3X19TcAUV90yVi45KvmddUxRGvdc+LxqljaVytzavFF2otg6LOlw+ypeOsPzHu5ZNdYDrV/yTIs2DR6IQ++LTLY6trCIKKqqZuxasFVWf5k2W8ZvxCIsCpwuP1Mnl50nrP9SDlppmfmGhQ+GDyIOcA+NjYNpvZ0LL8hqhrJWy+vXKQ== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2016 14:33:50.0880 (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: BN1PR03MB155 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3930 Lines: 119 --8323329-1070927116-1479134019=:2786 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT On Mon, 7 Nov 2016, Moritz Fischer wrote: Hi Moritz, One nit below. Otherwise, Acked-by: Alan Tull Alan > Expose FPGA capabilities to userland via sysfs. > > Add Documentation for currently supported capabilities > that get exported via sysfs. > > Signed-off-by: Moritz Fischer > Cc: Alan Tull > Cc: Michal Simek > Cc: Sören Brinkmann > Cc: linux-kernel@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > --- > Documentation/ABI/testing/sysfs-class-fpga-manager | 16 ++++++++++++++++ > drivers/fpga/fpga-mgr.c | 20 ++++++++++++++++++++ > include/linux/fpga/fpga-mgr.h | 2 ++ > 3 files changed, 38 insertions(+) > > diff --git a/Documentation/ABI/testing/sysfs-class-fpga-manager b/Documentation/ABI/testing/sysfs-class-fpga-manager > index 23056c5..d9aee21 100644 > --- a/Documentation/ABI/testing/sysfs-class-fpga-manager > +++ b/Documentation/ABI/testing/sysfs-class-fpga-manager > @@ -35,3 +35,19 @@ Description: Read fpga manager state as a string. > * write complete = Doing post programming steps > * write complete error = Error while doing post programming > * operating = FPGA is programmed and operating > + > +What: /sys/class/fpga_manager/fpga/capabilities > +Date: November 2016 > +KernelVersion: 4.9 > +Contact: Moritz Fischer > +Description: Read fpga manager capabilities as a string. > + The intent is to provide userspace with information on what > + operations the particular instance can execute. > + > + Each line expresses a capability that is available on the > + particular instance of an fpga manager. > + Supported so far: > + > + * Full reconfiguration > + * Partial reconfiguration > + * Decrypt bitstream on the fly Decrypt gets added in a later patch. > diff --git a/drivers/fpga/fpga-mgr.c b/drivers/fpga/fpga-mgr.c > index ed57c17..98230b7 100644 > --- a/drivers/fpga/fpga-mgr.c > +++ b/drivers/fpga/fpga-mgr.c > @@ -167,6 +167,11 @@ static const char * const state_str[] = { > [FPGA_MGR_STATE_OPERATING] = "operating", > }; > > +static const char * const cap_str[] = { > + [FPGA_MGR_CAP_FULL_RECONF] = "Full reconfiguration", > + [FPGA_MGR_CAP_PARTIAL_RECONF] = "Partial reconfiguration", > +}; > + > static ssize_t name_show(struct device *dev, > struct device_attribute *attr, char *buf) > { > @@ -183,10 +188,25 @@ static ssize_t state_show(struct device *dev, > return sprintf(buf, "%s\n", state_str[mgr->state]); > } > > +static ssize_t capabilities_show(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + struct fpga_manager *mgr = to_fpga_manager(dev); > + char *start = buf; > + enum fpga_mgr_capability cap; > + > + for_each_fpga_mgr_cap_mask(cap, mgr->caps) > + buf += sprintf(buf, "%s\n", cap_str[cap]); > + > + return buf - start; > +} > + > +static DEVICE_ATTR_RO(capabilities); > static DEVICE_ATTR_RO(name); > static DEVICE_ATTR_RO(state); > > static struct attribute *fpga_mgr_attrs[] = { > + &dev_attr_capabilities.attr, > &dev_attr_name.attr, > &dev_attr_state.attr, > NULL, > diff --git a/include/linux/fpga/fpga-mgr.h b/include/linux/fpga/fpga-mgr.h > index e73429c..9bb96a5 100644 > --- a/include/linux/fpga/fpga-mgr.h > +++ b/include/linux/fpga/fpga-mgr.h > @@ -108,6 +108,8 @@ static inline void __fpga_mgr_cap_set(enum fpga_mgr_capability cap, > set_bit(cap, mask->bits); > } > > +#define for_each_fpga_mgr_cap_mask(cap, mask) \ > + for_each_set_bit(cap, mask.bits, FPGA_MGR_CAP_END) > > /** > * struct fpga_manager_ops - ops for low level fpga manager drivers > -- > 2.10.0 > > --8323329-1070927116-1479134019=:2786--