From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Williams, Dan J" Subject: [GIT PULL] libnvdimm regression fix for 4.7-final Date: Fri, 22 Jul 2016 21:09:34 +0000 Message-ID: <1469221772.2244.16.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-7" Content-Transfer-Encoding: 8BIT Return-path: Received: from mga03.intel.com ([134.134.136.65]:37731 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752662AbcGVVJh convert rfc822-to-8bit (ORCPT ); Fri, 22 Jul 2016 17:09:37 -0400 Content-Language: en-US Content-ID: <15A181BF4EE4C549B2DCFA132FA2677C@intel.com> Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: "torvalds@linux-foundation.org" Cc: "linux-kernel@vger.kernel.org" , "linux-nvdimm@lists.01.org" , "linux-acpi@vger.kernel.org" Hi Linus, please pull from: +AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-fixes ...to receive a regression fix for a problem that was introduced in v4.7-rc6. In 4.7-rc1 we introduced auto-probing for the ACPI DSM (device- specific-method) format that the platform firmware implements for nvdimm devices. We initially fixed a regression in probing the QEMU DSM implementation by making acpi+AF8-check+AF8-dsm() tolerant of the way QEMU reports the +ACI-0 DSMs supported+ACI- condition. However, that broke HPE platforms since that tolerance caused the driver to mistakenly match the 1-zero-byte response those platforms give to +ACI-unknown+ACI- commands. Instead, we simply make the driver tolerant of not finding any supported DSMs. +AKA-This has been tested to work with both QEMU and HPE platforms. This commit has appeared in a -next release with no reported issues. The following changes since commit a99cde438de0c4c0cecc1d1af1a55a75b10bfdef: +AKA- Linux 4.7-rc6 (2016-07-03 23:01:00 -0700) are available in the git repository at: +AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-fixes for you to fetch changes up to a72255983f12f31f0c8d8275fb1a781546cfacb7: +AKA- nfit: make DIMM DSMs optional (2016-07-19 12:32:39 -0700) ---------------------------------------------------------------- Dan Williams (1): +AKAAoACgAKAAoACg-nfit: make DIMM DSMs optional +AKA-drivers/acpi/nfit.c+AKAAoAB8- 11 +-+-+-+-+-+------ +AKA-drivers/acpi/utils.c +AHwAoACg-6 +-+-+---- +AKA-2 files changed, 9 insertions(+-), 8 deletions(-) commit a72255983f12f31f0c8d8275fb1a781546cfacb7 Author: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4- Date:+AKAAoACg-Tue Jul 19 12:32:39 2016 -0700 +AKAAoACgAKA-nfit: make DIMM DSMs optional +AKAAoACgAKA- +AKAAoACgAKA-Commit 4995734e973a +ACI-acpi, nfit: fix acpi+AF8-check+AF8-dsm() vs zero functions +AKAAoACgAKA-implemented+ACI- attempted to fix a QEMU regression by supporting its usage +AKAAoACgAKA-of a zero-mask as a valid response to a DSM-family probe request. +AKAAoACgAKA-However, this behavior breaks HP platforms that return a zero-mask by +AKAAoACgAKA-default causing the probe to misidentify the DSM-family. +AKAAoACgAKA- +AKAAoACgAKA-Instead, the QEMU regression can be fixed by simply not requiring the DSM +AKAAoACgAKA-family to be identified. +AKAAoACgAKA- +AKAAoACgAKA-This effectively reverts commit 4995734e973a, and removes the DSM +AKAAoACgAKA-requirement from the init path. +AKAAoACgAKA- +AKAAoACgAKA-Cc: +ACI-Rafael J. Wysocki+ACI- +ADw-rafael+AEA-kernel.org+AD4- +AKAAoACgAKA-Cc: Xiao Guangrong +ADw-guangrong.xiao+AEA-linux.intel.com+AD4- +AKAAoACgAKA-Cc: Linda Knippers +ADw-linda.knippers+AEA-hpe.com+AD4- +AKAAoACgAKA-Fixes: 4995734e973a (+ACI-acpi, nfit: fix acpi+AF8-check+AF8-dsm() vs zero functions implemented+ACI-) +AKAAoACgAKA-Reported-by: Jerry Hoemann +ADw-jerry.hoemann+AEA-hpe.com+AD4- +AKAAoACgAKA-Tested-by: Jerry Hoemann +ADw-jerry.hoemann+AEA-hpe.com+AD4- +AKAAoACgAKA-Signed-off-by: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4- diff --git a/drivers/acpi/nfit.c b/drivers/acpi/nfit.c index ac6ddcc080d4..1f0e06065ae6 100644 --- a/drivers/acpi/nfit.c +-+-+- b/drivers/acpi/nfit.c +AEAAQA- -1131,11 +-1131,11 +AEAAQA- static int acpi+AF8-nfit+AF8-add+AF8-dimm(struct acpi+AF8-nfit+AF8-desc +ACo-acpi+AF8-desc, +AKA- +AKA- /+ACo- +AKA- +AKAAKg- Until standardization materializes we need to consider up to 3 - +AKAAKg- different command sets.+AKAAoA-Note, that checking for zero functions - +AKAAKg- tells us if any commands might be reachable through this uuid. +- +AKAAKg- different command sets.+AKAAoA-Note, that checking for function0 (bit0) +- +AKAAKg- tells us if any commands are reachable through this uuid. +AKA- +AKAAKg-/ +AKA- for (i +AD0- NVDIMM+AF8-FAMILY+AF8-INTEL+ADs- i +ADwAPQ- NVDIMM+AF8-FAMILY+AF8-HPE2+ADs- i+-+-) - if (acpi+AF8-check+AF8-dsm(adev+AF8-dimm-+AD4-handle, to+AF8-nfit+AF8-uuid(i), 1, 0)) +- if (acpi+AF8-check+AF8-dsm(adev+AF8-dimm-+AD4-handle, to+AF8-nfit+AF8-uuid(i), 1, 1)) +AKA- break+ADs- +AKA- +AKA- /+ACo- limit the supported commands to those that are publicly documented +ACo-/ +AEAAQA- -1151,9 +-1151,10 +AEAAQA- static int acpi+AF8-nfit+AF8-add+AF8-dimm(struct acpi+AF8-nfit+AF8-desc +ACo-acpi+AF8-desc, +AKA- if (disable+AF8-vendor+AF8-specific) +AKA- dsm+AF8-mask +ACYAPQ- +AH4-(1 +ADwAPA- 8)+ADs- +AKA- +AH0- else +AHs- - dev+AF8-err(dev, +ACI-unknown dimm command family+AFw-n+ACI-)+ADs- +- dev+AF8-dbg(dev, +ACI-unknown dimm command family+AFw-n+ACI-)+ADs- +AKA- nfit+AF8-mem-+AD4-family +AD0- -1+ADs- - return force+AF8-enable+AF8-dimms ? 0 : -ENODEV+ADs- +- /+ACo- DSMs are optional, continue loading the driver... +ACo-/ +- return 0+ADs- +AKA- +AH0- +AKA- +AKA- uuid +AD0- to+AF8-nfit+AF8-uuid(nfit+AF8-mem-+AD4-family)+ADs- diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c index b4de130f2d57..22c09952e177 100644 --- a/drivers/acpi/utils.c +-+-+- b/drivers/acpi/utils.c +AEAAQA- -680,6 +-680,9 +AEAAQA- bool acpi+AF8-check+AF8-dsm(acpi+AF8-handle handle, const u8 +ACo-uuid, u64 rev, u64 funcs) +AKA- u64 mask +AD0- 0+ADs- +AKA- union acpi+AF8-object +ACo-obj+ADs- +AKA- +- if (funcs +AD0APQ- 0) +- return false+ADs- +- +AKA- obj +AD0- acpi+AF8-evaluate+AF8-dsm(handle, uuid, rev, 0, NULL)+ADs- +AKA- if (+ACE-obj) +AKA- return false+ADs- +AEAAQA- -692,9 +-695,6 +AEAAQA- bool acpi+AF8-check+AF8-dsm(acpi+AF8-handle handle, const u8 +ACo-uuid, u64 rev, u64 funcs) +AKA- mask +AHwAPQ- (((u64)obj-+AD4-buffer.pointer+AFs-i+AF0-) +ADwAPA- (i +ACo- 8))+ADs- +AKA- ACPI+AF8-FREE(obj)+ADs- +AKA- - if (funcs +AD0APQ- 0) - return true+ADs- - +AKA- /+ACo- +AKA- +AKAAKg- Bit 0 indicates whether there's support for any functions other than +AKA- +AKAAKg- function 0 for the specified UUID and revision. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ml01.01.org (Postfix) with ESMTP id 89AF11A1DF8 for ; Fri, 22 Jul 2016 14:10:28 -0700 (PDT) From: "Williams, Dan J" Subject: [GIT PULL] libnvdimm regression fix for 4.7-final Date: Fri, 22 Jul 2016 21:09:34 +0000 Message-ID: <1469221772.2244.16.camel@intel.com> Content-Language: en-US Content-ID: <15A181BF4EE4C549B2DCFA132FA2677C@intel.com> MIME-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-7" Content-Transfer-Encoding: base64 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: "torvalds@linux-foundation.org" Cc: "linux-acpi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-nvdimm@lists.01.org" List-ID: SGkgTGludXMsIHBsZWFzZSBwdWxsIGZyb206CgorQUtBIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1 Yi9zY20vbGludXgva2VybmVsL2dpdC9udmRpbW0vbnZkaW1tIGxpYm52ZGltbS1maXhlcwoKLi4u dG8gcmVjZWl2ZSBhIHJlZ3Jlc3Npb24gZml4IGZvciBhIHByb2JsZW0gdGhhdCB3YXMgaW50cm9k dWNlZCBpbgp2NC43LXJjNi4KCkluIDQuNy1yYzEgd2UgaW50cm9kdWNlZCBhdXRvLXByb2Jpbmcg Zm9yIHRoZSBBQ1BJIERTTSAoZGV2aWNlLQpzcGVjaWZpYy1tZXRob2QpIGZvcm1hdCB0aGF0IHRo ZSBwbGF0Zm9ybSBmaXJtd2FyZSBpbXBsZW1lbnRzIGZvcgpudmRpbW0gZGV2aWNlcy4gV2UgaW5p dGlhbGx5IGZpeGVkIGEgcmVncmVzc2lvbiBpbiBwcm9iaW5nIHRoZSBRRU1VIERTTQppbXBsZW1l bnRhdGlvbiBieSBtYWtpbmcgYWNwaV9jaGVja19kc20oKSB0b2xlcmFudCBvZiB0aGUgd2F5IFFF TVUKcmVwb3J0cyB0aGUgIjAgRFNNcyBzdXBwb3J0ZWQiIGNvbmRpdGlvbi4gSG93ZXZlciwgdGhh dCBicm9rZSBIUEUKcGxhdGZvcm1zIHNpbmNlIHRoYXQgdG9sZXJhbmNlIGNhdXNlZCB0aGUgZHJp dmVyIHRvIG1pc3Rha2VubHkgbWF0Y2gKdGhlIDEtemVyby1ieXRlIHJlc3BvbnNlIHRob3NlIHBs YXRmb3JtcyBnaXZlIHRvICJ1bmtub3duIiBjb21tYW5kcy4KSW5zdGVhZCwgd2Ugc2ltcGx5IG1h a2UgdGhlIGRyaXZlciB0b2xlcmFudCBvZiBub3QgZmluZGluZyBhbnkKc3VwcG9ydGVkIERTTXMu ICtBS0EtVGhpcyBoYXMgYmVlbiB0ZXN0ZWQgdG8gd29yayB3aXRoIGJvdGggUUVNVSBhbmQgSFBF CnBsYXRmb3Jtcy4KClRoaXMgY29tbWl0IGhhcyBhcHBlYXJlZCBpbiBhIC1uZXh0IHJlbGVhc2Ug d2l0aCBubyByZXBvcnRlZCBpc3N1ZXMuCgpUaGUgZm9sbG93aW5nIGNoYW5nZXMgc2luY2UgY29t bWl0IGE5OWNkZTQzOGRlMGM0YzBjZWNjMWQxYWYxYTU1YTc1YjEwYmZkZWY6CgorQUtBIExpbnV4 IDQuNy1yYzYgKDIwMTYtMDctMDMgMjM6MDE6MDAgLTA3MDApCgphcmUgYXZhaWxhYmxlIGluIHRo ZSBnaXQgcmVwb3NpdG9yeSBhdDoKCitBS0EgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s aW51eC9rZXJuZWwvZ2l0L252ZGltbS9udmRpbW0gbGlibnZkaW1tLWZpeGVzCgpmb3IgeW91IHRv IGZldGNoIGNoYW5nZXMgdXAgdG8gYTcyMjU1OTgzZjEyZjMxZjBjOGQ4Mjc1ZmIxYTc4MTU0NmNm YWNiNzoKCitBS0EgbmZpdDogbWFrZSBESU1NIERTTXMgb3B0aW9uYWwgKDIwMTYtMDctMTkgMTI6 MzI6MzkgLTA3MDApCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbiBXaWxsaWFtcyAoMSk6CitBS0FBb0FDZ0FLQUFvQUNn LW5maXQ6IG1ha2UgRElNTSBEU01zIG9wdGlvbmFsCgorQUtBLWRyaXZlcnMvYWNwaS9uZml0LmMr QUtBQW9BfCAxMSArLSstKy0rLSstKy0tLS0tLQorQUtBLWRyaXZlcnMvYWNwaS91dGlscy5jIHwr QUtBQW9BLTYgKy0rLSstLS0tCitBS0EtMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKy0p LCA4IGRlbGV0aW9ucygtKQoKY29tbWl0IGE3MjI1NTk4M2YxMmYzMWYwYzhkODI3NWZiMWE3ODE1 NDZjZmFjYjcKQXV0aG9yOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4K RGF0ZTorQUtBQW9BQ2ctVHVlIEp1bCAxOSAxMjozMjozOSAyMDE2IC0wNzAwCgorQUtBQW9BQ2dB S0EtbmZpdDogbWFrZSBESU1NIERTTXMgb3B0aW9uYWwKK0FLQUFvQUNnQUtBCitBS0FBb0FDZ0FL QS1Db21taXQgNDk5NTczNGU5NzNhICJhY3BpLCBuZml0OiBmaXggYWNwaV9jaGVja19kc20oKSB2 cyB6ZXJvIGZ1bmN0aW9ucworQUtBQW9BQ2dBS0EtaW1wbGVtZW50ZWQiIGF0dGVtcHRlZCB0byBm aXggYSBRRU1VIHJlZ3Jlc3Npb24gYnkgc3VwcG9ydGluZyBpdHMgdXNhZ2UKK0FLQUFvQUNnQUtB LW9mIGEgemVyby1tYXNrIGFzIGEgdmFsaWQgcmVzcG9uc2UgdG8gYSBEU00tZmFtaWx5IHByb2Jl IHJlcXVlc3QuCitBS0FBb0FDZ0FLQS1Ib3dldmVyLCB0aGlzIGJlaGF2aW9yIGJyZWFrcyBIUCBw bGF0Zm9ybXMgdGhhdCByZXR1cm4gYSB6ZXJvLW1hc2sgYnkKK0FLQUFvQUNnQUtBLWRlZmF1bHQg Y2F1c2luZyB0aGUgcHJvYmUgdG8gbWlzaWRlbnRpZnkgdGhlIERTTS1mYW1pbHkuCitBS0FBb0FD Z0FLQQorQUtBQW9BQ2dBS0EtSW5zdGVhZCwgdGhlIFFFTVUgcmVncmVzc2lvbiBjYW4gYmUgZml4 ZWQgYnkgc2ltcGx5IG5vdCByZXF1aXJpbmcgdGhlIERTTQorQUtBQW9BQ2dBS0EtZmFtaWx5IHRv IGJlIGlkZW50aWZpZWQuCitBS0FBb0FDZ0FLQQorQUtBQW9BQ2dBS0EtVGhpcyBlZmZlY3RpdmVs eSByZXZlcnRzIGNvbW1pdCA0OTk1NzM0ZTk3M2EsIGFuZCByZW1vdmVzIHRoZSBEU00KK0FLQUFv QUNnQUtBLXJlcXVpcmVtZW50IGZyb20gdGhlIGluaXQgcGF0aC4KK0FLQUFvQUNnQUtBCitBS0FB b0FDZ0FLQS1DYzogIlJhZmFlbCBKLiBXeXNvY2tpIiA8cmFmYWVsQGtlcm5lbC5vcmc+CitBS0FB b0FDZ0FLQS1DYzogWGlhbyBHdWFuZ3JvbmcgPGd1YW5ncm9uZy54aWFvQGxpbnV4LmludGVsLmNv bT4KK0FLQUFvQUNnQUtBLUNjOiBMaW5kYSBLbmlwcGVycyA8bGluZGEua25pcHBlcnNAaHBlLmNv bT4KK0FLQUFvQUNnQUtBLUZpeGVzOiA0OTk1NzM0ZTk3M2EgKCJhY3BpLCBuZml0OiBmaXggYWNw aV9jaGVja19kc20oKSB2cyB6ZXJvIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCIpCitBS0FBb0FDZ0FL QS1SZXBvcnRlZC1ieTogSmVycnkgSG9lbWFubiA8amVycnkuaG9lbWFubkBocGUuY29tPgorQUtB QW9BQ2dBS0EtVGVzdGVkLWJ5OiBKZXJyeSBIb2VtYW5uIDxqZXJyeS5ob2VtYW5uQGhwZS5jb20+ CitBS0FBb0FDZ0FLQS1TaWduZWQtb2ZmLWJ5OiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1z QGludGVsLmNvbT4KCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmZpdC5jIGIvZHJpdmVycy9h Y3BpL25maXQuYwppbmRleCBhYzZkZGNjMDgwZDQuLjFmMGUwNjA2NWFlNiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9hY3BpL25maXQuYworLSstKy0gYi9kcml2ZXJzL2FjcGkvbmZpdC5jCkBAIC0xMTMx LDExICstMTEzMSwxMSBAQCBzdGF0aWMgaW50IGFjcGlfbmZpdF9hZGRfZGltbShzdHJ1Y3QgYWNw aV9uZml0X2Rlc2MgKmFjcGlfZGVzYywKK0FLQQorQUtBCS8qCitBS0EJK0FLQSogVW50aWwgc3Rh bmRhcmRpemF0aW9uIG1hdGVyaWFsaXplcyB3ZSBuZWVkIHRvIGNvbnNpZGVyIHVwIHRvIDMKLQkr QUtBKiBkaWZmZXJlbnQgY29tbWFuZCBzZXRzLitBS0FBb0EtTm90ZSwgdGhhdCBjaGVja2luZyBm b3IgemVybyBmdW5jdGlvbnMKLQkrQUtBKiB0ZWxscyB1cyBpZiBhbnkgY29tbWFuZHMgbWlnaHQg YmUgcmVhY2hhYmxlIHRocm91Z2ggdGhpcyB1dWlkLgorLQkrQUtBKiBkaWZmZXJlbnQgY29tbWFu ZCBzZXRzLitBS0FBb0EtTm90ZSwgdGhhdCBjaGVja2luZyBmb3IgZnVuY3Rpb24wIChiaXQwKQor LQkrQUtBKiB0ZWxscyB1cyBpZiBhbnkgY29tbWFuZHMgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIHRo aXMgdXVpZC4KK0FLQQkrQUtBKi8KK0FLQQlmb3IgKGkgPSBOVkRJTU1fRkFNSUxZX0lOVEVMOyBp IDw9IE5WRElNTV9GQU1JTFlfSFBFMjsgaSstKy0pCi0JCWlmIChhY3BpX2NoZWNrX2RzbShhZGV2 X2RpbW0tPmhhbmRsZSwgdG9fbmZpdF91dWlkKGkpLCAxLCAwKSkKKy0JCWlmIChhY3BpX2NoZWNr X2RzbShhZGV2X2RpbW0tPmhhbmRsZSwgdG9fbmZpdF91dWlkKGkpLCAxLCAxKSkKK0FLQQkJCWJy ZWFrOworQUtBCitBS0EJLyogbGltaXQgdGhlIHN1cHBvcnRlZCBjb21tYW5kcyB0byB0aG9zZSB0 aGF0IGFyZSBwdWJsaWNseSBkb2N1bWVudGVkICovCkBAIC0xMTUxLDkgKy0xMTUxLDEwIEBAIHN0 YXRpYyBpbnQgYWNwaV9uZml0X2FkZF9kaW1tKHN0cnVjdCBhY3BpX25maXRfZGVzYyAqYWNwaV9k ZXNjLAorQUtBCQlpZiAoZGlzYWJsZV92ZW5kb3Jfc3BlY2lmaWMpCitBS0EJCQlkc21fbWFzayAm PSArQUg0KDEgPDwgOCk7CitBS0EJfSBlbHNlIHsKLQkJZGV2X2VycihkZXYsICJ1bmtub3duIGRp bW0gY29tbWFuZCBmYW1pbHkrQUZ3LW4iKTsKKy0JCWRldl9kYmcoZGV2LCAidW5rbm93biBkaW1t IGNvbW1hbmQgZmFtaWx5K0FGdy1uIik7CitBS0EJCW5maXRfbWVtLT5mYW1pbHkgPSAtMTsKLQkJ cmV0dXJuIGZvcmNlX2VuYWJsZV9kaW1tcyA/IDAgOiAtRU5PREVWOworLQkJLyogRFNNcyBhcmUg b3B0aW9uYWwsIGNvbnRpbnVlIGxvYWRpbmcgdGhlIGRyaXZlci4uLiAqLworLQkJcmV0dXJuIDA7 CitBS0EJfQorQUtBCitBS0EJdXVpZCA9IHRvX25maXRfdXVpZChuZml0X21lbS0+ZmFtaWx5KTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS91dGlscy5jIGIvZHJpdmVycy9hY3BpL3V0aWxzLmMK aW5kZXggYjRkZTEzMGYyZDU3Li4yMmMwOTk1MmUxNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNw aS91dGlscy5jCistKy0rLSBiL2RyaXZlcnMvYWNwaS91dGlscy5jCkBAIC02ODAsNiArLTY4MCw5 IEBAIGJvb2wgYWNwaV9jaGVja19kc20oYWNwaV9oYW5kbGUgaGFuZGxlLCBjb25zdCB1OCAqdXVp ZCwgdTY0IHJldiwgdTY0IGZ1bmNzKQorQUtBCXU2NCBtYXNrID0gMDsKK0FLQQl1bmlvbiBhY3Bp X29iamVjdCAqb2JqOworQUtBCistCWlmIChmdW5jcyA9PSAwKQorLQkJcmV0dXJuIGZhbHNlOwor LQorQUtBCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtKGhhbmRsZSwgdXVpZCwgcmV2LCAwLCBOVUxM KTsKK0FLQQlpZiAoIW9iaikKK0FLQQkJcmV0dXJuIGZhbHNlOwpAQCAtNjkyLDkgKy02OTUsNiBA QCBib29sIGFjcGlfY2hlY2tfZHNtKGFjcGlfaGFuZGxlIGhhbmRsZSwgY29uc3QgdTggKnV1aWQs IHU2NCByZXYsIHU2NCBmdW5jcykKK0FLQQkJCW1hc2sgfD0gKCgodTY0KW9iai0+YnVmZmVyLnBv aW50ZXJbaV0pIDw8IChpICogOCkpOworQUtBCUFDUElfRlJFRShvYmopOworQUtBCi0JaWYgKGZ1 bmNzID09IDApCi0JCXJldHVybiB0cnVlOwotCitBS0EJLyoKK0FLQQkrQUtBKiBCaXQgMCBpbmRp Y2F0ZXMgd2hldGhlciB0aGVyZSdzIHN1cHBvcnQgZm9yIGFueSBmdW5jdGlvbnMgb3RoZXIgdGhh bgorQUtBCStBS0EqIGZ1bmN0aW9uIDAgZm9yIHRoZSBzcGVjaWZpZWQgVVVJRCBhbmQgcmV2aXNp b24uCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 LW52ZGltbSBtYWlsaW5nIGxpc3QKTGludXgtbnZkaW1tQGxpc3RzLjAxLm9yZwpodHRwczovL2xp c3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52ZGltbQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754147AbcGVVJj (ORCPT ); Fri, 22 Jul 2016 17:09:39 -0400 Received: from mga03.intel.com ([134.134.136.65]:37731 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752662AbcGVVJh convert rfc822-to-8bit (ORCPT ); Fri, 22 Jul 2016 17:09:37 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,405,1464678000"; d="scan'208";a="738436588" From: "Williams, Dan J" To: "torvalds@linux-foundation.org" CC: "linux-kernel@vger.kernel.org" , "linux-nvdimm@lists.01.org" , "linux-acpi@vger.kernel.org" Subject: [GIT PULL] libnvdimm regression fix for 4.7-final Thread-Topic: [GIT PULL] libnvdimm regression fix for 4.7-final Thread-Index: AQHR5F1YGkMImYfT9Ea8wPUH46fSfA== Date: Fri, 22 Jul 2016 21:09:34 +0000 Message-ID: <1469221772.2244.16.camel@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.7.201.32] Content-Type: text/plain; charset="utf-7" Content-ID: <15A181BF4EE4C549B2DCFA132FA2677C@intel.com> Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Linus, please pull from: +AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-fixes ...to receive a regression fix for a problem that was introduced in v4.7-rc6. In 4.7-rc1 we introduced auto-probing for the ACPI DSM (device- specific-method) format that the platform firmware implements for nvdimm devices. We initially fixed a regression in probing the QEMU DSM implementation by making acpi+AF8-check+AF8-dsm() tolerant of the way QEMU reports the +ACI-0 DSMs supported+ACI- condition. However, that broke HPE platforms since that tolerance caused the driver to mistakenly match the 1-zero-byte response those platforms give to +ACI-unknown+ACI- commands. Instead, we simply make the driver tolerant of not finding any supported DSMs. +AKA-This has been tested to work with both QEMU and HPE platforms. This commit has appeared in a -next release with no reported issues. The following changes since commit a99cde438de0c4c0cecc1d1af1a55a75b10bfdef: +AKA- Linux 4.7-rc6 (2016-07-03 23:01:00 -0700) are available in the git repository at: +AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-fixes for you to fetch changes up to a72255983f12f31f0c8d8275fb1a781546cfacb7: +AKA- nfit: make DIMM DSMs optional (2016-07-19 12:32:39 -0700) ---------------------------------------------------------------- Dan Williams (1): +AKAAoACgAKAAoACg-nfit: make DIMM DSMs optional +AKA-drivers/acpi/nfit.c+AKAAoAB8- 11 +-+-+-+-+-+------ +AKA-drivers/acpi/utils.c +AHwAoACg-6 +-+-+---- +AKA-2 files changed, 9 insertions(+-), 8 deletions(-) commit a72255983f12f31f0c8d8275fb1a781546cfacb7 Author: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4- Date:+AKAAoACg-Tue Jul 19 12:32:39 2016 -0700 +AKAAoACgAKA-nfit: make DIMM DSMs optional +AKAAoACgAKA- +AKAAoACgAKA-Commit 4995734e973a +ACI-acpi, nfit: fix acpi+AF8-check+AF8-dsm() vs zero functions +AKAAoACgAKA-implemented+ACI- attempted to fix a QEMU regression by supporting its usage +AKAAoACgAKA-of a zero-mask as a valid response to a DSM-family probe request. +AKAAoACgAKA-However, this behavior breaks HP platforms that return a zero-mask by +AKAAoACgAKA-default causing the probe to misidentify the DSM-family. +AKAAoACgAKA- +AKAAoACgAKA-Instead, the QEMU regression can be fixed by simply not requiring the DSM +AKAAoACgAKA-family to be identified. +AKAAoACgAKA- +AKAAoACgAKA-This effectively reverts commit 4995734e973a, and removes the DSM +AKAAoACgAKA-requirement from the init path. +AKAAoACgAKA- +AKAAoACgAKA-Cc: +ACI-Rafael J. Wysocki+ACI- +ADw-rafael+AEA-kernel.org+AD4- +AKAAoACgAKA-Cc: Xiao Guangrong +ADw-guangrong.xiao+AEA-linux.intel.com+AD4- +AKAAoACgAKA-Cc: Linda Knippers +ADw-linda.knippers+AEA-hpe.com+AD4- +AKAAoACgAKA-Fixes: 4995734e973a (+ACI-acpi, nfit: fix acpi+AF8-check+AF8-dsm() vs zero functions implemented+ACI-) +AKAAoACgAKA-Reported-by: Jerry Hoemann +ADw-jerry.hoemann+AEA-hpe.com+AD4- +AKAAoACgAKA-Tested-by: Jerry Hoemann +ADw-jerry.hoemann+AEA-hpe.com+AD4- +AKAAoACgAKA-Signed-off-by: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4- diff --git a/drivers/acpi/nfit.c b/drivers/acpi/nfit.c index ac6ddcc080d4..1f0e06065ae6 100644 --- a/drivers/acpi/nfit.c +-+-+- b/drivers/acpi/nfit.c +AEAAQA- -1131,11 +-1131,11 +AEAAQA- static int acpi+AF8-nfit+AF8-add+AF8-dimm(struct acpi+AF8-nfit+AF8-desc +ACo-acpi+AF8-desc, +AKA- +AKA- /+ACo- +AKA- +AKAAKg- Until standardization materializes we need to consider up to 3 - +AKAAKg- different command sets.+AKAAoA-Note, that checking for zero functions - +AKAAKg- tells us if any commands might be reachable through this uuid. +- +AKAAKg- different command sets.+AKAAoA-Note, that checking for function0 (bit0) +- +AKAAKg- tells us if any commands are reachable through this uuid. +AKA- +AKAAKg-/ +AKA- for (i +AD0- NVDIMM+AF8-FAMILY+AF8-INTEL+ADs- i +ADwAPQ- NVDIMM+AF8-FAMILY+AF8-HPE2+ADs- i+-+-) - if (acpi+AF8-check+AF8-dsm(adev+AF8-dimm-+AD4-handle, to+AF8-nfit+AF8-uuid(i), 1, 0)) +- if (acpi+AF8-check+AF8-dsm(adev+AF8-dimm-+AD4-handle, to+AF8-nfit+AF8-uuid(i), 1, 1)) +AKA- break+ADs- +AKA- +AKA- /+ACo- limit the supported commands to those that are publicly documented +ACo-/ +AEAAQA- -1151,9 +-1151,10 +AEAAQA- static int acpi+AF8-nfit+AF8-add+AF8-dimm(struct acpi+AF8-nfit+AF8-desc +ACo-acpi+AF8-desc, +AKA- if (disable+AF8-vendor+AF8-specific) +AKA- dsm+AF8-mask +ACYAPQ- +AH4-(1 +ADwAPA- 8)+ADs- +AKA- +AH0- else +AHs- - dev+AF8-err(dev, +ACI-unknown dimm command family+AFw-n+ACI-)+ADs- +- dev+AF8-dbg(dev, +ACI-unknown dimm command family+AFw-n+ACI-)+ADs- +AKA- nfit+AF8-mem-+AD4-family +AD0- -1+ADs- - return force+AF8-enable+AF8-dimms ? 0 : -ENODEV+ADs- +- /+ACo- DSMs are optional, continue loading the driver... +ACo-/ +- return 0+ADs- +AKA- +AH0- +AKA- +AKA- uuid +AD0- to+AF8-nfit+AF8-uuid(nfit+AF8-mem-+AD4-family)+ADs- diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c index b4de130f2d57..22c09952e177 100644 --- a/drivers/acpi/utils.c +-+-+- b/drivers/acpi/utils.c +AEAAQA- -680,6 +-680,9 +AEAAQA- bool acpi+AF8-check+AF8-dsm(acpi+AF8-handle handle, const u8 +ACo-uuid, u64 rev, u64 funcs) +AKA- u64 mask +AD0- 0+ADs- +AKA- union acpi+AF8-object +ACo-obj+ADs- +AKA- +- if (funcs +AD0APQ- 0) +- return false+ADs- +- +AKA- obj +AD0- acpi+AF8-evaluate+AF8-dsm(handle, uuid, rev, 0, NULL)+ADs- +AKA- if (+ACE-obj) +AKA- return false+ADs- +AEAAQA- -692,9 +-695,6 +AEAAQA- bool acpi+AF8-check+AF8-dsm(acpi+AF8-handle handle, const u8 +ACo-uuid, u64 rev, u64 funcs) +AKA- mask +AHwAPQ- (((u64)obj-+AD4-buffer.pointer+AFs-i+AF0-) +ADwAPA- (i +ACo- 8))+ADs- +AKA- ACPI+AF8-FREE(obj)+ADs- +AKA- - if (funcs +AD0APQ- 0) - return true+ADs- - +AKA- /+ACo- +AKA- +AKAAKg- Bit 0 indicates whether there's support for any functions other than +AKA- +AKAAKg- function 0 for the specified UUID and revision.