From: Jan Beulich <jbeulich@suse.com>
To: Juergen Gross <jgross@suse.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
intel-gfx@lists.freedesktop.org,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, linux-kernel@vger.kernel.org,
David Airlie <airlied@linux.ie>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
dri-devel@lists.freedesktop.org,
Andy Lutomirski <luto@kernel.org>,
"H. Peter Anvin" <hpa@zytor.com>,
xen-devel@lists.xenproject.org,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [Intel-gfx] [PATCH 2/2] x86/pat: add functions to query specific cache mode availability
Date: Wed, 4 May 2022 10:31:47 +0200 [thread overview]
Message-ID: <1d86d8ff-6878-5488-e8c4-cbe8a5e8f624@suse.com> (raw)
In-Reply-To: <20220503132207.17234-3-jgross@suse.com>
On 03.05.2022 15:22, Juergen Gross wrote:
> Some drivers are using pat_enabled() in order to test availability of
> special caching modes (WC and UC-). This will lead to false negatives
> in case the system was booted e.g. with the "nopat" variant and the
> BIOS did setup the PAT MSR supporting the queried mode, or if the
> system is running as a Xen PV guest.
While, as per my earlier patch, I agree with the Xen PV case, I'm not
convinced "nopat" is supposed to honor firmware-provided settings. In
fact in my patch I did arrange for "nopat" to also take effect under
Xen PV.
> Add test functions for those caching modes instead and use them at the
> appropriate places.
>
> For symmetry reasons export the already existing x86_has_pat_wp() for
> modules, too.
>
> Fixes: bdd8b6c98239 ("drm/i915: replace X86_FEATURE_PAT with pat_enabled()")
> Fixes: ae749c7ab475 ("PCI: Add arch_can_pci_mmap_wc() macro")
> Signed-off-by: Juergen Gross <jgross@suse.com>
I think this wants a Reported-by as well.
> --- a/arch/x86/include/asm/pci.h
> +++ b/arch/x86/include/asm/pci.h
> @@ -94,7 +94,7 @@ int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
>
>
> #define HAVE_PCI_MMAP
> -#define arch_can_pci_mmap_wc() pat_enabled()
> +#define arch_can_pci_mmap_wc() x86_has_pat_wc()
Besides this and ...
> --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
> @@ -76,7 +76,7 @@ i915_gem_mmap_ioctl(struct drm_device *dev, void *data,
> if (args->flags & ~(I915_MMAP_WC))
> return -EINVAL;
>
> - if (args->flags & I915_MMAP_WC && !pat_enabled())
> + if (args->flags & I915_MMAP_WC && !x86_has_pat_wc())
> return -ENODEV;
>
> obj = i915_gem_object_lookup(file, args->handle);
> @@ -757,7 +757,7 @@ i915_gem_dumb_mmap_offset(struct drm_file *file,
>
> if (HAS_LMEM(to_i915(dev)))
> mmap_type = I915_MMAP_TYPE_FIXED;
> - else if (pat_enabled())
> + else if (x86_has_pat_wc())
> mmap_type = I915_MMAP_TYPE_WC;
> else if (!i915_ggtt_has_aperture(to_gt(i915)->ggtt))
> return -ENODEV;
> @@ -813,7 +813,7 @@ i915_gem_mmap_offset_ioctl(struct drm_device *dev, void *data,
> break;
>
> case I915_MMAP_OFFSET_WC:
> - if (!pat_enabled())
> + if (!x86_has_pat_wc())
> return -ENODEV;
> type = I915_MMAP_TYPE_WC;
> break;
> @@ -823,7 +823,7 @@ i915_gem_mmap_offset_ioctl(struct drm_device *dev, void *data,
> break;
>
> case I915_MMAP_OFFSET_UC:
> - if (!pat_enabled())
> + if (!x86_has_pat_uc_minus())
> return -ENODEV;
> type = I915_MMAP_TYPE_UC;
> break;
... these uses there are several more. You say nothing on why those want
leaving unaltered. When preparing my earlier patch I did inspect them
and came to the conclusion that these all would also better observe the
adjusted behavior (or else I couldn't have left pat_enabled() as the only
predicate). In fact, as said in the description of my earlier patch, in
my debugging I did find the use in i915_gem_object_pin_map() to be the
problematic one, which you leave alone.
Jan
next prev parent reply other threads:[~2022-05-04 12:14 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-03 13:22 [Intel-gfx] [PATCH 0/2] x86/pat: fix querying available caching modes Juergen Gross
2022-05-03 13:22 ` [Intel-gfx] [PATCH 2/2] x86/pat: add functions to query specific cache mode availability Juergen Gross
2022-05-04 8:31 ` Jan Beulich [this message]
2022-05-04 9:14 ` Juergen Gross
2022-05-04 9:51 ` Jan Beulich
[not found] ` <77255e5b-12bf-5390-6910-dafbaff18e96@netscape.net>
[not found] ` <a2e95587-418b-879f-2468-8699a6df4a6a@suse.com>
[not found] ` <8b1ebea5-7820-69c4-2e2b-9866d55bc180@netscape.net>
[not found] ` <c5fa3c3f-e602-ed68-d670-d59b93c012a0@netscape.net>
[not found] ` <3bff3562-bb1e-04e6-6eca-8d9bc355f2eb@suse.com>
[not found] ` <3ca084a9-768e-a6f5-ace4-cd347978dec7@netscape.net>
[not found] ` <9af0181a-e143-4474-acda-adbe72fc6227@suse.com>
[not found] ` <b2585c19-d38b-9640-64ab-d0c9be24be34@netscape.net>
2022-05-21 10:47 ` Thorsten Leemhuis
2022-05-24 18:32 ` Chuck Zmudzinski
2022-05-25 7:45 ` Thorsten Leemhuis
2022-05-25 8:04 ` Juergen Gross
[not found] ` <83cbd5ce-7f00-9121-44b3-5d1b94d66f02@suse.com>
2022-05-25 8:51 ` Thorsten Leemhuis
2022-05-25 19:25 ` Chuck Zmudzinski
2022-05-18 13:45 ` Christoph Hellwig
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=1d86d8ff-6878-5488-e8c4-cbe8a5e8f624@suse.com \
--to=jbeulich@suse.com \
--cc=airlied@linux.ie \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hpa@zytor.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jgross@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rodrigo.vivi@intel.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xenproject.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