nvme: Elaborate on cache maintenance operation in get/set_features
At the moment the nvme_get_features() and nvme_set_features() functions carry a (somewhat misleading) comment about missing cache maintenance. As it turns out, nvme_get_features() has no caller at all in the tree, and nvme_set_features' only user doesn't use a DMA buffer. Mention that in the comment, and leave some breadcrumbs for the future, should those functions attract more users. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
d0c04926cd
commit
4c49879689
@ -489,6 +489,7 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid,
|
|||||||
dma_addr_t dma_addr, u32 *result)
|
dma_addr_t dma_addr, u32 *result)
|
||||||
{
|
{
|
||||||
struct nvme_command c;
|
struct nvme_command c;
|
||||||
|
int ret;
|
||||||
|
|
||||||
memset(&c, 0, sizeof(c));
|
memset(&c, 0, sizeof(c));
|
||||||
c.features.opcode = nvme_admin_get_features;
|
c.features.opcode = nvme_admin_get_features;
|
||||||
@ -496,12 +497,20 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid,
|
|||||||
c.features.prp1 = cpu_to_le64(dma_addr);
|
c.features.prp1 = cpu_to_le64(dma_addr);
|
||||||
c.features.fid = cpu_to_le32(fid);
|
c.features.fid = cpu_to_le32(fid);
|
||||||
|
|
||||||
|
ret = nvme_submit_admin_cmd(dev, &c, result);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: add cache invalidate operation when the size of
|
* TODO: Add some cache invalidation when a DMA buffer is involved
|
||||||
* the DMA buffer is known
|
* in the request, here and before the command gets submitted. The
|
||||||
|
* buffer size varies by feature, also some features use a different
|
||||||
|
* field in the command packet to hold the buffer address.
|
||||||
|
* Section 5.21.1 (Set Features command) in the NVMe specification
|
||||||
|
* details the buffer requirements for each feature.
|
||||||
|
*
|
||||||
|
* At the moment there is no user of this function.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return nvme_submit_admin_cmd(dev, &c, result);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
|
int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
|
||||||
@ -516,8 +525,14 @@ int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
|
|||||||
c.features.dword11 = cpu_to_le32(dword11);
|
c.features.dword11 = cpu_to_le32(dword11);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: add cache flush operation when the size of
|
* TODO: Add a cache clean (aka flush) operation when a DMA buffer is
|
||||||
* the DMA buffer is known
|
* involved in the request. The buffer size varies by feature, also
|
||||||
|
* some features use a different field in the command packet to hold
|
||||||
|
* the buffer address. Section 5.21.1 (Set Features command) in the
|
||||||
|
* NVMe specification details the buffer requirements for each
|
||||||
|
* feature.
|
||||||
|
* At the moment the only user of this function is not using
|
||||||
|
* any DMA buffer at all.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return nvme_submit_admin_cmd(dev, &c, result);
|
return nvme_submit_admin_cmd(dev, &c, result);
|
||||||
|
Loading…
Reference in New Issue
Block a user