diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2015-11-24 13:34:40 -0500 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-11-24 13:34:40 -0500 |
commit | 8bd142c01648cdb33e9bcafa0448ba2c20ed814c (patch) | |
tree | 9197c60d3f9d4036f38f281a183e94750ceea1d7 /drivers/dma | |
parent | d792abacaf1a1a8dfea353fab699b97fa6251c2a (diff) | |
parent | fbb4574ce9a37e15a9872860bf202f2be5bdf6c4 (diff) |
Merge tag 'kvm-arm-for-v4.4-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-master
KVM/ARM Fixes for v4.4-rc3.
Includes some timer fixes, properly unmapping PTEs, an errata fix, and two
tweaks to the EL2 panic code.
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/at_hdmac.c | 20 | ||||
-rw-r--r-- | drivers/dma/at_hdmac_regs.h | 6 | ||||
-rw-r--r-- | drivers/dma/at_xdmac.c | 20 | ||||
-rw-r--r-- | drivers/dma/edma.c | 4 | ||||
-rw-r--r-- | drivers/dma/imx-sdma.c | 2 | ||||
-rw-r--r-- | drivers/dma/sh/usb-dmac.c | 11 |
6 files changed, 34 insertions, 29 deletions
diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c index 4e55239c7a30..53d22eb73b56 100644 --- a/drivers/dma/at_hdmac.c +++ b/drivers/dma/at_hdmac.c | |||
@@ -729,8 +729,8 @@ atc_prep_dma_interleaved(struct dma_chan *chan, | |||
729 | return NULL; | 729 | return NULL; |
730 | 730 | ||
731 | dev_info(chan2dev(chan), | 731 | dev_info(chan2dev(chan), |
732 | "%s: src=0x%08x, dest=0x%08x, numf=%d, frame_size=%d, flags=0x%lx\n", | 732 | "%s: src=%pad, dest=%pad, numf=%d, frame_size=%d, flags=0x%lx\n", |
733 | __func__, xt->src_start, xt->dst_start, xt->numf, | 733 | __func__, &xt->src_start, &xt->dst_start, xt->numf, |
734 | xt->frame_size, flags); | 734 | xt->frame_size, flags); |
735 | 735 | ||
736 | /* | 736 | /* |
@@ -824,8 +824,8 @@ atc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, | |||
824 | u32 ctrla; | 824 | u32 ctrla; |
825 | u32 ctrlb; | 825 | u32 ctrlb; |
826 | 826 | ||
827 | dev_vdbg(chan2dev(chan), "prep_dma_memcpy: d0x%x s0x%x l0x%zx f0x%lx\n", | 827 | dev_vdbg(chan2dev(chan), "prep_dma_memcpy: d%pad s%pad l0x%zx f0x%lx\n", |
828 | dest, src, len, flags); | 828 | &dest, &src, len, flags); |
829 | 829 | ||
830 | if (unlikely(!len)) { | 830 | if (unlikely(!len)) { |
831 | dev_dbg(chan2dev(chan), "prep_dma_memcpy: length is zero!\n"); | 831 | dev_dbg(chan2dev(chan), "prep_dma_memcpy: length is zero!\n"); |
@@ -938,8 +938,8 @@ atc_prep_dma_memset(struct dma_chan *chan, dma_addr_t dest, int value, | |||
938 | void __iomem *vaddr; | 938 | void __iomem *vaddr; |
939 | dma_addr_t paddr; | 939 | dma_addr_t paddr; |
940 | 940 | ||
941 | dev_vdbg(chan2dev(chan), "%s: d0x%x v0x%x l0x%zx f0x%lx\n", __func__, | 941 | dev_vdbg(chan2dev(chan), "%s: d%pad v0x%x l0x%zx f0x%lx\n", __func__, |
942 | dest, value, len, flags); | 942 | &dest, value, len, flags); |
943 | 943 | ||
944 | if (unlikely(!len)) { | 944 | if (unlikely(!len)) { |
945 | dev_dbg(chan2dev(chan), "%s: length is zero!\n", __func__); | 945 | dev_dbg(chan2dev(chan), "%s: length is zero!\n", __func__); |
@@ -1022,8 +1022,8 @@ atc_prep_dma_memset_sg(struct dma_chan *chan, | |||
1022 | dma_addr_t dest = sg_dma_address(sg); | 1022 | dma_addr_t dest = sg_dma_address(sg); |
1023 | size_t len = sg_dma_len(sg); | 1023 | size_t len = sg_dma_len(sg); |
1024 | 1024 | ||
1025 | dev_vdbg(chan2dev(chan), "%s: d0x%08x, l0x%zx\n", | 1025 | dev_vdbg(chan2dev(chan), "%s: d%pad, l0x%zx\n", |
1026 | __func__, dest, len); | 1026 | __func__, &dest, len); |
1027 | 1027 | ||
1028 | if (!is_dma_fill_aligned(chan->device, dest, 0, len)) { | 1028 | if (!is_dma_fill_aligned(chan->device, dest, 0, len)) { |
1029 | dev_err(chan2dev(chan), "%s: buffer is not aligned\n", | 1029 | dev_err(chan2dev(chan), "%s: buffer is not aligned\n", |
@@ -1439,9 +1439,9 @@ atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, | |||
1439 | unsigned int periods = buf_len / period_len; | 1439 | unsigned int periods = buf_len / period_len; |
1440 | unsigned int i; | 1440 | unsigned int i; |
1441 | 1441 | ||
1442 | dev_vdbg(chan2dev(chan), "prep_dma_cyclic: %s buf@0x%08x - %d (%d/%d)\n", | 1442 | dev_vdbg(chan2dev(chan), "prep_dma_cyclic: %s buf@%pad - %d (%d/%d)\n", |
1443 | direction == DMA_MEM_TO_DEV ? "TO DEVICE" : "FROM DEVICE", | 1443 | direction == DMA_MEM_TO_DEV ? "TO DEVICE" : "FROM DEVICE", |
1444 | buf_addr, | 1444 | &buf_addr, |
1445 | periods, buf_len, period_len); | 1445 | periods, buf_len, period_len); |
1446 | 1446 | ||
1447 | if (unlikely(!atslave || !buf_len || !period_len)) { | 1447 | if (unlikely(!atslave || !buf_len || !period_len)) { |
diff --git a/drivers/dma/at_hdmac_regs.h b/drivers/dma/at_hdmac_regs.h index d1cfc8c876f9..7f58f06157f6 100644 --- a/drivers/dma/at_hdmac_regs.h +++ b/drivers/dma/at_hdmac_regs.h | |||
@@ -385,9 +385,9 @@ static void vdbg_dump_regs(struct at_dma_chan *atchan) {} | |||
385 | static void atc_dump_lli(struct at_dma_chan *atchan, struct at_lli *lli) | 385 | static void atc_dump_lli(struct at_dma_chan *atchan, struct at_lli *lli) |
386 | { | 386 | { |
387 | dev_crit(chan2dev(&atchan->chan_common), | 387 | dev_crit(chan2dev(&atchan->chan_common), |
388 | " desc: s0x%x d0x%x ctrl0x%x:0x%x l0x%x\n", | 388 | " desc: s%pad d%pad ctrl0x%x:0x%x l0x%pad\n", |
389 | lli->saddr, lli->daddr, | 389 | &lli->saddr, &lli->daddr, |
390 | lli->ctrla, lli->ctrlb, lli->dscr); | 390 | lli->ctrla, lli->ctrlb, &lli->dscr); |
391 | } | 391 | } |
392 | 392 | ||
393 | 393 | ||
diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c index b5e132d4bae5..7f039de143f0 100644 --- a/drivers/dma/at_xdmac.c +++ b/drivers/dma/at_xdmac.c | |||
@@ -920,8 +920,8 @@ at_xdmac_interleaved_queue_desc(struct dma_chan *chan, | |||
920 | desc->lld.mbr_cfg = chan_cc; | 920 | desc->lld.mbr_cfg = chan_cc; |
921 | 921 | ||
922 | dev_dbg(chan2dev(chan), | 922 | dev_dbg(chan2dev(chan), |
923 | "%s: lld: mbr_sa=0x%08x, mbr_da=0x%08x, mbr_ubc=0x%08x, mbr_cfg=0x%08x\n", | 923 | "%s: lld: mbr_sa=%pad, mbr_da=%pad, mbr_ubc=0x%08x, mbr_cfg=0x%08x\n", |
924 | __func__, desc->lld.mbr_sa, desc->lld.mbr_da, | 924 | __func__, &desc->lld.mbr_sa, &desc->lld.mbr_da, |
925 | desc->lld.mbr_ubc, desc->lld.mbr_cfg); | 925 | desc->lld.mbr_ubc, desc->lld.mbr_cfg); |
926 | 926 | ||
927 | /* Chain lld. */ | 927 | /* Chain lld. */ |
@@ -953,8 +953,8 @@ at_xdmac_prep_interleaved(struct dma_chan *chan, | |||
953 | if ((xt->numf > 1) && (xt->frame_size > 1)) | 953 | if ((xt->numf > 1) && (xt->frame_size > 1)) |
954 | return NULL; | 954 | return NULL; |
955 | 955 | ||
956 | dev_dbg(chan2dev(chan), "%s: src=0x%08x, dest=0x%08x, numf=%d, frame_size=%d, flags=0x%lx\n", | 956 | dev_dbg(chan2dev(chan), "%s: src=%pad, dest=%pad, numf=%d, frame_size=%d, flags=0x%lx\n", |
957 | __func__, xt->src_start, xt->dst_start, xt->numf, | 957 | __func__, &xt->src_start, &xt->dst_start, xt->numf, |
958 | xt->frame_size, flags); | 958 | xt->frame_size, flags); |
959 | 959 | ||
960 | src_addr = xt->src_start; | 960 | src_addr = xt->src_start; |
@@ -1179,8 +1179,8 @@ static struct at_xdmac_desc *at_xdmac_memset_create_desc(struct dma_chan *chan, | |||
1179 | desc->lld.mbr_cfg = chan_cc; | 1179 | desc->lld.mbr_cfg = chan_cc; |
1180 | 1180 | ||
1181 | dev_dbg(chan2dev(chan), | 1181 | dev_dbg(chan2dev(chan), |
1182 | "%s: lld: mbr_da=0x%08x, mbr_ds=0x%08x, mbr_ubc=0x%08x, mbr_cfg=0x%08x\n", | 1182 | "%s: lld: mbr_da=%pad, mbr_ds=%pad, mbr_ubc=0x%08x, mbr_cfg=0x%08x\n", |
1183 | __func__, desc->lld.mbr_da, desc->lld.mbr_ds, desc->lld.mbr_ubc, | 1183 | __func__, &desc->lld.mbr_da, &desc->lld.mbr_ds, desc->lld.mbr_ubc, |
1184 | desc->lld.mbr_cfg); | 1184 | desc->lld.mbr_cfg); |
1185 | 1185 | ||
1186 | return desc; | 1186 | return desc; |
@@ -1193,8 +1193,8 @@ at_xdmac_prep_dma_memset(struct dma_chan *chan, dma_addr_t dest, int value, | |||
1193 | struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); | 1193 | struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); |
1194 | struct at_xdmac_desc *desc; | 1194 | struct at_xdmac_desc *desc; |
1195 | 1195 | ||
1196 | dev_dbg(chan2dev(chan), "%s: dest=0x%08x, len=%d, pattern=0x%x, flags=0x%lx\n", | 1196 | dev_dbg(chan2dev(chan), "%s: dest=%pad, len=%d, pattern=0x%x, flags=0x%lx\n", |
1197 | __func__, dest, len, value, flags); | 1197 | __func__, &dest, len, value, flags); |
1198 | 1198 | ||
1199 | if (unlikely(!len)) | 1199 | if (unlikely(!len)) |
1200 | return NULL; | 1200 | return NULL; |
@@ -1229,8 +1229,8 @@ at_xdmac_prep_dma_memset_sg(struct dma_chan *chan, struct scatterlist *sgl, | |||
1229 | 1229 | ||
1230 | /* Prepare descriptors. */ | 1230 | /* Prepare descriptors. */ |
1231 | for_each_sg(sgl, sg, sg_len, i) { | 1231 | for_each_sg(sgl, sg, sg_len, i) { |
1232 | dev_dbg(chan2dev(chan), "%s: dest=0x%08x, len=%d, pattern=0x%x, flags=0x%lx\n", | 1232 | dev_dbg(chan2dev(chan), "%s: dest=%pad, len=%d, pattern=0x%x, flags=0x%lx\n", |
1233 | __func__, sg_dma_address(sg), sg_dma_len(sg), | 1233 | __func__, &sg_dma_address(sg), sg_dma_len(sg), |
1234 | value, flags); | 1234 | value, flags); |
1235 | desc = at_xdmac_memset_create_desc(chan, atchan, | 1235 | desc = at_xdmac_memset_create_desc(chan, atchan, |
1236 | sg_dma_address(sg), | 1236 | sg_dma_address(sg), |
diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c index 6b03e4e84e6b..0675e268d577 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c | |||
@@ -107,7 +107,7 @@ | |||
107 | 107 | ||
108 | /* CCCFG register */ | 108 | /* CCCFG register */ |
109 | #define GET_NUM_DMACH(x) (x & 0x7) /* bits 0-2 */ | 109 | #define GET_NUM_DMACH(x) (x & 0x7) /* bits 0-2 */ |
110 | #define GET_NUM_QDMACH(x) (x & 0x70 >> 4) /* bits 4-6 */ | 110 | #define GET_NUM_QDMACH(x) ((x & 0x70) >> 4) /* bits 4-6 */ |
111 | #define GET_NUM_PAENTRY(x) ((x & 0x7000) >> 12) /* bits 12-14 */ | 111 | #define GET_NUM_PAENTRY(x) ((x & 0x7000) >> 12) /* bits 12-14 */ |
112 | #define GET_NUM_EVQUE(x) ((x & 0x70000) >> 16) /* bits 16-18 */ | 112 | #define GET_NUM_EVQUE(x) ((x & 0x70000) >> 16) /* bits 16-18 */ |
113 | #define GET_NUM_REGN(x) ((x & 0x300000) >> 20) /* bits 20-21 */ | 113 | #define GET_NUM_REGN(x) ((x & 0x300000) >> 20) /* bits 20-21 */ |
@@ -1565,7 +1565,7 @@ static void edma_tc_set_pm_state(struct edma_tc *tc, bool enable) | |||
1565 | struct platform_device *tc_pdev; | 1565 | struct platform_device *tc_pdev; |
1566 | int ret; | 1566 | int ret; |
1567 | 1567 | ||
1568 | if (!tc) | 1568 | if (!IS_ENABLED(CONFIG_OF) || !tc) |
1569 | return; | 1569 | return; |
1570 | 1570 | ||
1571 | tc_pdev = of_find_device_by_node(tc->node); | 1571 | tc_pdev = of_find_device_by_node(tc->node); |
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c index 7058d58ba588..0f6fd42f55ca 100644 --- a/drivers/dma/imx-sdma.c +++ b/drivers/dma/imx-sdma.c | |||
@@ -1462,7 +1462,7 @@ err_firmware: | |||
1462 | 1462 | ||
1463 | #define EVENT_REMAP_CELLS 3 | 1463 | #define EVENT_REMAP_CELLS 3 |
1464 | 1464 | ||
1465 | static int __init sdma_event_remap(struct sdma_engine *sdma) | 1465 | static int sdma_event_remap(struct sdma_engine *sdma) |
1466 | { | 1466 | { |
1467 | struct device_node *np = sdma->dev->of_node; | 1467 | struct device_node *np = sdma->dev->of_node; |
1468 | struct device_node *gpr_np = of_parse_phandle(np, "gpr", 0); | 1468 | struct device_node *gpr_np = of_parse_phandle(np, "gpr", 0); |
diff --git a/drivers/dma/sh/usb-dmac.c b/drivers/dma/sh/usb-dmac.c index ebd8a5f398b0..f1bcc2a163b3 100644 --- a/drivers/dma/sh/usb-dmac.c +++ b/drivers/dma/sh/usb-dmac.c | |||
@@ -679,8 +679,11 @@ static int usb_dmac_runtime_suspend(struct device *dev) | |||
679 | struct usb_dmac *dmac = dev_get_drvdata(dev); | 679 | struct usb_dmac *dmac = dev_get_drvdata(dev); |
680 | int i; | 680 | int i; |
681 | 681 | ||
682 | for (i = 0; i < dmac->n_channels; ++i) | 682 | for (i = 0; i < dmac->n_channels; ++i) { |
683 | if (!dmac->channels[i].iomem) | ||
684 | break; | ||
683 | usb_dmac_chan_halt(&dmac->channels[i]); | 685 | usb_dmac_chan_halt(&dmac->channels[i]); |
686 | } | ||
684 | 687 | ||
685 | return 0; | 688 | return 0; |
686 | } | 689 | } |
@@ -799,11 +802,10 @@ static int usb_dmac_probe(struct platform_device *pdev) | |||
799 | ret = pm_runtime_get_sync(&pdev->dev); | 802 | ret = pm_runtime_get_sync(&pdev->dev); |
800 | if (ret < 0) { | 803 | if (ret < 0) { |
801 | dev_err(&pdev->dev, "runtime PM get sync failed (%d)\n", ret); | 804 | dev_err(&pdev->dev, "runtime PM get sync failed (%d)\n", ret); |
802 | return ret; | 805 | goto error_pm; |
803 | } | 806 | } |
804 | 807 | ||
805 | ret = usb_dmac_init(dmac); | 808 | ret = usb_dmac_init(dmac); |
806 | pm_runtime_put(&pdev->dev); | ||
807 | 809 | ||
808 | if (ret) { | 810 | if (ret) { |
809 | dev_err(&pdev->dev, "failed to reset device\n"); | 811 | dev_err(&pdev->dev, "failed to reset device\n"); |
@@ -851,10 +853,13 @@ static int usb_dmac_probe(struct platform_device *pdev) | |||
851 | if (ret < 0) | 853 | if (ret < 0) |
852 | goto error; | 854 | goto error; |
853 | 855 | ||
856 | pm_runtime_put(&pdev->dev); | ||
854 | return 0; | 857 | return 0; |
855 | 858 | ||
856 | error: | 859 | error: |
857 | of_dma_controller_free(pdev->dev.of_node); | 860 | of_dma_controller_free(pdev->dev.of_node); |
861 | pm_runtime_put(&pdev->dev); | ||
862 | error_pm: | ||
858 | pm_runtime_disable(&pdev->dev); | 863 | pm_runtime_disable(&pdev->dev); |
859 | return ret; | 864 | return ret; |
860 | } | 865 | } |