linux/Documentation/IPMI.txt
<<
6io2v4./spa > v4./form > v4.a 6io2v4 href="../linux+v3.v4.8/Documenta" /IPMI.txt">6io2v4.img src="../.sta" c/gfx/right.png" alt=">>">6i./spa >6i.spa class="lxr_search">6io26io2v4.input typ18ohidden" nam18onavtarget" io2<18o">6io2v4.input typ18otext" nam18osearch" id8osearch">6io2v4.butt2<6typ18osubmit">Search v4./form > ./spa >6i.spa class="lxr_prefs" > v4.a href="+prefs?return=Documenta" /IPMI.txt"6io2v4 onclick="return ajax_prefs();">6io2v4Prefs> v4./a>6i./spa >o2v4 4./div >o2v4 4.form ac" ="ajax+*" method="post" onsubmit="return false;">6i.input typ18ohidden" nam18oajax_lookup" id8oajax_lookup" io2<18o">6o2v4 4./form >6o2v4 4.div class="headingbott2m">
o2v4
o2v4 v4 4.div id8osearch_results" class="search_results"> v >o2v4 4./div > .div id8ocontent" > .div id8ofile_contents"
4 41./a>64 42./a>                          The Linux IPMI Driver64 43./a>                          ---------------------64 44./a>                              Corey Minyard64 45./a>                          <minyard@mvista.com>64 46./a>                            <minyard@acm.org>64 47./a>64 48./a>The Intelligent Platform Management Interface, or IPMI, is a64 49./a>standard for controlling intelligent devices that monitor a system.64 .8.1a>It provides for dynamic discovery of sensors in the system and the64 11./a>ability to monitor the sensors and be informed when the sensor's64 12./a>io2<1s change or go outside certain boundaries.  It also has a64 13./a>standardized database for field-replaceable units (FRUs) and a watchdog64 14./a>timer.64 15./a>64 16./a>To use this, you need an interface to an IPMI controller in your64 17./a>system (called a Baseboard Management Controller, or BMC) and64 18./a>management software that can use the IPMI system.64 19./a>64 20./a>This document describ1s how to use the IPMI driver for Linux.  If you64 21./a>are not familiar with IPMI itself, see the web site at64 22./a>http://www.intel.com/design/servers/ipmi/index.htm. ./a> IPMI is a big64 23./a>subject and I can't cover it all here!64 24./a>64 25./a>Configura"
	 64 26./a>-------------64 27./a>64 28./a>The Linux IPMI driver is modular, which means you have to pick several64 29./a>things to have it work right depending on your hardware.  Most of64 30./a>these are available in the 'Charac"er Devices' menu then the IPMI64 31./a>menu.64 32./a>64 33./a>No mat"er what, you must pick 'IPMI top-level message handler' to use64 34./a>IPMI.  What you do beyond that depends on your needs and hardware.64 35./a>64 36./a>The message handler do1s not provide any user-level interfaces.64 37./a>Kernel code (like the watchdog) can still use it.  If you need access64 38./a>from userland, you need to select 'Device interface for IPMI' if you64 39./a>want access through a device driver.64 40./a>64 41./a>The driver interface depends on your hardware.  If your system64 42./a>properly provides the SMBIOS info for IPMI, the driver will detect it64 43./a>and just work.  If you have a board with a standard interface (These64 44./a>will generally be either "KCS", "SMIC", or "BT", consult your hardware64 45./a>manual), choose the 'IPMI SI handler' .9"
	 .64 46./a>64 47./a>You should generally enable ACPI on your system, as systems with IPMI64 48./a>can have ACPI tables describing them.64 49./a>64 58.1a>If you have a standard interface and the board manufacturer has done64 51./a>their job correctly, the IPMI controller should be automa"
