On Thu, 11 Nov 2021 at 19:13, Mark-PK Tsai <mark-pk.tsai@xxxxxxxxxxxx> wrote: > > > Hi Mark, > > > > > > > > > > Use %pe format string to print return error code which > > > make the error message easier to understand. > > > > > > Signed-off-by: Mark-PK Tsai <mark-pk.tsai@xxxxxxxxxxxx> > > > --- > > > drivers/remoteproc/remoteproc_core.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c > > > index 502b6604b757..2242da320368 100644 > > > --- a/drivers/remoteproc/remoteproc_core.c > > > +++ b/drivers/remoteproc/remoteproc_core.c > > > @@ -575,8 +575,8 @@ static int rproc_handle_vdev(struct rproc *rproc, void *ptr, > > > dma_get_mask(rproc->dev.parent)); > > > if (ret) { > > > dev_warn(dev, > > > - "Failed to set DMA mask %llx. Trying to continue... %x\n", > > > - dma_get_mask(rproc->dev.parent), ret); > > > + "Failed to set DMA mask %llx. Trying to continue... (%pe)\n", > > > + dma_get_mask(rproc->dev.parent), ERR_PTR(ret)); > > > > Macro ERR_PTR() is used to convert error codes to pointer type when > > returning from a function - I fail to see how doing so in a dev_warn() > > context can make the message easier to understand. Can you provide an > > example? > > Hi, > > When dma_coerce_mask_and_coherent() fail, the output log will be as following. > > format log > %x Trying to continue... fffffffb > %d Trying to continue... -5 > %pe Trying to continue... -5 (if CONFIG_SYMBOLIC_ERRNAME is not set) > %pe Trying to continue... -EIO (if CONFIG_SYMBOLIC_ERRNAME=y) When failing, functions dma_coerce_mask_and_coherent() returns -EIO. Casting that to a (void *) with ERR_PTR() does not change that value. Since variable @ret is already declared as "int" the real fix is to change "%x" to "%d".