Bug 225157 - sytem crashes on dma_map_sg()
Summary: sytem crashes on dma_map_sg()
Keywords:
Status: CLOSED INSUFFICIENT_DATA
Alias: None
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: kernel
Version: 4.0
Hardware: ia64
OS: Linux
medium
medium
Target Milestone: ---
: ---
Assignee: Prarit Bhargava
QA Contact: Brian Brock
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2007-01-29 14:58 UTC by Eli Cohen
Modified: 2008-03-14 05:30 UTC (History)
7 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2008-03-14 05:30:21 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Eli Cohen 2007-01-29 14:58:58 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy)

Description of problem:
When calling dma_map_sg() for a region more than 1 GB the kernel panics. To workaround this problem, need to call multiple times dma_map_sg() with a single entry rather than calling once with multiple entries.



Version-Release number of selected component (if applicable):


How reproducible:
Always


Steps to Reproduce:
1. call dma_map_sg() with several entries for more than 1 GB
2.
3.

Actual Results:


Expected Results:


Additional info:
Here are the specs agian since I am not sure I put then correctly:
component: kernel, IOMMU
arch: ia64
chipset HP

Please forward to HP.

Comment 1 Bjorn Helgaas 2007-01-29 16:11:44 UTC
This happens because sba_alloc_range(), which is called in the dma_map_sg()
path, panics instead of returning an allocation failure.

I think this was originally done because some drivers didn't check the
return code of dma_map_sg().  But it looks like most other IOTLB drivers
return failure instead of panicking, and it shouldn't be hard to fix 
sba_iommu.c to do the same thing.  Then it's "just" a question of
testing the supported drivers to make sure they have the right error
handling.

Comment 2 Ra P. 2007-02-14 15:09:44 UTC
Rather than fail the request, maybe it is better to fall back on registering
multiple chunks as if dma_map_single was called multiple times.

Comment 3 Bjorn Helgaas 2007-02-14 19:15:19 UTC
If the device can directly address all the buffers in the sglist,
we could bypass the IOMMU.  This has some effect on performance, so
would have to be evaluated.  You win some by not having to set up the
IOMMU mappings, but you also lose the benefit of coalescing many
sglist buffers into a few.

But for devices that can't reach all the buffers (e.g., 32-bit cards),
we can't bypass the IOMMU, so we have to either panic or return failure.

Comment 4 Luming Yu 2007-08-15 06:15:40 UTC
Are there any update on this issue?
What is the upstream status?
Is there any patch needs to be back ported?

Comment 5 Luming Yu 2008-03-14 05:30:21 UTC
Since __no__ update for these bug for about half year. Closing it...


Note You need to log in before you can comment on or make changes to this bug.