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

Reply via email to