From: Daniel Vetter <daniel@ffwll.ch>
To: "Christian König" <ckoenig.leichtzumerken@gmail.com>
Cc: nouveau@lists.freedesktop.org, debian-powerpc@lists.debian.org,
amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 2/2] drm/ttm: deprecate AGP support
Date: Wed, 13 May 2020 14:34:35 +0200 [thread overview]
Message-ID: <20200513123435.GJ206103@phenom.ffwll.local> (raw)
In-Reply-To: <20200513110313.12979-3-christian.koenig@amd.com>
On Wed, May 13, 2020 at 01:03:13PM +0200, Christian König wrote:
> Even when core AGP support is compiled in Radeon and
> Nouveau can also work with the PCI GART.
>
> The AGP support was notorious unstable and hard to
> maintain, so deprecate it for now and only enable it if
> there is a good reason to do so.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
So a lot more work, and more risk (but hey it's agp, how busted can it
get) could be to demidlayer this. I.e. a small set of helpers to create a
TTM_PL_TT manager, backed by agp. With zero agp code remaining in ttm
itself, and all the ttm agp code moved out to a ttm-agp-helper.ko module
that drivers would call.
But again a lot of work, so really only an option if we can't sunset agp
directly.
-Daniel
> ---
> drivers/gpu/drm/Kconfig | 8 ++++++++
> drivers/gpu/drm/nouveau/nouveau_bo.c | 8 ++++----
> drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h | 2 +-
> drivers/gpu/drm/radeon/radeon_agp.c | 8 ++++----
> drivers/gpu/drm/radeon/radeon_ttm.c | 10 +++++-----
> drivers/gpu/drm/ttm/Makefile | 2 +-
> 6 files changed, 23 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index 4f4e7fa001c1..52d834303766 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -182,6 +182,14 @@ config DRM_TTM
> GPU memory types. Will be enabled automatically if a device driver
> uses it.
>
> +config DRM_TTM_AGP
> + bool "TTM AGP GART support (deprecated)"
> + depends on DRM_TTM && AGP
> + default n
> + help
> + Enables deprecated AGP GART support in TTM.
> + Less reliable than PCI GART, but faster in some cases.
> +
> config DRM_TTM_DMA_PAGE_POOL
> bool
> depends on DRM_TTM && (SWIOTLB || INTEL_IOMMU)
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
> index c40f127de3d0..c73d4ae48f5c 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -635,7 +635,7 @@ nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val)
> static struct ttm_tt *
> nouveau_ttm_tt_create(struct ttm_buffer_object *bo, uint32_t page_flags)
> {
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> struct nouveau_drm *drm = nouveau_bdev(bo->bdev);
>
> if (drm->agp.bridge) {
> @@ -1448,7 +1448,7 @@ nouveau_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_reg *reg)
> /* System memory */
> return 0;
> case TTM_PL_TT:
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> if (drm->agp.bridge) {
> reg->bus.offset = reg->start << PAGE_SHIFT;
> reg->bus.base = drm->agp.base;
> @@ -1603,7 +1603,7 @@ nouveau_ttm_tt_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx)
> drm = nouveau_bdev(ttm->bdev);
> dev = drm->dev->dev;
>
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> if (drm->agp.bridge) {
> return ttm_agp_tt_populate(ttm, ctx);
> }
> @@ -1656,7 +1656,7 @@ nouveau_ttm_tt_unpopulate(struct ttm_tt *ttm)
> drm = nouveau_bdev(ttm->bdev);
> dev = drm->dev->dev;
>
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> if (drm->agp.bridge) {
> ttm_agp_tt_unpopulate(ttm);
> return;
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h
> index ad4d3621d02b..d572528da852 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.h
> @@ -1,6 +1,6 @@
> /* SPDX-License-Identifier: MIT */
> #include "priv.h"
> -#if defined(CONFIG_AGP) || (defined(CONFIG_AGP_MODULE) && defined(MODULE))
> +#if defined(CONFIG_DRM_TTM_AGP)
> #ifndef __NVKM_PCI_AGP_H__
> #define __NVKM_PCI_AGP_H__
>
> diff --git a/drivers/gpu/drm/radeon/radeon_agp.c b/drivers/gpu/drm/radeon/radeon_agp.c
> index 0aca7bdf54c7..294d19301708 100644
> --- a/drivers/gpu/drm/radeon/radeon_agp.c
> +++ b/drivers/gpu/drm/radeon/radeon_agp.c
> @@ -33,7 +33,7 @@
>
> #include "radeon.h"
>
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
>
> struct radeon_agpmode_quirk {
> u32 hostbridge_vendor;
> @@ -131,7 +131,7 @@ static struct radeon_agpmode_quirk radeon_agpmode_quirk_list[] = {
>
> int radeon_agp_init(struct radeon_device *rdev)
> {
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> struct radeon_agpmode_quirk *p = radeon_agpmode_quirk_list;
> struct drm_agp_mode mode;
> struct drm_agp_info info;
> @@ -265,7 +265,7 @@ int radeon_agp_init(struct radeon_device *rdev)
>
> void radeon_agp_resume(struct radeon_device *rdev)
> {
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> int r;
> if (rdev->flags & RADEON_IS_AGP) {
> r = radeon_agp_init(rdev);
> @@ -277,7 +277,7 @@ void radeon_agp_resume(struct radeon_device *rdev)
>
> void radeon_agp_fini(struct radeon_device *rdev)
> {
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> if (rdev->ddev->agp && rdev->ddev->agp->acquired) {
> drm_agp_release(rdev->ddev);
> }
> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
> index 5d50c9edbe80..4f9c4e5f8263 100644
> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
> @@ -86,7 +86,7 @@ static int radeon_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
> man->available_caching = TTM_PL_MASK_CACHING;
> man->default_caching = TTM_PL_FLAG_CACHED;
> man->flags = TTM_MEMTYPE_FLAG_MAPPABLE | TTM_MEMTYPE_FLAG_CMA;
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> if (rdev->flags & RADEON_IS_AGP) {
> if (!rdev->ddev->agp) {
> DRM_ERROR("AGP is not enabled for memory type %u\n",
> @@ -411,7 +411,7 @@ static int radeon_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_
> /* system memory */
> return 0;
> case TTM_PL_TT:
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> if (rdev->flags & RADEON_IS_AGP) {
> /* RADEON_IS_AGP is set only if AGP is active */
> mem->bus.offset = mem->start << PAGE_SHIFT;
> @@ -631,7 +631,7 @@ static struct ttm_tt *radeon_ttm_tt_create(struct ttm_buffer_object *bo,
> struct radeon_ttm_tt *gtt;
>
> rdev = radeon_get_rdev(bo->bdev);
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> if (rdev->flags & RADEON_IS_AGP) {
> return ttm_agp_tt_create(bo, rdev->ddev->agp->bridge,
> page_flags);
> @@ -683,7 +683,7 @@ static int radeon_ttm_tt_populate(struct ttm_tt *ttm,
> }
>
> rdev = radeon_get_rdev(ttm->bdev);
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> if (rdev->flags & RADEON_IS_AGP) {
> return ttm_agp_tt_populate(ttm, ctx);
> }
> @@ -714,7 +714,7 @@ static void radeon_ttm_tt_unpopulate(struct ttm_tt *ttm)
> return;
>
> rdev = radeon_get_rdev(ttm->bdev);
> -#if IS_ENABLED(CONFIG_AGP)
> +#if IS_ENABLED(CONFIG_DRM_TTM_AGP)
> if (rdev->flags & RADEON_IS_AGP) {
> ttm_agp_tt_unpopulate(ttm);
> return;
> diff --git a/drivers/gpu/drm/ttm/Makefile b/drivers/gpu/drm/ttm/Makefile
> index caea2a099496..aa772b198012 100644
> --- a/drivers/gpu/drm/ttm/Makefile
> +++ b/drivers/gpu/drm/ttm/Makefile
> @@ -5,7 +5,7 @@
> ttm-y := ttm_memory.o ttm_tt.o ttm_bo.o \
> ttm_bo_util.o ttm_bo_vm.o ttm_module.o \
> ttm_execbuf_util.o ttm_page_alloc.o ttm_bo_manager.o
> -ttm-$(CONFIG_AGP) += ttm_agp_backend.o
> +ttm-$(CONFIG_DRM_TTM_AGP) += ttm_agp_backend.o
> ttm-$(CONFIG_DRM_TTM_DMA_PAGE_POOL) += ttm_page_alloc_dma.o
>
> obj-$(CONFIG_DRM_TTM) += ttm.o
> --
> 2.17.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-05-13 12:34 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-13 11:03 [RFC] Deprecate AGP GART support for Radeon/Nouveau/TTM Christian König
2020-05-13 11:03 ` [PATCH 1/2] drm/radeon: disable AGP by default Christian König
2020-05-13 11:55 ` Mathieu Malaterre
2020-05-13 11:03 ` [PATCH 2/2] drm/ttm: deprecate AGP support Christian König
2020-05-13 12:34 ` Daniel Vetter [this message]
2020-05-13 12:49 ` Christian König
2020-05-20 14:43 ` [RFC] Deprecate AGP GART support for Radeon/Nouveau/TTM Christian König
2020-05-20 15:58 ` Rui Salvaterra
2020-05-20 16:18 ` Alex Deucher
2020-05-22 10:41 ` Christian König
2020-05-22 14:46 ` Alex Deucher
2020-05-20 16:25 ` Michel Dänzer
2020-05-22 10:40 ` Christian König
2020-05-22 10:49 ` Michel Dänzer
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=20200513123435.GJ206103@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=amd-gfx@lists.freedesktop.org \
--cc=ckoenig.leichtzumerken@gmail.com \
--cc=debian-powerpc@lists.debian.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=nouveau@lists.freedesktop.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).