All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joerg Roedel <joro@8bytes.org>
To: Kai-Heng Feng <kai.heng.feng@canonical.com>
Cc: Alex Deucher <alexander.deucher@amd.com>,
	iommu@lists.linux-foundation.org,
	Kernel development list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] iommu/amd: Disable IOMMU on Stoney Ridge systems
Date: Tue, 17 Dec 2019 10:53:41 +0100	[thread overview]
Message-ID: <20191217095341.GG8689@8bytes.org> (raw)
In-Reply-To: <974A8EB3-70B6-4A33-B36C-CFF69464493C@canonical.com>

On Fri, Dec 06, 2019 at 01:57:41PM +0800, Kai-Heng Feng wrote:
> Hi Joerg,
> 
> > On Dec 3, 2019, at 01:00, Christoph Hellwig <hch@infradead.org> wrote:
> > 
> > On Fri, Nov 29, 2019 at 10:21:54PM +0800, Kai-Heng Feng wrote:
> >> Serious screen flickering when Stoney Ridge outputs to a 4K monitor.
> >> 
> >> According to Alex Deucher, IOMMU isn't enabled on Windows, so let's do
> >> the same here to avoid screen flickering on 4K monitor.
> > 
> > Disabling the IOMMU entirely seem pretty severe.  Isn't it enough to
> > identity map the GPU device?
> 
> Ok, there's set_device_exclusion_range() to exclude the device from IOMMU.
> However I don't know how to generate range_start and range_length, which are read from ACPI.

set_device_exclusion_range() is not the solution here. The best is if
the GPU device is put into a passthrough domain at boot, in which it
will be identity mapped. DMA still goes through the IOMMU in this case,
but it only needs to lookup the device-table, page-table walks will not
be done anymore.

The best way to implement this is to put it into the
amd_iommu_add_device() in drivers/iommu/amd_iommu.c. There is this
check:

        if (dev_data->iommu_v2)
		iommu_request_dm_for_dev(dev);

The iommu_request_dm_for_dev() function causes the device to be identity
mapped. The check can be extended to also check for a device white-list
for devices that need identity mapping.

HTH,

	Joerg

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: Joerg Roedel <joro@8bytes.org>
To: Kai-Heng Feng <kai.heng.feng@canonical.com>
Cc: Christoph Hellwig <hch@infradead.org>,
	Alex Deucher <alexander.deucher@amd.com>,
	iommu@lists.linux-foundation.org,
	Kernel development list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] iommu/amd: Disable IOMMU on Stoney Ridge systems
Date: Tue, 17 Dec 2019 10:53:41 +0100	[thread overview]
Message-ID: <20191217095341.GG8689@8bytes.org> (raw)
In-Reply-To: <974A8EB3-70B6-4A33-B36C-CFF69464493C@canonical.com>

On Fri, Dec 06, 2019 at 01:57:41PM +0800, Kai-Heng Feng wrote:
> Hi Joerg,
> 
> > On Dec 3, 2019, at 01:00, Christoph Hellwig <hch@infradead.org> wrote:
> > 
> > On Fri, Nov 29, 2019 at 10:21:54PM +0800, Kai-Heng Feng wrote:
> >> Serious screen flickering when Stoney Ridge outputs to a 4K monitor.
> >> 
> >> According to Alex Deucher, IOMMU isn't enabled on Windows, so let's do
> >> the same here to avoid screen flickering on 4K monitor.
> > 
> > Disabling the IOMMU entirely seem pretty severe.  Isn't it enough to
> > identity map the GPU device?
> 
> Ok, there's set_device_exclusion_range() to exclude the device from IOMMU.
> However I don't know how to generate range_start and range_length, which are read from ACPI.

set_device_exclusion_range() is not the solution here. The best is if
the GPU device is put into a passthrough domain at boot, in which it
will be identity mapped. DMA still goes through the IOMMU in this case,
but it only needs to lookup the device-table, page-table walks will not
be done anymore.

The best way to implement this is to put it into the
amd_iommu_add_device() in drivers/iommu/amd_iommu.c. There is this
check:

        if (dev_data->iommu_v2)
		iommu_request_dm_for_dev(dev);

The iommu_request_dm_for_dev() function causes the device to be identity
mapped. The check can be extended to also check for a device white-list
for devices that need identity mapping.

HTH,

	Joerg


  reply	other threads:[~2019-12-17  9:53 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-29 14:21 [PATCH v2] iommu/amd: Disable IOMMU on Stoney Ridge systems Kai-Heng Feng
2019-11-29 14:21 ` Kai-Heng Feng
2019-12-01 12:42 ` Lucas Stach
2019-12-01 12:42   ` Lucas Stach
2019-12-02 16:36   ` Deucher, Alexander
2019-12-02 16:36     ` Deucher, Alexander
2019-12-04 16:08     ` Deucher, Alexander
2019-12-04 16:08       ` Deucher, Alexander
2019-12-06  5:59       ` Kai-Heng Feng
2019-12-06  5:59         ` Kai-Heng Feng
2019-12-06  8:57       ` Christian König
2019-12-06  8:57         ` Christian König
2019-12-02 17:00 ` Christoph Hellwig
2019-12-02 17:00   ` Christoph Hellwig
2019-12-06  5:57   ` Kai-Heng Feng
2019-12-06  5:57     ` Kai-Heng Feng
2019-12-17  9:53     ` Joerg Roedel [this message]
2019-12-17  9:53       ` Joerg Roedel
2019-12-18 17:45       ` Kai-Heng Feng
2019-12-18 17:45         ` Kai-Heng Feng
2019-12-19 19:15         ` Deucher, Alexander
2019-12-19 19:15           ` Deucher, Alexander
2019-12-20  2:13           ` Kai-Heng Feng
2019-12-20  2:13             ` Kai-Heng Feng
2020-01-06  8:37             ` Kai-Heng Feng
2020-01-06  8:37               ` Kai-Heng Feng
2020-02-05 10:10               ` Kai-Heng Feng
2020-02-05 10:10                 ` Kai-Heng Feng
2020-02-05 13:24                 ` Joerg Roedel
2020-02-05 13:24                   ` Joerg Roedel

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=20191217095341.GG8689@8bytes.org \
    --to=joro@8bytes.org \
    --cc=alexander.deucher@amd.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=kai.heng.feng@canonical.com \
    --cc=linux-kernel@vger.kernel.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.