From: Maxim Levitsky <mlevitsk@redhat.com>
To: Klaus Jensen <k.jensen@samsung.com>, qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
Beata Michalska <beata.michalska@linaro.org>,
qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
Keith Busch <kbusch@kernel.org>, Klaus Jensen <its@irrelevant.dk>,
Javier Gonzalez <javier.gonz@samsung.com>
Subject: Re: [PATCH v5 24/26] nvme: change controller pci id
Date: Wed, 12 Feb 2020 14:37:09 +0200 [thread overview]
Message-ID: <dde54d12c2bb55c29ab7d19ab2cfc0dbf37ae1f0.camel@redhat.com> (raw)
In-Reply-To: <20200204095208.269131-25-k.jensen@samsung.com>
On Tue, 2020-02-04 at 10:52 +0100, Klaus Jensen wrote:
> There are two reasons for changing this:
>
> 1. The nvme device currently uses an internal Intel device id.
>
> 2. Since commits "nvme: fix write zeroes offset and count" and "nvme:
> support multiple namespaces" the controller device no longer has
> the quirks that the Linux kernel think it has.
>
> As the quirks are applied based on pci vendor and device id, change
> them to get rid of the quirks.
>
> To keep backward compatibility, add a new 'x-use-intel-id' parameter to
> the nvme device to force use of the Intel vendor and device id. This is
> off by default but add a compat property to set this for machines 4.2
> and older.
>
> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
> ---
> hw/block/nvme.c | 13 +++++++++----
> hw/block/nvme.h | 4 +++-
> hw/core/machine.c | 1 +
> 3 files changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index 3a377bc56734..bdef53a590b0 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> @@ -2467,8 +2467,15 @@ static void nvme_init_pci(NvmeCtrl *n, PCIDevice *pci_dev)
>
> pci_conf[PCI_INTERRUPT_PIN] = 1;
> pci_config_set_prog_interface(pci_conf, 0x2);
> - pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_INTEL);
> - pci_config_set_device_id(pci_conf, 0x5845);
> +
> + if (n->params.use_intel_id) {
> + pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_INTEL);
> + pci_config_set_device_id(pci_conf, 0x5846);
> + } else {
> + pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_REDHAT);
> + pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_REDHAT_NVME);
> + }
> +
> pci_config_set_class(pci_conf, PCI_CLASS_STORAGE_EXPRESS);
> pcie_endpoint_cap_init(pci_dev, 0x80);
>
> @@ -2638,8 +2645,6 @@ static void nvme_class_init(ObjectClass *oc, void *data)
> pc->realize = nvme_realize;
> pc->exit = nvme_exit;
> pc->class_id = PCI_CLASS_STORAGE_EXPRESS;
> - pc->vendor_id = PCI_VENDOR_ID_INTEL;
> - pc->device_id = 0x5845;
> pc->revision = 2;
>
> set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
> diff --git a/hw/block/nvme.h b/hw/block/nvme.h
> index c3cef0f024da..6b584f53ed64 100644
> --- a/hw/block/nvme.h
> +++ b/hw/block/nvme.h
> @@ -12,7 +12,8 @@
> DEFINE_PROP_UINT32("num_queues", _state, _props.num_queues, 64), \
> DEFINE_PROP_UINT8("aerl", _state, _props.aerl, 3), \
> DEFINE_PROP_UINT32("aer_max_queued", _state, _props.aer_max_queued, 64), \
> - DEFINE_PROP_UINT8("mdts", _state, _props.mdts, 7)
> + DEFINE_PROP_UINT8("mdts", _state, _props.mdts, 7), \
> + DEFINE_PROP_BOOL("x-use-intel-id", _state, _props.use_intel_id, false)
>
> typedef struct NvmeParams {
> char *serial;
> @@ -21,6 +22,7 @@ typedef struct NvmeParams {
> uint8_t aerl;
> uint32_t aer_max_queued;
> uint8_t mdts;
> + bool use_intel_id;
> } NvmeParams;
>
> typedef struct NvmeAsyncEvent {
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index 3e288bfceb7f..984412d98c9d 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -34,6 +34,7 @@ GlobalProperty hw_compat_4_2[] = {
> { "vhost-blk-device", "seg_max_adjust", "off"},
> { "usb-host", "suppress-remote-wake", "off" },
> { "usb-redir", "suppress-remote-wake", "off" },
> + { "nvme", "x-use-intel-id", "on"},
> };
> const size_t hw_compat_4_2_len = G_N_ELEMENTS(hw_compat_4_2);
>
Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Best regards,
Maxim Levitsky
next prev parent reply other threads:[~2020-02-12 12:38 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20200204095215eucas1p1bb0d5a3c183f7531d8b0e5e081f1ae6b@eucas1p1.samsung.com>
2020-02-04 9:51 ` [PATCH v5 00/26] nvme: support NVMe v1.3d, SGLs and multiple namespaces Klaus Jensen
[not found] ` <CGME20200204095216eucas1p2cb2b4772c04b92c97b0690c8e565234c@eucas1p2.samsung.com>
2020-02-04 9:51 ` [PATCH v5 01/26] nvme: rename trace events to nvme_dev Klaus Jensen
2020-02-12 9:08 ` Maxim Levitsky
2020-02-12 13:08 ` Klaus Birkelund Jensen
2020-02-12 13:17 ` Maxim Levitsky
[not found] ` <CGME20200204095216eucas1p137a2adf666e82d490aefca96a269acd9@eucas1p1.samsung.com>
2020-02-04 9:51 ` [PATCH v5 02/26] nvme: remove superfluous breaks Klaus Jensen
2020-02-12 9:09 ` Maxim Levitsky
[not found] ` <CGME20200204095217eucas1p1f3e1d113d5eaad4327de0158d1e480cb@eucas1p1.samsung.com>
2020-02-04 9:51 ` [PATCH v5 03/26] nvme: move device parameters to separate struct Klaus Jensen
2020-02-12 9:12 ` Maxim Levitsky
[not found] ` <CGME20200204095218eucas1p25d4623d82b1b7db3e555f3b27ca19763@eucas1p2.samsung.com>
2020-02-04 9:51 ` [PATCH v5 04/26] nvme: add missing fields in the identify data structures Klaus Jensen
2020-02-12 9:15 ` Maxim Levitsky
[not found] ` <CGME20200204095218eucas1p2400645e2400b3d4450386a46e71b9e9a@eucas1p2.samsung.com>
2020-02-04 9:51 ` [PATCH v5 05/26] nvme: populate the mandatory subnqn and ver fields Klaus Jensen
2020-02-12 9:18 ` Maxim Levitsky
[not found] ` <CGME20200204095219eucas1p1a7d44c741e119939c60ff60b96c7652e@eucas1p1.samsung.com>
2020-02-04 9:51 ` [PATCH v5 06/26] nvme: refactor nvme_addr_read Klaus Jensen
2020-02-12 9:23 ` Maxim Levitsky
[not found] ` <CGME20200204095219eucas1p1a7e88f8f4090988b3dee34d4d4bcc239@eucas1p1.samsung.com>
2020-02-04 9:51 ` [PATCH v5 07/26] nvme: add support for the abort command Klaus Jensen
2020-02-12 9:25 ` Maxim Levitsky
[not found] ` <CGME20200204095220eucas1p186b0de598359750d49278e0226ae45fb@eucas1p1.samsung.com>
2020-02-04 9:51 ` [PATCH v5 08/26] nvme: refactor device realization Klaus Jensen
2020-02-12 9:27 ` Maxim Levitsky
2020-03-16 7:43 ` Klaus Birkelund Jensen
2020-03-25 10:21 ` Maxim Levitsky
[not found] ` <CGME20200204095221eucas1p1d5b1c9578d79e6bcc5714976bbe7dc11@eucas1p1.samsung.com>
2020-02-04 9:51 ` [PATCH v5 09/26] nvme: add temperature threshold feature Klaus Jensen
2020-02-12 9:31 ` Maxim Levitsky
2020-03-16 7:44 ` Klaus Birkelund Jensen
2020-03-25 10:21 ` Maxim Levitsky
[not found] ` <CGME20200204095221eucas1p216ca2452c4184eb06bff85cff3c6a82b@eucas1p2.samsung.com>
2020-02-04 9:51 ` [PATCH v5 10/26] nvme: add support for the get log page command Klaus Jensen
2020-02-12 9:35 ` Maxim Levitsky
2020-03-16 7:45 ` Klaus Birkelund Jensen
2020-03-25 10:22 ` Maxim Levitsky
2020-03-25 10:24 ` Maxim Levitsky
[not found] ` <CGME20200204095222eucas1p2a2351bfc0930b3939927e485f1417e29@eucas1p2.samsung.com>
2020-02-04 9:51 ` [PATCH v5 11/26] nvme: add support for the asynchronous event request command Klaus Jensen
2020-02-12 10:21 ` Maxim Levitsky
[not found] ` <CGME20200204095223eucas1p281b4ef7c8f4170d8a42da3b4aea9e166@eucas1p2.samsung.com>
2020-02-04 9:51 ` [PATCH v5 12/26] nvme: add missing mandatory features Klaus Jensen
2020-02-12 10:27 ` Maxim Levitsky
2020-03-16 7:47 ` Klaus Birkelund Jensen
2020-03-25 10:22 ` Maxim Levitsky
[not found] ` <CGME20200204095223eucas1p2b24d674e4b201c13a5fffc6853520d9b@eucas1p2.samsung.com>
2020-02-04 9:51 ` [PATCH v5 13/26] nvme: additional tracing Klaus Jensen
2020-02-12 10:28 ` Maxim Levitsky
[not found] ` <CGME20200204095224eucas1p10807239f5dc4aa809650c85186c426a8@eucas1p1.samsung.com>
2020-02-04 9:51 ` [PATCH v5 14/26] nvme: make sure ncqr and nsqr is valid Klaus Jensen
2020-02-12 10:30 ` Maxim Levitsky
2020-03-16 7:48 ` Klaus Birkelund Jensen
2020-03-25 10:25 ` Maxim Levitsky
[not found] ` <CGME20200204095225eucas1p1e44b4de86afdf936e3c7f61359d529ce@eucas1p1.samsung.com>
2020-02-04 9:51 ` [PATCH v5 15/26] nvme: bump supported specification to 1.3 Klaus Jensen
2020-02-12 10:35 ` Maxim Levitsky
2020-03-16 7:50 ` Klaus Birkelund Jensen
2020-03-25 10:22 ` Maxim Levitsky
[not found] ` <CGME20200204095225eucas1p226336a91fb5460dddae5caa85964279f@eucas1p2.samsung.com>
2020-02-04 9:51 ` [PATCH v5 16/26] nvme: refactor prp mapping Klaus Jensen
2020-02-12 11:44 ` Maxim Levitsky
2020-03-16 7:51 ` Klaus Birkelund Jensen
2020-03-25 10:23 ` Maxim Levitsky
[not found] ` <CGME20200204095226eucas1p2429f45a5e23fe6ed57dee293be5e1b44@eucas1p2.samsung.com>
2020-02-04 9:51 ` [PATCH v5 17/26] nvme: allow multiple aios per command Klaus Jensen
2020-02-12 11:48 ` Maxim Levitsky
2020-03-16 7:53 ` Klaus Birkelund Jensen
2020-03-25 10:24 ` Maxim Levitsky
[not found] ` <CGME20200204095227eucas1p2f23061d391e67f4d3bde8bab74d1e44b@eucas1p2.samsung.com>
2020-02-04 9:52 ` [PATCH v5 18/26] nvme: use preallocated qsg/iov in nvme_dma_prp Klaus Jensen
2020-02-12 11:49 ` Maxim Levitsky
[not found] ` <CGME20200204095227eucas1p2d86cd6abcb66327dc112d58c83664139@eucas1p2.samsung.com>
2020-02-04 9:52 ` [PATCH v5 19/26] pci: pass along the return value of dma_memory_rw Klaus Jensen
[not found] ` <CGME20200204095228eucas1p2878eb150a933bb196fe5ca10a0b76eaf@eucas1p2.samsung.com>
2020-02-04 9:52 ` [PATCH v5 20/26] nvme: handle dma errors Klaus Jensen
2020-02-12 11:52 ` Maxim Levitsky
2020-03-16 7:53 ` Klaus Birkelund Jensen
2020-03-25 10:23 ` Maxim Levitsky
[not found] ` <CGME20200204095229eucas1p2b290e3603d73c129a4f6149805273705@eucas1p2.samsung.com>
2020-02-04 9:52 ` [PATCH v5 21/26] nvme: add support for scatter gather lists Klaus Jensen
2020-02-12 12:07 ` Maxim Levitsky
2020-03-16 7:54 ` Klaus Birkelund Jensen
2020-03-25 10:24 ` Maxim Levitsky
[not found] ` <CGME20200204095230eucas1p27456c6c0ab3b688d2f891d0dff098821@eucas1p2.samsung.com>
2020-02-04 9:52 ` [PATCH v5 22/26] nvme: support multiple namespaces Klaus Jensen
2020-02-04 16:31 ` Keith Busch
2020-02-06 7:27 ` Klaus Birkelund Jensen
2020-02-12 12:34 ` Maxim Levitsky
2020-03-16 7:55 ` Klaus Birkelund Jensen
2020-03-25 10:24 ` Maxim Levitsky
[not found] ` <CGME20200204095230eucas1p23f3105c4cab4aaec77a3dd42b8158c10@eucas1p2.samsung.com>
2020-02-04 9:52 ` [PATCH v5 23/26] pci: allocate pci id for nvme Klaus Jensen
2020-02-12 12:36 ` Maxim Levitsky
[not found] ` <CGME20200204095231eucas1p21019b1d857fcda9d67950e7d01de6b6a@eucas1p2.samsung.com>
2020-02-04 9:52 ` [PATCH v5 24/26] nvme: change controller pci id Klaus Jensen
2020-02-04 16:35 ` Keith Busch
2020-02-06 7:28 ` Klaus Birkelund Jensen
2020-02-12 12:37 ` Maxim Levitsky [this message]
[not found] ` <CGME20200204095231eucas1p1f2b78a655b1a217fe4f7006f79e37f86@eucas1p1.samsung.com>
2020-02-04 9:52 ` [PATCH v5 25/26] nvme: remove redundant NvmeCmd pointer parameter Klaus Jensen
2020-02-12 12:37 ` Maxim Levitsky
[not found] ` <CGME20200204095232eucas1p2b3264104447a42882f10edb06608ece5@eucas1p2.samsung.com>
2020-02-04 9:52 ` [PATCH v5 26/26] nvme: make lba data size configurable Klaus Jensen
2020-02-04 16:43 ` Keith Busch
2020-02-06 7:24 ` Klaus Birkelund Jensen
2020-02-12 12:39 ` Maxim Levitsky
2020-02-04 10:34 ` [PATCH v5 00/26] nvme: support NVMe v1.3d, SGLs and multiple namespaces no-reply
2020-02-04 16:47 ` Keith Busch
2020-02-06 7:29 ` Klaus Birkelund Jensen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dde54d12c2bb55c29ab7d19ab2cfc0dbf37ae1f0.camel@redhat.com \
--to=mlevitsk@redhat.com \
--cc=beata.michalska@linaro.org \
--cc=its@irrelevant.dk \
--cc=javier.gonz@samsung.com \
--cc=k.jensen@samsung.com \
--cc=kbusch@kernel.org \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).