From: Corey Minyard <minyard@acm.org>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: Andrew Jeffery <andrew@aj.id.au>,
qemu-devel@nongnu.org,
Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>,
qemu-ppc@nongnu.org, Joel Stanley <joel@jms.id.au>,
David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [PATCH] ppc/pnv: Add a HIOMAP erase command
Date: Thu, 20 Aug 2020 11:16:36 -0500 [thread overview]
Message-ID: <20200820161636.GM2842@minyard.net> (raw)
In-Reply-To: <20200820073650.2315095-1-clg@kaod.org>
On Thu, Aug 20, 2020 at 09:36:50AM +0200, Cédric Le Goater wrote:
> The OPAL test suite runs a read-erase-write test on the PNOR :
>
> https://github.com/open-power/op-test/blob/master/testcases/OpTestPNOR.py
>
> which revealed that the IPMI HIOMAP handlers didn't support
> HIOMAP_C_ERASE. Implement the sector erase command by writing 0xFF in
> the PNOR memory region.
>
> Reported-by: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
> hw/ppc/pnv_bmc.c | 31 ++++++++++++++++++++++++++++++-
> 1 file changed, 30 insertions(+), 1 deletion(-)
>
> diff --git a/hw/ppc/pnv_bmc.c b/hw/ppc/pnv_bmc.c
> index 2e1a03daa45a..0fb082fcb8ee 100644
> --- a/hw/ppc/pnv_bmc.c
> +++ b/hw/ppc/pnv_bmc.c
> @@ -140,6 +140,29 @@ static uint16_t bytes_to_blocks(uint32_t bytes)
> return bytes >> BLOCK_SHIFT;
> }
>
> +static uint32_t blocks_to_bytes(uint16_t blocks)
> +{
> + return blocks << BLOCK_SHIFT;
> +}
> +
> +#define IPMI_ERR_UNSPECIFIED 0xff
Wouldn't it be better for this to be in include/hw/ipmi/ipmi.h and
be named IPMI_CC_UNSPECIFIED to match the other completion codes?
-corey
> +
> +static int hiomap_erase(PnvPnor *pnor, uint32_t offset, uint32_t size)
> +{
> + MemTxResult result;
> + int i;
> +
> + for (i = 0; i < size / 4; i++) {
> + result = memory_region_dispatch_write(&pnor->mmio, offset + i * 4,
> + 0xFFFFFFFF, MO_32,
> + MEMTXATTRS_UNSPECIFIED);
> + if (result != MEMTX_OK) {
> + return -1;
> + }
> + }
> + return 0;
> +}
> +
> static void hiomap_cmd(IPMIBmcSim *ibs, uint8_t *cmd, unsigned int cmd_len,
> RspBuffer *rsp)
> {
> @@ -155,10 +178,16 @@ static void hiomap_cmd(IPMIBmcSim *ibs, uint8_t *cmd, unsigned int cmd_len,
> switch (cmd[2]) {
> case HIOMAP_C_MARK_DIRTY:
> case HIOMAP_C_FLUSH:
> - case HIOMAP_C_ERASE:
> case HIOMAP_C_ACK:
> break;
>
> + case HIOMAP_C_ERASE:
> + if (hiomap_erase(pnor, blocks_to_bytes(cmd[5] << 8 | cmd[4]),
> + blocks_to_bytes(cmd[7] << 8 | cmd[6]))) {
> + rsp_buffer_set_error(rsp, IPMI_ERR_UNSPECIFIED);
> + }
> + break;
> +
> case HIOMAP_C_GET_INFO:
> rsp_buffer_push(rsp, 2); /* Version 2 */
> rsp_buffer_push(rsp, BLOCK_SHIFT); /* block size */
> --
> 2.25.4
>
>
next prev parent reply other threads:[~2020-08-20 16:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-20 7:36 [PATCH] ppc/pnv: Add a HIOMAP erase command Cédric Le Goater
2020-08-20 10:12 ` David Gibson
2020-08-20 16:16 ` Corey Minyard [this message]
2020-08-20 16:45 ` Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200820161636.GM2842@minyard.net \
--to=minyard@acm.org \
--cc=andrew@aj.id.au \
--cc=clg@kaod.org \
--cc=david@gibson.dropbear.id.au \
--cc=joel@jms.id.au \
--cc=klaus@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.