cally64 52./a>detected (via ACPI or SMBIOS tables) and should just work.  Sadly,64 53./a>many boards do not have this informa"
	 .  The driver at"empts64 54./a>standard defaults, but they may not work.  If you fall into this64 55./a>situa"
	 , you need to read the sec"
	  below nam1d 'The SI Driver'.64 56./a>64 57./a>IPMI defines a standard watchdog timer.  You can enable this with the64 58./a>'IPMI Watchdog Timer' config .9"
	 .  If you compile the driver into64 59./a>the kernel, then via a kernel command-line .9"
	  you can have the64 60./a>watchdog timer start as so	  as it initializes.  It also have a lot64 61./a>of other .9"
	 s, see the 'Watchdog' sec"
	  below for more details.64 62./a>Note that you can also have the watchdog continue to run if it is64 63./a>closed (by default it is disabled on close).  Go into the 'Watchdog64 64./a>Cards' menu, enable 'Watchdog Timer Support', and enable the .9"
	 64 65./a>'Disable watchdog shutdown on close'.64 66./a>64 67./a>IPMI systems can ofte  be powered off using IPMI commands.  Select64 68./a>'IPMI Poweroff' to do this.  The driver will auto-detect if the system64 69./a>can be powered off by IPMI.  It is safe to enable this even if your64 70./a>system do1sn't support this .9"
	 .  This works on ATCA systems, the64 71./a>Radisys CPI1 card, and any IPMI system that supports standard chassis64 72./a>management commands.64 73./a>64 74.1a>If you want the driver to put an event into the event log on a panic,64 75./a>enable the 'Generate a panic event to all BMCs on a panic' .9"
	 .  If64 76./a>you want the whole panic string put into the event log using OEM64 77./a>events, enable the 'Generate OEM events containing the panic string'64 78./a>.9"
	 .64 79./a>64 80./a>Basic Design64 81./a>------------64 82./a>64 83./a>The Linux IPMI driver is designed to be very modular and flexible, you64 84.1a>only need to take the pieces you need and you can use it in many64 85./a>different ways.  Because of that, it's broken into many chunks of64 86./a>code.  These chunks (by module nam1) are:64 87./a>64 88./a>ipmi_msghandler - This is the central piece of software for the IPMI64 89./a>system.  It handles all messages, message timing, and resp	 ses.  The64 90./a>IPMI users tie into this, and the IPMI phys
cal interfaces (called64 91./a>System Management Interfaces, or SMIs) also tie in here.  This64 92./a>provides the kernelland interface for IPMI, but do1s not provide an64 93./a>interface for use by appl
ca"
	  processes.64 94./a>64 95./a>ipmi_devintf - This provides a userland IOCTL interface for the IPMI64 96./a>driver, each .9en file for this device ties in to the message handler64 97./a>as an IPMI user.64 98./a>64 99./a>ipmi_si - A driver for various system interfaces.  This supports KCS,64100./a>SMIC, and BT interfaces.64101./a>64102./a>ipmi_watchdog - IPMI requires systems to have a very capable watchdog64103./a>timer.  This driver implements the standard Linux watchdog timer64104./a>interface 2<6top of the IPMI message handler.64105./a>64106./a>ipmi_poweroff - Some systems support the ability to be turned off via64107./a>IPMI commands.64108./a>64109./a>These are all individually selectable via configura"
	  .9"
	 s.64110./a>64111./a>Note that the KCS-only interface has been removed.  The af_ipmi driver64112./a>is no longer supported and has been removed because it was impossible64113./a>to do 32 bit emula"
	  .n 64-bit kernels with it.64114./a>64115./a>Much documenta"
	  for the interface is in the include files.  The64116./a>IPMI include files are:64117./a>64118./a>net/af_ipmi.h - Contains the socket interface.64119./a>64120./a>linux/ipmi.h - Contains the user interface and IOCTL interface for IPMI.64121./a>64122./a>linux/ipmi_smi.h - Contains the interface for system management interfaces64123./a>(things that interface to IPMI controllers) to use.64124./a>64125./a>linux/ipmi_msgdefs.h - General defini"
	 s for base IPMI messaging.64126./a>64127./a>64128./a>Addressing64129./a>----------64130./a>64131./a>The IPMI addressing works much like IP addresses, you have a  .verlay64132./a>to handle the different address typ1s.  The .verlay is:64133./a>64134./a>  struct ipmi_addr64135./a>  {64136./a>        int   addr_typ1;64137./a>        short channel;64138./a>        char  data[IPMI_MAX_ADDR_SIZE];64139./a>  };64140./a>64141./a>The addr_typ1 determines what the address really is.  The driver64142./a>currently understands two different typ1s of addresses.64143./a>64144./a>"System Interface" addresses are defined as:64145./a>64146./a>  struct ipmi_system_interface_addr64147./a>  {64148./a>        int   addr_typ1;64149./a>        short channel;64158.1a>  };64151./a>64152./a>and the typ1 is IPMI_SYSTEM_INTERFACE_ADDR_TYPE.  This is used for talking64153./a>straight to the BMC 2<6the current card.  The channel must be64154./a>IPMI_BMC_CHANNEL.64155./a>64156./a>Messages that are destined to go out 2<6the IPMB bus use the64157./a>IPMI_IPMB_ADDR_TYPE address typ1.  The forma" is64158./a>64159./a>  struct ipmi_ipmb_addr64160./a>  {64161./a>        int           addr_typ1;64162./a>        short         channel;64163./a>        unsigned char slave_addr;64164./a>        unsigned char lun;64165.1a>  };64166./a>64167./a>The "channel" here is generally zero, but some devices support more64168./a>tha  .ne channel, it corresp	 ds to the channel as defined in the IPMI64169./a>spec.64170./a>64171./a>64172./a>Messages64173./a>--------64174./a>64175./a>Messages are defined as:64176./a>64177./a>struct ipmi_msg64178./a>{64179./a>        unsigned char netfn;64180./a>        unsigned char lun;64181./a>        unsigned char cmd;64182./a>        unsigned char *data;64183./a>        int           data_len;64184.1a>};64185./a>64186./a>The driver tak1s care of adding/stripping the header informa"
	 .  The64187./a>data port
	  is just the data to be send (do NOT put addressing info64188./a>here) or the resp	 se.  Note that the complet
	  code of a resp	 se is64189./a>the first item in "data", it is not stripped out because that is how64190./a>all the messages are defined in the spec (and thus mak1s counting the64191./a>offsets a little easier :-).64192./a>64193./a>When using the IOCTL interface from userland, you must provide a block64194./a>of data for "data", fill it, and set data_len to the length of the64195./a>block of data, even when receiving messages.  Otherwise the driver64196./a>will have no place to put the message.64197./a>64198./a>Messages coming up from the message handler in kernelland will come in64199./a>as:64200./a>64201./a>  struct ipmi_recv_msg64202./a>  {64203./a>        struct list_head link;64204./a>64205./a>        /* The typ1 of message as defined in the "Receive Typ1s"64206./a>           defines above. */64207./a>        int         recv_typ1;64208./a>64209./a>        ipmi_user_t      *user;64210./a>        struct ipmi_addr addr;64211./a>        long             msgid;64212./a>        struct ipmi_msg  msg;64213./a>64214./a>        /* Call this when done with the message.  It will presumably free64215./a>           the message and do any other necessary cleanup. */64216./a>        void (*done)(struct ipmi_recv_msg *msg);64217./a>64218./a>        /* Place-holder for the data, don't mak1 any assum9"
	 s about64219./a>           the size or existence of this, since it may change. */64220./a>        unsigned char   msg_data[IPMI_MAX_MSG_LENGTH];64221.1a>  };64222./a>64223./a>You should look at the receive typ1 and handle the message64224./a>appropriately.64225./a>64226./a>64227./a>The Upper Layer Interface (Message Handler)64228./a>-------------------------------------------64229./a>64230./a>The upper layer of the interface provides the users with a consistent64231./a>view of the IPMI interfaces.  It allows multiple SMI interfaces to be64232./a>addressed (because some boards actually have multiple BMCs on them)64233./a>and the user should not have to care what typ1 of SMI is below them.64234./a>64235./a>64236./a>Creating the User64237./a>64238./a>To user the message handler, you must first create a user using64239./a>ipmi_create_user.  The interface number specifies which SMI you want64240./a>to connect to, and you must supply callback func"
	 s to be called64241./a>when data comes in.  The callback func"
	  can run at interrupt level,64242./a>so be careful using the callbacks.  This also allows to you pass in a64243./a>piece of data, the handler_data, that will be passed back to you 	 64244./a>all calls.64245./a>64246./a>Once you are done, call ipmi_destroy_user() to get rid of the user.64247./a>64248./a>From userland, .9ening the device automa"
