All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hillf Danton <hdanton@sina.com>
To: Thomas Hellstrom <thomas_os@shipmail.org>
Cc: "Thomas Hellstrom" <thellstrom@vmware.com>,
	pv-drivers@vmware.com, "Roland Scheidegger" <sroland@vmware.com>,
	"Dan Williams" <dan.j.williams@intel.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-mm@kvack.org, "Jérôme Glisse" <jglisse@redhat.com>,
	linux-graphics-maintainer@vmware.com,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Ralph Campbell" <rcampbell@nvidia.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Subject: Re: [PATCH v4 5/9] drm/ttm, drm/vmwgfx: Support huge TTM pagefaults
Date: Sun,  1 Mar 2020 21:49:28 +0800	[thread overview]
Message-ID: <20200301134928.16128-1-hdanton@sina.com> (raw)
In-Reply-To: <20200220122719.4302-1-thomas_os@shipmail.org>


On Thu, 20 Feb 2020 13:27:15 +0100 Thomas Hellstrom wrote:
> +
> +static vm_fault_t ttm_bo_vm_huge_fault(struct vm_fault *vmf,
> +				       enum page_entry_size pe_size)
> +{
> +	struct vm_area_struct *vma = vmf->vma;
> +	pgprot_t prot;
> +	struct ttm_buffer_object *bo = vma->vm_private_data;
> +	vm_fault_t ret;
> +	pgoff_t fault_page_size = 0;
> +	bool write = vmf->flags & FAULT_FLAG_WRITE;
> +
> +	switch (pe_size) {
> +	case PE_SIZE_PMD:
> +		fault_page_size = HPAGE_PMD_SIZE >> PAGE_SHIFT;
> +		break;
> +#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
> +	case PE_SIZE_PUD:
> +		fault_page_size = HPAGE_PUD_SIZE >> PAGE_SHIFT;
> +		break;
> +#endif
> +	default:
> +		WARN_ON_ONCE(1);
> +		return VM_FAULT_FALLBACK;
> +	}
> +
> +	/* Fallback on write dirty-tracking or COW */
> +	if (write && ttm_pgprot_is_wrprotecting(vma->vm_page_prot))
> +		return VM_FAULT_FALLBACK;
> +
> +	ret = ttm_bo_vm_reserve(bo, vmf);
> +	if (ret)
> +		return ret;
> +
> +	prot = vm_get_page_prot(vma->vm_flags);
> +	ret = ttm_bo_vm_fault_reserved(vmf, prot, 1, fault_page_size);
> +	if (ret == VM_FAULT_RETRY && !(vmf->flags & FAULT_FLAG_RETRY_NOWAIT))
> +		return ret;

Seems it does not make much sense to check VM_FAULT_RETRY and return as
at least resv lock is left behind without care.

> +
> +	dma_resv_unlock(bo->base.resv);
> +
> +	return ret;
> +}

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Hillf Danton <hdanton@sina.com>
To: Thomas Hellstrom <thomas_os@shipmail.org>
Cc: linux-mm@kvack.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, pv-drivers@vmware.com,
	linux-graphics-maintainer@vmware.com,
	"Thomas Hellstrom" <thellstrom@vmware.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	"Ralph Campbell" <rcampbell@nvidia.com>,
	"Jérôme Glisse" <jglisse@redhat.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Dan Williams" <dan.j.williams@intel.com>,
	"Roland Scheidegger" <sroland@vmware.com>
Subject: Re: [PATCH v4 5/9] drm/ttm, drm/vmwgfx: Support huge TTM pagefaults
Date: Sun,  1 Mar 2020 21:49:28 +0800	[thread overview]
Message-ID: <20200301134928.16128-1-hdanton@sina.com> (raw)
In-Reply-To: <20200220122719.4302-1-thomas_os@shipmail.org>


