Alexey Kardashevskiy <a...@ozlabs.ru> writes: > On 29/10/2020 11:40, Michael Ellerman wrote: >> Alexey Kardashevskiy <a...@ozlabs.ru> writes: >>> @@ -1126,7 +1129,7 @@ static u64 enable_ddw(struct pci_dev *dev, struct >>> device_node *pdn) >>> >>> mutex_lock(&direct_window_init_mutex); >>> >>> - dma_addr = find_existing_ddw(pdn); >>> + dma_addr = find_existing_ddw(pdn, &len); >> >> I don't see len used anywhere? >> >>> if (dma_addr != 0) >>> goto out_unlock; >>> >>> @@ -1212,14 +1215,26 @@ static u64 enable_ddw(struct pci_dev *dev, struct >>> device_node *pdn) >>> } >>> /* verify the window * number of ptes will map the partition */ >>> /* check largest block * page size > max memory hotplug addr */ >>> - max_addr = ddw_memory_hotplug_max(); >>> - if (query.largest_available_block < (max_addr >> page_shift)) { >>> - dev_dbg(&dev->dev, "can't map partition max 0x%llx with %llu " >>> - "%llu-sized pages\n", max_addr, >>> query.largest_available_block, >>> - 1ULL << page_shift); >>> + /* >>> + * The "ibm,pmemory" can appear anywhere in the address space. >>> + * Assuming it is still backed by page structs, try MAX_PHYSMEM_BITS >>> + * for the upper limit and fallback to max RAM otherwise but this >>> + * disables device::dma_ops_bypass. >>> + */ >>> + len = max_ram_len; >> >> Here you override whatever find_existing_ddw() wrote to len? > > Not always, there is a bunch of gotos before this line to the end of the > function and one (which returns the existing window) is legit. Thanks,
Ah yep I see it. Gotos considered confusing ;) cheers _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu