LCOV - code coverage report
Current view: top level - arch/x86/kernel/apic - probe_64.c (source / functions) Hit Total Coverage
Test: combined.info Lines: 15 19 78.9 %
Date: 2022-04-01 14:35:51 Functions: 2 2 100.0 %
Branches: 10 16 62.5 %

           Branch data     Line data    Source code
       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 <asm/apic.h>
      12                 :            : 
      13                 :            : #include "local.h"
      14                 :            : 
      15                 :            : /*
      16                 :            :  * Check the APIC IDs in bios_cpu_apicid and choose the APIC mode.
      17                 :            :  */
      18                 :         21 : void __init default_setup_apic_routing(void)
      19                 :            : {
      20                 :         21 :         struct apic **drv;
      21                 :            : 
      22                 :         21 :         enable_IR_x2apic();
      23                 :            : 
      24         [ +  - ]:         63 :         for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) {
      25   [ +  -  +  + ]:         42 :                 if ((*drv)->probe && (*drv)->probe()) {
      26         [ -  + ]:         21 :                         if (apic != *drv) {
      27                 :          0 :                                 apic = *drv;
      28                 :          0 :                                 pr_info("Switched APIC routing to %s.\n",
      29                 :            :                                         apic->name);
      30                 :            :                         }
      31                 :            :                         break;
      32                 :            :                 }
      33                 :            :         }
      34                 :            : 
      35         [ +  - ]:         21 :         if (x86_platform.apic_post_init)
      36                 :         21 :                 x86_platform.apic_post_init();
      37                 :         21 : }
      38                 :            : 
      39                 :         42 : int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
      40                 :            : {
      41                 :         42 :         struct apic **drv;
      42                 :            : 
      43         [ +  - ]:         84 :         for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) {
      44         [ +  + ]:         84 :                 if ((*drv)->acpi_madt_oem_check(oem_id, oem_table_id)) {
      45         [ -  + ]:         42 :                         if (apic != *drv) {
      46                 :          0 :                                 apic = *drv;
      47                 :          0 :                                 pr_info("Setting APIC routing to %s.\n",
      48                 :            :                                         apic->name);
      49                 :            :                         }
      50                 :         42 :                         return 1;
      51                 :            :                 }
      52                 :            :         }
      53                 :            :         return 0;
      54                 :            : }

Generated by: LCOV version 1.14