Messages in this thread | | | Date | Sat, 6 Jun 2009 00:11:15 +0200 | Subject | Re: [PATCH] dma-debug: disable DMA_API_DEBUG for now | From | Torsten Kaiser <> |
| |
On Fri, Jun 5, 2009 at 8:20 PM, Joerg Roedel <joro@8bytes.org> wrote: > On Fri, Jun 05, 2009 at 05:52:27PM +0200, Torsten Kaiser wrote: >> Should there be a warning if more then one possible match were found? > > True. That would be better. But I tried to keep the code change as small > as possible without disabling the feature completly. > >> * driver maps address 'a' with size 1 >> * driver maps same address 'a' with size 2 >> * driver wrongly unmaps the second allocation with size 1 >> -> no warning, because the first allocation is returned > > Hmm, I am not sure if we can handle this situation correctly in the > dma-debug code. There is no unique key to identify a mapping request > which allows to assign an unmap request to it. Currently dma-debug uses > device and dma-address. But that seems not to be sufficient. The > best-fit algorithm is also a but fuzzy of course.
Maybe we just shouldn't try to handle it at all:
static void add_dma_entry(struct dma_debug_entry *entry) { struct hash_bucket *bucket; unsigned long flags;
bucket = get_hash_bucket(entry, &flags); if(hash_bucket_find(bucket, entry)) { printk(KERN_ERR "DMA-API: device mapped same address twice, " "this use case cannot be handled currently - disabling debugging\n"); global_disable = true; } hash_bucket_add(bucket, entry); put_hash_bucket(bucket, &flags); }
This would allow this feature to remain for most cased, but would also prevent all false warnings.
Torsten
| |