Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\apic\x2apic_uv_x.c Create Date:2022-07-28 08:33:45
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:uv_acpi_madt_oem_check

Proto:static int __init uv_acpi_madt_oem_check(char *_oem_id, char *_oem_table_id)

Type:int

Parameter:

TypeParameterName
char *_oem_id
char *_oem_table_id
269  uv_stringify( size of Unpack OEM/TABLE ID's to be NULL terminated strings , Unpack OEM/TABLE ID's to be NULL terminated strings , _oem_id)
270  uv_stringify( size of oem_table_id , oem_table_id, _oem_table_id)
272  If strncmp(Unpack OEM/TABLE ID's to be NULL terminated strings , "SGI", 3) != 0 Then
273  If strncmp(Unpack OEM/TABLE ID's to be NULL terminated strings , "NSGI", 4) != 0 Then Return 0
277  If strncmp(Unpack OEM/TABLE ID's to be NULL terminated strings , "NSGI4", 5) == 0 Then uv_hubless_system = 0x11
281  Else uv_hubless_system = 0x9
284  pr_info("UV: OEM IDs %s/%s, HUBLESS(0x%x)\n", Unpack OEM/TABLE ID's to be NULL terminated strings , oem_table_id, uv_hubless_system)
287  Return 0
290  If numa_off Then
291  pr_err("UV: NUMA is off, disabling UV support\n")
292  Return 0
296  ({
296  0
296  ({
296  Do
296  const void * __vpp_verify = NULL
296  When 0 cycle
296  })
296  })->p_uv_hub_info = & uv_hub_info_node0
305  hub_revision = If If If If Not strncmp(Unpack OEM/TABLE ID's to be NULL terminated strings , "SGI4", 4) Then UV4_HUB_REVISION_BASE Else Not strncmp(Unpack OEM/TABLE ID's to be NULL terminated strings , "SGI3", 4) Then UV3_HUB_REVISION_BASE Else Not strcmp(Unpack OEM/TABLE ID's to be NULL terminated strings , "SGI2") Then UV2_HUB_REVISION_BASE Else Not strcmp(Unpack OEM/TABLE ID's to be NULL terminated strings , "SGI") Then HUB revision ranges for each UV HUB architecture.* This is a software convention - NOT the hardware revision numbers in* the hub chip. Else 0
311  If hub_revision == 0 Then Go to badbios
315  Case hub_revision == UV4_HUB_REVISION_BASE
316  uv_hubbed_system = 0x11
317  Break
319  Case hub_revision == UV3_HUB_REVISION_BASE
320  uv_hubbed_system = 0x9
321  Break
323  Case hub_revision == UV2_HUB_REVISION_BASE
324  uv_hubbed_system = 0x5
325  Break
327  Case hub_revision == HUB revision ranges for each UV HUB architecture.* This is a software convention - NOT the hardware revision numbers in* the hub chip.
328  uv_hubbed_system = 0x3
329  Break
332  pnodeid = early_get_pnodeid()
333  early_get_apic_socketid_shift()
335  is_untracked_pat_range = uv_is_untracked_pat_range
336  nmi_init = uv_nmi_init
338  If Not strcmp(oem_table_id, "UVX") Then
340  uv_system_type = UV_X2APIC
341  uv_apic = 0
343  Else if Not strcmp(oem_table_id, "UVH") Then
345  uv_system_type = UV_NON_UNIQUE_APIC
346  warm_reset = 0
347  __this_cpu_write(x2apic_extra_bits, pnodeid << pnode_shift)
348  Add an extra bit as dictated by bios to the destination apicid of* interrupts potentially passing through the UV HUB. This prevents* a deadlock between interrupts and IO port operations.
349  uv_apic = 1
351  Else if Not strcmp(oem_table_id, "UVL") Then
353  uv_system_type = UV_LEGACY_APIC
354  uv_apic = 0
356  Else
357  Go to badbios
360  pr_info("UV: OEM IDs %s/%s, System/HUB Types %d/%d, uv_apic %d\n", Unpack OEM/TABLE ID's to be NULL terminated strings , oem_table_id, uv_system_type, uv_min_hub_revision_id, uv_apic)
361  uv_tsc_check_sync()
363  Return uv_apic
365  badbios :
366  pr_err("UV: OEM_ID:%s OEM_TABLE_ID:%s\n", Unpack OEM/TABLE ID's to be NULL terminated strings , oem_table_id)
367  pr_err("Current BIOS not supported, update kernel and/or BIOS\n")
368  BUG()