Skip to content
Snippets Groups Projects
Unverified Commit d66f224c authored by Thippeswamyh's avatar Thippeswamyh Committed by GitHub
Browse files

Merge pull request #282 from devegali/master

QDMA: Limit descriptor length for EQDMA Soft IP
parents 4b9a9767 e47d8761
Branches
No related tags found
No related merge requests found
...@@ -31,6 +31,9 @@ ...@@ -31,6 +31,9 @@
#include "qdma_context.h" #include "qdma_context.h"
#include "qdma_st_c2h.h" #include "qdma_st_c2h.h"
#include "qdma_access_common.h" #include "qdma_access_common.h"
#ifdef __XRT__
#include "eqdma_soft_access.h"
#endif
#include "thread.h" #include "thread.h"
#include "qdma_ul_ext.h" #include "qdma_ul_ext.h"
#include "version.h" #include "version.h"
...@@ -196,6 +199,22 @@ static ssize_t descq_mm_proc_request(struct qdma_descq *descq) ...@@ -196,6 +199,22 @@ static ssize_t descq_mm_proc_request(struct qdma_descq *descq)
qconf->aperture_size : QDMA_DESC_BLEN_MAX; qconf->aperture_size : QDMA_DESC_BLEN_MAX;
u8 keyhole_en = qconf->aperture_size ? 1 : 0; u8 keyhole_en = qconf->aperture_size ? 1 : 0;
u64 ep_addr_max = 0; u64 ep_addr_max = 0;
#ifdef __XRT__
if (descq->xdev->version_info.ip_type == EQDMA_SOFT_IP) {
uint32_t ip_version;
#ifndef __QDMA_VF__
uint8_t is_vf = 0;
#else
uint8_t is_vf = 1;
#endif
rv = eqdma_get_ip_version(descq->xdev, is_vf, &ip_version);
if (ip_version == EQDMA_IP_VERSION_5) {
pr_info("EQDMA Soft IP 5.0 supports descriptor length < 64K.\n");
aperture = qconf->aperture_size ?
qconf->aperture_size : SOFT_QDMA_DESC_BLEN_MAX;
}
}
#endif
lock_descq(descq); lock_descq(descq);
/* process completion of submitted requests */ /* process completion of submitted requests */
......
...@@ -95,6 +95,18 @@ enum qdma_pf_devices { ...@@ -95,6 +95,18 @@ enum qdma_pf_devices {
*/ */
#define QDMA_DESC_BLEN_MAX ((1 << (QDMA_DESC_BLEN_BITS)) - 1) #define QDMA_DESC_BLEN_MAX ((1 << (QDMA_DESC_BLEN_BITS)) - 1)
#ifdef __XRT__
/**
* number of bits to describe the SOFT DMA transfer descriptor
*/
#define SOFT_QDMA_DESC_BLEN_BITS 15
/**
* maximum size of a single SOFT DMA transfer descriptor
*/
#define SOFT_QDMA_DESC_BLEN_MAX (1 << (SOFT_QDMA_DESC_BLEN_BITS))
#endif
/** /**
* obtain the 32 most significant (high) bits of a 32-bit or 64-bit address * obtain the 32 most significant (high) bits of a 32-bit or 64-bit address
*/ */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment