nvme-pci: add NVME_QUIRK_BOGUS_NID for Samsung PM9B1 256G and 512G

Message ID 20221116171727.4083-1-git@augustwikerfors.se
State New
Headers
Series nvme-pci: add NVME_QUIRK_BOGUS_NID for Samsung PM9B1 256G and 512G |

Commit Message

August Wikerfors Nov. 16, 2022, 5:17 p.m. UTC
  The Samsung PM9B1 512G SSD found in some Lenovo Yoga 7 14ARB7 laptop units
reports eui as 0001000200030004 when resuming from s2idle, causing the
device to be removed with this error in dmesg:

nvme nvme0: identifiers changed for nsid 1

To fix this, add a quirk to ignore namespace identifiers for this device.

Signed-off-by: August Wikerfors <git@augustwikerfors.se>
---
 drivers/nvme/host/pci.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

August Wikerfors Nov. 16, 2022, 5:42 p.m. UTC | #1
On 2022-11-16 18:19, Christoph Hellwig wrote:
> On Wed, Nov 16, 2022 at 06:17:27PM +0100, August Wikerfors wrote:
>> The Samsung PM9B1 512G SSD found in some Lenovo Yoga 7 14ARB7 laptop units
>> reports eui as 0001000200030004 when resuming from s2idle, causing the
>> device to be removed with this error in dmesg:
>>
>> nvme nvme0: identifiers changed for nsid 1
> 
> What EUI did it report before? Is the identifier stable after
> multiple resume cycles?
The original EUI is "002538e621b440e5". Using the patches from [1] and 
[2] for debugging I consistently get this output on every resume:
> eui changed from 002538e621b440e5 to 0001000200030004
[1] https://lore.kernel.org/all/20220408025704.6352-1-me@kingtous.cn/
[2] https://lore.kernel.org/all/20220408062210.GA410@lst.de/
  
Kanchan Joshi Nov. 17, 2022, 3:19 a.m. UTC | #2
On Wed, Nov 16, 2022 at 06:19:35PM +0100, Christoph Hellwig wrote:
>On Wed, Nov 16, 2022 at 06:17:27PM +0100, August Wikerfors wrote:
>> The Samsung PM9B1 512G SSD found in some Lenovo Yoga 7 14ARB7 laptop units
>> reports eui as 0001000200030004 when resuming from s2idle, causing the
>> device to be removed with this error in dmesg:
>>
>> nvme nvme0: identifiers changed for nsid 1
>
>What EUI did it report before? Is the identifier stable after
>multiple resume cycles?
>
>Can some of the Samsung folks here reach out to the relevant firmware
>team to see if they have any clues?

I will check.
  
Kanchan Joshi Nov. 17, 2022, 7:13 a.m. UTC | #3
On Wed, Nov 16, 2022 at 06:42:43PM +0100, August Wikerfors wrote:
>On 2022-11-16 18:19, Christoph Hellwig wrote:
>>On Wed, Nov 16, 2022 at 06:17:27PM +0100, August Wikerfors wrote:
>>>The Samsung PM9B1 512G SSD found in some Lenovo Yoga 7 14ARB7 laptop units
>>>reports eui as 0001000200030004 when resuming from s2idle, causing the
>>>device to be removed with this error in dmesg:
>>>
>>>nvme nvme0: identifiers changed for nsid 1
>>
>>What EUI did it report before? Is the identifier stable after
>>multiple resume cycles?
>The original EUI is "002538e621b440e5". Using the patches from [1] and 
>[2] for debugging I consistently get this output on every resume:
>>eui changed from 002538e621b440e5 to 0001000200030004

Can you please share the firmware version of this SSD?
  
August Wikerfors Nov. 17, 2022, 9:09 a.m. UTC | #4
On 2022-11-17 08:13, Kanchan Joshi wrote:
> On Wed, Nov 16, 2022 at 06:42:43PM +0100, August Wikerfors wrote:
>> On 2022-11-16 18:19, Christoph Hellwig wrote:
>>> On Wed, Nov 16, 2022 at 06:17:27PM +0100, August Wikerfors wrote:
>>>> The Samsung PM9B1 512G SSD found in some Lenovo Yoga 7 14ARB7 laptop 
>>>> units
>>>> reports eui as 0001000200030004 when resuming from s2idle, causing the
>>>> device to be removed with this error in dmesg:
>>>>
>>>> nvme nvme0: identifiers changed for nsid 1
>>>
>>> What EUI did it report before? Is the identifier stable after
>>> multiple resume cycles?
>> The original EUI is "002538e621b440e5". Using the patches from [1] and 
>> [2] for debugging I consistently get this output on every resume:
>>> eui changed from 002538e621b440e5 to 0001000200030004
> 
> Can you please share the firmware version of this SSD?

