Dump fixup
authorCafe <cafe@not.applicable>
Mon, 31 Jul 2017 00:00:00 +0000 (00:00 +0000)
committerCafe <cafe@not.applicable>
Mon, 31 Jul 2017 17:14:50 +0000 (17:14 +0000)
src/ktrace.c

index 9faf93719f2663fc5a0bcbe7fc4a2d480db190ca..6ac12acab6652b5a47ab9ffbafc5dfbe9cb45b6a 100644 (file)
@@ -147,6 +147,8 @@ static void kbase_push_gpu(struct kbase_context *kctx, void *buffer, u64 gpu_add
        int p;
        pgprot_t prot = PAGE_KERNEL;
        uint64_t offset;
+       uint32_t buffer_offset = 0;
+       bool first_page = true;
 
        printk("Pushing %d bytes from %p to %LX", s, buffer, gpu_addr);
 
@@ -188,12 +190,8 @@ static void kbase_push_gpu(struct kbase_context *kctx, void *buffer, u64 gpu_add
        if (!(reg->flags & KBASE_REG_CPU_CACHED))
                prot = pgprot_writecombine(prot);
 
-       uint32_t buffer_offset = 0;
-
        /* Copy page-by-page */
 
-       bool first_page = true;
-
        for (p = offset >> PAGE_SHIFT; p < ((offset + s + PAGE_SIZE - 1) >> PAGE_SHIFT); ++p) {
                struct page *page;
                uint8_t *mapping;
@@ -272,11 +270,23 @@ static void assert_gpu_zeroes(struct kbase_context *kctx, uint64_t addr, size_t
 
 static void quick_dump_gpu(struct kbase_context *kctx, uint64_t addr, size_t s)
 {
-       uint8_t *buf = kbase_fetch_gpu(kctx, addr, NULL, s);
+       uint8_t *buf;
+
+       if(!addr) {
+               printk("Null quick dump");
+               return;
+       }
+
+       buf = kbase_fetch_gpu(kctx, addr, NULL, s);
 
        printk("Quick GPU dump (%LX)", addr);
-       formatted_hex_dump("a", buf, s);
 
+       if(!buf) {
+               printk("Not found");
+               return;
+       }
+
+       formatted_hex_dump("a", buf, s);
        kfree(buf);
 }
 
@@ -388,19 +398,22 @@ static void kbase_trace_fbd(struct kbase_context *kctx, uint32_t fbd)
 
        printk("--- (seriously though) --- %X", mfbd->block3[4]);
        buf32 = kbase_fetch_gpu(kctx, mfbd->block3[4], NULL, 128);
-       formatted_hex_dump("a", (uint8_t*) buf32, 128);
-
-       quick_dump_gpu(kctx, buf32[6], 64);
-       quick_dump_gpu(kctx, buf32[20], 64);
-       quick_dump_gpu(kctx, buf32[23], 64);
-       quick_dump_gpu(kctx, buf32[24], 64);
-       quick_dump_gpu(kctx, buf32[25], 64);
-       quick_dump_gpu(kctx, buf32[26], 64);
-       quick_dump_gpu(kctx, buf32[27], 64);
-       quick_dump_gpu(kctx, buf32[28], 64);
-       quick_dump_gpu(kctx, buf32[31], 64);
-
-       kfree(buf32);
+       
+       if(buf32) {
+               formatted_hex_dump("a", (uint8_t*) buf32, 128);
+
+               quick_dump_gpu(kctx, buf32[6], 64);
+               quick_dump_gpu(kctx, buf32[20], 64);
+               quick_dump_gpu(kctx, buf32[23], 64);
+               quick_dump_gpu(kctx, buf32[24], 64);
+               quick_dump_gpu(kctx, buf32[25], 64);
+               quick_dump_gpu(kctx, buf32[26], 64);
+               quick_dump_gpu(kctx, buf32[27], 64);
+               quick_dump_gpu(kctx, buf32[28], 64);
+               quick_dump_gpu(kctx, buf32[31], 64);
+
+               kfree(buf32);
+       }
 
        quick_dump_gpu(kctx, mfbd->block3[16], 128);