mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 17:36:20 +03:00
gpu: nvgpu: add compatibility version
Add compatibility version to page table and dma mapping structure.
Bug 200438879
Change-Id: I04b4601f71ae2b3e75843f39f5445ecca2b16677
Signed-off-by: Preetham Chandru R <pchandru@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2029086
(cherry picked from commit 8bbbd09caa)
Reviewed-on: https://git-master.nvidia.com/r/2071427
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bibek Basu <bbasu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
4269d56d02
commit
77ee4144ce
@@ -91,6 +91,7 @@ int nvidia_p2p_get_pages(u64 vaddr, u64 size,
|
|||||||
goto free_pages;
|
goto free_pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(*page_table)->version = NVIDIA_P2P_PAGE_TABLE_VERSION;
|
||||||
(*page_table)->pages = pages;
|
(*page_table)->pages = pages;
|
||||||
(*page_table)->entries = user_pages;
|
(*page_table)->entries = user_pages;
|
||||||
(*page_table)->page_size = NVIDIA_P2P_PAGE_SIZE_4KB;
|
(*page_table)->page_size = NVIDIA_P2P_PAGE_SIZE_4KB;
|
||||||
@@ -207,6 +208,8 @@ int nvidia_p2p_dma_map_pages(struct device *dev,
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
goto free_sgt;
|
goto free_sgt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(*dma_mapping)->version = NVIDIA_P2P_DMA_MAPPING_VERSION;
|
||||||
(*dma_mapping)->sgt = sgt;
|
(*dma_mapping)->sgt = sgt;
|
||||||
(*dma_mapping)->dev = dev;
|
(*dma_mapping)->dev = dev;
|
||||||
(*dma_mapping)->direction = direction;
|
(*dma_mapping)->direction = direction;
|
||||||
|
|||||||
@@ -30,6 +30,23 @@
|
|||||||
#define NVIDIA_P2P_PINNED 0x1
|
#define NVIDIA_P2P_PINNED 0x1
|
||||||
#define NVIDIA_P2P_MAPPED 0x2
|
#define NVIDIA_P2P_MAPPED 0x2
|
||||||
|
|
||||||
|
#define NVIDIA_P2P_MAJOR_VERSION_MASK 0xffff0000
|
||||||
|
#define NVIDIA_P2P_MINOR_VERSION_MASK 0x0000ffff
|
||||||
|
|
||||||
|
#define NVIDIA_P2P_MAJOR_VERSION(v) \
|
||||||
|
(((v) & NVIDIA_P2P_MAJOR_VERSION_MASK) >> 16)
|
||||||
|
|
||||||
|
#define NVIDIA_P2P_MINOR_VERSION(v) \
|
||||||
|
(((v) & NVIDIA_P2P_MINOR_VERSION_MASK))
|
||||||
|
|
||||||
|
#define NVIDIA_P2P_MAJOR_VERSION_MATCHES(p, v) \
|
||||||
|
(NVIDIA_P2P_MAJOR_VERSION((p)->version) == NVIDIA_P2P_MAJOR_VERSION(v))
|
||||||
|
|
||||||
|
#define NVIDIA_P2P_VERSION_COMPATIBLE(p, v) \
|
||||||
|
(NVIDIA_P2P_MAJOR_VERSION_MATCHES(p, v) && \
|
||||||
|
(NVIDIA_P2P_MINOR_VERSION((p)->version) >= \
|
||||||
|
(NVIDIA_P2P_MINOR_VERSION(v))))
|
||||||
|
|
||||||
enum nvidia_p2p_page_size_type {
|
enum nvidia_p2p_page_size_type {
|
||||||
NVIDIA_P2P_PAGE_SIZE_4KB = 0,
|
NVIDIA_P2P_PAGE_SIZE_4KB = 0,
|
||||||
NVIDIA_P2P_PAGE_SIZE_64KB,
|
NVIDIA_P2P_PAGE_SIZE_64KB,
|
||||||
@@ -38,6 +55,7 @@ enum nvidia_p2p_page_size_type {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct nvidia_p2p_page_table {
|
struct nvidia_p2p_page_table {
|
||||||
|
u32 version;
|
||||||
u32 page_size;
|
u32 page_size;
|
||||||
u64 size;
|
u64 size;
|
||||||
u32 entries;
|
u32 entries;
|
||||||
@@ -54,6 +72,7 @@ struct nvidia_p2p_page_table {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct nvidia_p2p_dma_mapping {
|
struct nvidia_p2p_dma_mapping {
|
||||||
|
u32 version;
|
||||||
dma_addr_t *hw_address;
|
dma_addr_t *hw_address;
|
||||||
u32 *hw_len;
|
u32 *hw_len;
|
||||||
u32 entries;
|
u32 entries;
|
||||||
@@ -64,6 +83,11 @@ struct nvidia_p2p_dma_mapping {
|
|||||||
enum dma_data_direction direction;
|
enum dma_data_direction direction;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define NVIDIA_P2P_PAGE_TABLE_VERSION 0x00010000
|
||||||
|
|
||||||
|
#define NVIDIA_P2P_PAGE_TABLE_VERSION_COMPATIBLE(p) \
|
||||||
|
NVIDIA_P2P_VERSION_COMPATIBLE(p, NVIDIA_P2P_PAGE_TABLE_VERSION)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @brief
|
* @brief
|
||||||
* Make the pages underlying a range of GPU virtual memory
|
* Make the pages underlying a range of GPU virtual memory
|
||||||
@@ -124,6 +148,11 @@ int nvidia_p2p_put_pages(struct nvidia_p2p_page_table *page_table);
|
|||||||
*/
|
*/
|
||||||
int nvidia_p2p_free_page_table(struct nvidia_p2p_page_table *page_table);
|
int nvidia_p2p_free_page_table(struct nvidia_p2p_page_table *page_table);
|
||||||
|
|
||||||
|
#define NVIDIA_P2P_DMA_MAPPING_VERSION 0x00010000
|
||||||
|
|
||||||
|
#define NVIDIA_P2P_DMA_MAPPING_VERSION_COMPATIBLE(p) \
|
||||||
|
NVIDIA_P2P_VERSION_COMPATIBLE(p, NVIDIA_P2P_DMA_MAPPING_VERSION)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @brief
|
* @brief
|
||||||
* Map the pages retrieved using nvidia_p2p_get_pages and
|
* Map the pages retrieved using nvidia_p2p_get_pages and
|
||||||
|
|||||||
Reference in New Issue
Block a user