The firmware version is 7L1QHXC7.
  
Kanchan Joshi Dec. 6, 2022, 5:59 a.m. UTC | #5
On Thu, Nov 17, 2022 at 08:49:51AM +0530, Kanchan Joshi wrote:
>On Wed, Nov 16, 2022 at 06:19:35PM +0100, Christoph Hellwig wrote:
>>On Wed, Nov 16, 2022 at 06:17:27PM +0100, August Wikerfors wrote:
>>>The Samsung PM9B1 512G SSD found in some Lenovo Yoga 7 14ARB7 laptop units
>>>reports eui as 0001000200030004 when resuming from s2idle, causing the
>>>device to be removed with this error in dmesg:
>>>
>>>nvme nvme0: identifiers changed for nsid 1
>>
>>What EUI did it report before? Is the identifier stable after
>>multiple resume cycles?
>>
>>Can some of the Samsung folks here reach out to the relevant firmware
>>team to see if they have any clues?
>
>I will check.

Took more time than I wanted. Firmware team mentioned that issue existed
in this firmware. This is fixed in new firmware, but bit of travel time
is involved when official release from OEM (Lenovo) comes out.

Hope the information is sufficient, and quirk can go in.

If required, 
Acked-by: Kanchan Joshi <joshi.k@samsung.com>
  
August Wikerfors Dec. 20, 2022, 11:30 a.m. UTC | #6
On 2022-12-06 06:59, Kanchan Joshi wrote:
> On Thu, Nov 17, 2022 at 08:49:51AM +0530, Kanchan Joshi wrote:
>> On Wed, Nov 16, 2022 at 06:19:35PM +0100, Christoph Hellwig wrote:
>>> On Wed, Nov 16, 2022 at 06:17:27PM +0100, August Wikerfors wrote:
>>>> The Samsung PM9B1 512G SSD found in some Lenovo Yoga 7 14ARB7 laptop 
>>>> units
>>>> reports eui as 0001000200030004 when resuming from s2idle, causing the
>>>> device to be removed with this error in dmesg:
>>>>
>>>> nvme nvme0: identifiers changed for nsid 1
>>>
>>> What EUI did it report before? Is the identifier stable after
>>> multiple resume cycles?
>>>
>>> Can some of the Samsung folks here reach out to the relevant firmware
>>> team to see if they have any clues?
>>
>> I will check.
> 
> Took more time than I wanted. Firmware team mentioned that issue existed
> in this firmware. This is fixed in new firmware, but bit of travel time
> is involved when official release from OEM (Lenovo) comes out.
> 
> Hope the information is sufficient, and quirk can go in.
> 
> If required, Acked-by: Kanchan Joshi <joshi.k@samsung.com>

Ping, anything left for me to do before this can be merged?

Regards,
August Wikerfors
  
Christoph Hellwig Dec. 21, 2022, 8:31 a.m. UTC | #7
On Tue, Dec 20, 2022 at 12:30:39PM +0100, August Wikerfors wrote:
>> Took more time than I wanted. Firmware team mentioned that issue existed
>> in this firmware. This is fixed in new firmware, but bit of travel time
>> is involved when official release from OEM (Lenovo) comes out.
>>
>> Hope the information is sufficient, and quirk can go in.
>>
>> If required, Acked-by: Kanchan Joshi <joshi.k@samsung.com>
>
> Ping, anything left for me to do before this can be merged?

We don't want to add quirks for things fixed by firmware updates,
see the recently posted features and quirks policy.
  

Patch

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index f4335519399d..0af51b85c323 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -3500,7 +3500,8 @@  static const struct pci_device_id nvme_id_table[] = {
 	{ PCI_DEVICE(0x1d97, 0x2263),   /* SPCC */
 		.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, },
 	{ PCI_DEVICE(0x144d, 0xa80b),   /* Samsung PM9B1 256G and 512G */
-		.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, },
+		.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES |
+				NVME_QUIRK_BOGUS_NID, },
 	{ PCI_DEVICE(0x144d, 0xa809),   /* Samsung MZALQ256HBJD 256G */
 		.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, },
 	{ PCI_DEVICE(0x1cc4, 0x6303),   /* UMIS RPJTJ512MGE1QDY 512G */