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

probe_64.c (1113B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * Copyright 2004 James Cleverdon, IBM.
      4 *
      5 * Generic APIC sub-arch probe layer.
      6 *
      7 * Hacked for x86-64 by James Cleverdon from i386 architecture code by
      8 * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and
      9 * James Cleverdon.
     10 */
     11#include <linux/thread_info.h>
     12#include <asm/apic.h>
     13
     14#include "local.h"
     15
     16/*
     17 * Check the APIC IDs in bios_cpu_apicid and choose the APIC mode.
     18 */
     19void __init default_setup_apic_routing(void)
     20{
     21	struct apic **drv;
     22
     23	enable_IR_x2apic();
     24
     25	for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) {
     26		if ((*drv)->probe && (*drv)->probe()) {
     27			if (apic != *drv) {
     28				apic = *drv;
     29				pr_info("Switched APIC routing to %s.\n",
     30					apic->name);
     31			}
     32			break;
     33		}
     34	}
     35}
     36
     37int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
     38{
     39	struct apic **drv;
     40
     41	for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) {
     42		if ((*drv)->acpi_madt_oem_check(oem_id, oem_table_id)) {
     43			if (apic != *drv) {
     44				apic = *drv;
     45				pr_info("Setting APIC routing to %s.\n",
     46					apic->name);
     47			}
     48			return 1;
     49		}
     50	}
     51	return 0;
     52}