On Thu, 20 Feb 2020 13:27:15 +0100 Thomas Hellstrom wrote:
> +
> +static vm_fault_t ttm_bo_vm_huge_fault(struct vm_fault *vmf,
> +				       enum page_entry_size pe_size)
> +{
> +	struct vm_area_struct *vma = vmf->vma;
> +	pgprot_t prot;
> +	struct ttm_buffer_object *bo = vma->vm_private_data;
> +	vm_fault_t ret;
> +	pgoff_t fault_page_size = 0;
> +	bool write = vmf->flags & FAULT_FLAG_WRITE;
> +
> +	switch (pe_size) {
> +	case PE_SIZE_PMD:
> +		fault_page_size = HPAGE_PMD_SIZE >> PAGE_SHIFT;
> +		break;
> +#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
> +	case PE_SIZE_PUD:
> +		fault_page_size = HPAGE_PUD_SIZE >> PAGE_SHIFT;
> +		break;
> +#endif
> +	default:
> +		WARN_ON_ONCE(1);
> +		return VM_FAULT_FALLBACK;
> +	}
> +
> +	/* Fallback on write dirty-tracking or COW */
> +	if (write && ttm_pgprot_is_wrprotecting(vma->vm_page_prot))
> +		return VM_FAULT_FALLBACK;
> +
> +	ret = ttm_bo_vm_reserve(bo, vmf);
> +	if (ret)
> +		return ret;
> +
> +	prot = vm_get_page_prot(vma->vm_flags);
> +	ret = ttm_bo_vm_fault_reserved(vmf, prot, 1, fault_page_size);
> +	if (ret == VM_FAULT_RETRY && !(vmf->flags & FAULT_FLAG_RETRY_NOWAIT))
> +		return ret;

Seems it does not make much sense to check VM_FAULT_RETRY and return as
at least resv lock is left behind without care.

> +
> +	dma_resv_unlock(bo->base.resv);
> +
> +	return ret;
> +}



  parent reply	other threads:[~2020-03-02  8:18 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-20 12:27 [PATCH v4 0/9] Huge page-table entries for TTM Thomas Hellström (VMware)
2020-02-20 12:27 ` Thomas Hellström (VMware)
2020-02-20 12:27 ` [PATCH v4 1/9] fs: Constify vma argument to vma_is_dax Thomas Hellström (VMware)
2020-02-20 12:27   ` Thomas Hellström (VMware)
2020-03-26  4:36   ` Dan Williams
2020-03-26  4:36     ` Dan Williams
2020-02-20 12:27 ` [PATCH v4 2/9] mm: Introduce vma_is_special_huge Thomas Hellström (VMware)
2020-02-20 12:27   ` Thomas Hellström (VMware)
2020-02-20 12:27 ` [PATCH v4 3/9] mm: Split huge pages on write-notify or COW Thomas Hellström (VMware)
2020-02-20 12:27   ` Thomas Hellström (VMware)
2020-02-20 12:27 ` [PATCH v4 4/9] mm: Add vmf_insert_pfn_xxx_prot() for huge page-table entries Thomas Hellström (VMware)
2020-02-20 12:27   ` Thomas Hellström (VMware)
2020-02-20 12:27 ` [PATCH v4 5/9] drm/ttm, drm/vmwgfx: Support huge TTM pagefaults Thomas Hellström (VMware)
2020-02-20 12:27   ` Thomas Hellström (VMware)
2020-02-20 12:27 ` [PATCH v4 6/9] drm/vmwgfx: Support huge page faults Thomas Hellström (VMware)
2020-02-20 12:27   ` Thomas Hellström (VMware)
2020-02-20 12:27 ` [PATCH v4 7/9] drm: Add a drm_get_unmapped_area() helper Thomas Hellström (VMware)
2020-02-20 12:27   ` Thomas Hellström (VMware)
2020-02-20 12:27 ` [PATCH v4 8/9] drm/vmwgfx: Introduce a huge page aligning TTM range manager Thomas Hellström (VMware)
2020-02-20 12:27   ` Thomas Hellström (VMware)
2020-02-20 12:27 ` [PATCH v4 9/9] drm/vmwgfx: Hook up the helpers to align buffer objects Thomas Hellström (VMware)
2020-02-20 12:27   ` Thomas Hellström (VMware)
2020-02-28 13:08 ` [PATCH v4 0/9] Huge page-table entries for TTM Thomas Hellström (VMware)
2020-02-28 13:08   ` Thomas Hellström (VMware)
2020-03-01  4:04   ` Andrew Morton
2020-03-01  4:04     ` Andrew Morton
2020-03-03 10:23     ` Thomas Hellström (VMware)
2020-03-03 10:23       ` Thomas Hellström (VMware)
2020-03-03  9:18   ` Michal Hocko
2020-03-03  9:18     ` Michal Hocko
2020-03-01 13:49 ` Hillf Danton [this message]
2020-03-01 13:49   ` [PATCH v4 5/9] drm/ttm, drm/vmwgfx: Support huge TTM pagefaults Hillf Danton
2020-03-01 14:03   ` Thomas Hellstrom
2020-03-01 14:03     ` Thomas Hellstrom

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200301134928.16128-1-hdanton@sina.com \
    --to=hdanton@sina.com \
    --cc=akpm@linux-foundation.org \
    --cc=christian.koenig@amd.com \
    --cc=dan.j.williams@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jglisse@redhat.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-graphics-maintainer@vmware.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=pv-drivers@vmware.com \
    --cc=rcampbell@nvidia.com \
    --cc=sroland@vmware.com \
    --cc=thellstrom@vmware.com \
    --cc=thomas_os@shipmail.org \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.