c6x: dma-mapping: support debug_dma_mapping_error
PATCH 1/1 c6x: dma-mapping: support debug_dma_mapping_error
Add support for debug_dma_mapping_error() call to avoid warning from debug_dma_unmap() interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.
--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)
arch/c6x/include/asm/dma-mapping.h +1 -0
@@ -32,6 +32,7 @@ static inline int dma_set_mask(struct device *dev, u64 dma_mask)*/ static inline int dma_mapping_error (struct device *dev,dma_addr_t dma_addr) { +debug_dma_mapping_error (dev, dma_addr);return dma_addr == ~0 ; }
Signature · 1 line
1.7.9.5
PATCH RESEND 1/1 c6x: dma-mapping: support debug_dma_mapping_error
Add support for debug_dma_mapping_error() call to avoid warning from debug_dma_unmap() interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.
--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)
arch/c6x/include/asm/dma-mapping.h +1 -0
@@ -32,6 +32,7 @@ static inline int dma_set_mask(struct device *dev, u64 dma_mask)*/ static inline int dma_mapping_error (struct device *dev,dma_addr_t dma_addr) { +debug_dma_mapping_error (dev, dma_addr);return dma_addr == ~0 ; }
Signature · 1 line
1.7.9.5
Quoted 9 lines · Shuah Khan
Add support for
debug_dma_mapping_error()call to avoid warning fromdebug_dma_unmap()interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.Signed-off-by Shuah Khan <[email protected]>--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)
Would you like to this patch go through c6x arch tree or linux-next? Please let me know your preference.
-- Shuah
Quoted 13 lines
arch/c6x/include/asm/dma-mapping.h +1
-0@@ -32,6 +32,7 @@ static inline int dma_set_mask(struct device *dev, u64 dma_mask)*/ static inline int dma_mapping_error (struct device *dev,dma_addr_t dma_addr) { +debug_dma_mapping_error (dev, dma_addr);return dma_addr == ~0 ; }
Quoted 6 lines · Shuah Khan
Quoted 5 lines · Shuah Khan
Add support for
debug_dma_mapping_error()call to avoid warning fromdebug_dma_unmap()interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.
Quoted 7 lines
Quoted 4 lines
Signed-off-by Shuah Khan <[email protected]>--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)Would you like to this patch go through c6x arch tree or linux-next? Please let me know your preference.
I tried to test this but I get a build error with CONFIG_DMA_API_DEBUG:
/linux-next/lib/dma-debug.c: In function 'has_mapping_error':
/linux-next/lib/dma-debug.c:863:15: error: implicit declaration of function 'get_dma_ops' [-Werror=implicit-function-declaration] /linux-next/lib/dma-debug.c:863:34: warning: initialization makes pointer from integer without a cast [enabled by default]
C6X (along with some other architectures) doesn't have a get_dma_ops() function defined.
Quoted 15 lines · Mark Salter
Quoted 6 lines · Shuah Khan
Quoted 5 lines · Shuah Khan
Add support for
debug_dma_mapping_error()call to avoid warning fromdebug_dma_unmap()interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.Quoted 7 lines
Quoted 4 lines
Signed-off-by Shuah Khan <[email protected]>--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)Would you like to this patch go through c6x arch tree or linux-next? Please let me know your preference.
Quoted 8 lines
I tried to test this but I get a build error with
CONFIG_DMA_API_DEBUG:/linux-next/lib/dma-debug.c: In function '
has_mapping_error':
/linux-next/lib/dma-debug.c:863:15: error: implicit declaration of function 'get_dma_ops' [-Werror=implicit-function-declaration] /linux-next/lib/dma-debug.c:863:34: warning: initialization makes pointer from integer without a cast [enabled by default]C6X (along with some other architectures) doesn't have a
get_dma_ops()function defined.
That is a problem I didn't think about. I did a check and looks like c6x and frv are the only ones that don't have get_dma_ops() defined. frv is in a different category as it doesn't use dma_debug interfaces. IN the case c6x, now with my change to add debug_dma_mapping_error(), we will start seeing warnings since dma_map_page() and dma_map_single() are debugged with a call to debug_dma_map_page() and the corresponding dma_mapping_error() interface doesn't call debug_dma_mapping_error() interface
- Does adding get_dma_ops() make sense? Doesn't look like c6x exports dma_ops?
Any other ideas?
-- Shuah
Quoted 22 lines · Shuah Khan
Quoted 21 lines · Mark Salter
Quoted 6 lines · Shuah Khan
Quoted 5 lines · Shuah Khan
Add support for
debug_dma_mapping_error()call to avoid warning fromdebug_dma_unmap()interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.Quoted 7 lines
Quoted 4 lines
Signed-off-by Shuah Khan <[email protected]>--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)Would you like to this patch go through c6x arch tree or linux-next? Please let me know your preference.
I tried to test this but I get a build error with
CONFIG_DMA_API_DEBUG:/linux-next/lib/dma-debug.c: In function '
has_mapping_error':
/linux-next/lib/dma-debug.c:863:15: error: implicit declaration of function 'get_dma_ops' [-Werror=implicit-function-declaration] /linux-next/lib/dma-debug.c:863:34: warning: initialization makes pointer from integer without a cast [enabled by default]
Quoted 5 lines
Quoted 2 lines
C6X (along with some other architectures) doesn't have a
get_dma_ops()function defined.That is a problem I didn't think about. I did a check and looks like c6x and frv are the only ones that don't have
get_dma_ops()defined. frv is
By my count, there are 14 architectures with get_dma_ops() and 14 without.
Quoted 11 lines
in a different category as it doesn't use
dma_debuginterfaces. IN the case c6x, now with my change to adddebug_dma_mapping_error(), we will start seeing warnings sincedma_map_page()anddma_map_single()are debugged with a call todebug_dma_map_page()and the correspondingdma_mapping_error()interface doesn't calldebug_dma_mapping_error()interface- Does adding
get_dma_ops()make sense? Doesn't look like c6x exportsdma_ops?Any other ideas?
I'm not sure. I don't know what get_dma_ops() does and it doesn't seem to be documented anywhere.
Quoted 23 lines · Mark Salter
Quoted 22 lines · Shuah Khan
Quoted 21 lines · Mark Salter
Quoted 6 lines · Shuah Khan
Quoted 5 lines · Shuah Khan
Add support for
debug_dma_mapping_error()call to avoid warning fromdebug_dma_unmap()interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.Quoted 7 lines
Quoted 4 lines
Signed-off-by Shuah Khan <[email protected]>--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)Would you like to this patch go through c6x arch tree or linux-next? Please let me know your preference.
I tried to test this but I get a build error with
CONFIG_DMA_API_DEBUG:/linux-next/lib/dma-debug.c: In function '
has_mapping_error':
/linux-next/lib/dma-debug.c:863:15: error: implicit declaration of function 'get_dma_ops' [-Werror=implicit-function-declaration] /linux-next/lib/dma-debug.c:863:34: warning: initialization makes pointer from integer without a cast [enabled by default]
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
C6X (along with some other architectures) doesn't have a
get_dma_ops()function defined.That is a problem I didn't think about. I did a check and looks like c6x and frv are the only ones that don't have
get_dma_ops()defined. frv isBy my count, there are 14 architectures with
get_dma_ops()and 14 without.
Right. I should have explained more. The following archs
arch/avr32/include/asm/dma-mapping.harch/blackfin/include/asm/dma-mapping.harch/cris/include/asm/dma-mapping.harch/mn10300/include/asm/dma-mapping.harch/parisc/include/asm/dma-mapping.harch/xtensa/include/asm/dma-mapping.h
define dma_map_page() and dma_map_single() and not call debug_dma_map_page() interface. There is no risk of mis-matched debug and non-debug mapping and mapping error checks like in the case of other archs and c6x.
Quoted 7 lines
Quoted 7 lines
in a different category as it doesn't use
dma_debuginterfaces. IN the case c6x, now with my change to adddebug_dma_mapping_error(), we will start seeing warnings sincedma_map_page()anddma_map_single()are debugged with a call todebug_dma_map_page()and the correspondingdma_mapping_error()interface doesn't calldebug_dma_mapping_error()interface
Quoted 7 lines
Quoted 4 lines
- Does adding
get_dma_ops()make sense? Doesn't look like c6x exportsdma_ops?Any other ideas?
I'm not sure. I don't know what
get_dma_ops()does and it doesn't seem to be documented anywhere.
It returns pointer to dma_ops like the one on alpha:
static inline struct dma_map_ops *get_dma_ops(struct device *dev)
{
return dma_ops;
}c6x doesn't define dma_ops looks like. Is that correct? Returning null from get_dma_ops() is not an option as get_dma_ops() return is assumed to be not null.
Thanks,
-- Shuah
Quoted 41 lines · Shuah Khan
Quoted 23 lines · Mark Salter
Quoted 22 lines · Shuah Khan
Quoted 21 lines · Mark Salter
Quoted 6 lines · Shuah Khan
Quoted 5 lines · Shuah Khan
Add support for
debug_dma_mapping_error()call to avoid warning fromdebug_dma_unmap()interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.Quoted 7 lines
Quoted 4 lines
Signed-off-by Shuah Khan <[email protected]>--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)Would you like to this patch go through c6x arch tree or linux-next? Please let me know your preference.
I tried to test this but I get a build error with
CONFIG_DMA_API_DEBUG:/linux-next/lib/dma-debug.c: In function '
has_mapping_error':
/linux-next/lib/dma-debug.c:863:15: error: implicit declaration of function 'get_dma_ops' [-Werror=implicit-function-declaration] /linux-next/lib/dma-debug.c:863:34: warning: initialization makes pointer from integer without a cast [enabled by default]Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
C6X (along with some other architectures) doesn't have a
get_dma_ops()function defined.That is a problem I didn't think about. I did a check and looks like c6x and frv are the only ones that don't have
get_dma_ops()defined. frv isBy my count, there are 14 architectures with
get_dma_ops()and 14 without.Right. I should have explained more. The following archs
arch/avr32/include/asm/dma-mapping.harch/blackfin/include/asm/dma-mapping.harch/cris/include/asm/dma-mapping.harch/mn10300/include/asm/dma-mapping.harch/parisc/include/asm/dma-mapping.harch/xtensa/include/asm/dma-mapping.h
Quoted 4 lines
define
dma_map_page()anddma_map_single()and not calldebug_dma_map_page()interface. There is no risk of mis-matched debug and non-debug mapping and mapping error checks like in the case of other archs and c6x.
Ah, okay. Not all architectures support HAVE_DMA_API_DEBUG. So, of those that do, c6x seems to be the only one with dma_ops.
Quoted 16 lines
Quoted 8 lines
Quoted 8 lines
in a different category as it doesn't use
dma_debuginterfaces. IN the case c6x, now with my change to adddebug_dma_mapping_error(), we will start seeing warnings sincedma_map_page()anddma_map_single()are debugged with a call todebug_dma_map_page()and the correspondingdma_mapping_error()interface doesn't calldebug_dma_mapping_error()interfaceQuoted 7 lines
Quoted 4 lines
- Does adding
get_dma_ops()make sense? Doesn't look like c6x exportsdma_ops?Any other ideas?
I'm not sure. I don't know what
get_dma_ops()does and it doesn't seem to be documented anywhere.
Quoted 6 lines
It returns pointer to
dma_opslike the one on alpha:static inline struct
dma_map_ops*get_dma_ops(struct device *dev){ return dma_ops; }
Okay, so what is dma_ops used for? Looks like maybe supporting different dma features/functionality on different busses/devices.
Quoted 4 lines
c6x doesn't define
dma_opslooks like. Is that correct? Returning null fromget_dma_ops()is not an option asget_dma_ops()return is assumed to be not null.
As things stand, c6x DMA hw doesn't really need dma_ops and until this patch, I could build in DMA debug support without dma_ops. So do we really want to require dma_ops for dma debug support even for those architectures which don't otherwise need it? I could add dma_ops, but it seems silly to do so only for dma debug.
Quoted 81 lines · Mark Salter
Quoted 41 lines · Shuah Khan
Quoted 23 lines · Mark Salter
Quoted 22 lines · Shuah Khan
Quoted 21 lines · Mark Salter
Quoted 6 lines · Shuah Khan
Quoted 5 lines · Shuah Khan
Add support for
debug_dma_mapping_error()call to avoid warning fromdebug_dma_unmap()interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.Quoted 7 lines
Quoted 4 lines
Signed-off-by Shuah Khan <[email protected]>--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)Would you like to this patch go through c6x arch tree or linux-next? Please let me know your preference.
I tried to test this but I get a build error with
CONFIG_DMA_API_DEBUG:/linux-next/lib/dma-debug.c: In function '
has_mapping_error':
/linux-next/lib/dma-debug.c:863:15: error: implicit declaration of function 'get_dma_ops' [-Werror=implicit-function-declaration] /linux-next/lib/dma-debug.c:863:34: warning: initialization makes pointer from integer without a cast [enabled by default]Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
C6X (along with some other architectures) doesn't have a
get_dma_ops()function defined.That is a problem I didn't think about. I did a check and looks like c6x and frv are the only ones that don't have
get_dma_ops()defined. frv isBy my count, there are 14 architectures with
get_dma_ops()and 14 without.Right. I should have explained more. The following archs
arch/avr32/include/asm/dma-mapping.harch/blackfin/include/asm/dma-mapping.harch/cris/include/asm/dma-mapping.harch/mn10300/include/asm/dma-mapping.harch/parisc/include/asm/dma-mapping.harch/xtensa/include/asm/dma-mapping.hQuoted 4 lines
define
dma_map_page()anddma_map_single()and not calldebug_dma_map_page()interface. There is no risk of mis-matched debug and non-debug mapping and mapping error checks like in the case of other archs and c6x.Ah, okay. Not all architectures support
HAVE_DMA_API_DEBUG. So, of those that do, c6x seems to be the only one withdma_ops.Quoted 16 lines
Quoted 8 lines
Quoted 8 lines
in a different category as it doesn't use
dma_debuginterfaces. IN the case c6x, now with my change to adddebug_dma_mapping_error(), we will start seeing warnings sincedma_map_page()anddma_map_single()are debugged with a call todebug_dma_map_page()and the correspondingdma_mapping_error()interface doesn't calldebug_dma_mapping_error()interfaceQuoted 7 lines
Quoted 4 lines
- Does adding
get_dma_ops()make sense? Doesn't look like c6x exportsdma_ops?Any other ideas?
I'm not sure. I don't know what
get_dma_ops()does and it doesn't seem to be documented anywhere.Quoted 6 lines
It returns pointer to
dma_opslike the one on alpha:static inline struct
dma_map_ops*get_dma_ops(struct device *dev){ return dma_ops; }Okay, so what is
dma_opsused for? Looks like maybe supporting different dma features/functionality on different busses/devices.Quoted 4 lines
c6x doesn't define
dma_opslooks like. Is that correct? Returning null fromget_dma_ops()is not an option asget_dma_ops()return is assumed to be not null.
Quoted 5 lines
As things stand, c6x DMA hw doesn't really need
dma_opsand until this patch, I could build in DMA debug support withoutdma_ops. So do we really want to requiredma_opsfor dma debug support even for those architectures which don't otherwise need it? I could adddma_ops, but it seems silly to do so only for dma debug.
I agree it doesn't make sense to add dma_ops when there is no need to. Until now dma-debug didn't depend on dma_ops. This dependency has been introduced with the debug_dma_mapping_error() interface I added :(
Let me go back and see if I can come up with a way to not require dma_ops for debug-dma.
Thanks,
-- Shuah
Quoted 88 lines · Shuah Khan
Quoted 81 lines · Mark Salter
Quoted 41 lines · Shuah Khan
Quoted 23 lines · Mark Salter
Quoted 22 lines · Shuah Khan
Quoted 21 lines · Mark Salter
Quoted 6 lines · Shuah Khan
Quoted 5 lines · Shuah Khan
Add support for
debug_dma_mapping_error()call to avoid warning fromdebug_dma_unmap()interface when it checks for mapping error checked status. Without this patch, device driver failed to check map error warning is generated.Quoted 7 lines
Quoted 4 lines
Signed-off-by Shuah Khan <[email protected]>--- arch/c6x/include/asm/dma-mapping.h | 1 + 1 file changed, 1 insertion(+)Would you like to this patch go through c6x arch tree or linux-next? Please let me know your preference.
I tried to test this but I get a build error with
CONFIG_DMA_API_DEBUG:/linux-next/lib/dma-debug.c: In function '
has_mapping_error':
/linux-next/lib/dma-debug.c:863:15: error: implicit declaration of function 'get_dma_ops' [-Werror=implicit-function-declaration] /linux-next/lib/dma-debug.c:863:34: warning: initialization makes pointer from integer without a cast [enabled by default]Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
C6X (along with some other architectures) doesn't have a
get_dma_ops()function defined.That is a problem I didn't think about. I did a check and looks like c6x and frv are the only ones that don't have
get_dma_ops()defined. frv isBy my count, there are 14 architectures with
get_dma_ops()and 14 without.Right. I should have explained more. The following archs
arch/avr32/include/asm/dma-mapping.harch/blackfin/include/asm/dma-mapping.harch/cris/include/asm/dma-mapping.harch/mn10300/include/asm/dma-mapping.harch/parisc/include/asm/dma-mapping.harch/xtensa/include/asm/dma-mapping.hQuoted 4 lines
define
dma_map_page()anddma_map_single()and not calldebug_dma_map_page()interface. There is no risk of mis-matched debug and non-debug mapping and mapping error checks like in the case of other archs and c6x.Ah, okay. Not all architectures support
HAVE_DMA_API_DEBUG. So, of those that do, c6x seems to be the only one withdma_ops.Quoted 16 lines
Quoted 8 lines
Quoted 8 lines
in a different category as it doesn't use
dma_debuginterfaces. IN the case c6x, now with my change to adddebug_dma_mapping_error(), we will start seeing warnings sincedma_map_page()anddma_map_single()are debugged with a call todebug_dma_map_page()and the correspondingdma_mapping_error()interface doesn't calldebug_dma_mapping_error()interfaceQuoted 7 lines
Quoted 4 lines
- Does adding
get_dma_ops()make sense? Doesn't look like c6x exportsdma_ops?Any other ideas?
I'm not sure. I don't know what
get_dma_ops()does and it doesn't seem to be documented anywhere.Quoted 6 lines
It returns pointer to
dma_opslike the one on alpha:static inline struct
dma_map_ops*get_dma_ops(struct device *dev){ return dma_ops; }Okay, so what is
dma_opsused for? Looks like maybe supporting different dma features/functionality on different busses/devices.Quoted 4 lines
c6x doesn't define
dma_opslooks like. Is that correct? Returning null fromget_dma_ops()is not an option asget_dma_ops()return is assumed to be not null.Quoted 5 lines
As things stand, c6x DMA hw doesn't really need
dma_opsand until this patch, I could build in DMA debug support withoutdma_ops. So do we really want to requiredma_opsfor dma debug support even for those architectures which don't otherwise need it? I could adddma_ops, but it seems silly to do so only for dma debug.
Quoted 6 lines
I agree it doesn't make sense to add
dma_opswhen there is no need to. Until now dma-debug didn't depend ondma_ops. This dependency has been introduced with thedebug_dma_mapping_error()interface I added :(Let me go back and see if I can come up with a way to not require
dma_opsfor debug-dma.
Mark/Marek,
This is for c6x to go through Marek's tree with all the other arch patches. Hope that is ok with you Mark.
https://lkml.org/lkml/2012/11/3/219 fixes the debug_dma_mapping_error() dependency on get_dma_ops() that caused compile errors on c6x.
Thanks,
-- Shuah
Mark Salter
Acked-byQuoted 6 lines · Shuah Khan
This is for c6x to go through Marek's tree with all the other arch patches. Hope that is ok with you Mark.
https://lkml.org/lkml/2012/11/3/219 fixes the
debug_dma_mapping_error()
dependency onget_dma_ops()that caused compile errors on c6x.
Yes.