3.9 merge window kernels

poma pomidorabelisima at gmail.com
Sat Feb 23 22:56:26 UTC 2013


On 02/23/13 13:48, Josh Boyer wrote:
> On Sat, Feb 23, 2013 at 7:01 AM, Mauro Carvalho Chehab
> <mchehab at redhat.com> wrote:
>>> ------------[ cut here ]------------
>>> WARNING: at lib/dma-debug.c:933 check_unmap+0x407/0x8a0()
>>> Hardware name: M720-US3
>>> skge 0000:01:09.0: DMA-API: device driver failed to check map
>>> error[device address=0x0000000105d52522] [size=90 bytes] [mapped as single]
>>> Modules linked in:
>>>  …uetooth rfkill ip6t_REJECT nf_conntrack_ipv6 nf_conntrack_ipv4
>>> nf_defrag_ipv6 nf_defrag_ipv4 xt_conntrack ip6table_filter nf_conntrack
>>> ip6_tables… vhost_net tun macvtap… macvlan… nfsd auth_rpcgss nfs_acl
>>> lockd… r8169… mii skge… sunrpc
>>
>> Funny enough, it is also a DMA error...
>>
>> I'm starting to suspect that maybe some change at the dma stack made
>> it a little more pedantic ;)
> 
> Yes.  In 3.8.
> 
>> Two similar errors on different drivers is enough for me to take a deeper
>> look into it to solve the mystery ;)
>>
>> Basically, those got generated by lib/dma-debug.c.
>>
>> On the af9015 case, this is a simple test, done at debug_dma_map_page().
>> It checks if the area is in stack and print an error. I suspect that, on
>> x86, the driver will still run, on most cases.
>>
>> In the case of the network driver, it detected that
>> debug_dma_mapping_error() was never called. Also, I believe that the
>> network driver will still work, and this is more a warning that bad
>> things might happen with the driver, if the check is not done.
> 
> No, you don't call debug_dma_mapping_error directly.  That's used by the
> DMA-API debugging functions itself.  It's not something drivers call.
> 
>> I _suspect_ that the network driver is calling dma_map_single() or
>> dma_map_page() but not calling dma_map_error().
> 
> Close.  It's calling pci_map_single and not calling pci_dma_mapping_error.
> Those are PCI wrappers around the same functions, but that's what they
> should be using.
> 
>> The only network driver there on the list of drivers on your error is r8169.
>> Weird enough, at least on linux-next, r8169 seems ok:
> 
> Er... his error was triggered by skge, which is a network driver.
> 
>> $ git grep -L dma_mapping_error $(git grep -l -e dma_map_single -e dma_map_page  drivers/net/)
> 
> That's the wrong function to grep for in most cases.  I don't think the
> prbolem is as wide-spread as you fear.
> 
> Poma, you should probably just start filing bugs for things you hit.
> In this case, the skge backtrace is just a warning but it can be fixed
> up relatively easily.
> 

https://bugzilla.redhat.com/show_bug.cgi?id=914994
Josh, Mauro thanks for the overview. :)
Antti, cheers. ;)

poma




More information about the kernel mailing list