Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3284265yba; Tue, 23 Apr 2019 00:40:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqz3ZlF2TpuH6OqUOdTOJiOCuGyUaUSDD9y/7N8YEHyO09syo1fgfJhx9QjgUTqlSeuP1ude X-Received: by 2002:a63:6e09:: with SMTP id j9mr23431363pgc.416.1556005213310; Tue, 23 Apr 2019 00:40:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556005213; cv=none; d=google.com; s=arc-20160816; b=RP7TPwjxFnJTtQnt6bqcvtphiiB1GbcsR5ywkgJZ3KKD3AcELVpHUKbGIKrMHDSwvC 0oElPqhUh5gh+XFuxuE8Iurb4PzyZgaVFRmnYU4kmsDn9IzGuD8k8i3T1mE2L9hbUhd1 Ajg/+WC8KL6WROVsEQEgW+B/lZyIPGwTqyjYi2Ha1UDFCX3B0RS9N8IMRt1w9D8X485c 0GQTxLiDyi8/kBpfdNLbx1GIm2QZGD2rMYllZZ348C8OgUpHbsS2eIplCFQ6ENBAEOYf RLiP2vepjaPWtOFtz/AZAlAmf3NjEER8RSvUpgeyrcpZGTl8lxZLtzqO9Xx8V+u83IS1 aUhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:subject:cc; bh=kxvOexT0r99lD1xWvNlfI3KLhuBYB/a6QgsbWXun1lo=; b=Uoc07BZPsfLLr7o+v3TbxMwy/TWWHClaLU3pGfUzBgBilORGH6Mw4DGhVUZHFbbDVL mFKUU6zXTONBuCVX/YE4+T3jFYRw3BPSGFIejj/VuaU/i716jO77jeTUmVyNy4PE0WQs 4Z+fUgQOR9STOJuctPsMHA4MQ1cX0G3MlUoRmGB+ntaTvpMC/a1T3nSF8cwykcmQ5OvB SzfHwtwC2fNdWbZftCo4+I8+RnZX0eDey8daqDzocNA1ZJBhPMFfDJiYPsWzC4sr0yw5 nyPW+qbhNCQ5Tw3nBb4d12O+LFfe+REPahf7z794yR4E9KE8zHuH7GAXQbnOlqcBJKgz rTwQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 91si15259897ple.299.2019.04.23.00.39.57; Tue, 23 Apr 2019 00:40:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726508AbfDWHia (ORCPT + 99 others); Tue, 23 Apr 2019 03:38:30 -0400 Received: from mga02.intel.com ([134.134.136.20]:50028 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725939AbfDWHi3 (ORCPT ); Tue, 23 Apr 2019 03:38:29 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Apr 2019 00:38:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,385,1549958400"; d="scan'208";a="339938795" Received: from allen-box.sh.intel.com (HELO [10.239.159.136]) ([10.239.159.136]) by fmsmga006.fm.intel.com with ESMTP; 23 Apr 2019 00:38:25 -0700 Cc: baolu.lu@linux.intel.com, David Woodhouse , Joerg Roedel , ashok.raj@intel.com, jacob.jun.pan@intel.com, alan.cox@intel.com, kevin.tian@intel.com, mika.westerberg@linux.intel.com, pengfei.xu@intel.com, Konrad Rzeszutek Wilk , Marek Szyprowski , Robin Murphy , iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 02/10] swiotlb: Factor out slot allocation and free To: Christoph Hellwig References: <20190421011719.14909-1-baolu.lu@linux.intel.com> <20190421011719.14909-3-baolu.lu@linux.intel.com> <20190422164555.GA31181@lst.de> <0c6e5983-312b-0d6b-92f5-64861cd6804d@linux.intel.com> <20190423061232.GB12762@lst.de> From: Lu Baolu Message-ID: Date: Tue, 23 Apr 2019 15:32:16 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190423061232.GB12762@lst.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Christoph, On 4/23/19 2:12 PM, Christoph Hellwig wrote: > On Tue, Apr 23, 2019 at 09:58:19AM +0800, Lu Baolu wrote: >> 554 for (i = 0; i < nslots; i++) >> 555 io_tlb_orig_addr[index+i] = orig_addr + (i << >> IO_TLB_SHIFT); >> >> Could the tlb orig address set to PAGE_ALIGN_DOWN(orig_addr)? We >> couldn't assume the bounce buffer just starts from the beginning of the >> slot. Or anything I missed? > > I don't see why we need to align the orig_addr. We only use > io_tlb_orig_addr to find the address(es) for the swiotlb_bounce calls, > and I don't see a good reason why we'd need to align those. > Let me show you an example. Normally, if IOMMU is on, the device DMAs with an iova. IOMMU takes the responsibility to translate the iova to the physical address in paging mode. Physical IOVA Buffer .---------. .---------. | IOMMU | | IOMMU | | PAGE | | PAGE | .---------. -------> .---------. | Buffer | | Buffer | '---------' '---------' | | | | | | | | '---------' '---------' .-------. | IOMMU | '-------' When we add the bounce buffer between IOVA and physical buffer, the bounced buffer must starts from the same offset in a page, otherwise, IOMMU can't work here. Bouce Physical IOVA Buffer Buffer .---------. .---------. .---------. | | .-----> | Buffer | <---. | | | | | '---------' | | | .---------. | | | | .---------. | Buffer | NO | | YES | Buffer | '---------' | | '---------' | | | | | | | | | | | | '---------' '---------' '---------' .-------. .---------. | IOMMU | | swiotlb | '-------' '---------' A workable buffer location looks like below. Bouce Physical IOVA Buffer Buffer .---------. .---------. .---------. | | | | | | | | | | | | .---------. ------->.---------.<----- .---------. | Buffer | YES | Buffer | YES | Buffer | '---------' '---------' '---------' | | | | | | | | | | | | '---------' '---------' '---------' .-------. .---------. | IOMMU | | swiotlb | '-------' '---------' Best regards, Lu Baolu