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

virtual_root.c (1663B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * Virtual EISA root driver.
      4 * Acts as a placeholder if we don't have a proper EISA bridge.
      5 *
      6 * (C) 2003 Marc Zyngier <maz@wild-wind.fr.eu.org>
      7 */
      8
      9#include <linux/kernel.h>
     10#include <linux/platform_device.h>
     11#include <linux/eisa.h>
     12#include <linux/module.h>
     13#include <linux/moduleparam.h>
     14#include <linux/init.h>
     15
     16#if defined(CONFIG_ALPHA_JENSEN) || defined(CONFIG_EISA_VLB_PRIMING)
     17#define EISA_FORCE_PROBE_DEFAULT 1
     18#else
     19#define EISA_FORCE_PROBE_DEFAULT 0
     20#endif
     21
     22static int force_probe = EISA_FORCE_PROBE_DEFAULT;
     23static void virtual_eisa_release (struct device *);
     24
     25/* The default EISA device parent (virtual root device).
     26 * Now use a platform device, since that's the obvious choice. */
     27
     28static struct platform_device eisa_root_dev = {
     29	.name = "eisa",
     30	.id   = 0,
     31	.dev  = {
     32		.release = virtual_eisa_release,
     33	},
     34};
     35
     36static struct eisa_root_device eisa_bus_root = {
     37	.dev		= &eisa_root_dev.dev,
     38	.bus_base_addr	= 0,
     39	.res		= &ioport_resource,
     40	.slots		= EISA_MAX_SLOTS,
     41	.dma_mask	= 0xffffffff,
     42};
     43
     44static void virtual_eisa_release (struct device *dev)
     45{
     46	/* nothing really to do here */
     47}
     48
     49static int __init virtual_eisa_root_init (void)
     50{
     51	int r;
     52
     53	if ((r = platform_device_register (&eisa_root_dev)))
     54		return r;
     55
     56	eisa_bus_root.force_probe = force_probe;
     57
     58	dev_set_drvdata(&eisa_root_dev.dev, &eisa_bus_root);
     59
     60	if (eisa_root_register (&eisa_bus_root)) {
     61		/* A real bridge may have been registered before
     62		 * us. So quietly unregister. */
     63		platform_device_unregister (&eisa_root_dev);
     64		return -1;
     65	}
     66
     67	return 0;
     68}
     69
     70module_param (force_probe, int, 0444);
     71
     72device_initcall (virtual_eisa_root_init);