diff options
| author | Ingo Molnar <mingo@kernel.org> | 2021-02-17 14:04:39 +0100 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2021-02-17 14:04:39 +0100 |
| commit | ed3cd45f8ca873dd320ff7e6b4c1c8f83a65302c (patch) | |
| tree | 783a02c1e78964654fe6d9a9c14b24bfc50e6b3b /drivers/acpi/arm64/iort.c | |
| parent | bae4ec13640b0915e7dd86da7e65c5d085160571 (diff) | |
| parent | f40ddce88593482919761f74910f42f4b84c004b (diff) | |
| download | linux-next-ed3cd45f8ca873dd320ff7e6b4c1c8f83a65302c.tar.gz linux-next-ed3cd45f8ca873dd320ff7e6b4c1c8f83a65302c.zip | |
Merge tag 'v5.11' into sched/core, to pick up fixes & refresh the branch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/acpi/arm64/iort.c')
| -rw-r--r-- | drivers/acpi/arm64/iort.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c index d4eac6d7e9fb..2494138a6905 100644 --- a/drivers/acpi/arm64/iort.c +++ b/drivers/acpi/arm64/iort.c @@ -1107,6 +1107,11 @@ static int nc_dma_get_range(struct device *dev, u64 *size) ncomp = (struct acpi_iort_named_component *)node->node_data; + if (!ncomp->memory_address_limit) { + pr_warn(FW_BUG "Named component missing memory address limit\n"); + return -EINVAL; + } + *size = ncomp->memory_address_limit >= 64 ? U64_MAX : 1ULL<<ncomp->memory_address_limit; @@ -1126,6 +1131,11 @@ static int rc_dma_get_range(struct device *dev, u64 *size) rc = (struct acpi_iort_root_complex *)node->node_data; + if (!rc->memory_address_limit) { + pr_warn(FW_BUG "Root complex missing memory address limit\n"); + return -EINVAL; + } + *size = rc->memory_address_limit >= 64 ? U64_MAX : 1ULL<<rc->memory_address_limit; @@ -1173,8 +1183,8 @@ void iort_dma_setup(struct device *dev, u64 *dma_addr, u64 *dma_size) end = dmaaddr + size - 1; mask = DMA_BIT_MASK(ilog2(end) + 1); dev->bus_dma_limit = end; - dev->coherent_dma_mask = mask; - *dev->dma_mask = mask; + dev->coherent_dma_mask = min(dev->coherent_dma_mask, mask); + *dev->dma_mask = min(*dev->dma_mask, mask); } *dma_addr = dmaaddr; |
