cregit-Linux how code gets into the kernel

Release 4.14 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/x2apic.h>


int x2apic_phys;


static struct apic apic_x2apic_phys;


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

Contributors

PersonTokensPropCommitsCommitProp
Yinghai Lu17100.00%1100.00%
Total17100.00%1100.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%
Stoney Wang714.89%125.00%
Yinghai Lu714.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
Suresh B. Siddha950.00%266.67%
Mike Travis950.00%133.33%
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%

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 */ .target_cpus = online_target_cpus, .disable_esr = 0, .dest_logical = 0, .check_apicid_used = NULL, .vector_allocation_domain = default_vector_allocation_domain, .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, .cpu_mask_to_apicid = default_cpu_mask_to_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. Siddha24143.27%616.22%
Yinghai Lu8114.54%38.11%
Ingo Molnar7613.64%1027.03%
Thomas Gleixner417.36%25.41%
Stoney Wang356.28%12.70%
Mike Travis325.75%38.11%
Greg Pearson285.03%12.70%
Michael S. Tsirkin50.90%25.41%
Jan Kiszka50.90%12.70%
Daniel J Blueman40.72%12.70%
Cyrill V. Gorcunov30.54%12.70%
Alexander Gordeev20.36%25.41%
Kees Cook10.18%12.70%
Steffen Persvold10.18%12.70%
Greg Kroah-Hartman10.18%12.70%
Jaswinder Singh Rajput10.18%12.70%
Total557100.00%37100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.