cally creates a user, and64249./a>closing the device automa"
cally destroys the user.64250./a>64251./a>64252./a>Messaging64253./a>64254./a>To send a message from kernel-land, the ipmi_request() call do1s64255./a>pretty much all message handling.  Most of the param1"er are64256./a>self-explanatory.  However, it tak1s a "msgid" param1"er.  This is NOT64257./a>the sequence number of messages.  It is simply a long io2<1 that is64258./a>passed back when the resp	 se for the message is returned.  You may64259./a>use it for anything you like.64260./a>64261./a>Resp	 ses come back in the func"
	  pointed to by the ipmi_recv_hndl64262./a>field of the "handler" that you passed in to ipmi_create_user().64263./a>Remember again, these may be running at interrupt level.  Remember to64264./a>look at the receive typ1, too.64265./a>64266./a>From userland, you fill out an ipmi_req_t structur1 and use the64267./a>IPMICTL_SEND_COMMAND ioctl.  For incoming stuff, you can use select()64268./a>or poll() to wait for messages to come in.  However, you cannot use64269./a>read() to get them, you must call the IPMICTL_RECEIVE_MSG with the64270./a>ipmi_recv_t structur1 to actually get the message.  Remember that you64271./a>must supply a pointer to a block of data in the msg.data field, and64272./a>you must fill in the msg.data_len field with the size of the data.64273./a>This gives the receiver a place to actually put the message.64274./a>64275./a>If the message cannot fit into the data you provide, you will get an64276./a>EMSGSIZE error and the driver will leave the data in the receive64277./a>queue.  If you want to get it and have it truncate the message, us64278./a>the IPMICTL_RECEIVE_MSG_TRUNC ioctl.64279./a>64280./a>When you send a command (which is defined by the lowest-order bit of64281./a>the netfn per the IPMI spec) 2<6the IPMB bus, the driver will64282./a>automa"
