cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

iomap-pci.c (1338B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Implement the default iomap interfaces
      4 *
      5 * (C) Copyright 2004 Linus Torvalds
      6 * (C) Copyright 2006 Ralf Baechle <ralf@linux-mips.org>
      7 * (C) Copyright 2007 MIPS Technologies, Inc.
      8 *     written by Ralf Baechle <ralf@linux-mips.org>
      9 */
     10#include <linux/pci.h>
     11#include <linux/export.h>
     12#include <asm/io.h>
     13
     14#ifdef CONFIG_PCI_DRIVERS_LEGACY
     15
     16void __iomem *__pci_ioport_map(struct pci_dev *dev,
     17			       unsigned long port, unsigned int nr)
     18{
     19	struct pci_controller *ctrl = dev->bus->sysdata;
     20	unsigned long base = ctrl->io_map_base;
     21
     22	/* This will eventually become a BUG_ON but for now be gentle */
     23	if (unlikely(!ctrl->io_map_base)) {
     24		struct pci_bus *bus = dev->bus;
     25		char name[8];
     26
     27		while (bus->parent)
     28			bus = bus->parent;
     29
     30		ctrl->io_map_base = base = mips_io_port_base;
     31
     32		sprintf(name, "%04x:%02x", pci_domain_nr(bus), bus->number);
     33		printk(KERN_WARNING "io_map_base of root PCI bus %s unset.  "
     34		       "Trying to continue but you better\nfix this issue or "
     35		       "report it to linux-mips@vger.kernel.org or your "
     36		       "vendor.\n", name);
     37#ifdef CONFIG_PCI_DOMAINS
     38		panic("To avoid data corruption io_map_base MUST be set with "
     39		      "multiple PCI domains.");
     40#endif
     41	}
     42
     43	return (void __iomem *) (ctrl->io_map_base + port);
     44}
     45
     46#endif /* CONFIG_PCI_DRIVERS_LEGACY */