[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAErSpo4iZCUZgqNi-fX+YX=sKV=Ae5z8kn8-++E0Cgft9unmBg@mail.gmail.com>
Date: Thu, 11 Dec 2014 10:34:30 -0700
From: Bjorn Helgaas <bhelgaas@...gle.com>
To: Dely Sy <dely.l.sy@...el.com>
Cc: "linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>,
Rajat Jain <rajatxjain@...il.com>,
Guenter Roeck <groeck@...iper.net>,
Jesse Barnes <jbarnes@...tuousgeek.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Kristen Carlson Accardi <kristen.c.accardi@...el.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Special handling of display/VGA devices in hotplug drivers
It looks like you added the initial pciehp driver [1], which includes
the following code in pciehp_disable_slot():
+ if (class_code == PCI_BASE_CLASS_DISPLAY) {
+ /* Display/Video adapter (not supported) */
+ rc = REMOVE_NOT_SUPPORTED;
+ /* If it's a bridge, check the VGA Enable bit */
+ if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) {
+ rc = pci_bus_read_config_byte (pci_bus, devfn, PCI_BRIDGE_CONTROL, &BCR);
+ if (rc)
+ return rc;
+
+ /* If the VGA Enable bit is set, remove isn't supported */
+ if (BCR & PCI_BRIDGE_CTL_VGA) {
+ rc = REMOVE_NOT_SUPPORTED;
I'm trying to figure out why VGA devices are handled specially. I
can't find anything in the PCI specs that mentions this. Most of the
other PCI hotplug drivers have similar code. Do you remember anything
about this?
Bjorn
[1] https://git.kernel.org/cgit/linux/kernel/git/tglx/history.git/commit/drivers/pci/hotplug/pciehp_ctrl.c?id=c16b4b14d9806e639f4afefa2d651a857a212afe
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists