mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
ipa3: Fix to save sgt table info in proper context
Sg table tables are not contiguous page due to this while copying total sg table it failing. To avoid this copying the each sg table individually. Acked-by: Akshay Pandit <pandit@codeaurora.org> Signed-off-by: Ashok Vuyyuru <avuyyuru@codeaurora.org>
This commit is contained in:
parent
a2ea5ff32c
commit
09b94adf7e
1 changed files with 8 additions and 2 deletions
|
|
@ -384,6 +384,8 @@ int ipa_smmu_store_sgt(struct sg_table **out_ch_ptr,
|
|||
struct sg_table *in_sgt_ptr)
|
||||
{
|
||||
unsigned int nents;
|
||||
int i;
|
||||
struct scatterlist *in_sg, *out_sg;
|
||||
|
||||
if (in_sgt_ptr != NULL) {
|
||||
*out_ch_ptr = kzalloc(sizeof(struct sg_table), GFP_KERNEL);
|
||||
|
|
@ -401,8 +403,12 @@ int ipa_smmu_store_sgt(struct sg_table **out_ch_ptr,
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memcpy((*out_ch_ptr)->sgl, in_sgt_ptr->sgl,
|
||||
nents*sizeof((*out_ch_ptr)->sgl));
|
||||
out_sg = (*out_ch_ptr)->sgl;
|
||||
for_each_sg(in_sgt_ptr->sgl, in_sg, in_sgt_ptr->nents, i) {
|
||||
memcpy(out_sg, in_sg, sizeof(struct scatterlist));
|
||||
out_sg++;
|
||||
}
|
||||
|
||||
(*out_ch_ptr)->nents = nents;
|
||||
(*out_ch_ptr)->orig_nents = in_sgt_ptr->orig_nents;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue