From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754141AbcHZPI2 (ORCPT ); Fri, 26 Aug 2016 11:08:28 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:44986 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753525AbcHZPH7 (ORCPT ); Fri, 26 Aug 2016 11:07:59 -0400 Subject: Re: [PATCH] nvme: Fix nvme_get/set_features() with a NULL result pointer To: Andy Lutomirski References: <20160825073810.GA18622@lst.de> CC: , Keith Busch , Christoph Hellwig , stable , "linux-kernel@vger.kernel.org" From: Jens Axboe Message-ID: <8f272cfe-6cc9-0699-6613-49dc09152c65@fb.com> Date: Fri, 26 Aug 2016 09:06:31 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [216.160.245.98] X-ClientProxiedBy: CY1PR0201CA0023.namprd02.prod.outlook.com (10.163.30.161) To CY4PR15MB1190.namprd15.prod.outlook.com (10.172.177.12) X-MS-Office365-Filtering-Correlation-Id: d54e23ae-a461-41f9-49a4-08d3cdc291f4 X-Microsoft-Exchange-Diagnostics: 1;CY4PR15MB1190;2:tSYQEtojUnrjt3xdvcxDnVpfX346OZtt1ccW6bDWuwF1zuwhwxZBNjz/Js4Kd8lSw4xW0WUz0c4cp5sGpSfVyiCgU1dikqgrqrbgGINdDfJewWq2ib1gxvEIMVG5q3ZUg7lIunacot6w/toH2M+plsG3pvmyFkmfvz4ocxd3uGY+A+5+pHS9yozjsAWHs1eX;3:avvJPPh0LXoABcnh8ZhO6Vh1jl58LvqlncL2EaSduEG5Blje3oXEbW7Pf3D9LrPwKG2n1JNohAv0kKnNZUi6b1aXRrJtECpXixDkDNcbPq6o+XKhV2VHZN7FG9ExHMye;25:QSyO2WQ0n+90g2QUznwSaybZVoqFBmc36cNBT6iE+m5mQZwt7AueHh+jwI69jYaNJHNQrFR9sPnp+/9aZhjDbAPnxGcByFLWvzJ7xgaEUAlTnMIGNNwlsid5811jAN7J7Rvt4cmvBBP9Y+w4cJfq5jcvCm9aWYCkG2Ab4ynpzgvGIQM69JtuUaojKCKG9JoFJAJL6bB92ZkND9sD36io/7HHK66HiHhrFmIPHki9U9FkUObkUV98Lrkvsh1fOEFdwtvxiw1ZNRm6iud7iIySCau4s2SQAz1NjYrAlcEnyGJfCJdqjnlO2xo/sanjh3gXh3TeSWYJCzbEonlBKTD124aucMl5lnPpAU+RdNd2x9kQGWu5yUkSP0r2r/ylwP7i2y3TeRdzMIU15ocwnnRK1hS+USK4cLNe4+A4ZpmrX2M= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY4PR15MB1190; X-Microsoft-Exchange-Diagnostics: 1;CY4PR15MB1190;31:VTvbCZCEv8XzDIvtiru0p+IdKXTHFTc9gHcZ4C+1vWQZa8YkgNiOu1tOz8VljME6EF4kbP+BCeasZssZq/G6TTbTtu8e3q79zmCUZHPqdESuE8UlddhhdkgXYRwJBFy5g9hqayQ4P6guPuA8p2ZHzAt/r145nMO2bl0gluS3cAJo0SHxP8+RlC8bU4FnrBOHWJr591X57OcGSoxp85ga4933tO8dGpy8S8yTXQ1xbjg=;20:gJy0HUWyhlTNPFUK6SgLDrlH6iPPVrZmAZfLLnLKNm65ufDIoZ50jAKtDtvKNsYS9+kn1W0nqYs+7LMYH0fXU9KR1z9QS8tJPOvD9dqW3E8HPSWRQ9QdW3cGVy7qlm1WsyZB8QmK493wfDcrApyz+fAZ9EUnCp+TpepOQXQZ44Y=;4:87aghsskpC2S+1g+1H+RTv6ap19cSCgkKQEG+twNeNgTIMdTJKOE7mmha8AhUlUZD5pFs91c0srjlGba6Kzky7LH/CaED0y7U5yhMFuhDasXutGiHYwniOUcvq18Cq5y2bVngrf14WRa8I9jwIzkr4Ffgzt/UrunHvjtbFEzaCaa35hDJ70I7arWpjGkSD/7BGvkydPDYsNfmuyX9kXRUHw6tAWbmf3QH1mVELLeUvBtFPRkvrqcppRgTIX3KOEapjm1cNv+2NqS+03p+F7XQW6p8puVxeHKMMwQ6hHqMD9cGkP84sh1mjLPH6IGfq8n4TjB8/9rdh7lyYY/88j2+rj6u3eyn05dVxhqHSzpSFjf1eN32nHzKikiD5ATqT/gvsJVDn21YPj+wDRTZmguc9Y4KJT7hn1FrZutWkAPIHU5qcnAwWNusrFJy4/AwwZZ6bQ1Q3Aq1LD4Z6QpBH1kAg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484)(84791874153150); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001);SRVR:CY4PR15MB1190;BCL:0;PCL:0;RULEID:;SRVR:CY4PR15MB1190; X-Forefront-PRVS: 00462943DE X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(979002)(6049001)(6009001)(7916002)(24454002)(54534003)(377454003)(199003)(189002)(8676002)(81156014)(19580395003)(4326007)(81166006)(42186005)(92566002)(50986999)(54356999)(19580405001)(76176999)(230700001)(36756003)(2950100001)(65956001)(31696002)(2906002)(66066001)(65806001)(31686004)(33646002)(7736002)(15975445007)(77096005)(101416001)(86362001)(575784001)(83506001)(189998001)(47776003)(586003)(6116002)(50466002)(68736007)(305945005)(7846002)(5660300001)(117156001)(105586002)(4001350100001)(106356001)(110136002)(3846002)(97736004)(23676002)(93886004)(64126003)(65826006)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1102;SCL:1;SRVR:CY4PR15MB1190;H:[192.168.1.153];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjE1TUIxMTkwOzIzOkRyL2tmZmI4VXNlSWpEZ0JsTmtUbFRGT3NQ?= =?utf-8?B?elN2bG5GK09Lc2d1c20vL25nQS9PMzBucU9ZYUd1dWhlRXBKbkE5M2J4ajR3?= =?utf-8?B?NHhaMHE3TEVveG55VGNiVVVxWlg0ZmVIYnBDK1EyTVRyZmtkWTBmVzlIaytZ?= =?utf-8?B?NlVPL0hPK1RnNWtkUDFBcXNBbTZzQ001SEtBTlhQT2ZrZ0NEb1Z3dmFiNzcy?= =?utf-8?B?c1hqQWNIS29kRWVYVnNac0YwM1Rja1V4anZaTDRaeG0yUFBIRHhDUnlMT3Ew?= =?utf-8?B?RytIb3RlOTNVaUpQYmcwQ2x5R0lxUnFOWFFKNndPS2RxRFh3MC81dXJHcUcv?= =?utf-8?B?WHV2cTVHOGoxRTFjNGQxTGlFUjJIWGhYWUFTUTY2djliUWR4UUxZT0FJb3Ba?= =?utf-8?B?RU95MFBGM21MbkRMdUQwU3VKTUEyT2pQUTBtQnBwY3RLc3dEanA4YkU2M01H?= =?utf-8?B?SklxR1pUVG1rVGFZeENUTUNEUmJIaWJ4aWJoOEJOeGlBUEtsbXkzRHU5bVNP?= =?utf-8?B?ZTE0RVl4c1Q2ZDRaR3FLaUcrSFVjd1dXZVZXTFhJRVIrMWN5eUFKVmtPT0ZZ?= =?utf-8?B?N0s5TWFpeGZGZzZTY2E0Y0NLdTdYczBrSndSTUt3SzF0a25VUlAwMUtGQXp3?= =?utf-8?B?aGphKzdiYXBWcExUSlV6cGRaUGU5cEJXaElBVUxWR1Zma2g3WHMvQzJJU2lC?= =?utf-8?B?VHNGRnBPNWM0QndrWS9OeTRhV2Q4bDhuaXg5M3FHa3o5RGl4UVJVd09EMlJX?= =?utf-8?B?V2p2OGswREpkSWk3YWRybFJ1NmY5dmIxcEtzbVpNYlJDc2k5TXN6NDdmSTFp?= =?utf-8?B?Zlp6cmdiOGI3YVk1Q3hrMC9aSVhBdENINVhFS2lib3FmaUNTS1pKclhMQ0dk?= =?utf-8?B?MzlsVVVBb2JNSHhlSXJrd2IyR05kOUlEWEpJdW4xR3dhcnJiS1M4S01MNW9t?= =?utf-8?B?dzRTVEsrMGdmS3FxTWQ1aSsxK3lRaHBDYkdxbzJoRzZST2EvSHhZTEo3cUQ2?= =?utf-8?B?Y0h5M21Cbm85ZlV1UkZGUXBuL1g5dDlFbzYxaVJYa1hMcHo5TGJyZ0NNZktE?= =?utf-8?B?b20vQ0ZPOGVZazV4VnBTemVEWC9Qd3ZBejZZWkl3SGlUOFczcHZFcHdwWWkv?= =?utf-8?B?cVNmTElKTmtWRVJGdnVCdnV2UjJVQUdUNXp3RFlJQmpyL1N1cjd6dDRVNUNS?= =?utf-8?B?NmE3Y0VNbUI2RU5od2w5bitYYjM4aWFWNW95TlAwd3lxdkFtdTYyTFlwc2Z3?= =?utf-8?B?dXFqYkJXNnA5YjZYSkNhWWtWT1hFYTcxeXpLMnlWYzBYeGcrbFhNazgxbldK?= =?utf-8?B?NWN1U3ZUNXRmR2ZFdTA3Q1VpaGFvK2FsVkZ0WW1VL0hpL1l0d2haNTcyeVQr?= =?utf-8?B?OWtIRkp0a3NnVmFVNHJYSHdVeHJHZnRlbGN4WjQvZ0ZFaWF0dDlraWRWSTg5?= =?utf-8?B?cFZadk4vY0c3Q3JweHFpdXZNRzJYYkx2dGM0ZFE5UnEvVnBOcmNweDFDckEx?= =?utf-8?B?YXRZWUM0SzhMOTdyV2JyY25YelhKOGZhTzFBZ3dzc1hFQmV4cWdyQXQ2U0Rq?= =?utf-8?B?VEowVEg1VllZY09BcHZKakRXNEdKeVRlS1NWeW5yN3ZGT24xNkcrM0wwdEpB?= =?utf-8?B?STYwTDh4enhzeHpmN3hFSWhva1VjcktYQWNLaGZMcjVHeGlGNEtWRmpzTkc2?= =?utf-8?B?SDY0TG5CMnZYV2x2alM5dXJ1NXlaTUxkZUhxUmNtSms2Q01QdzJ3T25tSGgw?= =?utf-8?B?T1dYTVlGRHpSTGJvbjgyalFhd0FrQ0pIajRyYmQzZERUWWtNbU5HdXNSNlVi?= =?utf-8?B?c3FwbWVQU1IyMm8rbVFqSWxwK25jR3ZCZ3l6aFN0cFRGQVJvME00V2Z4V1JM?= =?utf-8?B?SThPZmJ6UHorcEF3ZGpMZnpHZXlZM3N3VG9vSzM2OXN0M1BzUlVuVzJ6anFl?= =?utf-8?B?SjhaVm9aSjdsaXRxaVI5Z2EyaEZ5dlc2bHc2RmNHRFpEQXRBUjBJNHlxRjFi?= =?utf-8?B?YXAzYmY3bVNHUFQrdDc1UEJnZkova1B4dmIvQ2VTUDVDa0JUeE1rWndPTFJ6?= =?utf-8?Q?CTao=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR15MB1190;6:7EIdr7TUHnA1NW5BynZsdB8SjrzmdTkYh/6dlm812NHzaH5DfjOvXYwgFtpl2SESXo3vsmQ7VL0QUcCkD90f0l16l0UUDlY/tUR0hBPTDCsybvNe1qgern/K47cEMhpxp2/7/l9NzoE7D67pTlpcKvrV1P6EAj+lpfMmUy/IN1KSuN73Qto6VT9h/FJ4n8Ij+B4BESwri1n7VDO5jqWjIL/R4xgEy9CF3Yy8GhClq/CocvyfjRvYFktnjBKTslO1CbaBBzGHcIfGopaAHC/ADM2+wDYkbmzY0GbT0AdeMtE=;5:AfGfjF1ne8Wnsxa2QrudivOH3umr8P2QqHQdwfPpcPiEgbdd4vUMV2f0SiIvWLS3+tfF4fXaNoJ60uaw4rX2l11tAMcaKozbeh014G5ixumwppPjMK29gDwu8GWh8q7Z/02imOIif5jhI8Uzhkpf3g==;24:M5YC8hFYoXrnxpm0IGKpy3qCMRAgcyzmtXLzGFE/52KDsh4tWZF8LcbkZZWccKDKTobXDpaKfO6o1SUcWI+4/gW9nEpZ1wd28oN8TE1CE/Y=;7:JWwndRmmFDRPqzOjFFEv/BRay82oXHOvw+m1Onp9Yw1E+q1S13JI3iwefGyExuG6CG4AhQUS8Q/VaHzID7s46E9oQxD2OXlz08MGh4wxKUD+kmcIysNtje/BghujGg1kAHTslZmWd4SCUBBO9wHA9wsHWpROv7MpxEpJlFs6BmqsFF7wq6VY5JxVfmtpDFlEb4hAFi6I1Ub0QIFXacejjOgm6RW2mCZFnGwvYg7G61iHz6PxKAerg5Z9dxvDjqNu SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR15MB1190;20:ui2ZHkkQpR/DsIXZG9TCexLrFtfxMMUH4iTMfot+CdiovqqNOVQAbmXwm7sLt4G0v2CBnz11Om2cjwlYYq5TF5CETEUIEPb5rxkFu8b3IdrWl7XmOApqhxIKYNIJaUwsllgMim5exwlsTdl7/+vfzafLAcYI8dPGN1muUljIxvQ= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2016 15:06:34.3745 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR15MB1190 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-08-26_11:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/26/2016 08:31 AM, Andy Lutomirski wrote: > On Aug 25, 2016 4:20 PM, "Jens Axboe" wrote: >> >> On 08/25/2016 01:54 AM, Andy Lutomirski wrote: >>> >>> On Thu, Aug 25, 2016 at 12:38 AM, Christoph Hellwig wrote: >>>> >>>> Ooops, yes. >>>> >>>> Are you looking into new nvme_set_features users? Another thing >>>> we need to tackle is either replacing dma_addr argument with a >>>> a real kernel pointer (or just kill it until users show up) >>> >>> >>> I am, and I have a patch to do the former (and to add a length >>> argument). But that's not -stable material. >>> >>> While I have your attention: the new use is to enable APST (power >>> saving). In theory, it seems like I should integrate with dev_pm_qos >>> so that the standard interface for setting a latency limit will work, >>> but, on brief inspection, there are literally no drivers in the entire >>> tree that do this. Am I missing something? My current draft patch >>> just adds a sysfs attribute. (It saves a *lot* of power on my laptop, >>> so supporting APST is worth doing.) >> >> >> Care to send out what you have? I'd be interested in seeing how much I >> can save on my laptop, haven't played with APST yet. > > https://git.kernel.org/cgit/linux/kernel/git/luto/linux.git/log/?h=nvme/power > > There are some todos: > > - Default to a nonzero latency (e.g. 7ms? My SSD needs 5.5ms for max > power saving.) To test it, write something like 7000000 to > apst_max_latency_ns. > > - Add a real changelog. > > - Optionally add a sysfs binfile or other interface to allow > uploading an entire custom table. > > - Consider *deleting* the SCSI translation layer's power saving code. > It looks almost entirely bogus to me. It has an off-by-one in its > NPSS handling, it hardcodes power state indices which is total BS, it > ignores the distinction between operational and non-operational states > (which I think matters for non-APST usage). It also seems likely to > be that it's never been used, since it's one of the formerly > crashy-looking set_features users. > > You can inspect what it's doing with something like: > > # nvme get-feature -f 0x0c -H -s 0 /dev/nvme0 > > if you have nvme-cli installed. Thanks, I'll give it a whirl. One issue in a previous patch - you have nvme_set_features() take a const buffer, which makes sense. But then you pass it to __nvme_submit_sync_cmd(), which of course takes both read/write commands, and hence the buffer isn't const. -- Jens Axboe