Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\apic\io_apic.c Create Date:2022-07-28 08:30:09
Last Modify:2020-03-16 21:24:45 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name: to set the IO-APIC physical IDs based on the* values stored in the MPC table.* by Matt Domsch <Matt_Domsch@dell.com> Tue Dec 21 12:25:05 CST 1999

Proto:void __init setup_ioapic_ids_from_mpc_nocheck(void)

Type:void

Parameter:Nothing

1473  ioapic_phys_id_map( & Bitmask of physically existing CPUs:, & phys_id_present_map)
1480  raw_spin_lock_irqsave( & ioapic_lock, flags)
1481  raw = io_apic_read(ioapic_idx, 0)
1482  raw_spin_unlock_irqrestore( & ioapic_lock, flags)
1484  old_id = mpc_ioapic_id(ioapic_idx)
1486  If mpc_ioapic_id(ioapic_idx) >= get_physical_broadcast - Get number of physical broadcast IDs Then
1487  printk(r conditions "BIOS bug, IO-APIC#%d ID is %d in the MPC table!...\n", ioapic_idx, mpc_ioapic_id(ioapic_idx))
1489  printk(r conditions "... fixing up to %d. (tell your hw vendor)\n", ID)
1491  apicid = ID
1499  If check_apicid_used( & phys_id_present_map, mpc_ioapic_id(ioapic_idx)) Then
1501  printk(r conditions "BIOS bug, IO-APIC#%d ID %d is already used!...\n", ioapic_idx, mpc_ioapic_id(ioapic_idx))
1503  When i < get_physical_broadcast - Get number of physical broadcast IDs cycle If Not physid_isset(i, phys_id_present_map) Then
1505  Break
1506  If i >= get_physical_broadcast - Get number of physical broadcast IDs Then panic - halt the system*@fmt: The text string to print* Display a message, then perform cleanups.* This function never returns.
1508  printk(r conditions "... fixing up to %d. (tell your hw vendor)\n", i)
1510  physid_set(i, phys_id_present_map)
1511  apicid = i
1512  Else
1514  apicid_to_cpu_present(mpc_ioapic_id(ioapic_idx), & tmp)
1516  Define the default level of output to be very little* This can be turned up by using apic=verbose for more* information and apic=debug for _lots_ of information.* apic_verbosity is defined in apic.c(APIC_VERBOSE, "Setting %d in the phys_id_present_map\n", mpc_ioapic_id(ioapic_idx))
1519  physids_or(phys_id_present_map, phys_id_present_map, tmp)
1526  If old_id != mpc_ioapic_id(ioapic_idx) Then When i < # of MP IRQ source entries cycle
1528  If dstapic == old_id Then dstapic = mpc_ioapic_id(ioapic_idx)
1536  If mpc_ioapic_id(ioapic_idx) == ID Then Continue
1539  Define the default level of output to be very little* This can be turned up by using apic=verbose for more* information and apic=debug for _lots_ of information.* apic_verbosity is defined in apic.c(APIC_VERBOSE, formational "...changing IO-APIC physical APIC ID to %d ...", mpc_ioapic_id(ioapic_idx))
1543  ID = mpc_ioapic_id(ioapic_idx)
1544  raw_spin_lock_irqsave( & ioapic_lock, flags)
1545  io_apic_write(ioapic_idx, 0, raw)
1546  raw_spin_unlock_irqrestore( & ioapic_lock, flags)
1551  raw_spin_lock_irqsave( & ioapic_lock, flags)
1552  raw = io_apic_read(ioapic_idx, 0)
1553  raw_spin_unlock_irqrestore( & ioapic_lock, flags)
1554  If ID != mpc_ioapic_id(ioapic_idx) Then Like KERN_CONT, pr_cont() should only be used when continuing* a line with no newline ('\n') enclosed. Otherwise it defaults* back to KERN_DEFAULT.("could not set ID!\n")
1556  Else Define the default level of output to be very little* This can be turned up by using apic=verbose for more* information and apic=debug for _lots_ of information.* apic_verbosity is defined in apic.c(APIC_VERBOSE, " ok.\n")
Caller
NameDescribe
setup_ioapic_ids_from_mpc