cregit-Linux how code gets into the kernel

Release 4.18 arch/x86/kernel/apic/x2apic_phys.c

// SPDX-License-Identifier: GPL-2.0
#include <linux/threads.h>
#include <linux/cpumask.h>
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/ctype.h>
#include <linux/dmar.h>

#include <asm/smp.h>
#include <asm/ipi.h>
#include "x2apic.h"


int x2apic_phys;


static struct apic apic_x2apic_phys;


static int __init set_x2apic_phys_mode(char *arg) { x2apic_phys = 1; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Yinghai Lu1794.44%150.00%
Dou Liyang15.56%150.00%
Total18100.00%2100.00%

early_param("x2apic_phys", set_x2apic_phys_mode);
static bool x2apic_fadt_phys(void) { #ifdef CONFIG_ACPI if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) && (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL)) { printk(KERN_DEBUG "System requires x2apic physical mode\n"); return true; } #endif return false; }

Contributors

PersonTokensPropCommitsCommitProp
Greg Pearson2859.57%125.00%
Yinghai Lu714.89%125.00%
Stoney Wang714.89%125.00%
Jan Kiszka510.64%125.00%
Total47100.00%4100.00%


static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) { return x2apic_enabled() && (x2apic_phys || x2apic_fadt_phys()); }

Contributors

PersonTokensPropCommitsCommitProp
Stoney Wang2392.00%150.00%
Yinghai Lu28.00%150.00%
Total25100.00%2100.00%


static void x2apic_send_IPI(int cpu, int vector) { u32 dest = per_cpu(x86_cpu_to_apicid, cpu); x2apic_wrmsr_fence(); __x2apic_send_IPI_dest(dest, vector, APIC_DEST_PHYSICAL); }

Contributors

PersonTokensPropCommitsCommitProp
Thomas Gleixner34100.00%1100.00%
Total34100.00%1100.00%


static void __x2apic_send_IPI_mask(const struct cpumask *mask, int vector, int apic_dest) { unsigned long query_cpu; unsigned long this_cpu; unsigned long flags; x2apic_wrmsr_fence(); local_irq_save(flags); this_cpu = smp_processor_id(); for_each_cpu(query_cpu, mask) { if (apic_dest == APIC_DEST_ALLBUT && this_cpu == query_cpu) continue; __x2apic_send_IPI_dest(per_cpu(x86_cpu_to_apicid, query_cpu), vector, APIC_DEST_PHYSICAL); } local_irq_restore(flags); }

Contributors

PersonTokensPropCommitsCommitProp
Suresh B. Siddha7491.36%350.00%
Mike Travis56.17%233.33%
Ingo Molnar22.47%116.67%
Total81100.00%6100.00%


static void x2apic_send_IPI_mask(const struct cpumask *mask, int vector) { __x2apic_send_IPI_mask(mask, vector, APIC_DEST_ALLINC); }

Contributors

PersonTokensPropCommitsCommitProp
Mike Travis1354.17%250.00%
Suresh B. Siddha1145.83%250.00%
Total24100.00%4100.00%


static void x2apic_send_IPI_mask_allbutself(const struct cpumask *mask, int vector) { __x2apic_send_IPI_mask(mask, vector, APIC_DEST_ALLBUT); }

Contributors

PersonTokensPropCommitsCommitProp
Suresh B. Siddha2187.50%266.67%
Mike Travis312.50%133.33%
Total24100.00%3100.00%


static void x2apic_send_IPI_allbutself(int vector) { __x2apic_send_IPI_mask(cpu_online_mask, vector, APIC_DEST_ALLBUT); }

Contributors

PersonTokensPropCommitsCommitProp
Mike Travis950.00%133.33%
Suresh B. Siddha950.00%266.67%
Total18100.00%3100.00%


static void x2apic_send_IPI_all(int vector) { __x2apic_send_IPI_mask(cpu_online_mask, vector, APIC_DEST_ALLINC); }

Contributors

PersonTokensPropCommitsCommitProp
Suresh B. Siddha1794.44%266.67%
Mike Travis15.56%133.33%
Total18100.00%3100.00%


static void init_x2apic_ldr(void) { }

Contributors

PersonTokensPropCommitsCommitProp
Suresh B. Siddha571.43%133.33%
Ingo Molnar114.29%133.33%
Jaswinder Singh Rajput114.29%133.33%
Total7100.00%3100.00%


static int x2apic_phys_probe(void) { if (x2apic_mode && (x2apic_phys || x2apic_fadt_phys())) return 1; return apic == &apic_x2apic_phys; }

Contributors

PersonTokensPropCommitsCommitProp
Suresh B. Siddha2382.14%150.00%
Stoney Wang517.86%150.00%
Total28100.00%2100.00%

/* Common x2apic functions, also used by x2apic_cluster */
int x2apic_apic_id_valid(u32 apicid) { return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Thomas Gleixner1090.91%150.00%
Li RongQing19.09%150.00%
Total11100.00%2100.00%


int x2apic_apic_id_registered(void) { return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Thomas Gleixner10100.00%1100.00%
Total10100.00%1100.00%


void __x2apic_send_IPI_dest(unsigned int apicid, int vector, unsigned int dest) { unsigned long cfg = __prepare_ICR(0, vector, dest); native_x2apic_icr_write(cfg, apicid); }

Contributors

PersonTokensPropCommitsCommitProp
Thomas Gleixner36100.00%1100.00%
Total36100.00%1100.00%


unsigned int x2apic_get_apic_id(unsigned long id) { return id; }

Contributors

PersonTokensPropCommitsCommitProp
Thomas Gleixner13100.00%1100.00%
Total13100.00%1100.00%


u32 x2apic_set_apic_id(unsigned int id) { return id; }

Contributors

PersonTokensPropCommitsCommitProp
Thomas Gleixner12100.00%2100.00%
Total12100.00%2100.00%


int x2apic_phys_pkg_id(int initial_apicid, int index_msb) { return initial_apicid >> index_msb; }

Contributors

PersonTokensPropCommitsCommitProp
Thomas Gleixner16100.00%1100.00%
Total16100.00%1100.00%


void x2apic_send_IPI_self(int vector) { apic_write(APIC_SELF_IPI, vector); }

Contributors

PersonTokensPropCommitsCommitProp
Thomas Gleixner15100.00%1100.00%
Total15100.00%1100.00%

static struct apic apic_x2apic_phys __ro_after_init = { .name = "physical x2apic", .probe = x2apic_phys_probe, .acpi_madt_oem_check = x2apic_acpi_madt_oem_check, .apic_id_valid = x2apic_apic_id_valid, .apic_id_registered = x2apic_apic_id_registered, .irq_delivery_mode = dest_Fixed, .irq_dest_mode = 0, /* physical */ .disable_esr = 0, .dest_logical = 0, .check_apicid_used = NULL, .init_apic_ldr = init_x2apic_ldr, .ioapic_phys_id_map = NULL, .setup_apic_routing = NULL, .cpu_present_to_apicid = default_cpu_present_to_apicid, .apicid_to_cpu_present = NULL, .check_phys_apicid_present = default_check_phys_apicid_present, .phys_pkg_id = x2apic_phys_pkg_id, .get_apic_id = x2apic_get_apic_id, .set_apic_id = x2apic_set_apic_id, .calc_dest_apicid = apic_default_calc_apicid, .send_IPI = x2apic_send_IPI, .send_IPI_mask = x2apic_send_IPI_mask, .send_IPI_mask_allbutself = x2apic_send_IPI_mask_allbutself, .send_IPI_allbutself = x2apic_send_IPI_allbutself, .send_IPI_all = x2apic_send_IPI_all, .send_IPI_self = x2apic_send_IPI_self, .inquire_remote_apic = NULL, .read = native_apic_msr_read, .write = native_apic_msr_write, .eoi_write = native_apic_msr_eoi_write, .icr_read = native_x2apic_icr_read, .icr_write = native_x2apic_icr_write, .wait_icr_idle = native_x2apic_wait_icr_idle, .safe_wait_icr_idle = native_safe_x2apic_wait_icr_idle, }; apic_driver(apic_x2apic_phys);

Overall Contributors

PersonTokensPropCommitsCommitProp
Suresh B. Siddha23535.34%615.38%
Thomas Gleixner16124.21%410.26%
Yinghai Lu8112.18%37.69%
Ingo Molnar7110.68%1025.64%
Stoney Wang355.26%12.56%
Mike Travis324.81%37.69%
Greg Pearson284.21%12.56%
Michael S. Tsirkin50.75%25.13%
Jan Kiszka50.75%12.56%
Daniel J Blueman40.60%12.56%
Cyrill V. Gorcunov20.30%12.56%
Kees Cook10.15%12.56%
Steffen Persvold10.15%12.56%
Jaswinder Singh Rajput10.15%12.56%
Greg Kroah-Hartman10.15%12.56%
Li RongQing10.15%12.56%
Dou Liyang10.15%12.56%
Total665100.00%39100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.