http://bugzilla.novell.com/show_bug.cgi?id=559047
http://bugzilla.novell.com/show_bug.cgi?id=559047#c25
Dion Kant
Created an attachment (id=332248) --> (http://bugzilla.novell.com/attachment.cgi?id=332248) [details] debugging patch (kernel, v4)
Here's another version of the patch - it seems like the BUG_ON() in question still may have false positives. Hence I converted it to a warning now.
Are you able to reproduce the bug? 1. I think this is really a nasty one. The WARN_ON in do_unmap_single creates loads of logging. I run it for a long time and the system kept on running. I think now the bug does not hit in because of all the latency introduced by the logging (and the probing). (I did not save all this logging) 2. I moved the WARN_ON out of the for loop: static void do_unmap_single(struct device *hwdev, char *dma_addr, size_t size, int dir) { unsigned long flags; int i, count, nslots = ALIGN(size, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; int index = (dma_addr - io_tlb_start) >> IO_TLB_SHIFT; phys_addr_t phys = io_tlb_orig_addr[index]; for(i = 1, count = 0; i < nslots; ++i) {//temp if((phys + (i << IO_TLB_SHIFT)) != io_tlb_orig_addr[index + i]) { printk("dus[%d]: %Lx %Lx\n", index, (unsigned long long)io_tlb_orig_addr[index + i], (unsigned long long)phys + (i << IO_TLB_SHIFT)); ++count; } } WARN_ON(count); My hope was that this would reduce the logging significantly, however this does not happen. So each time it iterates over the slots most of the time it hits the printk once and logs the warning. See log in pv4-1.txt 3. I disabled the concerning WARN_ON(count), this time reducing the log with the Call Trace dumps See log in pv4-2.txt I think the introduced probing latency is still too large for the bug to occur. (Please tell me if you are unhappy with the large attachements and if you want me to remove redundant parts) -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.