Merge tag 'pci-v4.16-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas: - skip AER driver error recovery callbacks for correctable errors reported via ACPI APEI, as we already do for errors reported via the native path (Tyler Baicar) - fix DPC shared interrupt handling (Alex Williamson) - print full DPC interrupt number (Keith Busch) - enable DPC only if AER is available (Keith Busch) - simplify DPC code (Bjorn Helgaas) - calculate ASPM L1 substate parameter instead of hardcoding it (Bjorn Helgaas) - enable Latency Tolerance Reporting for ASPM L1 substates (Bjorn Helgaas) - move ASPM internal interfaces out of public header (Bjorn Helgaas) - allow hot-removal of VGA devices (Mika Westerberg) - speed up unplug and shutdown by assuming Thunderbolt controllers don't support Command Completed events (Lukas Wunner) - add AtomicOps support for GPU and Infiniband drivers (Felix Kuehling, Jay Cornwall) - expose "ari_enabled" in sysfs to help NIC naming (Stuart Hayes) - clean up PCI DMA interface usage (Christoph Hellwig) - remove PCI pool API (replaced with DMA pool) (Romain Perier) - deprecate pci_get_bus_and_slot(), which assumed PCI domain 0 (Sinan Kaya) - move DT PCI code from drivers/of/ to drivers/pci/ (Rob Herring) - add PCI-specific wrappers for dev_info(), etc (Frederick Lawler) - remove warnings on sysfs mmap failure (Bjorn Helgaas) - quiet ROM validation messages (Alex Deucher) - remove redundant memory alloc failure messages (Markus Elfring) - fill in types for compile-time VGA and other I/O port resources (Bjorn Helgaas) - make "pci=pcie_scan_all" work for Root Ports as well as Downstream Ports to help AmigaOne X1000 (Bjorn Helgaas) - add SPDX tags to all PCI files (Bjorn Helgaas) - quirk Marvell 9128 DMA aliases (Alex Williamson) - quirk broken INTx disable on Ceton InfiniTV4 (Bjorn Helgaas) - fix CONFIG_PCI=n build by adding dummy pci_irqd_intx_xlate() (Niklas Cassel) - use DMA API to get MSI address for DesignWare IP (Niklas Cassel) - fix endpoint-mode DMA mask configuration (Kishon Vijay Abraham I) - fix ARTPEC-6 incorrect IS_ERR() usage (Wei Yongjun) - add support for ARTPEC-7 SoC (Niklas Cassel) - add endpoint-mode support for ARTPEC (Niklas Cassel) - add Cadence PCIe host and endpoint controller driver (Cyrille Pitchen) - handle multiple INTx status bits being set in dra7xx (Vignesh R) - translate dra7xx hwirq range to fix INTD handling (Vignesh R) - remove deprecated Exynos PHY initialization code (Jaehoon Chung) - fix MSI erratum workaround for HiSilicon Hip06/Hip07 (Dongdong Liu) - fix NULL pointer dereference in iProc BCMA driver (Ray Jui) - fix Keystone interrupt-controller-node lookup (Johan Hovold) - constify qcom driver structures (Julia Lawall) - rework Tegra config space mapping to increase space available for endpoints (Vidya Sagar) - simplify Tegra driver by using bus->sysdata (Manikanta Maddireddy) - remove PCI_REASSIGN_ALL_BUS usage on Tegra (Manikanta Maddireddy) - add support for Global Fabric Manager Server (GFMS) event to Microsemi Switchtec switch driver (Logan Gunthorpe) - add IDs for Switchtec PSX 24xG3 and PSX 48xG3 (Kelvin Cao) * tag 'pci-v4.16-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (140 commits) PCI: cadence: Add EndPoint Controller driver for Cadence PCIe controller dt-bindings: PCI: cadence: Add DT bindings for Cadence PCIe endpoint controller PCI: endpoint: Fix EPF device name to support multi-function devices PCI: endpoint: Add the function number as argument to EPC ops PCI: cadence: Add host driver for Cadence PCIe controller dt-bindings: PCI: cadence: Add DT bindings for Cadence PCIe host controller PCI: Add vendor ID for Cadence PCI: Add generic function to probe PCI host controllers PCI: generic: fix missing call of pci_free_resource_list() PCI: OF: Add generic function to parse and allocate PCI resources PCI: Regroup all PCI related entries into drivers/pci/Makefile PCI/DPC: Reformat DPC register definitions PCI/DPC: Add and use DPC Status register field definitions PCI/DPC: Squash dpc_rp_pio_get_info() into dpc_process_rp_pio_error() PCI/DPC: Remove unnecessary RP PIO register structs PCI/DPC: Push dpc->rp_pio_status assignment into dpc_rp_pio_get_info() PCI/DPC: Squash dpc_rp_pio_print_error() into dpc_rp_pio_get_info() PCI/DPC: Make RP PIO log size check more generic PCI/DPC: Rename local "status" to "dpc_status" PCI/DPC: Squash dpc_rp_pio_print_tlp_header() into dpc_rp_pio_print_error() ...
Цей коміт міститься в:
@@ -1,3 +1,4 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
#
|
||||
# PCI Hotplug support
|
||||
#
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Common ACPI functions for hot plug platforms
|
||||
*
|
||||
@@ -5,21 +6,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* ACPI PCI Hot Plug Controller Driver
|
||||
*
|
||||
@@ -12,21 +13,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <gregkh@us.ibm.com>,
|
||||
* <t-kochi@bq.jp.nec.com>
|
||||
*
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* ACPI PCI Hot Plug Controller Driver
|
||||
*
|
||||
@@ -12,21 +13,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* ACPI PCI HotPlug glue functions to ACPI CA subsystem
|
||||
*
|
||||
@@ -11,21 +12,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
@@ -811,10 +797,8 @@ void acpiphp_enumerate_slots(struct pci_bus *bus)
|
||||
|
||||
handle = adev->handle;
|
||||
bridge = kzalloc(sizeof(struct acpiphp_bridge), GFP_KERNEL);
|
||||
if (!bridge) {
|
||||
acpi_handle_err(handle, "No memory for bridge object\n");
|
||||
if (!bridge)
|
||||
return;
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&bridge->slots);
|
||||
kref_init(&bridge->ref);
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* ACPI PCI Hot Plug IBM Extension
|
||||
*
|
||||
@@ -6,21 +7,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <vernux@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* CompactPCI Hot Plug Core Functions
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <scottm@somanetworks.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* CompactPCI Hot Plug Driver
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <scottm@somanetworks.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* CompactPCI Hot Plug Driver PCI functions
|
||||
*
|
||||
@@ -5,21 +6,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <scottm@somanetworks.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* cpcihp_generic.c
|
||||
*
|
||||
@@ -7,26 +8,6 @@
|
||||
* Copyright 2001 Intel San Luis Obispo
|
||||
* Copyright 2000,2001 MontaVista Software Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* This generic CompactPCI hotplug driver should allow using the PCI hotplug
|
||||
* mechanism on any CompactPCI board that exposes the #ENUM signal as a bit
|
||||
* in a system register that can be read through standard port I/O.
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* cpcihp_zt5550.c
|
||||
*
|
||||
@@ -7,26 +8,6 @@
|
||||
* Copyright 2001 Intel San Luis Obispo
|
||||
* Copyright 2000,2001 MontaVista Software Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <scottm@somanetworks.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* cpcihp_zt5550.h
|
||||
*
|
||||
@@ -7,26 +8,6 @@
|
||||
* Copyright 2001 Intel San Luis Obispo
|
||||
* Copyright 2000,2001 MontaVista Software Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <scottm@somanetworks.com>
|
||||
*/
|
||||
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Compaq Hot Plug Controller Driver
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Compaq Hot Plug Controller Driver
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>
|
||||
*
|
||||
* Jan 12, 2003 - Added 66/100/133MHz PCI-X support,
|
||||
@@ -835,7 +821,7 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
|
||||
bus = pdev->subordinate;
|
||||
if (!bus) {
|
||||
dev_notice(&pdev->dev, "the device is not a bridge, skipping\n");
|
||||
pci_notice(pdev, "the device is not a bridge, skipping\n");
|
||||
rc = -ENODEV;
|
||||
goto err_disable_device;
|
||||
}
|
||||
@@ -883,7 +869,6 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
|
||||
ctrl = kzalloc(sizeof(struct controller), GFP_KERNEL);
|
||||
if (!ctrl) {
|
||||
err("%s : out of memory\n", __func__);
|
||||
rc = -ENOMEM;
|
||||
goto err_disable_device;
|
||||
}
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Compaq Hot Plug Controller Driver
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Compaq Hot Plug Controller Driver
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Compaq Hot Plug Controller Driver
|
||||
*
|
||||
@@ -6,21 +7,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Compaq Hot Plug Controller Driver
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>
|
||||
*
|
||||
*/
|
||||
@@ -89,7 +75,9 @@ int cpqhp_configure_device(struct controller *ctrl, struct pci_func *func)
|
||||
pci_lock_rescan_remove();
|
||||
|
||||
if (func->pci_dev == NULL)
|
||||
func->pci_dev = pci_get_bus_and_slot(func->bus, PCI_DEVFN(func->device, func->function));
|
||||
func->pci_dev = pci_get_domain_bus_and_slot(0, func->bus,
|
||||
PCI_DEVFN(func->device,
|
||||
func->function));
|
||||
|
||||
/* No pci device, we need to create it then */
|
||||
if (func->pci_dev == NULL) {
|
||||
@@ -99,7 +87,9 @@ int cpqhp_configure_device(struct controller *ctrl, struct pci_func *func)
|
||||
if (num)
|
||||
pci_bus_add_devices(ctrl->pci_dev->bus);
|
||||
|
||||
func->pci_dev = pci_get_bus_and_slot(func->bus, PCI_DEVFN(func->device, func->function));
|
||||
func->pci_dev = pci_get_domain_bus_and_slot(0, func->bus,
|
||||
PCI_DEVFN(func->device,
|
||||
func->function));
|
||||
if (func->pci_dev == NULL) {
|
||||
dbg("ERROR: pci_dev still null\n");
|
||||
goto out;
|
||||
@@ -129,7 +119,10 @@ int cpqhp_unconfigure_device(struct pci_func *func)
|
||||
|
||||
pci_lock_rescan_remove();
|
||||
for (j = 0; j < 8 ; j++) {
|
||||
struct pci_dev *temp = pci_get_bus_and_slot(func->bus, PCI_DEVFN(func->device, j));
|
||||
struct pci_dev *temp = pci_get_domain_bus_and_slot(0,
|
||||
func->bus,
|
||||
PCI_DEVFN(func->device,
|
||||
j));
|
||||
if (temp) {
|
||||
pci_dev_put(temp);
|
||||
pci_stop_and_remove_bus_device(temp);
|
||||
@@ -319,6 +312,7 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug)
|
||||
int cloop = 0;
|
||||
int stop_it;
|
||||
int index;
|
||||
u16 devfn;
|
||||
|
||||
/* Decide which slots are supported */
|
||||
|
||||
@@ -416,7 +410,9 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug)
|
||||
new_slot->switch_save = 0x10;
|
||||
/* In case of unsupported board */
|
||||
new_slot->status = DevError;
|
||||
new_slot->pci_dev = pci_get_bus_and_slot(new_slot->bus, (new_slot->device << 3) | new_slot->function);
|
||||
devfn = (new_slot->device << 3) | new_slot->function;
|
||||
new_slot->pci_dev = pci_get_domain_bus_and_slot(0,
|
||||
new_slot->bus, devfn);
|
||||
|
||||
for (cloop = 0; cloop < 0x20; cloop++) {
|
||||
rc = pci_bus_read_config_dword(ctrl->pci_bus, PCI_DEVFN(device, function), cloop << 2, (u32 *) &(new_slot->config_space[cloop]));
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Compaq Hot Plug Controller Driver
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
#ifndef __IBMPHP_H
|
||||
#define __IBMPHP_H
|
||||
|
||||
@@ -11,21 +12,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <gregkh@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* IBM Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <gregkh@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
@@ -603,10 +589,8 @@ int ibmphp_update_slot_info(struct slot *slot_cur)
|
||||
u8 mode;
|
||||
|
||||
info = kmalloc(sizeof(struct hotplug_slot_info), GFP_KERNEL);
|
||||
if (!info) {
|
||||
err("out of system memory\n");
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
info->power_status = SLOT_PWRGD(slot_cur->status);
|
||||
info->attention_status = SLOT_ATTN(slot_cur->status,
|
||||
@@ -707,7 +691,8 @@ static void ibm_unconfigure_device(struct pci_func *func)
|
||||
pci_lock_rescan_remove();
|
||||
|
||||
for (j = 0; j < 0x08; j++) {
|
||||
temp = pci_get_bus_and_slot(func->busno, (func->device << 3) | j);
|
||||
temp = pci_get_domain_bus_and_slot(0, func->busno,
|
||||
(func->device << 3) | j);
|
||||
if (temp) {
|
||||
pci_stop_and_remove_bus_device(temp);
|
||||
pci_dev_put(temp);
|
||||
@@ -734,14 +719,12 @@ static u8 bus_structure_fixup(u8 busno)
|
||||
return 1;
|
||||
|
||||
bus = kmalloc(sizeof(*bus), GFP_KERNEL);
|
||||
if (!bus) {
|
||||
err("%s - out of memory\n", __func__);
|
||||
if (!bus)
|
||||
return 1;
|
||||
}
|
||||
|
||||
dev = kmalloc(sizeof(*dev), GFP_KERNEL);
|
||||
if (!dev) {
|
||||
kfree(bus);
|
||||
err("%s - out of memory\n", __func__);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -780,7 +763,7 @@ static int ibm_configure_device(struct pci_func *func)
|
||||
if (!(bus_structure_fixup(func->busno)))
|
||||
flag = 1;
|
||||
if (func->dev == NULL)
|
||||
func->dev = pci_get_bus_and_slot(func->busno,
|
||||
func->dev = pci_get_domain_bus_and_slot(0, func->busno,
|
||||
PCI_DEVFN(func->device, func->function));
|
||||
|
||||
if (func->dev == NULL) {
|
||||
@@ -793,7 +776,7 @@ static int ibm_configure_device(struct pci_func *func)
|
||||
if (num)
|
||||
pci_bus_add_devices(bus);
|
||||
|
||||
func->dev = pci_get_bus_and_slot(func->busno,
|
||||
func->dev = pci_get_domain_bus_and_slot(0, func->busno,
|
||||
PCI_DEVFN(func->device, func->function));
|
||||
if (func->dev == NULL) {
|
||||
err("ERROR... : pci_dev still NULL\n");
|
||||
@@ -1101,7 +1084,6 @@ static int enable_slot(struct hotplug_slot *hs)
|
||||
if (!slot_cur->func) {
|
||||
/* We cannot do update_slot_info here, since no memory for
|
||||
* kmalloc n.e.ways, and update_slot_info allocates some */
|
||||
err("out of system memory\n");
|
||||
rc = -ENOMEM;
|
||||
goto error_power;
|
||||
}
|
||||
@@ -1208,7 +1190,6 @@ int ibmphp_do_disable_slot(struct slot *slot_cur)
|
||||
/* We need this for functions that were there on bootup */
|
||||
slot_cur->func = kzalloc(sizeof(struct pci_func), GFP_KERNEL);
|
||||
if (!slot_cur->func) {
|
||||
err("out of system memory\n");
|
||||
rc = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -1306,7 +1287,6 @@ static int __init ibmphp_init(void)
|
||||
|
||||
ibmphp_pci_bus = kmalloc(sizeof(*ibmphp_pci_bus), GFP_KERNEL);
|
||||
if (!ibmphp_pci_bus) {
|
||||
err("out of memory\n");
|
||||
rc = -ENOMEM;
|
||||
goto exit;
|
||||
}
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* IBM Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <gregkh@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* IBM Hot Plug Controller Driver
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <gregkh@us.ibm.com>
|
||||
* <jshah@us.ibm.com>
|
||||
*
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* IBM Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <gregkh@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
@@ -167,10 +153,9 @@ int ibmphp_configure_card(struct pci_func *func, u8 slotno)
|
||||
goto error;
|
||||
}
|
||||
newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL);
|
||||
if (!newfunc) {
|
||||
err("out of system memory\n");
|
||||
if (!newfunc)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
newfunc->busno = cur_func->busno;
|
||||
newfunc->device = device;
|
||||
cur_func->next = newfunc;
|
||||
@@ -205,10 +190,9 @@ int ibmphp_configure_card(struct pci_func *func, u8 slotno)
|
||||
for (i = 0; i < 32; i++) {
|
||||
if (func->devices[i]) {
|
||||
newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL);
|
||||
if (!newfunc) {
|
||||
err("out of system memory\n");
|
||||
if (!newfunc)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
newfunc->busno = sec_number;
|
||||
newfunc->device = (u8) i;
|
||||
for (j = 0; j < 4; j++)
|
||||
@@ -233,10 +217,9 @@ int ibmphp_configure_card(struct pci_func *func, u8 slotno)
|
||||
}
|
||||
|
||||
newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL);
|
||||
if (!newfunc) {
|
||||
err("out of system memory\n");
|
||||
if (!newfunc)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
newfunc->busno = cur_func->busno;
|
||||
newfunc->device = device;
|
||||
for (j = 0; j < 4; j++)
|
||||
@@ -279,10 +262,9 @@ int ibmphp_configure_card(struct pci_func *func, u8 slotno)
|
||||
if (func->devices[i]) {
|
||||
debug("inside for loop, device is %x\n", i);
|
||||
newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL);
|
||||
if (!newfunc) {
|
||||
err(" out of system memory\n");
|
||||
if (!newfunc)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
newfunc->busno = sec_number;
|
||||
newfunc->device = (u8) i;
|
||||
for (j = 0; j < 4; j++)
|
||||
@@ -405,10 +387,9 @@ static int configure_device(struct pci_func *func)
|
||||
|
||||
io[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
|
||||
if (!io[count]) {
|
||||
err("out of system memory\n");
|
||||
if (!io[count])
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
io[count]->type = IO;
|
||||
io[count]->busno = func->busno;
|
||||
io[count]->devfunc = PCI_DEVFN(func->device, func->function);
|
||||
@@ -442,10 +423,9 @@ static int configure_device(struct pci_func *func)
|
||||
debug("len[count] in PFMEM %x, count %d\n", len[count], count);
|
||||
|
||||
pfmem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
if (!pfmem[count]) {
|
||||
err("out of system memory\n");
|
||||
if (!pfmem[count])
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
pfmem[count]->type = PFMEM;
|
||||
pfmem[count]->busno = func->busno;
|
||||
pfmem[count]->devfunc = PCI_DEVFN(func->device,
|
||||
@@ -458,7 +438,6 @@ static int configure_device(struct pci_func *func)
|
||||
} else {
|
||||
mem_tmp = kzalloc(sizeof(*mem_tmp), GFP_KERNEL);
|
||||
if (!mem_tmp) {
|
||||
err("out of system memory\n");
|
||||
kfree(pfmem[count]);
|
||||
return -ENOMEM;
|
||||
}
|
||||
@@ -508,10 +487,9 @@ static int configure_device(struct pci_func *func)
|
||||
debug("len[count] in Mem %x, count %d\n", len[count], count);
|
||||
|
||||
mem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
if (!mem[count]) {
|
||||
err("out of system memory\n");
|
||||
if (!mem[count])
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
mem[count]->type = MEM;
|
||||
mem[count]->busno = func->busno;
|
||||
mem[count]->devfunc = PCI_DEVFN(func->device,
|
||||
@@ -674,7 +652,6 @@ static int configure_bridge(struct pci_func **func_passed, u8 slotno)
|
||||
bus_io[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
|
||||
if (!bus_io[count]) {
|
||||
err("out of system memory\n");
|
||||
retval = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -706,7 +683,6 @@ static int configure_bridge(struct pci_func **func_passed, u8 slotno)
|
||||
|
||||
bus_pfmem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
if (!bus_pfmem[count]) {
|
||||
err("out of system memory\n");
|
||||
retval = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -722,7 +698,6 @@ static int configure_bridge(struct pci_func **func_passed, u8 slotno)
|
||||
} else {
|
||||
mem_tmp = kzalloc(sizeof(*mem_tmp), GFP_KERNEL);
|
||||
if (!mem_tmp) {
|
||||
err("out of system memory\n");
|
||||
retval = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -763,7 +738,6 @@ static int configure_bridge(struct pci_func **func_passed, u8 slotno)
|
||||
|
||||
bus_mem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
if (!bus_mem[count]) {
|
||||
err("out of system memory\n");
|
||||
retval = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -834,7 +808,6 @@ static int configure_bridge(struct pci_func **func_passed, u8 slotno)
|
||||
io = kzalloc(sizeof(*io), GFP_KERNEL);
|
||||
|
||||
if (!io) {
|
||||
err("out of system memory\n");
|
||||
retval = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -856,7 +829,6 @@ static int configure_bridge(struct pci_func **func_passed, u8 slotno)
|
||||
debug("it wants %x memory behind the bridge\n", amount_needed->mem);
|
||||
mem = kzalloc(sizeof(*mem), GFP_KERNEL);
|
||||
if (!mem) {
|
||||
err("out of system memory\n");
|
||||
retval = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -878,7 +850,6 @@ static int configure_bridge(struct pci_func **func_passed, u8 slotno)
|
||||
debug("it wants %x pfmemory behind the bridge\n", amount_needed->pfmem);
|
||||
pfmem = kzalloc(sizeof(*pfmem), GFP_KERNEL);
|
||||
if (!pfmem) {
|
||||
err("out of system memory\n");
|
||||
retval = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -893,7 +864,6 @@ static int configure_bridge(struct pci_func **func_passed, u8 slotno)
|
||||
} else {
|
||||
mem_tmp = kzalloc(sizeof(*mem_tmp), GFP_KERNEL);
|
||||
if (!mem_tmp) {
|
||||
err("out of system memory\n");
|
||||
retval = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -924,7 +894,6 @@ static int configure_bridge(struct pci_func **func_passed, u8 slotno)
|
||||
if (!bus) {
|
||||
bus = kzalloc(sizeof(*bus), GFP_KERNEL);
|
||||
if (!bus) {
|
||||
err("out of system memory\n");
|
||||
retval = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
@@ -1652,10 +1621,9 @@ static int add_new_bus(struct bus_node *bus, struct resource_node *io, struct re
|
||||
}
|
||||
if (io) {
|
||||
io_range = kzalloc(sizeof(*io_range), GFP_KERNEL);
|
||||
if (!io_range) {
|
||||
err("out of system memory\n");
|
||||
if (!io_range)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
io_range->start = io->start;
|
||||
io_range->end = io->end;
|
||||
io_range->rangeno = 1;
|
||||
@@ -1664,10 +1632,9 @@ static int add_new_bus(struct bus_node *bus, struct resource_node *io, struct re
|
||||
}
|
||||
if (mem) {
|
||||
mem_range = kzalloc(sizeof(*mem_range), GFP_KERNEL);
|
||||
if (!mem_range) {
|
||||
err("out of system memory\n");
|
||||
if (!mem_range)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
mem_range->start = mem->start;
|
||||
mem_range->end = mem->end;
|
||||
mem_range->rangeno = 1;
|
||||
@@ -1676,10 +1643,9 @@ static int add_new_bus(struct bus_node *bus, struct resource_node *io, struct re
|
||||
}
|
||||
if (pfmem) {
|
||||
pfmem_range = kzalloc(sizeof(*pfmem_range), GFP_KERNEL);
|
||||
if (!pfmem_range) {
|
||||
err("out of system memory\n");
|
||||
if (!pfmem_range)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
pfmem_range->start = pfmem->start;
|
||||
pfmem_range->end = pfmem->end;
|
||||
pfmem_range->rangeno = 1;
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* IBM Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <gregkh@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
@@ -56,10 +42,8 @@ static struct bus_node * __init alloc_error_bus(struct ebda_pci_rsrc *curr, u8 b
|
||||
}
|
||||
|
||||
newbus = kzalloc(sizeof(struct bus_node), GFP_KERNEL);
|
||||
if (!newbus) {
|
||||
err("out of system memory\n");
|
||||
if (!newbus)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (flag)
|
||||
newbus->busno = busno;
|
||||
@@ -79,10 +63,9 @@ static struct resource_node * __init alloc_resources(struct ebda_pci_rsrc *curr)
|
||||
}
|
||||
|
||||
rs = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
if (!rs) {
|
||||
err("out of system memory\n");
|
||||
if (!rs)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rs->busno = curr->bus_num;
|
||||
rs->devfunc = curr->dev_fun;
|
||||
rs->start = curr->start_addr;
|
||||
@@ -99,10 +82,9 @@ static int __init alloc_bus_range(struct bus_node **new_bus, struct range_node *
|
||||
|
||||
if (first_bus) {
|
||||
newbus = kzalloc(sizeof(struct bus_node), GFP_KERNEL);
|
||||
if (!newbus) {
|
||||
err("out of system memory.\n");
|
||||
if (!newbus)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
newbus->busno = curr->bus_num;
|
||||
} else {
|
||||
newbus = *new_bus;
|
||||
@@ -123,7 +105,6 @@ static int __init alloc_bus_range(struct bus_node **new_bus, struct range_node *
|
||||
if (!newrange) {
|
||||
if (first_bus)
|
||||
kfree(newbus);
|
||||
err("out of system memory\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
newrange->start = curr->start_addr;
|
||||
@@ -1707,10 +1688,9 @@ static int __init once_over(void)
|
||||
bus_cur->firstPFMemFromMem = pfmem_cur;
|
||||
|
||||
mem = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
if (!mem) {
|
||||
err("out of system memory\n");
|
||||
if (!mem)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
mem->type = MEM;
|
||||
mem->busno = pfmem_cur->busno;
|
||||
mem->devfunc = pfmem_cur->devfunc;
|
||||
@@ -1989,10 +1969,9 @@ static int __init update_bridge_ranges(struct bus_node **bus)
|
||||
|
||||
if ((start_address) && (start_address <= end_address)) {
|
||||
range = kzalloc(sizeof(struct range_node), GFP_KERNEL);
|
||||
if (!range) {
|
||||
err("out of system memory\n");
|
||||
if (!range)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
range->start = start_address;
|
||||
range->end = end_address + 0xfff;
|
||||
|
||||
@@ -2016,7 +1995,6 @@ static int __init update_bridge_ranges(struct bus_node **bus)
|
||||
io = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
if (!io) {
|
||||
kfree(range);
|
||||
err("out of system memory\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
io->type = IO;
|
||||
@@ -2038,10 +2016,9 @@ static int __init update_bridge_ranges(struct bus_node **bus)
|
||||
if ((start_address) && (start_address <= end_address)) {
|
||||
|
||||
range = kzalloc(sizeof(struct range_node), GFP_KERNEL);
|
||||
if (!range) {
|
||||
err("out of system memory\n");
|
||||
if (!range)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
range->start = start_address;
|
||||
range->end = end_address + 0xfffff;
|
||||
|
||||
@@ -2066,7 +2043,6 @@ static int __init update_bridge_ranges(struct bus_node **bus)
|
||||
mem = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
if (!mem) {
|
||||
kfree(range);
|
||||
err("out of system memory\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
mem->type = MEM;
|
||||
@@ -2092,10 +2068,9 @@ static int __init update_bridge_ranges(struct bus_node **bus)
|
||||
if ((start_address) && (start_address <= end_address)) {
|
||||
|
||||
range = kzalloc(sizeof(struct range_node), GFP_KERNEL);
|
||||
if (!range) {
|
||||
err("out of system memory\n");
|
||||
if (!range)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
range->start = start_address;
|
||||
range->end = end_address + 0xfffff;
|
||||
|
||||
@@ -2119,7 +2094,6 @@ static int __init update_bridge_ranges(struct bus_node **bus)
|
||||
pfmem = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
|
||||
if (!pfmem) {
|
||||
kfree(range);
|
||||
err("out of system memory\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
pfmem->type = PFMEM;
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI HotPlug Controller Core
|
||||
*
|
||||
@@ -6,21 +7,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <kristen.c.accardi@intel.com>
|
||||
*
|
||||
* Authors:
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* PCI Express Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI Express Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
* Authors:
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI Express Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI Express PCI Hot Plug Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
@@ -838,16 +824,22 @@ struct controller *pcie_init(struct pcie_device *dev)
|
||||
struct pci_dev *pdev = dev->port;
|
||||
|
||||
ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
|
||||
if (!ctrl) {
|
||||
dev_err(&dev->device, "%s: Out of memory\n", __func__);
|
||||
if (!ctrl)
|
||||
goto abort;
|
||||
}
|
||||
|
||||
ctrl->pcie = dev;
|
||||
pcie_capability_read_dword(pdev, PCI_EXP_SLTCAP, &slot_cap);
|
||||
|
||||
if (pdev->hotplug_user_indicators)
|
||||
slot_cap &= ~(PCI_EXP_SLTCAP_AIP | PCI_EXP_SLTCAP_PIP);
|
||||
|
||||
/*
|
||||
* We assume no Thunderbolt controllers support Command Complete events,
|
||||
* but some controllers falsely claim they do.
|
||||
*/
|
||||
if (pdev->is_thunderbolt)
|
||||
slot_cap |= PCI_EXP_SLTCAP_NCCS;
|
||||
|
||||
ctrl->slot_cap = slot_cap;
|
||||
mutex_init(&ctrl->ctrl_lock);
|
||||
init_waitqueue_head(&ctrl->queue);
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI Express Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
@@ -79,7 +65,6 @@ int pciehp_configure_device(struct slot *p_slot)
|
||||
int pciehp_unconfigure_device(struct slot *p_slot)
|
||||
{
|
||||
int rc = 0;
|
||||
u8 bctl = 0;
|
||||
u8 presence = 0;
|
||||
struct pci_dev *dev, *temp;
|
||||
struct pci_bus *parent = p_slot->ctrl->pcie->port->subordinate;
|
||||
@@ -101,17 +86,6 @@ int pciehp_unconfigure_device(struct slot *p_slot)
|
||||
list_for_each_entry_safe_reverse(dev, temp, &parent->devices,
|
||||
bus_list) {
|
||||
pci_dev_get(dev);
|
||||
if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE && presence) {
|
||||
pci_read_config_byte(dev, PCI_BRIDGE_CONTROL, &bctl);
|
||||
if (bctl & PCI_BRIDGE_CTL_VGA) {
|
||||
ctrl_err(ctrl,
|
||||
"Cannot remove display device %s\n",
|
||||
pci_name(dev));
|
||||
pci_dev_put(dev);
|
||||
rc = -EINVAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!presence) {
|
||||
pci_dev_set_disconnected(dev, NULL);
|
||||
if (pci_has_subordinate(dev))
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI Hot Plug Controller Skeleton Driver - 0.3
|
||||
*
|
||||
@@ -6,21 +7,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* This driver is to be used as a skeleton driver to show how to interface
|
||||
* with the pci hotplug core easily.
|
||||
*
|
||||
|
@@ -1,12 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI Hotplug Driver for PowerPC PowerNV platform.
|
||||
*
|
||||
* Copyright Gavin Shan, IBM Corporation 2016.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include <linux/libfdt.h>
|
||||
@@ -266,22 +262,18 @@ static int pnv_php_add_devtree(struct pnv_php_slot *php_slot)
|
||||
fdt1 = kzalloc(0x10000, GFP_KERNEL);
|
||||
if (!fdt1) {
|
||||
ret = -ENOMEM;
|
||||
dev_warn(&php_slot->pdev->dev, "Cannot alloc FDT blob\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = pnv_pci_get_device_tree(php_slot->dn->phandle, fdt1, 0x10000);
|
||||
if (ret) {
|
||||
dev_warn(&php_slot->pdev->dev, "Error %d getting FDT blob\n",
|
||||
ret);
|
||||
pci_warn(php_slot->pdev, "Error %d getting FDT blob\n", ret);
|
||||
goto free_fdt1;
|
||||
}
|
||||
|
||||
fdt = kzalloc(fdt_totalsize(fdt1), GFP_KERNEL);
|
||||
if (!fdt) {
|
||||
ret = -ENOMEM;
|
||||
dev_warn(&php_slot->pdev->dev, "Cannot %d bytes memory\n",
|
||||
fdt_totalsize(fdt1));
|
||||
goto free_fdt1;
|
||||
}
|
||||
|
||||
@@ -290,7 +282,7 @@ static int pnv_php_add_devtree(struct pnv_php_slot *php_slot)
|
||||
dt = of_fdt_unflatten_tree(fdt, php_slot->dn, NULL);
|
||||
if (!dt) {
|
||||
ret = -EINVAL;
|
||||
dev_warn(&php_slot->pdev->dev, "Cannot unflatten FDT\n");
|
||||
pci_warn(php_slot->pdev, "Cannot unflatten FDT\n");
|
||||
goto free_fdt;
|
||||
}
|
||||
|
||||
@@ -300,7 +292,7 @@ static int pnv_php_add_devtree(struct pnv_php_slot *php_slot)
|
||||
ret = pnv_php_populate_changeset(&php_slot->ocs, php_slot->dn);
|
||||
if (ret) {
|
||||
pnv_php_reverse_nodes(php_slot->dn);
|
||||
dev_warn(&php_slot->pdev->dev, "Error %d populating changeset\n",
|
||||
pci_warn(php_slot->pdev, "Error %d populating changeset\n",
|
||||
ret);
|
||||
goto free_dt;
|
||||
}
|
||||
@@ -308,8 +300,7 @@ static int pnv_php_add_devtree(struct pnv_php_slot *php_slot)
|
||||
php_slot->dn->child = NULL;
|
||||
ret = of_changeset_apply(&php_slot->ocs);
|
||||
if (ret) {
|
||||
dev_warn(&php_slot->pdev->dev, "Error %d applying changeset\n",
|
||||
ret);
|
||||
pci_warn(php_slot->pdev, "Error %d applying changeset\n", ret);
|
||||
goto destroy_changeset;
|
||||
}
|
||||
|
||||
@@ -345,14 +336,14 @@ int pnv_php_set_slot_power_state(struct hotplug_slot *slot,
|
||||
if (be64_to_cpu(msg.params[1]) != php_slot->dn->phandle ||
|
||||
be64_to_cpu(msg.params[2]) != state ||
|
||||
be64_to_cpu(msg.params[3]) != OPAL_SUCCESS) {
|
||||
dev_warn(&php_slot->pdev->dev, "Wrong msg (%lld, %lld, %lld)\n",
|
||||
pci_warn(php_slot->pdev, "Wrong msg (%lld, %lld, %lld)\n",
|
||||
be64_to_cpu(msg.params[1]),
|
||||
be64_to_cpu(msg.params[2]),
|
||||
be64_to_cpu(msg.params[3]));
|
||||
return -ENOMSG;
|
||||
}
|
||||
} else if (ret < 0) {
|
||||
dev_warn(&php_slot->pdev->dev, "Error %d powering %s\n",
|
||||
pci_warn(php_slot->pdev, "Error %d powering %s\n",
|
||||
ret, (state == OPAL_PCI_SLOT_POWER_ON) ? "on" : "off");
|
||||
return ret;
|
||||
}
|
||||
@@ -379,7 +370,7 @@ static int pnv_php_get_power_state(struct hotplug_slot *slot, u8 *state)
|
||||
*/
|
||||
ret = pnv_pci_get_power_state(php_slot->id, &power_state);
|
||||
if (ret) {
|
||||
dev_warn(&php_slot->pdev->dev, "Error %d getting power status\n",
|
||||
pci_warn(php_slot->pdev, "Error %d getting power status\n",
|
||||
ret);
|
||||
} else {
|
||||
*state = power_state;
|
||||
@@ -405,8 +396,7 @@ static int pnv_php_get_adapter_state(struct hotplug_slot *slot, u8 *state)
|
||||
slot->info->adapter_status = presence;
|
||||
ret = 0;
|
||||
} else {
|
||||
dev_warn(&php_slot->pdev->dev, "Error %d getting presence\n",
|
||||
ret);
|
||||
pci_warn(php_slot->pdev, "Error %d getting presence\n", ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -629,8 +619,7 @@ static int pnv_php_register_slot(struct pnv_php_slot *php_slot)
|
||||
ret = pci_hp_register(&php_slot->slot, php_slot->bus,
|
||||
php_slot->slot_no, php_slot->name);
|
||||
if (ret) {
|
||||
dev_warn(&php_slot->pdev->dev, "Error %d registering slot\n",
|
||||
ret);
|
||||
pci_warn(php_slot->pdev, "Error %d registering slot\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -683,7 +672,7 @@ static int pnv_php_enable_msix(struct pnv_php_slot *php_slot)
|
||||
/* Enable MSIx */
|
||||
ret = pci_enable_msix_exact(pdev, &entry, 1);
|
||||
if (ret) {
|
||||
dev_warn(&pdev->dev, "Error %d enabling MSIx\n", ret);
|
||||
pci_warn(pdev, "Error %d enabling MSIx\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -727,7 +716,7 @@ static irqreturn_t pnv_php_interrupt(int irq, void *data)
|
||||
(sts & PCI_EXP_SLTSTA_PDC)) {
|
||||
ret = pnv_pci_get_presence_state(php_slot->id, &presence);
|
||||
if (ret) {
|
||||
dev_warn(&pdev->dev, "PCI slot [%s] error %d getting presence (0x%04x), to retry the operation.\n",
|
||||
pci_warn(pdev, "PCI slot [%s] error %d getting presence (0x%04x), to retry the operation.\n",
|
||||
php_slot->name, ret, sts);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@@ -757,12 +746,12 @@ static irqreturn_t pnv_php_interrupt(int irq, void *data)
|
||||
*/
|
||||
event = kzalloc(sizeof(*event), GFP_ATOMIC);
|
||||
if (!event) {
|
||||
dev_warn(&pdev->dev, "PCI slot [%s] missed hotplug event 0x%04x\n",
|
||||
pci_warn(pdev, "PCI slot [%s] missed hotplug event 0x%04x\n",
|
||||
php_slot->name, sts);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
dev_info(&pdev->dev, "PCI slot [%s] %s (IRQ: %d)\n",
|
||||
pci_info(pdev, "PCI slot [%s] %s (IRQ: %d)\n",
|
||||
php_slot->name, added ? "added" : "removed", irq);
|
||||
INIT_WORK(&event->work, pnv_php_event_handler);
|
||||
event->added = added;
|
||||
@@ -782,7 +771,7 @@ static void pnv_php_init_irq(struct pnv_php_slot *php_slot, int irq)
|
||||
/* Allocate workqueue */
|
||||
php_slot->wq = alloc_workqueue("pciehp-%s", 0, 0, php_slot->name);
|
||||
if (!php_slot->wq) {
|
||||
dev_warn(&pdev->dev, "Cannot alloc workqueue\n");
|
||||
pci_warn(pdev, "Cannot alloc workqueue\n");
|
||||
pnv_php_disable_irq(php_slot, true);
|
||||
return;
|
||||
}
|
||||
@@ -806,7 +795,7 @@ static void pnv_php_init_irq(struct pnv_php_slot *php_slot, int irq)
|
||||
php_slot->name, php_slot);
|
||||
if (ret) {
|
||||
pnv_php_disable_irq(php_slot, true);
|
||||
dev_warn(&pdev->dev, "Error %d enabling IRQ %d\n", ret, irq);
|
||||
pci_warn(pdev, "Error %d enabling IRQ %d\n", ret, irq);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -842,7 +831,7 @@ static void pnv_php_enable_irq(struct pnv_php_slot *php_slot)
|
||||
|
||||
ret = pci_enable_device(pdev);
|
||||
if (ret) {
|
||||
dev_warn(&pdev->dev, "Error %d enabling device\n", ret);
|
||||
pci_warn(pdev, "Error %d enabling device\n", ret);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Interface for Dynamic Logical Partitioning of I/O Slots on
|
||||
* RPA-compliant PPC64 platform.
|
||||
@@ -6,11 +7,6 @@
|
||||
* October 2003
|
||||
*
|
||||
* Copyright (C) 2003 IBM.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
#ifndef _RPADLPAR_IO_H_
|
||||
#define _RPADLPAR_IO_H_
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Interface for Dynamic Logical Partitioning of I/O Slots on
|
||||
* RPA-compliant PPC64 platform.
|
||||
@@ -8,11 +9,6 @@
|
||||
* October 2003
|
||||
*
|
||||
* Copyright (C) 2003 IBM.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#undef DEBUG
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Interface for Dynamic Logical Partitioning of I/O Slots on
|
||||
* RPA-compliant PPC64 platform.
|
||||
@@ -6,11 +7,6 @@
|
||||
* October 2003
|
||||
*
|
||||
* Copyright (C) 2003 IBM.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
#include <linux/kobject.h>
|
||||
#include <linux/string.h>
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* PCI Hot Plug Controller Driver for RPA-compliant PPC64 platform.
|
||||
*
|
||||
@@ -5,21 +6,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <lxie@us.ibm.com>,
|
||||
*
|
||||
*/
|
||||
|
@@ -1,24 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI Hot Plug Controller Driver for RPA-compliant PPC64 platform.
|
||||
* Copyright (C) 2003 Linda Xie <lxie@us.ibm.com>
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <lxie@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,24 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI Hot Plug Controller Driver for RPA-compliant PPC64 platform.
|
||||
* Copyright (C) 2003 Linda Xie <lxie@us.ibm.com>
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <lxie@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,24 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* RPA Virtual I/O device functions
|
||||
* Copyright (C) 2004 Linda Xie <lxie@us.ibm.com>
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <lxie@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* PCI Hot Plug Controller Driver for System z
|
||||
*
|
||||
@@ -5,8 +6,6 @@
|
||||
*
|
||||
* Author(s):
|
||||
* Jan Glauber <jang@linux.vnet.ibm.com>
|
||||
*
|
||||
* License: GPL
|
||||
*/
|
||||
|
||||
#define KMSG_COMPONENT "zpci"
|
||||
|
@@ -1,8 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 2005-2006 Silicon Graphics, Inc. All rights reserved.
|
||||
*
|
||||
* This work was based on the 2.4/2.6 kernel development by Dick Reigner.
|
||||
@@ -245,18 +242,18 @@ static int sn_slot_enable(struct hotplug_slot *bss_hotplug_slot,
|
||||
|
||||
|
||||
if (rc == PCI_SLOT_ALREADY_UP) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "is already active\n");
|
||||
pci_dbg(slot->pci_bus->self, "is already active\n");
|
||||
return 1; /* return 1 to user */
|
||||
}
|
||||
|
||||
if (rc == PCI_L1_ERR) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "L1 failure %d with message: %s",
|
||||
pci_dbg(slot->pci_bus->self, "L1 failure %d with message: %s",
|
||||
resp.resp_sub_errno, resp.resp_l1_msg);
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
if (rc) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "insert failed with error %d sub-error %d\n",
|
||||
pci_dbg(slot->pci_bus->self, "insert failed with error %d sub-error %d\n",
|
||||
rc, resp.resp_sub_errno);
|
||||
return -EIO;
|
||||
}
|
||||
@@ -281,23 +278,23 @@ static int sn_slot_disable(struct hotplug_slot *bss_hotplug_slot,
|
||||
|
||||
if ((action == PCI_REQ_SLOT_ELIGIBLE) &&
|
||||
(rc == PCI_SLOT_ALREADY_DOWN)) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "Slot %s already inactive\n", slot->physical_path);
|
||||
pci_dbg(slot->pci_bus->self, "Slot %s already inactive\n", slot->physical_path);
|
||||
return 1; /* return 1 to user */
|
||||
}
|
||||
|
||||
if ((action == PCI_REQ_SLOT_ELIGIBLE) && (rc == PCI_EMPTY_33MHZ)) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "Cannot remove last 33MHz card\n");
|
||||
pci_dbg(slot->pci_bus->self, "Cannot remove last 33MHz card\n");
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
if ((action == PCI_REQ_SLOT_ELIGIBLE) && (rc == PCI_L1_ERR)) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "L1 failure %d with message \n%s\n",
|
||||
pci_dbg(slot->pci_bus->self, "L1 failure %d with message \n%s\n",
|
||||
resp.resp_sub_errno, resp.resp_l1_msg);
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
if ((action == PCI_REQ_SLOT_ELIGIBLE) && rc) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "remove failed with error %d sub-error %d\n",
|
||||
pci_dbg(slot->pci_bus->self, "remove failed with error %d sub-error %d\n",
|
||||
rc, resp.resp_sub_errno);
|
||||
return -EIO;
|
||||
}
|
||||
@@ -308,12 +305,12 @@ static int sn_slot_disable(struct hotplug_slot *bss_hotplug_slot,
|
||||
if ((action == PCI_REQ_SLOT_DISABLE) && !rc) {
|
||||
pcibus_info = SN_PCIBUS_BUSSOFT_INFO(slot->pci_bus);
|
||||
pcibus_info->pbi_enabled_devices &= ~(1 << device_num);
|
||||
dev_dbg(&slot->pci_bus->self->dev, "remove successful\n");
|
||||
pci_dbg(slot->pci_bus->self, "remove successful\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((action == PCI_REQ_SLOT_DISABLE) && rc) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "remove failed rc = %d\n", rc);
|
||||
pci_dbg(slot->pci_bus->self, "remove failed rc = %d\n", rc);
|
||||
}
|
||||
|
||||
return rc;
|
||||
@@ -366,7 +363,7 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
|
||||
num_funcs = pci_scan_slot(slot->pci_bus,
|
||||
PCI_DEVFN(slot->device_num + 1, 0));
|
||||
if (!num_funcs) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "no device in slot\n");
|
||||
pci_dbg(slot->pci_bus->self, "no device in slot\n");
|
||||
mutex_unlock(&sn_hotplug_mutex);
|
||||
return -ENODEV;
|
||||
}
|
||||
@@ -412,7 +409,7 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
|
||||
phandle = acpi_device_handle(PCI_CONTROLLER(slot->pci_bus)->companion);
|
||||
|
||||
if (acpi_bus_get_device(phandle, &pdevice)) {
|
||||
dev_dbg(&slot->pci_bus->self->dev, "no parent device, assuming NULL\n");
|
||||
pci_dbg(slot->pci_bus->self, "no parent device, assuming NULL\n");
|
||||
pdevice = NULL;
|
||||
}
|
||||
|
||||
@@ -463,9 +460,9 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
|
||||
mutex_unlock(&sn_hotplug_mutex);
|
||||
|
||||
if (rc == 0)
|
||||
dev_dbg(&slot->pci_bus->self->dev, "insert operation successful\n");
|
||||
pci_dbg(slot->pci_bus->self, "insert operation successful\n");
|
||||
else
|
||||
dev_dbg(&slot->pci_bus->self->dev, "insert operation failed rc = %d\n", rc);
|
||||
pci_dbg(slot->pci_bus->self, "insert operation failed rc = %d\n", rc);
|
||||
|
||||
return rc;
|
||||
}
|
||||
@@ -643,16 +640,16 @@ static int sn_hotplug_slot_register(struct pci_bus *pci_bus)
|
||||
if (rc)
|
||||
goto register_err;
|
||||
}
|
||||
dev_dbg(&pci_bus->self->dev, "Registered bus with hotplug\n");
|
||||
pci_dbg(pci_bus->self, "Registered bus with hotplug\n");
|
||||
return rc;
|
||||
|
||||
register_err:
|
||||
dev_dbg(&pci_bus->self->dev, "bus failed to register with err = %d\n",
|
||||
pci_dbg(pci_bus->self, "bus failed to register with err = %d\n",
|
||||
rc);
|
||||
|
||||
alloc_err:
|
||||
if (rc == -ENOMEM)
|
||||
dev_dbg(&pci_bus->self->dev, "Memory allocation error\n");
|
||||
pci_dbg(pci_bus->self, "Memory allocation error\n");
|
||||
|
||||
/* destroy THIS element */
|
||||
if (bss_hotplug_slot)
|
||||
@@ -685,10 +682,10 @@ static int __init sn_pci_hotplug_init(void)
|
||||
|
||||
rc = sn_pci_bus_valid(pci_bus);
|
||||
if (rc != 1) {
|
||||
dev_dbg(&pci_bus->self->dev, "not a valid hotplug bus\n");
|
||||
pci_dbg(pci_bus->self, "not a valid hotplug bus\n");
|
||||
continue;
|
||||
}
|
||||
dev_dbg(&pci_bus->self->dev, "valid hotplug bus\n");
|
||||
pci_dbg(pci_bus->self, "valid hotplug bus\n");
|
||||
|
||||
rc = sn_hotplug_slot_register(pci_bus);
|
||||
if (!rc) {
|
||||
|
@@ -1,3 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Standard Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
@@ -62,15 +48,15 @@ do { \
|
||||
#define ctrl_dbg(ctrl, format, arg...) \
|
||||
do { \
|
||||
if (shpchp_debug) \
|
||||
dev_printk(KERN_DEBUG, &ctrl->pci_dev->dev, \
|
||||
pci_printk(KERN_DEBUG, ctrl->pci_dev, \
|
||||
format, ## arg); \
|
||||
} while (0)
|
||||
#define ctrl_err(ctrl, format, arg...) \
|
||||
dev_err(&ctrl->pci_dev->dev, format, ## arg)
|
||||
pci_err(ctrl->pci_dev, format, ## arg)
|
||||
#define ctrl_info(ctrl, format, arg...) \
|
||||
dev_info(&ctrl->pci_dev->dev, format, ## arg)
|
||||
pci_info(ctrl->pci_dev, format, ## arg)
|
||||
#define ctrl_warn(ctrl, format, arg...) \
|
||||
dev_warn(&ctrl->pci_dev->dev, format, ## arg)
|
||||
pci_warn(ctrl->pci_dev, format, ## arg)
|
||||
|
||||
|
||||
#define SLOT_NAME_SIZE 10
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Standard Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
@@ -305,10 +291,9 @@ static int shpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
return -ENODEV;
|
||||
|
||||
ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
|
||||
if (!ctrl) {
|
||||
dev_err(&pdev->dev, "%s: Out of memory\n", __func__);
|
||||
if (!ctrl)
|
||||
goto err_out_none;
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&ctrl->slot_list);
|
||||
|
||||
rc = shpc_init(ctrl, pdev);
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Standard Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Standard PCI Hot Plug Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Standard Hot Plug Controller Driver
|
||||
*
|
||||
@@ -8,21 +9,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
@@ -78,7 +64,6 @@ int shpchp_configure_device(struct slot *p_slot)
|
||||
int shpchp_unconfigure_device(struct slot *p_slot)
|
||||
{
|
||||
int rc = 0;
|
||||
u8 bctl = 0;
|
||||
struct pci_bus *parent = p_slot->ctrl->pci_dev->subordinate;
|
||||
struct pci_dev *dev, *temp;
|
||||
struct controller *ctrl = p_slot->ctrl;
|
||||
@@ -93,17 +78,6 @@ int shpchp_unconfigure_device(struct slot *p_slot)
|
||||
continue;
|
||||
|
||||
pci_dev_get(dev);
|
||||
if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) {
|
||||
pci_read_config_byte(dev, PCI_BRIDGE_CONTROL, &bctl);
|
||||
if (bctl & PCI_BRIDGE_CTL_VGA) {
|
||||
ctrl_err(ctrl,
|
||||
"Cannot remove display device %s\n",
|
||||
pci_name(dev));
|
||||
pci_dev_put(dev);
|
||||
rc = -EINVAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
pci_stop_and_remove_bus_device(dev);
|
||||
pci_dev_put(dev);
|
||||
}
|
||||
|
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Compaq Hot Plug Controller Driver
|
||||
*
|
||||
@@ -7,21 +8,6 @@
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>
|
||||
*
|
||||
*/
|
||||
|
Посилання в новій задачі
Заблокувати користувача