| From 5c1ef59168c485318e40ba485c1eba57d81d0faa Mon Sep 17 00:00:00 2001 |
| From: Tomoya MORINAGA <tomoya.rohm@gmail.com> |
| Date: Tue, 12 Feb 2013 11:25:33 +0900 |
| Subject: pch_dma: Use GFP_ATOMIC because called from interrupt context |
| |
| From: Tomoya MORINAGA <tomoya.rohm@gmail.com> |
| |
| commit 5c1ef59168c485318e40ba485c1eba57d81d0faa upstream. |
| |
| pdc_desc_get() is called from pd_prep_slave_sg, and the function is |
| called from interrupt context(e.g. Uart driver "pch_uart.c"). |
| In fact, I saw kernel error message. |
| So, GFP_ATOMIC must be used not GFP_NOIO. |
| |
| Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com> |
| Signed-off-by: Vinod Koul <vinod.koul@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/dma/pch_dma.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/dma/pch_dma.c |
| +++ b/drivers/dma/pch_dma.c |
| @@ -476,7 +476,7 @@ static struct pch_dma_desc *pdc_desc_get |
| dev_dbg(chan2dev(&pd_chan->chan), "scanned %d descriptors\n", i); |
| |
| if (!ret) { |
| - ret = pdc_alloc_desc(&pd_chan->chan, GFP_NOIO); |
| + ret = pdc_alloc_desc(&pd_chan->chan, GFP_ATOMIC); |
| if (ret) { |
| spin_lock(&pd_chan->lock); |
| pd_chan->descs_allocated++; |