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

timer-probe.c (959B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
      4 */
      5
      6#include <linux/acpi.h>
      7#include <linux/init.h>
      8#include <linux/of.h>
      9#include <linux/clocksource.h>
     10
     11extern struct of_device_id __timer_of_table[];
     12
     13static const struct of_device_id __timer_of_table_sentinel
     14	__used __section("__timer_of_table_end");
     15
     16void __init timer_probe(void)
     17{
     18	struct device_node *np;
     19	const struct of_device_id *match;
     20	of_init_fn_1_ret init_func_ret;
     21	unsigned timers = 0;
     22	int ret;
     23
     24	for_each_matching_node_and_match(np, __timer_of_table, &match) {
     25		if (!of_device_is_available(np))
     26			continue;
     27
     28		init_func_ret = match->data;
     29
     30		ret = init_func_ret(np);
     31		if (ret) {
     32			if (ret != -EPROBE_DEFER)
     33				pr_err("Failed to initialize '%pOF': %d\n", np,
     34				       ret);
     35			continue;
     36		}
     37
     38		timers++;
     39	}
     40
     41	timers += acpi_probe_device_table(timer);
     42
     43	if (!timers)
     44		pr_crit("%s: no matching timers found\n", __func__);
     45}