cally assign the sequence number to the command and save the64283./a>command.  If the resp	 se is not receive in the IPMI-specified 564284.1a>sec	 ds, it will generate a resp	 se automa"
cally saying the command64285./a>timed out.  If an unsolicited resp	 se comes in (if it was after 564286.1a>sec	 ds, for instance), that resp	 se will be ignored.64287./a>64288./a>In kernelland, after you receive a message and are done with it, you64289./a>MUST call ipmi_free_recv_msg() 2<6it, or you will leak messages.  Note64290./a>that you should NEVER mess with the "done" field of a message, that is64291./a>required to properly clean up the message.64292./a>64293./a>Note that when sending, there is an ipmi_request_supply_msgs() call64294./a>that lets you supply the smi and receive message.  This is useful for64295./a>pieces of code that need to work even if the system is out 2f buffers64296./a>(the watchdog timer uses this, for instance).  You supply your own64297./a>buffer and own free routines.  This is not recommended for normal use,64298./a>though, since it is tricky to manage your own buffers.64299./a>64300./a>64301./a>Events and Incoming Commands64302./a>64303./a>The driver tak1s care of polling for IPMI events and receiving64304./a>commands (commands are messages that are not resp	 ses, they are64305./a>commands that other things 2<6the IPMB bus have sent you).  To receive64306./a>these, you must register for them, they will not automa"
cally be sent64307./a>to you.64308./a>64309./a>To receive events, you must call ipmi_set_gets_events() and set the64310./a>"val" to non-zero.  Any events that have been received by the driver64311./a>since startup will immediately be delivered to the first user that64312./a>registers for events.  After that, if multiple users are registered64313./a>for events, they will all receive all events that come in.64314./a>64315./a>For receiving commands, you have to individually register commands you64316./a>want to receive.  Call ipmi_register_for_cmd() and supply the netfn64317./a>and command nam1 for each command you want to receive.  You also64318./a>specify a bitmask of the channels you want to receive the command from64319./a>(or use IPMI_CHAN_ALL for all channels if you don't care).  Only one64320./a>user may be registered for each netfn/cmd/channel, but different users64321.1a>may register for different commands, or the sam1 command if the64322./a>channel bitmasks do not .verlap.64323./a>64324./a>From userland, equivalent IOCTLs are provided to do these func"
	 s.64325./a>64326./a>64327./a>The Lower Layer (SMI) Interface64328./a>-------------------------------64329./a>64330./a>As men"
	 ed before, multiple SMI interfaces may be registered to the64331./a>message handler, each .f these is assigned an interface number when64332./a>they register with the message handler.  They are generally assigned64333./a>in the order they register, although if an SMI unregisters and then64334./a>another one registers, all bets are off.64335./a>64336./a>The ipmi_smi.h defines the interface for management interfaces, see64337./a>that for more details.64338./a>64339./a>64340./a>The SI Driver64341./a>-------------64342./a>64343./a>The SI driver allows up to 4 KCS or SMIC interfaces to be configured64344./a>in the system.  By default, scan the ACPI tables for interfaces, and64345./a>if it do1sn't find any the driver will attempt to register one KCS64346./a>interface at the spec-specified I/O port 0xca2 without interrupts.64347./a>You can change this at module load time (for a module) with:64348./a>64349./a>  modprobe ipmi_si.o typ1=<typ11>,<typ12>....64350./a>       ports=<port1>,<port2>... addrs=<addr1>,<addr2>...64351./a>       irqs=<irq1>,<irq2>... trydefaults=[0|1]64352./a>       regspacings=<sp1>,<sp2>,... regsizes=<size1>,<size2>,...64353./a>       regshifts=<shift1>,<shift2>,...64354./a>       slave_addrs=<addr1>,<addr2>,...64355./a>       force_kipmid=<enable1>,<enable2>,...64356./a>       kipmid_max_busy_us=<ustime1>,<ustime2>,...64357./a>       unload_when_empty=[0|1]64358./a>64359./a>Each .f these except si_trydefaults is a list, the first item for the64360./a>first interface, sec	 d item for the sec	 d interface, etc.64361./a>64362./a>The si_typ1 may be either "kcs", "smic", or "bt".  If you leave it blank, it64363./a>defaults to "kcs".64364./a>64365./a>If you specify si_addrs as non-zero for an interface, the driver will64366./a>use the memory address given as the address of the device.  This64367./a>.verrides si_ports.64368./a>64369./a>If you specify si_ports as non-zero for an interface, the driver will64370./a>use the I/O port given as the device address.64371./a>64372./a>If you specify si_irqs as non-zero for an interface, the driver will64373./a>attempt to use the given interrupt for the device.64374./a>64375./a>si_trydefaults sets whether the standard IPMI interface at 0xca2 and64376./a>any interfaces specified by ACPE are tried.  By default, the driver64377./a>tries6it, set this io2<1 to zero to turn this off.64378./a>64379./a>The next three param1"ers have to do with register layout.  The64380./a>registers used by the interfaces may not appear at successive64381./a>loca"
	 s and they may not be in 8-bit registers.  These param1"ers64382./a>allow the layout of the data in the registers to be more precisely64383./a>specified.64384./a>64385./a>The regspacings param1"er give the number of bytes between successive64386.1a>register start addresses.  For instance, if the regspacing is set to 464387./a>and the start address is 0xca2, then the address for the sec	 d64388./a>register would be 0xca6.  This defaults to 1.64389./a>64390./a>The regsizes param1"er gives the size of a register, in bytes.  The64391./a>data used by IPMI is 8-bits wide, but it may be inside a larger64392./a>register.  This param1"er allows the read and write typ1 to specified.64393./a>It may be 1, 2, 4, or 8.  The default is 1.64394./a>64395./a>Since the register size may be larger tha  32 bits, the IPMI data may not64396./a>be in the lower 8 bits.  The regshifts param1"er give the amount to shift64397./a>the data to get to the actual IPMI data.64398./a>64399./a>The slave_addrs specifies the IPMI address of the local BMC.  This is64400./a>usually 0x20 and the driver defaults to that, but i  case it's not, it64401./a>can be specified when the driver starts up.64402./a>64403./a>The force_ipmid param1"er forcefully enables (if set to 1) or disables64404./a>(if set to 0) the kernel IPMI daem	 .  Normally this is auto-detected64405./a>by the driver, but systems with broken interrupts might need an enable,64406./a>or users that don't want the daem	  (don't need the performance, don't64407./a>want the CPU hit) can disable it.64408./a>64409./a>If unload_when_empty is set to 1, the driver will be unloaded if it64410./a>do1sn't find any interfaces or all the interfaces fail to work.  The64411./a>default is one.  Setting to 0 is useful with the hotmod, but is64412./a>obviously only useful for modules.64413./a>64414./a>When compiled into the kernel, the param1"ers can be specified 2<6the64415./a>kernel command line as:64416./a>64417./a>  ipmi_si.typ1=<typ11>,<typ12>...64418./a>       ipmi_si.ports=<port1>,<port2>... ipmi_si.addrs=<addr1>,<addr2>...64419./a>       ipmi_si.irqs=<irq1>,<irq2>... ipmi_si.trydefaults=[0|1]64420./a>       ipmi_si.regspacings=<sp1>,<sp2>,...64421./a>       ipmi_si.regsizes=<size1>,<size2>,...64422./a>       ipmi_si.regshifts=<shift1>,<shift2>,...64423./a>       ipmi_si.slave_addrs=<addr1>,<addr2>,...64424./a>       ipmi_si.force_kipmid=<enable1>,<enable2>,...64425./a>       ipmi_si.kipmid_max_busy_us=<ustime1>,<ustime2>,...64426./a>64427./a>It works the sam1 as the module param1"ers of the sam1 nam1s.64428./a>64429./a>By default, the driver will attempt to detect any device specified by64430./a>ACPI, and if none of those then a KCS device at the spec-specified64431./a>0xca2.  If you want to turn this off, set the "trydefaults" o9"
	  to64432./a>false.64433./a>64434./a>If your IPMI interface do1s not support interrupts and is a KCS or64435./a>SMIC interface, the IPMI driver will start a kernel thread for the64436./a>interface to help speed things up.  This is a low-priority kernel64437./a>thread that constantly polls the IPMI driver while an IPMI opera"
	 64438./a>is in progress.  The force_kipmid module param1"er will all the user to64439./a>force this thread 	  or off.  If you force it off and don't have64440./a>interrupts, the driver will run VERY slowly.  Don't blam1 me,64441./a>these interfaces suck.64442./a>64443./a>Unfortunately, this thread can use a lot of CPU depending 2<6the64444./a>interface's performance.  This can waste a lot of CPU and cause64445./a>various issues with detecting idle CPU and using extra power.  To64446./a>avoid this, the kipmid_max_busy_us sets the maximum amount of time, in64447./a>microsec	 ds, that kipmid will spin before sleeping for a tick.  This64448./a>io2<1 sets a balance between performance and CPU waste and needs to be64449./a>tuned to your needs.  Maybe, someday, auto-tuning will be added, but64450./a>that's not a simple thing and even the auto-tuning would need to be64451./a>tuned to the user's desired performance.6445./a>6445./a>6teumenta"a href="Documenta"
	 /IPMI.txt#L4453MI.t8s"line" nam18oL348">4348./a>6dmenta"
umenta"
	 /i"
	 /">434txt#L2oL452">445./a>64243./a>piece of data, the h4y_us=<4stime1>,<ustime2&g4;,...44243./a>piece of data, the h4ymid will 4416./a>64420./a>       ipmi_si.regspasi_trydef4ults is a list, the firs4 item45his is64416./a>6,kcs|bt|ocum,mem|i/olass="lin="D cla[,claso1L423" [,claso1L223" [,...]ooL420">4420./a>       ipmi_si.regspa	 /IPMI.t4t#L362" id8oL362" class=4line"4nam18o="Documef="Docum="linL396"ss=" href="DocPMI.txtoL36ocumentss="lioptref="DoL377oL416">4416./a>64416./a>66t href="Documenta"
	 /IPM4.txt#463ef="Docrsi#L426txt#ize23" L416">4416./a>64416./a>64416./a>64416./a>64316./a>want to receive.  Ca4	 /IPMI.t4t#L369" id8oL369" class=4line"4nam18ocumed8oL2txt#L3i/IPMI.txt16" class="line" namclass="lrss="lL42tte" natL316">4316./a>want to receive.  Ca4	i_trydef4zero for an interface, t4e dri46 have64268./a>or poll() to wait fo4	 /IPMI.t4t#L372" id8oL372" class=4line"4nam18o377"Docum="line" ="lL4risL405"
	 /oline" narne" nam18m="lia ./a/IPoL452">445./a>64434./a>If your IPMI interfac	 /IPMI.t4t#L375" id8oL375" class=4line"4nam18oO/IPMIP64434./a>If your IPMI interfac	tecting i standard IPMI interface4at 0x4a2 andline" nam18oL342">4342./a>64427./a>It works the sam1 as 2<1 to ze4o to turn this off.64379./a>The nex4 thre47="line" nam18oL229">4229./a>6wam18oByamam1,mentaocumr things 2<6the IPMB bus have sent y4e param1"4rs6orc4283coL29" nam435" class="lisne" namf those then a KCS device at the spe84" class4"line" nam18oL384">4384.4a>64rabL411">4fl  Ca="Da>or poll() to na40ocument those then a KCS device at the spe8line"4nam18oL385">4385./a>The reg4pacin4s para#LoL2getL337_>4fl() data, te it ff="Docume" n8">426" class"
 /IPMI.txt;kcs", "smic&qeen succe4sive64fl {es the interface for management in4ief="D4cuma href="Documenta"
	 /IP4I.txt48oL358">4358. enum id8oL68./_src 68./_src"
 mid will cumenta"
	 /IPMI.txt#L36Documenta4
	 /IPMI.txt#L389" id8oL489" c484390./a>The reg4izes 48/IPMI.txt#L4 un="Do{es the interface for management in4 bytes.  4he64fl"
 mid will cumenta"
	 /IPMI.txt#L3614" class4 /IPMI.txt#L394" id8oL394" cla49id8oL424" cl4} a8./_>4fl"
 mid will cumenta"
	 /IPMI.txt#L361line"4nam18oL395">4395./a>Since t4e reg4ster s}"
 mid will cumenta"
	 /IPMI.txt#L361en succe4 may not6timDocualcumflarne"iine"rne"SI_5">4368./a>orsourlisnce between performance and CPU waste enta"
	 /4PMI.txt#L398" id8oL398" 4lass=4line" e it for anIPMI 31./a>mesi"
	 /ine"erfasary
	s as non-4ero for an interface, th"line" na418oL399">4399./a>The sla4e_add4s specifies the IPMI address of the loca4 BMC.  Th4s is64403./a>The for5e_ipm5d param1"er forcefully enables (if set t5 1) or di5ables64325./aoperllasso tuf="DocLinux-8oL376"> 2<1 to ze4o to turn this off.64399./a>The sla5d_whe5_empty8oL297" class="9MI.asa hrefIe drsd8ne" n8oL428">4428./a>6<8oL438a"
	  2<1 to ze4o to turn this off.642d18oL26ntrolcua"
	 /IPMI.t4t#L359" id8oL359" class5ail to wo5k.  The6441nta"6441nta"6aument24">44m18oL2 polnta"
 mid will cumenta"
	 /IPMI.txt#L35	 /IPMI.t5t#L413" id8oL413" class=5line"512421" class444436_now=x
 mid will cumenta"
	 /IPMI.txt#L35	1) or di518oL414">4414./a>When co5piled51id8oL424" cnow" cla=x ifnum_toin, =t those then a KCS device at the sp5ecified 256the64417./a>  ipmi_5i.typ51xt#L337" id8oL412" c-1 data, tref= needpick" na400" id35">4335./a>, or 8.  The default is 1.64386 id8oL48./a>64496" id nam18"Do"Doc6<388">434307./acume ipmid)ld NEVER mess with the "done" f56448">4496" finalclassam1s="losks do not .verlap.64388./430occur03./40s id8oL (a0s id8oL4>448">4496" lassam1)or 8.  The default is 1.6mes="Docuid nat#L363" id8oL3, the_cycleclass="line" nam1, the_offclass="l find any the driver will attempt to 5"line" na518oL427">4427./a>It work5 the 5am1 asclass="linatat380">438">4388./lass="lass watca>8oL4line" nam18nd any the driver will attempt to 5"ocumenta5href="Documenta"
	 /IPMI5txt#L528" id="Docuid nat#L363or 8.  The default is 1.64429./a>By defa5lt, t5e driver will attempt to detect any devi5e specifi5d by64416./a>mes="Docu4273">4373di" id8od8neoL33488./SMIer will attempt to detect any devi5c-specifi5d64273">4373di" id8od8neoL33488./SMIt2" cl the driver will leave the data in t5defaults&5uot; o9"
	  to64273"> Nogre8oL44437./ahowhe driver will leave the data in t5d..64433./a>65a hre5.txt#L333/a>6fl  ed4434./a>If your5IPMI 5nterface do1s not support interrupts and5is a KCS 5r6mese" nam1="Docu42, sinress.  There8oL4_data" nam16n as the 4evice address.64432518oL398">e to hine"" id8oL297" c4431./aw">4388./4sine" naCANNOT1sn&#stxt2" cl" nam1,a op_./a>_data" nam16n as the 4evice address.6or polle inter>438oL39ops.  Thes hine">43Nogor 8.  The default is 1.643_data" nam1,d35"> by 4286.1ae toy98">e tof="Documenta"
	 /IPMI.txt#L341" id5 efaults&5L442" class="line" nam185L442"54="linlrss="lume1./aw">4388./4443./a>Unfortu5ately54txt#L333/aamam1,mainaellor 8.  The default is 1.64436_now"line" nam18oL410"8oL297" class="L436">4436.umenta"maice do1s not support interrupts and5Pad for t56664388. 2<1 to ze4o to turn this off.64387./CONFIG_WATCHDOG_NOWAYOUThref="Doline ipmid"linementa31" cl1or 8.  The default is 1.6431he hvailipmiCommands6441nta"6line"8oL297" .441nta"ce do1s not support interrupts and54ad for t5sive68oL437ass="6" cla/s5s/" n58oL356" class6line"8oL297" .aument24">44m18oL2 polnta"
 mid will cumenta"
	 /IPMI.txt#L354;,...445416./58oL358">4358.6line"8oL297" .44358.6line"8oL297" .>4436_now=x
 mid will cumenta"
	 /IPMI.txt#L354 item45h5s is64358.6line"8oL297" .now" cla=x
 mid will cumenta"
	 /IPMI.txt#L354tc.6<46"5ocumenne"|a ./a>,kcs|bt|5cum,m56ming Commands6445./a>lass="line" nam18oL428">4428./a> 452">44or 8.  The default is 1.64348./8oL297" cL436"panictand c4436./a120s id8oL id nam1assam1me any interfaces or all the interfaces 54line"4645f="Docrsh#L426txt#"lin235 L4165>4416.gid8oL4 rebootoL410"8oL297" che given interrupt for the device.64415./a>64496" idboot occur="iven interrupt for the device.643) to na4Nogre tso ipmit#L28./a>e"linf">43Nog 2<1 to ze4o to turn this off.64434./a>If your5IPMI 5nterfaO449"="liop>4388./8oL297" class=ss="line" numentocue intVe intclasraum">428388. 2<1 to ze4o to turn this off.64435./a>I5 your ume1./a8oL2losoine" ne" namlass="L436"m18oLtop37">4437./a>tnews itL3tic those then a KCS device at the sp54e dri46t5andline" nam18oL342">4345./a>65a hrefref="Docuid8oL406" cmaksline38" c5./antt2" class=id ass="linewoL297" c	 /IPMI.t4t#L375" id8oL375" class54 the 47a518oL427">4427./a>It work5 the 5am1 asuid8oL#L439Linux"iven interrupt for the device.64379./a>The nex5 thre5 param1"ers have to do with register lay54e dri46 5a href="Documenta"
	 /IP5I.txt5a commPanictTassam1ice do1s not support interrupts and5essive64d.  By>64d ce" neqs as non-zero for an interface, t5eef="D47a5"line" nam18oL384">4384.5a>6"panict7ccur="li320">43e ipmi388. 2<1 to ze4o to turn this off.64385./a>The reg5pacin5s parae intGthe ontocupanict18oLt 292m18oBMCsre8oL44ss="liL436"gid 2<1 to ze4o to turn this off.618oLt e8oL44376./18oLt fl  Ca nam18oL44e ipmi 2<1 to ze4o to turn this off.64ss="liL436 2<1 to ze4o to turn this off.64390./a>The reg5izes 5aram1"er gives the size of a register, i5 bytes.  5he64395./a>Since t5e reg5ster s* Sensef=#:" clas0" id by 4a href=4sssensef you wanct18oLt a>flo4	 /IPMI.t4t#L372" id8oL372" class51 the 47a5to shift6Ltop2on OEM .1a>respeci 3o4	 /IPMI.t4t#L372" id8oL372" class51" id84665PMI.txt#L398" id8oL398" 5lass=5line" * EvoLt 8oL392:s id8oL  by 4a h4399./a>The sla5e_add5s spec* EvoLt 8oL393:lassrL  by 4a h664403./a>The for6e_ipm6d param1"er forcefully enables (if set t6 1) or di6ables64umenta"
	 /IPMI.t4t#L359" id8oL359" class6 auto-det6cted643D (.1a>re0-1):"lin"line" nSEL"iven interrupt for the device.64 may (.1a> 2):01"fid(OEM " nalass tampedo4	 /IPMI.t4t#L372" id8oL372" class6 6uto-det6co shift6 3:" clasf="Docume">4400./a>uc6">4savL243"10" 4: Ane"que449"L386">4(c4436L243atoa>64399./a>The sla6d_whe60r, multiass=mfasageshat'ssantt2" clince tse h4	 /IPMI.t4t#L372" id8oL372" class6ail to wo6k.  The6="iven interrupt for the device.6or pollm18oLeoL OEM 18oLts 8" /="" id8oL376">48oL436" classis4	 /IPMI.t4t#L372" id8oL372" class6	1) or di618oL414">4414./a>When co6piled61id8oL0ocument"line" nam18oL430oL411" nSEL() to wahref=18oLts PMI hrefIe4	 /IPMI.t4t#L372" id8oL372" class6	auto-det66the6uc6p6wilt "lin00./a>usuallytL3agso tu 26ntrol" cr4	 /IPMI.t4t#L372" id8oL372" class6	5uto-det6oL416" class="line" nam16oL41661.txt#L36ie drsd" nSEL388">4388.yhat'sst href345" idSEL(00./a>usuall4	 /IPMI.t4t#L372" id8oL372" class6	6uto-det618oL417">4417./a>  ipmi_6i.typ61xt#L3tL3agso tu 26ntrol" crefIffied w8oL401" suallytL3agso tu 26ntrol" c is4	 /IPMI.t4t#L372" id8oL372" class6Documenta6
	 /IPMI.txt#L418" id8oL618" c61xt#LPMI"18oLt gthe onef,href=18oLtrrece664427./a>It work6 the 6am1 asm18lass< theoffuc6p6wilt ="line"lbut slass="line" nam18oL436"am18o36 2<1 to ze4o to turn this off.64< theoffu0ocument5class="
alance between performance and CPU waste6&_si.addr618oL429">4429./a>By defa6lt, t62MI.txt#L439411">ine"< theoffu8oL428
alW">4388./8oL345mr"quesd8oL4< thedown86n as the 4evice address.64416rtcL436"e"oL401"2">4perd435" 26atL31s380">43ssis37">4437./aref="vsand l6n as the 4evice address.64433./a>66a hre63blank, ir31he a18oL428">4428./a> 33./de" nam1, theoff"< thecycleclass=ef="Domaf those then a KCS device at the sp6"line" na618oL434">4434./a>If your6IPMI 6nterfaeiPMI i9;sa>643L4< the down to 0" naa>643L4< the cycle,4< the those then a KCS device at the sp6"auto-det6r643< the it e8o345a1fews id8oL4)s="line" n those then a KCS device at the sp6"time2>6e6ine"< theoff., theoff"26ntrol=xcL436"do>lass="lin"line"lrss="lL42tte those then a KCS device at the sp6"line" na6643 an37" >4428./a> he ae" nhvailipmi via401"2">4c"s0le8oL345 those then a KCS device at the sp6"ocumenta6
	 64cline"es t#LoL/, theoff"< thecycleref="href="Do>4387./8oL345 those then a KCS device at the sp6"_si.addr6ser to644< the cycline,ertcL436" l#L2indo>lass< the off. those then a KCS device at the sp6" specifi6ave64428./a> class="linata, th id8oL437" idp theoffm1"er forcefully enables (if set t6 efaults&6L442" class="line" nam186L442"64="lincode"t#L291"uta"4443./a>Unfortu6ately64I.txt#L393" ifior 8.  The default is 1.643hoabo5">43e ipmid"l88./8oL345mL436"p1s er 8" /="5">4318nd any the driver will attempt to 6Pad for t66es





37" 4riginalcLXR softw./a>line" nthose thehttp://sourliumege.net/">4jbuts/lxr">LXR  natunt =1 asass="liexperiKCS dl 8oL#ent5linthose themailto:lxr@linux"no">lxr@linux"no1 as.


lxr.no">lxr@ kindC interface for>




.txt#L418" i438" id8oL438" class="line" nam18oL438"I.t6t#L446< the  L337L291">4273">4373di" id8od8neoL33488./e at pporsubfo"hr.t6t#L446< the 8oLt fl  Ca nam18oL44e ipmi 2<1 to ze4o o o o o o o o o o o o o o o o o o o o o 2f="Documenta6
	 /u./a>6p91">4216n as  bser62sis t6...61995.r">
lxr.no/bodye i/html"hrr