函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\apic\io_apic.c Create Date:2022-07-27 09:29:39
Last Modify:2020-03-16 21:24:45 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称: 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

函数原型:void __init setup_ioapic_ids_from_mpc_nocheck(void)

返回类型:void

参数:

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  如果mpc_ioapic_id(ioapic_idx)大于等于get_physical_broadcast - Get number of physical broadcast IDs
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  如果check_apicid_used( & phys_id_present_map, mpc_ioapic_id(ioapic_idx))则
1501  printk(r conditions "BIOS bug, IO-APIC#%d ID %d is already used!...\n", ioapic_idx, mpc_ioapic_id(ioapic_idx))
1503 i小于get_physical_broadcast - Get number of physical broadcast IDs循环如果非physid_isset(i, phys_id_present_map)则
1505  退出
1506  如果i大于等于get_physical_broadcast - Get number of physical broadcast IDspanic - 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  否则
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  如果old_id不等于mpc_ioapic_id(ioapic_idx)则以i小于# of MP IRQ source entries 循环
1528  如果dstapic恒等于old_iddstapic等于mpc_ioapic_id(ioapic_idx)
1536  如果mpc_ioapic_id(ioapic_idx)恒等于ID则继续下一循环
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  如果ID不等于mpc_ioapic_id(ioapic_idx)则打印标准信息("could not set ID!\n")
1556  否则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")
调用者
名称描述
setup_ioapic_ids_from_mpc