[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 06/15] ipmi: Add a UUID device property
From: |
Cédric Le Goater |
Subject: |
Re: [PATCH 06/15] ipmi: Add a UUID device property |
Date: |
Mon, 23 Sep 2019 07:51:09 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.0 |
On 19/09/2019 23:39, address@hidden wrote:
> From: Corey Minyard <address@hidden>
>
> Using the UUID that qemu generates probably isn't the best thing
> to do, allow it to be passed in via properties, and use QemuUUID
> for the type.
>
> If the UUID is not set, return an unsupported command error. This
> way we are not providing an all-zero (or randomly generated) GUID
> to the IPMI user. This lets the host fall back to the other
> method of using the get device id command to determind the BMC
> being accessed.
Reviewed-by: Cédric Le Goater <address@hidden>
C.
> Signed-off-by: Corey Minyard <address@hidden>
> Cc: Cédric Le Goater <address@hidden>
> Cc: David Gibson <address@hidden>
> Cc: Michael S. Tsirkin <address@hidden>
> Cc: Paolo Bonzini <address@hidden>
> ---
> hw/ipmi/ipmi_bmc_sim.c | 22 ++++++++++++++--------
> qemu-options.hx | 10 +++++++---
> 2 files changed, 21 insertions(+), 11 deletions(-)
>
> diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
> index 6e6cd1b47d..71e56f3b13 100644
> --- a/hw/ipmi/ipmi_bmc_sim.c
> +++ b/hw/ipmi/ipmi_bmc_sim.c
> @@ -223,7 +223,7 @@ struct IPMIBmcSim {
> uint8_t restart_cause;
>
> uint8_t acpi_power_state[2];
> - uint8_t uuid[16];
> + QemuUUID uuid;
>
> IPMISel sel;
> IPMISdr sdr;
> @@ -941,8 +941,19 @@ static void get_device_guid(IPMIBmcSim *ibs,
> {
> unsigned int i;
>
> + /* An uninitialized uuid is all zeros, use that to know if it is set. */
> for (i = 0; i < 16; i++) {
> - rsp_buffer_push(rsp, ibs->uuid[i]);
> + if (ibs->uuid.data[i]) {
> + goto uuid_set;
> + }
> + }
> + /* No uuid is set, return an error. */
> + rsp_buffer_set_error(rsp, IPMI_CC_INVALID_CMD);
> + return;
> +
> + uuid_set:
> + for (i = 0; i < 16; i++) {
> + rsp_buffer_push(rsp, ibs->uuid.data[i]);
> }
> }
>
> @@ -1986,12 +1997,6 @@ static void ipmi_sim_realize(DeviceState *dev, Error
> **errp)
> ibs->acpi_power_state[0] = 0;
> ibs->acpi_power_state[1] = 0;
>
> - if (qemu_uuid_set) {
> - memcpy(&ibs->uuid, &qemu_uuid, 16);
> - } else {
> - memset(&ibs->uuid, 0, 16);
> - }
> -
> ipmi_init_sensors_from_sdrs(ibs);
> register_cmds(ibs);
>
> @@ -2011,6 +2016,7 @@ static Property ipmi_sim_properties[] = {
> DEFINE_PROP_UINT8("fwrev2", IPMIBmcSim, fwrev2, 0),
> DEFINE_PROP_UINT32("mfg_id", IPMIBmcSim, mfg_id, 0),
> DEFINE_PROP_UINT16("product_id", IPMIBmcSim, product_id, 0),
> + DEFINE_PROP_UUID_NODEFAULT("guid", IPMIBmcSim, uuid),
> DEFINE_PROP_END_OF_LIST(),
> };
>
> diff --git a/qemu-options.hx b/qemu-options.hx
> index bbfd936d29..ed9292f65e 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -701,7 +701,7 @@ possible drivers and properties, use @code{-device help}
> and
> @code{-device @var{driver},help}.
>
> Some drivers are:
> -@item -device
> ipmi-bmc-sim,id=@var{id}[,slave_addr=@var{val}][,sdrfile=@var{file}][,furareasize=@var{val}][,furdatafile=@var{file}]
> +@item -device
> ipmi-bmc-sim,id=@var{id}[,slave_addr=@var{val}][,sdrfile=@var{file}][,furareasize=@var{val}][,furdatafile=@var{file}][,guid=@var{uuid}]
>
> Add an IPMI BMC. This is a simulation of a hardware management
> interface processor that normally sits on a system. It provides
> @@ -714,8 +714,8 @@ controllers. If you don't know what this means, it is
> safe to ignore
> it.
>
> @table @option
> -@item bmc=@var{id}
> -The BMC to connect to, one of ipmi-bmc-sim or ipmi-bmc-extern above.
> +@item id=@var{id}
> +The BMC id for interfaces to use this device.
> @item slave_addr=@var{val}
> Define slave address to use for the BMC. The default is 0x20.
> @item sdrfile=@var{file}
> @@ -724,6 +724,10 @@ file containing raw Sensor Data Records (SDR) data. The
> default is none.
> size of a Field Replaceable Unit (FRU) area. The default is 1024.
> @item frudatafile=@var{file}
> file containing raw Field Replaceable Unit (FRU) inventory data. The default
> is none.
> +@item guid=@var{uuid}
> +value for the GUID for the BMC, in standard UUID format. If this is set,
> +get "Get GUID" command to the BMC will return it. Otherwise "Get GUID"
> +will return an error.
> @end table
>
> @item -device
> ipmi-bmc-extern,id=@var{id},chardev=@var{id}[,slave_addr=@var{val}]
>
- [PATCH 00/15] ipmi: Bug fixes, add new interfaces, minyard, 2019/09/19
- [PATCH 03/15] ipmi: Generate an interrupt on watchdog pretimeout expiry, minyard, 2019/09/19
- [PATCH 04/15] tests:ipmi: Fix IPMI BT tests, minyard, 2019/09/19
- [PATCH 05/15] qdev: Add a no default uuid property, minyard, 2019/09/19
- [PATCH 02/15] ipmi: Fix the get watchdog command, minyard, 2019/09/19
- [PATCH 06/15] ipmi: Add a UUID device property, minyard, 2019/09/19
- Re: [PATCH 06/15] ipmi: Add a UUID device property,
Cédric Le Goater <=
- [PATCH 09/15] ipmi: Allow a size value to be passed for I/O space, minyard, 2019/09/19
- [PATCH 07/15] ipmi: Split out KCS-specific code from ISA KCS code, minyard, 2019/09/19
- [PATCH 11/15] ipmi: Add PCI IPMI interfaces, minyard, 2019/09/19
- [PATCH 14/15] ipmi: Fix SSIF ACPI handling to use the right CRS, minyard, 2019/09/19
- [PATCH 10/15] smbios:ipmi: Ignore IPMI devices with no fwinfo function, minyard, 2019/09/19
- [PATCH 01/15] ipmi: Fix watchdog NMI handling, minyard, 2019/09/19
- [PATCH 08/15] ipmi: Split out BT-specific code from ISA BT code, minyard, 2019/09/19
- [PATCH 15/15] pc: Add an SMB0 ACPI device to q35, minyard, 2019/09/19
- [PATCH 12/15] ipmi: Add an SMBus IPMI interface, minyard, 2019/09/19