summaryrefslogtreecommitdiffstats
path: root/driver/kmem.c
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@suren.me>2016-03-02 02:26:24 +0100
committerSuren A. Chilingaryan <csa@suren.me>2016-03-02 02:26:24 +0100
commita5da7db50d02878b6d9c844b18d0d3f8ccf6c62b (patch)
tree644c89545b12c269b479010f9ef18f1b8921af78 /driver/kmem.c
parentd85316d3201bfda47efae12ff824ecf68835020e (diff)
downloadpcitool-a5da7db50d02878b6d9c844b18d0d3f8ccf6c62b.tar.gz
pcitool-a5da7db50d02878b6d9c844b18d0d3f8ccf6c62b.tar.bz2
pcitool-a5da7db50d02878b6d9c844b18d0d3f8ccf6c62b.tar.xz
pcitool-a5da7db50d02878b6d9c844b18d0d3f8ccf6c62b.zip
Distinguish between hardware and bus addresses in pcilib
Diffstat (limited to 'driver/kmem.c')
-rw-r--r--driver/kmem.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/driver/kmem.c b/driver/kmem.c
index 618b5bf..a2bdfa7 100644
--- a/driver/kmem.c
+++ b/driver/kmem.c
@@ -86,7 +86,8 @@ int pcidriver_kmem_alloc(pcidriver_privdata_t *privdata, kmem_handle_t *kmem_han
kmem_handle->handle_id = kmem_entry->id;
- kmem_handle->pa = (unsigned long)(kmem_entry->dma_handle);
+ kmem_handle->ba = (unsigned long)(kmem_entry->dma_handle);
+ kmem_handle->pa = virt_to_phys((void*)kmem_entry->cpua);
kmem_handle->flags = KMEM_FLAG_REUSED;
if (kmem_entry->refs&KMEM_REF_HW) kmem_handle->flags |= KMEM_FLAG_REUSED_HW;
@@ -191,7 +192,8 @@ int pcidriver_kmem_alloc(pcidriver_privdata_t *privdata, kmem_handle_t *kmem_han
kmem_entry->size = kmem_handle->size;
kmem_entry->cpua = (unsigned long)retptr;
- kmem_handle->pa = (unsigned long)(kmem_entry->dma_handle);
+ kmem_handle->ba = (unsigned long)(kmem_entry->dma_handle);
+ kmem_handle->pa = virt_to_phys(retptr);
kmem_entry->mode = 1;
if (kmem_handle->flags&KMEM_FLAG_REUSE) {