Hello, Jim, I need to think it through. Since double bridging is used to access AMC modules, then I guess, it maybe not worth to bother with the discovered PICMG address in LAN or other interfaces.
Regards, Dmitry 24.04.2013 23:42, Jim Mankovich пишет: > Dmitry, > > See below, > > -- Jim Mankovich | jm...@hp.com (US Mountain Time) -- > > On 4/19/2013 12:47 AM, Dmitry Bazhenov wrote: >> Hello, Jim, >> >> Unfortunately, we can not change my_addr after discovering that the >> IPMC address on the primary IPMB is different from what was used to >> connect the IPMC. >> >> Consider an example. A board is accessed via LAN using 20h as a slave >> addres while the slave address on the primary IPMB is 90h. If we set >> my_addr to 90h, all subsequent RMCP packets will be incorrectly >> composed and discarded by the board. >> >> For this case we should set another address value, e.g. my_ipmb_addr, >> which defaults to my_addr but then can be changed via PICMG discovery. > > I agree that the scenario you present above will cause failures for lan > interfaces if it it were to occur, but I don't believe it > would ever make sense for PICMG discovery over lan to return anything > except 20h if the interface were opened using 20h. > > Nothing I did should change the way in which the lan interfaces work > IPMB addressing and PICMG discovery. > > With my changes, the only interface which supports re-setting my_addr to > the IPMB discovered address is OpenIPMI. > >> >> Regarding to the BRIDGE_TO_SENSOR macro, I am now convinced that it >> should work as needed. > Good >> >> There is one more thing. Please, add PICMG Extension 5.0 (05h) for >> MicroTCA.0 base specification. >> > Is this another version like PICMG_AMC_MAJOR_VERSION. If so, should it > be, > PICMG_MICROTCA_MAJOR_VERSION or is something else more appropriate? > >> Regards, >> Dmitry >> >> 18.04.2013 0:01, Jim Mankovich пишет: >>> Hi Dmitry, >>> >>> I've attached an update patch which removes the need to close/re-open >>> the interface when >>> the PICMG discovered IPMB address is found to be different than the IPMB >>> address used to >>> open the interface. A new per interface function was added to enable >>> setting the IPMB >>> address (if the interface supports it), and the OpenIPMI interface was >>> modified to provide this >>> interface. See the patch for details. >>> >>> In putting together the BRIDGE_TO_SENSOR macro, I was working under the >>> assumption that channel >>> 0 was always used to identify the primary IPMB Channel (per the IPMI >>> specification). This >>> is why I first qualify that the SDR sensor record channel is equal to >>> zero before I compare the >>> target_ipmb_addr (which is only set on PICMG platforms), with the SDR >>> sensor record address. >>> This comparison is intended to be true when the sensor is on an IPMB and >>> the target IPMB (as returned >>> by PICMG Get Address Info) matches the sensor address. If this is the >>> case, then this sensor does >>> not require any extra bridging beyond what was used to address the SDR >>> repository (PICMG >>> platforms only). If you would like me to explicitly run time verify >>> in the macro that this condition is PICMG >>> only, I can qualify it with intf->picmg_avail in addition to the >>> target_ipmb_addr test. >>> >>> The second condition in the BRIDGE_TO_SENSOR macro simply looks to see >>> if the sensor record >>> address and channel exactly match the argument specified target address >>> and channel (-t <address> >>> -b <channel>). If this is true, then the sensor does not require any >>> extra bridging beyond what >>> was used to address the SDR repository (any platform). This second >>> condition check doesn't change >>> the current logic from what exists today, it just clarifies the case in >>> which no extra bridging is >>> necessary beyond what was specified on the ipmitool command line. If >>> this test really confuses folks, it >>> could be removed. >>> >>> NOTE: With the code that currently exists today in ipmitool, the address >>> of the sensor from the SDR repository >>> always overwrites the interface target address and target channel prior >>> to accessing the sensor >>> via the interface sendrecv routine. Then in the interface sendrecv >>> routines, bridging requests will be >>> built using the target address (target_addr) and channel >>> (target_channel) if the target_addr doesn't match the >>> interface address (my_addr). >>> >>> I did not intend to change how sensors are addressed via bridging on non >>> PICMG platforms. >>> >>> Thanks in Advance, >>> Jim >>> >>> -- Jim Mankovich | jm...@hp.com (US Mountain Time) -- >>> >>> On 4/16/2013 11:58 PM, Dmitry Bazhenov wrote: >>>> Hello, Jim, >>>> >>>> Please, see my comments mixed in. >>>> >>>> 17.04.2013 2:21, Jim Mankovich пишет: >>>>> Dmitry, >>>>> >>>>> See my comments below. >>>>> >>>>> Thanks, >>>>> Jim >>>>> >>>>> -- Jim Mankovich | jm...@hp.com (US Mountain Time) -- >>>>> >>>>> On 4/15/2013 11:01 PM, Dmitry Bazhenov wrote: >>>>>> Hello, Jim, >>>>>> >>>>>> Your approach has technical and logical flaws. >>>>>> >>>>>> In technical part, all interface drivers shall be ensured to use >>>>>> correct IPMB address when establishing or closing session/interface. >>>>>> This especially regards to LAN and LAN+ drivers. Since some library >>>>>> functionality may close and re-open the interface during its work (as >>>>>> does HPM.1), this may cause problems. Also, a correct address must be >>>>>> used for bridging (when composing a Send Message request). >>>>> I did not intended to do anything which would invalidate using >>>>> "correct >>>>> IPMB when establishing or closing session/interface. But, I did need >>>>> to close/re-open to connect to the discovered IPMB address when I ran >>>>> across the issue with OpenIPMI. See my answer to your specific >>>>> question associated with OpenIPMI below. >>>> >>>> Understood. But, still, there is an issue with the Send Message >>>> request when performing bridging or double bridging using the LAN >>>> interfaces. Though, it is a separate issue. >>>> >>>>> >>>>>> >>>>>> In logical part, when bridging is used, we must perform the address >>>>>> retrieval procedure not only on the IPMC on which the interface was >>>>>> opened, but on the target IPMC as well. And the second acquired >>>>>> address must be used in sensor owner ID comparison to decide if >>>>>> bridging is required or not. It might be, if double bridging is used >>>>>> to access the target IPMC, that sensor values are unreachable. >>>>> Using the second acquired address for sensor owner ID comparison for >>>>> bridging was my intent with the change I made. Did you see something >>>>> that indicated this was not what I was doing? Also, the channel >>>>> number has to be used in the comparison as well since it is part of >>>>> addressing identified in the sensor entries in the SDR repository. >>>> >>>> You're right. I have missed it at the first time. >>>> >>>> But still, there are issues with checking if bridging is needed: >>>> >>>> First: in my opinion, the channel comparison is wrong in the >>>> BRIDGE_TO_SENSOR macro. The local channel number on the target IPMC >>>> may not match with the channel number used to access the target IPMC >>>> (intf->target_channel). >>>> >>>> For example, for PICMG-defined Carrier IPMC, the channel for accessing >>>> an AMC module is 7, while for the AMC module, the same channel is 0. >>>> >>>> I understand that it is likely for PICMG systems that the first check >>>> in the macro succeeds and the second check does not really matter. >>>> But I am not sure that there will be no problem with other system >>>> types. >>>> >>>> Second, the target address and channel substitution may be wrong too. >>>> This works only if intf->target_channel can be used to access the >>>> sensor owner, but it may not be the case. So, in some situation, >>>> additional bridging step is needed. If a double bridging is already >>>> used, such sensors may not be even reachable. >>>> >>>> However, I can not imaging systems where such situation is possible. >>>> So, this is rather theoretical issue. >>>> >>>>> >>>>>> Also, since not all IPMCs are PICMG-based, it maybe not correct to >>>>>> use >>>>>> the Get Address Info command for the target IPMC address >>>>>> retrieval. It >>>>>> is better to fetch the Management Controller Locator record instead >>>>>> (implement this retrieval in ipmi_sdr.c or ipmi_sensor.c). >>>>> >>>>> I could certainly do this on non PICMG-based systems, but isn't it >>>>> possible that there could be more than one Management Controller >>>>> Locator >>>>> record in the target SDR repository? If there can be more than one, >>>>> how do you know which one to use? >>>> >>>> There can be several MC locators for non-PICMG systems. PICMG-systems >>>> contain only one MC locator and several FRU Device locators for >>>> subsidiary FRUs. >>>> >>>> I suggest fetching the target_ipmb_addr only for PICMG-based systems. >>>> >>>>> >>>>>> >>>>>> And regarding to the OpenIPMI interface driver. Is it possible to set >>>>>> another IPMC address without closing and re-opening interface? Other >>>>>> interface drivers seem not require such procedure. >>>>> The OpenIPMI interface has the ability to set the address vial >>>>> IPMICTL_SET_MY_ADDRESS_CMD, and I believe this could be used to avoid >>>>> the close/re-open. Did your fix to resolve bridging issues work >>>>> correctly with OpenIPMI? >>>> >>>> We do not actively use the OpenIPMI driver, so we are not aware of its >>>> issues. >>>> My point is that no other interface drivers need this additional >>>> close/open. So, it might be worth to do it only for the OpenIPMI >>>> interface. >>>> >>>> No more comments. >>>> >>>> Regards, >>>> Dmitry >>>> >>>>>> Regards, >>>>>> Dmitry >>>>>> >>>>>> 15.04.2013 23:12, Jim Mankovich пишет: >>>>>>> Hi Dmitry, >>>>>>> >>>>>>> I have a similar approach to what you outlined, but I did not >>>>>>> find the >>>>>>> need to do >>>>>>> anything different the the "-m" command line switch. I've attached a >>>>>>> patch I've >>>>>>> been using to resolve the issue I was having and would appreciate >>>>>>> any >>>>>>> feedback you >>>>>>> might have on my approach. The patch is for the CVS ipmitool >>>>>>> source >>>>>>> code at TOB >>>>>>> this morning. >>>>>>> >>>>>>> I changed ipmi_main() to always open the interface using either >>>>>>> 0x20 or >>>>>>> the address >>>>>>> specified with the "-m" switch. With the code as it exists today, >>>>>>> open >>>>>>> is sometimes >>>>>>> done in main and sometimes done when the first IPMI request is made. >>>>>>> I found the >>>>>>> defer of the open quire problematic, so I changed the code to >>>>>>> always do >>>>>>> the open prior >>>>>>> to the first IPMI request. After the initial open, I use the >>>>>>> PICMG >>>>>>> get address info to >>>>>>> get the IPMB-0 address. If I was able to discover an address, I >>>>>>> close >>>>>>> and re-open >>>>>>> the interface with the discovered IPMB-0 address as I found this was >>>>>>> necessary to make >>>>>>> sure that the open ipmi driver had the correct address of the target >>>>>>> IPMB-0. Then, if bridging is >>>>>>> specified with "-t" and/or "-T", I get the bridge target IPMB-0 >>>>>>> address >>>>>>> and store that away to >>>>>>> determine when bridging is necessary for sensors identified in >>>>>>> the SDR >>>>>>> repository accessed via >>>>>>> the bridging command line arguments. >>>>>>> >>>>>>> Thanks, >>>>>>> Jim >>>>>>> >>>>>>> -- Jim Mankovich | jm...@hp.com (US Mountain Time) -- >>>>>>> >>>>>>> On 4/15/2013 9:05 AM, Dmitry Bazhenov wrote: >>>>>>>> Hello, Jim, >>>>>>>> >>>>>>>> Your understanding is correct. Moreover, we already have a patch >>>>>>>> which >>>>>>>> solves the issue (in our local IPMITool repo). We are going to >>>>>>>> submit >>>>>>>> the patch for this issue shortly. >>>>>>>> >>>>>>>> And to the topic raised. >>>>>>>> >>>>>>>> The sensor owner ID in the SDR in my opinion shall match with the >>>>>>>> IPMC >>>>>>>> slave address on the primary IPMB bus (channel #0). >>>>>>>> >>>>>>>> Since there are cases when the IPMC accessed from other channels >>>>>>>> (than >>>>>>>> channel #0), like LAN, the slave address of the IPMC on that >>>>>>>> channel >>>>>>>> may >>>>>>>> not match with the primary IPMB address. >>>>>>>> >>>>>>>> We solved this problem as follows: >>>>>>>> - introduced a BMC address which can be overridden by "-m" >>>>>>>> command-line >>>>>>>> parameter (default valuse is 20h). This address is used to >>>>>>>> access the >>>>>>>> IPMC on which a session to establish a session (for LAN). >>>>>>>> - then using Get PICMG Properties to check whether the board is a >>>>>>>> PICMG-based system. >>>>>>>> - use either Get Address Info for FRU #0 or fetch the Management >>>>>>>> Controller Locator Record to query the IPMC slave address on the >>>>>>>> primary >>>>>>>> IPMB. >>>>>>>> - store the fetched slave address. it then used to match the sensor >>>>>>>> owner ID to decide if the bridging to sensor is required on not. >>>>>>>> - for the case when bridging is used, the stored slave address is >>>>>>>> used >>>>>>>> to compose the Send Message command is return address. >>>>>>>> >>>>>>>> Regards, >>>>>>>> Dmitry >>>>>>>> >>>>>>>> 15.04.2013 20:47, Jim Mankovich пишет: >>>>>>>>> All, >>>>>>>>> >>>>>>>>> I've been digging into various issue associated with ipmitool >>>>>>>>> bridging >>>>>>>>> on a PICMG >>>>>>>>> >>>>>>>>> system and I wouldappreciate some help with understanding what the >>>>>>>>> actual intended >>>>>>>>> >>>>>>>>> use of the bridging command line arguments was. There are two >>>>>>>>> different bridging >>>>>>>>> >>>>>>>>> argument specifications, -t target_address/-b target_channel >>>>>>>>> (single >>>>>>>>> bridge), and >>>>>>>>> >>>>>>>>> -T transit_address/-B transit_channel (dual bridge). >>>>>>>>> >>>>>>>>> When only -t is specified, single level bridging will be used to >>>>>>>>> read >>>>>>>>> the SDR repository >>>>>>>>> >>>>>>>>> if the address specified by -t is not equivalent to the ipmitool >>>>>>>>> identified IPMB-0 address. >>>>>>>>> >>>>>>>>> Note: The ipmitool identified IPMB-0 address is either the >>>>>>>>> default of >>>>>>>>> 0x20, or specified >>>>>>>>> >>>>>>>>> on the command line via the -m address switch, or discovered via >>>>>>>>> PICMG >>>>>>>>> get address >>>>>>>>> >>>>>>>>> info. >>>>>>>>> >>>>>>>>> In addition to -t, you may also specify a transit address via >>>>>>>>> -T.If a >>>>>>>>> transit address is >>>>>>>>> >>>>>>>>> specified, dual bridging will be used to read the SDR >>>>>>>>> repository(via the >>>>>>>>> transit address >>>>>>>>> >>>>>>>>> to get to the target identified via -t). The specification of a >>>>>>>>> transit address without a >>>>>>>>> >>>>>>>>> target address is meaningless as the transit address is not used >>>>>>>>> unless >>>>>>>>> there is a target >>>>>>>>> >>>>>>>>> address specification with -t. >>>>>>>>> >>>>>>>>> Does my description agree with your understanding of these >>>>>>>>> switches >>>>>>>>> and >>>>>>>>> their use? >>>>>>>>> >>>>>>>>> Now, in addition to bridging to read the SDR repository, bridging >>>>>>>>> will >>>>>>>>> also occur to access >>>>>>>>> >>>>>>>>> an individual sensor if the sensor owner id identified in the SDR >>>>>>>>> repository does not match >>>>>>>>> >>>>>>>>> the ipmitool identified IPMB-0 address. This bridging will >>>>>>>>> override >>>>>>>>> the specified target address >>>>>>>>> >>>>>>>>> identified via the -t switch, but will make use of the transit >>>>>>>>> address >>>>>>>>> (and dual bridge) when >>>>>>>>> >>>>>>>>> both -t and -T are specified. >>>>>>>>> >>>>>>>>> This bridging implementation has issues on the PICMG system I have >>>>>>>>> been >>>>>>>>> using when >>>>>>>>> >>>>>>>>> addressing sensors whose owner id and channel specification in >>>>>>>>> the SDR >>>>>>>>> repository do >>>>>>>>> >>>>>>>>> not identify the exact same addressing that was used to read >>>>>>>>> the SDR >>>>>>>>> repository. >>>>>>>>> >>>>>>>>> For example:If a sensor identified in an SDR repository resides on >>>>>>>>> IPMB-0 (channel 0), >>>>>>>>> >>>>>>>>> but the SDR repository was accessed via bridging on IPMB-L >>>>>>>>> (channel >>>>>>>>> 7), >>>>>>>>> the sensor can't >>>>>>>>> >>>>>>>>> be accessed with the current code because the sensor will be >>>>>>>>> addressed >>>>>>>>> via bridging using >>>>>>>>> >>>>>>>>> channel 0 (from the SDR repository)instead of channel 7 (from >>>>>>>>> the -b >>>>>>>>> channel specification). >>>>>>>>> >>>>>>>>> The problem is that when using bridging to access an SDR >>>>>>>>> repository, the >>>>>>>>> bridged SDR >>>>>>>>> >>>>>>>>> repository destination may actually identify another IPMB-0 at the >>>>>>>>> bridged destination. >>>>>>>>> >>>>>>>>> If this is the case, then the sensor can simply be read using the >>>>>>>>> same >>>>>>>>> bridging as was >>>>>>>>> >>>>>>>>> used to read the SDR repository. >>>>>>>>> >>>>>>>>> On PICMG compliant systems, this issue can be resolved by getting >>>>>>>>> the >>>>>>>>> IPMB-0 address >>>>>>>>> >>>>>>>>> of the target and compare this target IPMB-0 address with the >>>>>>>>> sensor >>>>>>>>> owner id/channel >>>>>>>>> >>>>>>>>> number from the SDR repository.If the sensor owner id is equal to >>>>>>>>> the >>>>>>>>> target IPMB-0 >>>>>>>>> >>>>>>>>> address and the sensor channel is 0, then the sensor can be >>>>>>>>> accessed >>>>>>>>> using the same >>>>>>>>> >>>>>>>>> addressing as was used to address the SDR repository. >>>>>>>>> >>>>>>>>> >>>>>>>>> I have some ipmitool changes in the works which resolve the sensor >>>>>>>>> bridging issue >>>>>>>>> I've described, but I need some insight from someone more familiar >>>>>>>>> with >>>>>>>>> PICMG and >>>>>>>>> sensor bridging to make sure my analysis of the problem I'm >>>>>>>>> seeing is >>>>>>>>> correct. >>>>>>>>> >>>>>>>>> Thanks in advance, >>>>>>>>> Jim >>>>>>>>> >>>>>>>>> -- >>>>>>>>> -- Jim Mankovich |jm...@hp.com (US Mountain Time) -- >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Precog is a next-generation analytics platform capable of advanced >>>>>>>>> analytics on semi-structured data. The platform includes APIs for >>>>>>>>> building >>>>>>>>> apps and a phenomenal toolset for data science. Developers can use >>>>>>>>> our toolset for easy data analysis & visualization. Get a free >>>>>>>>> account! >>>>>>>>> http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Ipmitool-devel mailing list >>>>>>>>> Ipmitool-devel@lists.sourceforge.net >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/ipmitool-devel >>>>>>>>> >>>>>>>> ------------------------------------------------------------------------------ >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Precog is a next-generation analytics platform capable of advanced >>>>>>>> analytics on semi-structured data. The platform includes APIs for >>>>>>>> building >>>>>>>> apps and a phenomenal toolset for data science. Developers can use >>>>>>>> our toolset for easy data analysis & visualization. Get a free >>>>>>>> account! >>>>>>>> http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>> _______________________________________________ >>>>>>>> Ipmitool-devel mailing list >>>>>>>> Ipmitool-devel@lists.sourceforge.net >>>>>>>> https://lists.sourceforge.net/lists/listinfo/ipmitool-devel >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr _______________________________________________ Ipmitool-devel mailing list Ipmitool-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipmitool-devel