From: hirohiro <hir...@eu...> - 2005-11-20 19:48:38
|
How do you do. My Name is Hiroyuki Masuda. I am Japanese. I transmitted "Set Watchdog Timer Command" to Watchdog of BMC directly using the raw command of ipmitool. A time-out interval can be compulsorily changed into any value, without stopping a timer function to already started "IPMI Watchdog Timer" by issuing the following command (Don't Stop Timer flag turning on). It is the example changed at 20 seconds. # ipmitool -I open raw 0x06 0x24 0x44 0x01 0x00 0x10 0xc8 0x00 |-------| 20000msec=20sec Since ipmi_watchdog cannot remove by rmmod in a kernel configuration when it is CONFIG_WATCHDOG_NOWAYOUT=y, the above-mentioned command may be useful. At mission criticalserver(HA 99.999%). The details of "Set Watchdog Timer Command" are as follows. # ipmitool -I open raw <netfn> <cmd> [data] netfn = 0x06 = "App Application Requests" (Please refer to IPMIv1_5rev1_1.pdf "Page.33 Table 5-1, Network Function Codes") http://www.intel.com/design/servers/ipmi/IPMIv1_5rev1_1.pdf cmd = 0x24 = "Set Watchdog Timer" (Please refer to IPMIv1_5rev1_1.pdf Page.420 "Table G-1, Command Number Assignments and Privilege Levels") data = [0x44 0x01 0x00 0x10 0xc8 0x00] (Please refer to IPMIv1_5rev1_1.pdf Page.268 "Table 21-3, Set Watchdog Timer Command") The contents of data are explained below. 1Byte 0x44 = 01000100 [7] 0 = log ( 1 = don’t log ) [6] 1 = don’t stop timer on Set Watchdog Timer command [5] 0 = reserved [4] 0 = reserved [3] 0 = reserved [2:0] 100 = SMS/OS Example: timer use (logged on expiration when “don’t log” bit = 0b) 000b = reserved 001b = BIOS FRB2 010b = BIOS/POST 011b = OS Load 100b = SMS/OS 101b = OEM 110b -111b = reserved 2Byte 0x01 = 00000001 [7] 0 = reserved [6:4] 000 = none (pre-timeout interrupt (logged on expiration when “don’t log” bit = 0b)) Example: 000b = none 001b = SMI 010b = NMI / Diagnostic Interrupt 011b = Messaging Interrupt (this is the same interrupt as allocated to the messaging interface) 100b,111b = reserved [3] 0 = reserved [2:0] 001 = Hard Reset (timeout action) Example: 000b = no action 001b = Hard Reset 010b = Power Down 011b = Power Cycle 100b,111b = reserved 3Byte 0x00 = 00000000 = Pre-timeout interval in seconds. ‘1’ based. 4Byte 0x10 = 00010000 Timer Use Expiration flags clear (0b = leave alone, 1b = clear timer use expiration bit) [7] 0 = reserved [6] 0 = reserved [5] 0 = OEM [4] 1 = SMS/OS [3] 0 = OS LOad [2] BIOS/POST [1] BIOS/FRB2 [0] 0 = reserved 5Byte 0xc8 = 11001000 = 128 + 64 + 8 = 200 (Initial countdown value, lsbyte (100 ms/count)) 6Byte 0x00 = 00000000 = (Initial countdown value, msbyte (100 ms/count)) 200*100ms = 20000ms = 20sec (About this data, it is the same value also in IPMIv2_0rev1_0.pdf.) The above-mentioned command response output is as follows. " 44 01 00 10 c8 00 RAW REQ (netfn=0x6 cmd=0x24 data_len=6) RAW RSP (0 bytes) " ########## I conducted the following experiments using the "Intel TLRLT2 Server" machine(IPMIv1.5BIOS), and checked that this command was effective. OS:RedHat 9( but Kernek-2.6 ) 1) # insmod ipmi_watchdog.ko timeout=360 action=reset Initial countdown Value is 6 minutes. 2) # echo "" >/dev/watchdog Since the watchdog timer started, if there is no writing in /dev/watchdog . The time-out should be carried out in 6 minutes... 3) # ipmitool -I open raw 0x06 0x24 0x44 0x01 0x00 0x10 0xc8 0x00 The command was directly transmitted to BMC and "Initial countdown Value" was changed at 20 seconds. 4) The machine reset not after 6 minutes but after 20 seconds. If there is a request, I will create the program for ipmitool for controlling "IPMI Watchdog", or will program a patch. See you. |