Debian fpu__restore 警告
Debian 系統的 dmesg 出現以下訊息:
看起來是 WARN_ON_FPU 這一行印出的警告,而這一個 macro 又定義成 WARN_ON_ONCE,其帶入的值如果為 1 的話,則會印出警告。所以回到上述 __fpregs_activate 函式,目的「看起來」要做下面這一行:
[75488.545900] ------------[ cut here ]------------ [75488.545917] WARNING: CPU: 0 PID: 765 at ./arch/x86/include/asm/fpu/internal.h:513 fpu__restore+0x27d/0x2c0 [75488.545919] Modules linked in: tun joydev hid_generic usbhid ftdi_sio intel_rapl hid usbserial intel_soc_dts_iosf intel_powerclamp evdev coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel cryptd i915 intel_cstate iTCO_wdt iTCO_vendor_support fpgaio_pci(O) drm_kms_helper drm syscopyarea sysfillrect video sysimgblt fb_sys_fops pcspkr button ip_tables x_tables autofs4 overlay ext4 crc16 jbd2 fscrypto mbcache ehci_pci ehci_hcd igb i2c_i801 i2c_algo_bit crc32c_intel i2c_smbus usbcore dca ptp pps_core fjes mmc_block [75488.545958] CPU: 0 PID: 765 Comm: XXXThread Tainted: G O 4.9.218-rt131 #23 [75488.545959] Hardware name: To be filled by O.E.M. To be filled by O.E.M./Aptio CRB, BIOS 5.6.5 10/29/2018 [75488.545964] 0000000000000000 ffffffffb174449b 0000000000000000 0000000000000000 [75488.545967] ffffffffb147f2f8 ffff8e9ef7ed54c0 00000000efc23740 ffff8e9ef7ed4880 [75488.545970] ffff8e9ef7ed54c0 0000000000000200 0000000000000000 ffffffffb143491d [75488.545970] Call Trace: [75488.545977] [<ffffffffb174449b>] ? dump_stack+0x5c/0x81 [75488.545980] [<ffffffffb147f2f8>] ? __warn+0xe8/0x100 [75488.545983] [<ffffffffb143491d>] ? fpu__restore+0x27d/0x2c0 [75488.545985] [<ffffffffb1436073>] ? __fpu__restore_sig+0x203/0x620 [75488.545989] [<ffffffffb1474319>] ? ia32_restore_sigcontext+0x149/0x160 [75488.545991] [<ffffffffb1474533>] ? sys32_sigreturn+0xc3/0xe0 [75488.545995] [<ffffffffb1403f35>] ? do_int80_syscall_32+0x85/0x1a0 [75488.545998] [<ffffffffb1a4bdc2>] ? entry_INT80_compat+0x72/0xa0 [75488.546000] ---[ end trace 0000000000000002 ]---
看起來是個警告,但還是看看為什麼?透過 Google 找到以下這篇:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843764
似乎不嚴重,有人說不用 rt 就不會有這個情況。那直接來看它回報的 ./arch/x86/include/asm/fpu/internal.h:513 這一行好了。配合其 kernel 版本 4.9.218,在下面位址找到其原始碼:
https://elixir.bootlin.com/linux/v4.9.218/source/arch/x86/include/asm/fpu/internal.h
fpu->fpregs_active = 1;
這樣的話,代表這個警告是執行這函式時,fpregs_active 已經是 1 了,故它只是「警告」。
留言
張貼留言