From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Simon Richter <Simon.Richter@hogyros.de>
Cc: linux-pci@vger.kernel.org, intel-xe@lists.freedesktop.org,
dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v3 4/5] pci: check if VGA decoding was really activated
Date: Tue, 10 Mar 2026 17:19:45 +0200 [thread overview]
Message-ID: <abA2kQScB-m2ka3K@intel.com> (raw)
In-Reply-To: <1a7a9d17-5086-4fdb-83e7-56d5ddaaadbd@hogyros.de>
On Tue, Mar 10, 2026 at 11:08:40PM +0900, Simon Richter wrote:
> Hi,
>
> On 3/10/26 8:37 PM, Ville Syrjälä wrote:
>
> > Maybe this should also have a comment or spec quote to explain
> > that it's legal behavior?
>
> The PCI-to-PCI Bridge Specification version 1.1 has in chapter 4.5 "VGA
> Support":
>
> Bridges are not required to implement the VGA support mechanisms
> described in the following sections.
>
> So this has always been optional.
>
> What is a bit annoying is that I cannot find an explicit sentence
> allowing the VGAEnable bit to be hardwired to zero in that specification.
>
> It is explicitly allowed to hardwire the VGASnoopEnable bit to zero if
> VGA palette snooping is not supported for downstream devices (Table 3-2
> "Command Register"):
>
> Implementation of VGA palette snooping by a bridge is optional. If
> VGA palette snooping is not supported, this bit must be implemented
> as read-only with a value of 0
>
> That is the command register though, not the bridge control register.
>
> The bridge control register documentation (Table 3-9) does not
> explicitly say what should be done if VGA support is not available, but
> the behaviour of the VGAEnable bit is a superset of the VGASnoopEnable
> bit, and the VGASnoopEnable bit becomes a Don't Care if VGAEnable is
> set, so "the bit must be hardwired to zero if unsupported" appears to be
> the only valid interpretation.
>
> This seems to be the behaviour of all the devices I have available:
>
> - IBM PowerNV PCIe root bridge (POWER9)
> - SiFive VisionFive2 PCIe root bridge (PLDA XpressRich-AXI Ref Design)
>
> Both read back this bit as zero when written via setpci:
>
> # setpci -s 0000:00:00.0 BRIDGE_CONTROL
> 0002
> # setpci -s 0000:00:00.0 BRIDGE_CONTROL=0xa
> # setpci -s 0000:00:00.0 BRIDGE_CONTROL
> 0002
>
> There is also a question in the Altera support forum for their PCIe Root
> Bridge IP at https://community.altera.com/kb/knowledge-base/-/345837 .
Yeah, looks like the exact explanation was only added in the PCIe
bridge spec. Before that it was somewhat ambiguous.
>
> > The slightly bigger concern I have is whether we need to unwind
> > the previous steps if this fails? Looks like we don't update
> > vgadev->owns on failure (even though we may have partially
> > enabled things). But since the bridge should never forward any
> > VGA accesses, leaving some extra PCI_COMMAND enable(s) set on
> > the device shouldn't matter in practice.
>
> I was thinking the same, but because we're going upwards in the
> hierarchy, the bridges we leave enabled are downstream of the bridge
> that refused to forward.
>
> I can add this for completeness though, that should be fairly easy.
>
> > So I guess this should
> > work even without unwinding. Well, not sure about
> > arch_set_vga_state() since that's 100% magic...
>
> It's not entirely magic, because after success from arch_set_vga_state()
> we still go through all the bridges. I believe uv uses it for some kind
> of paravirtualization.
>
> Simon
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2026-03-10 15:19 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-07 17:35 [PATCH v3 0/5] Bridges without VGA support Simon Richter
2026-03-07 17:35 ` [PATCH v3 1/5] vgaarb: pass vga_get_uninterruptible() errors to userspace Simon Richter
2026-03-24 19:37 ` Bjorn Helgaas
2026-03-25 6:52 ` Simon Richter
2026-03-25 18:29 ` Bjorn Helgaas
2026-03-07 17:35 ` [PATCH v3 2/5] vgaarb: pass errors from pci_set_vga_state() up Simon Richter
2026-03-10 11:37 ` Ville Syrjälä
2026-03-07 17:35 ` [PATCH v3 3/5] vgaarb: mark vga_get() and wrappers as __must_check Simon Richter
2026-03-10 20:07 ` Bjorn Helgaas
2026-03-11 22:51 ` Simon Richter
2026-03-11 23:14 ` Bjorn Helgaas
2026-03-11 23:29 ` Simon Richter
2026-03-07 17:35 ` [PATCH v3 4/5] pci: check if VGA decoding was really activated Simon Richter
2026-03-10 11:37 ` Ville Syrjälä
2026-03-10 14:08 ` Simon Richter
2026-03-10 15:19 ` Ville Syrjälä [this message]
2026-03-10 20:22 ` Bjorn Helgaas
2026-03-11 7:07 ` Simon Richter
2026-03-07 17:35 ` [PATCH v3 5/5] pci: mark pci_set_vga_state() as __must_check Simon Richter
2026-03-10 19:36 ` Bjorn Helgaas
2026-03-11 23:23 ` Simon Richter
2026-03-07 17:41 ` ✗ CI.checkpatch: warning for bridges without VGA support (rev2) Patchwork
2026-03-07 17:43 ` ✓ CI.KUnit: success " Patchwork
2026-03-24 19:34 ` [PATCH v3 0/5] Bridges without VGA support Bjorn Helgaas
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=abA2kQScB-m2ka3K@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=Simon.Richter@hogyros.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=linux-pci@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.