Thanks for the comments!

I've removed IPMI part from the patch sets. I'll send a separate patch sets
once the refactor is done. I'll also include Havard's documentation in it.

I haven't thought of a better name. We can update the name accordingly.

On Fri, Dec 11, 2020 at 4:26 PM Havard Skinnemoen <hskinnem...@google.com>
wrote:

> On Fri, Dec 11, 2020 at 4:16 PM Corey Minyard <miny...@acm.org> wrote:
>
>> On Fri, Dec 11, 2020 at 12:56:07PM -0800, Hao Wu wrote:
>> > Tl,dr: We'll remove the IPMI changes from the current patch set and
>> > refactor
>> >           them in a separate patch set.
>> >
>> > Thank you for your review! On high level, we are trying to emulate the
>> BMC
>> > side of the IPMI protocol. So we cannot directly use the existing IPMI
>> code.
>> > However, they do have a lot in duplication as you pointed out. So we'll
>> > refactor
>> > the existing IPMI code and update in a way that we only add the required
>> > functionality.
>>
>> Ah, I didn't figure that out from what you posted.  So the idea is you
>> can create the BMC side of the system in one qemu session with your
>> changes and then you connect it to a host system running qemu with the
>> host side of the interface.
>>
>> The wire protocol is basically symmetric, but the command handling will
>> need to be separate.  So you probably want to split out the base
>> protocol from ipmi_bmc_extern into its own file and use that from your
>> own file, to avoid the duplication.
>>
>> You need to do proper ATTN handling on the BMC side.  And you will also
>> need ties into GPIOs and whatnot for doing the reset, NMI, etc.
>>
>> "ipmi_host" is probably not the best name.  At least to me that implied
>> the host side of the interface.  I'm not coming up with something I
>> really like, though.  Maybe "bmc_host"?  That's more descriptive, though
>> I'm sure a better name exists.  Then you could have "bmc_host_extern"
>> for the protocol.  If you come up with a better naming scheme, the
>> existing files can be renamed, too.
>>
>
> The naming is my fault.
>
> My thinking was that ipmi-host-extern is to the BMC what ipmi-bmc-extern
> is to the host. That is, the former represents the host as seen by the BMC,
> and the latter represents the BMC as seen by the host.
>
> I sent some docs to the list earlier this year, but sadly, I never got
> around to follow up. You can see the generated docs here:
>
> https://hskinnemoen.github.io/qemu/specs/ipmi.html
>
> Hao, perhaps you should include my documentation patches in your next IPMI
> series? If we come up with a better naming scheme for both sides, I can
> update the docs accordingly.
>
> Havard
>
>
>> Thanks,
>>
>> -corey
>>
>> >
>> > As for the KCS module, the BMC side of the protocol is the opposite
>> > direction
>> > of the existing ipmi_kcs.c code which is on the host/CPU side. For
>> example,
>> > in READ_STATE the CPU would read data while the BMC would write data.
>> > So we can't directly use the same implementation. (They're different
>> files
>> > in
>> > Linux either.) However, we can refactor it to re-use some of the common
>> > definitions.
>> >
>> > We would like to remove the IPMI and KCS stuff from the current patch
>> set.
>> > We'll send the refactored code in a separate patch set after addressing
>> > your concerns.
>> >
>> > Thanks again for the review!
>> >
>> > On Thu, Dec 10, 2020 at 7:04 PM Corey Minyard <miny...@acm.org> wrote:
>> >
>> > > On Thu, Dec 10, 2020 at 05:51:49PM -0800, Hao Wu wrote:
>> > > > This patch series include a few more NPCM7XX devices including
>> > > >
>> > > > - Analog Digital Converter (ADC)
>> > > > - Pulse Width Modulation (PWM)
>> > > > - Keyboard Style Controller (KSC)
>> > > >
>> > > > To utilize these modules we also add two extra functionalities:
>> > > >
>> > > > 1. We modified the CLK module to generate clock values using
>> qdev_clock.
>> > > >    These clocks are used to determine various clocks in NPCM7XX
>> devices.
>> > > > 2. We added support for emulating IPMI responder devices in BMC
>> machines,
>> > > >    similar to the existing IPMI device support for CPU emulation.
>> This
>> > > allows
>> > > >    a qemu instance running BMC firmware to serve as an external BMC
>> for
>> > > a qemu
>> > > >    instance running server software. It utilizes the KCS module we
>> > > implemented.
>> > >
>> > > Looking at the IPMI changes, why didn't you just re-use the existing
>> > > IPMI infrastructure?  ipmi_host.[ch] is basically a subset of
>> ipmi.[ch],
>> > > and the ipmi_host_extern looks like a copy of of ipmi_bmc_extern with
>> > > some names changed.  That kind of code duplication is not acceptable.
>> > > Plus you copied my code and removed my copyrights, which is really
>> > > not acceptable and illegal.
>> > >
>> > > I'm not exactly sure why you needed you own KCS interface, either.  It
>> > > looks like the interface is somewhat different in some ways, but
>> > > integrating it into the current KCS code is probably a better choice
>> if
>> > > that can be done.
>> > >
>> > > -corey
>> > >
>> > > >
>> > > > Hao Wu (7):
>> > > >   hw/misc: Add clock converter in NPCM7XX CLK module
>> > > >   hw/timer: Refactor NPCM7XX Timer to use CLK clock
>> > > >   hw/adc: Add an ADC module for NPCM7XX
>> > > >   hw/misc: Add a PWM module for NPCM7XX
>> > > >   hw/ipmi: Add an IPMI host interface
>> > > >   hw/ipmi: Add a KCS Module for NPCM7XX
>> > > >   hw/ipmi: Add an IPMI external host device
>> > > >
>> > > >  default-configs/devices/arm-softmmu.mak |   2 +
>> > > >  docs/system/arm/nuvoton.rst             |   6 +-
>> > > >  hw/adc/meson.build                      |   1 +
>> > > >  hw/adc/npcm7xx_adc.c                    | 318 ++++++++++
>> > > >  hw/arm/npcm7xx.c                        |  65 +-
>> > > >  hw/ipmi/Kconfig                         |   5 +
>> > > >  hw/ipmi/ipmi_host.c                     |  40 ++
>> > > >  hw/ipmi/ipmi_host_extern.c              | 435 +++++++++++++
>> > > >  hw/ipmi/meson.build                     |   3 +
>> > > >  hw/ipmi/npcm7xx_kcs.c                   | 570 +++++++++++++++++
>> > > >  hw/misc/meson.build                     |   1 +
>> > > >  hw/misc/npcm7xx_clk.c                   | 795
>> +++++++++++++++++++++++-
>> > > >  hw/misc/npcm7xx_pwm.c                   | 535 ++++++++++++++++
>> > > >  hw/timer/npcm7xx_timer.c                |  25 +-
>> > > >  include/hw/adc/npcm7xx_adc.h            |  72 +++
>> > > >  include/hw/arm/npcm7xx.h                |   6 +
>> > > >  include/hw/ipmi/ipmi_host.h             |  56 ++
>> > > >  include/hw/ipmi/ipmi_responder.h        |  66 ++
>> > > >  include/hw/ipmi/npcm7xx_kcs.h           | 105 ++++
>> > > >  include/hw/misc/npcm7xx_clk.h           | 146 ++++-
>> > > >  include/hw/misc/npcm7xx_pwm.h           | 106 ++++
>> > > >  include/hw/timer/npcm7xx_timer.h        |   1 +
>> > > >  tests/qtest/meson.build                 |   4 +-
>> > > >  tests/qtest/npcm7xx_adc-test.c          | 400 ++++++++++++
>> > > >  tests/qtest/npcm7xx_pwm-test.c          | 490 +++++++++++++++
>> > > >  25 files changed, 4221 insertions(+), 32 deletions(-)
>> > > >  create mode 100644 hw/adc/npcm7xx_adc.c
>> > > >  create mode 100644 hw/ipmi/ipmi_host.c
>> > > >  create mode 100644 hw/ipmi/ipmi_host_extern.c
>> > > >  create mode 100644 hw/ipmi/npcm7xx_kcs.c
>> > > >  create mode 100644 hw/misc/npcm7xx_pwm.c
>> > > >  create mode 100644 include/hw/adc/npcm7xx_adc.h
>> > > >  create mode 100644 include/hw/ipmi/ipmi_host.h
>> > > >  create mode 100644 include/hw/ipmi/ipmi_responder.h
>> > > >  create mode 100644 include/hw/ipmi/npcm7xx_kcs.h
>> > > >  create mode 100644 include/hw/misc/npcm7xx_pwm.h
>> > > >  create mode 100644 tests/qtest/npcm7xx_adc-test.c
>> > > >  create mode 100644 tests/qtest/npcm7xx_pwm-test.c
>> > > >
>> > > > --
>> > > > 2.29.2.684.gfbc64c5ab5-goog
>> > > >
>> > >
>>
>

Reply via email to