nvme fixes for Linux 6.1

- fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices
    (Michael Kelley)
  - disable Write Zeroes on Phison E3C/E4C (Tina Hsu)
 -----BEGIN PGP SIGNATURE-----
 
 iQI/BAABCgApFiEEgdbnc3r/njty3Iq9D55TZVIEUYMFAmM1swYLHGhjaEBsc3Qu
 ZGUACgkQD55TZVIEUYMPGw//QHUXKJwAlV7JpwiSL7TbPQ5QuRVhykr9vYZSzcRV
 OUhIuJotfTG6648HeVKk8Ra8L1x7bmH/eBAi39CmCDgdrgsVeigLANpyWMMTq9PG
 TSDTqXAoliAQO3r45te2hvbWmwlGdqLAb86cgEHHW30KRNpDP4ihmsOIW3ljuajX
 2WRgeItNDgiUaALg1XAaND9yE8oqJjcKz4M8o7KgbVWKhZlYUvG/KcxU0MbAPKVq
 6UoOaeLlDwwZyCkpBoVNeLgrk8JmVXz6Ih+pb6vqJSkdnlSN2vrHyJaLkiLleV/9
 DOL9p1pCCLZtZr36VZ0/Xb5tSynaCVwwZOWEIM1D7e4o37i1K2tOqvX2GZhReSGT
 GZNJGgsy8/fYXDd8PB9brI3Sv5uv6tv+KlLn8LL5FdYHFqhU0bqNTLEDV6qFBzTP
 wQeCkPG6RWXd2s+t3UxEfYJoXL8JiXYDLoXcOWaZ1DQQ7+o+TP/+e2Jlr/AlV0MT
 FNM4nrueFOqNArbdRxJNZcQy6dDxcod5L9FYCFNgdYfqGm+FPdZD7AGyie1UmWx5
 H2w3utjVp6gwSWZpG+ywX1Gp8uMVjJnsv3tMJoW27Oyw4t+dUGs0rFVk9ICLV0MQ
 XulFtDhRyXOqcF3c5MVKMWptAyiCu7LplWWhsFAg9xZznreYJBy6akxVIli7Bj+W
 NY4=
 =YNNc
 -----END PGP SIGNATURE-----

Merge tag 'nvme-6.0-2022-09-29' of git://git.infradead.org/nvme into block-6.0

Pull NVMe fixes from Christoph:

"nvme fixes for Linux 6.1

 - fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices
   (Michael Kelley)
 - disable Write Zeroes on Phison E3C/E4C (Tina Hsu)"

* tag 'nvme-6.0-2022-09-29' of git://git.infradead.org/nvme:
  nvme-pci: disable Write Zeroes on Phison E3C/E4C
  nvme: Fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices
This commit is contained in:
Jens Axboe 2022-09-29 09:04:02 -06:00
commit 6c84501a3c
2 changed files with 7 additions and 3 deletions

View File

@ -2162,14 +2162,14 @@ static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new,
static int nvme_pr_clear(struct block_device *bdev, u64 key)
{
u32 cdw10 = 1 | (key ? 1 << 3 : 0);
u32 cdw10 = 1 | (key ? 0 : 1 << 3);
return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_register);
return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_release);
}
static int nvme_pr_release(struct block_device *bdev, u64 key, enum pr_type type)
{
u32 cdw10 = nvme_pr_type(type) << 8 | (key ? 1 << 3 : 0);
u32 cdw10 = nvme_pr_type(type) << 8 | (key ? 0 : 1 << 3);
return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_release);
}

View File

@ -3475,6 +3475,10 @@ static const struct pci_device_id nvme_id_table[] = {
{ PCI_DEVICE(0x1987, 0x5016), /* Phison E16 */
.driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN |
NVME_QUIRK_BOGUS_NID, },
{ PCI_DEVICE(0x1987, 0x5019), /* phison E19 */
.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, },
{ PCI_DEVICE(0x1987, 0x5021), /* Phison E21 */
.driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, },
{ PCI_DEVICE(0x1b4b, 0x1092), /* Lexar 256 GB SSD */
.driver_data = NVME_QUIRK_NO_NS_DESC_LIST |
NVME_QUIRK_IGNORE_DEV_SUBNQN, },