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.

Regarding to the BRIDGE_TO_SENSOR macro, I am now convinced that it 
should work as needed.

There is one more thing. Please, add PICMG Extension 5.0 (05h) for 
MicroTCA.0 base specification.

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
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

------------------------------------------------------------------------------
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

Reply via email to