All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>, qemu-devel@nongnu.org
Cc: boris.ostrovsky@oracle.com
Subject: Re: [PATCH v3 1/7] x86: lpc9: let firmware negotiate 'CPU hotplug with SMI' features
Date: Fri, 21 Aug 2020 15:46:01 +0200	[thread overview]
Message-ID: <7fa8fa3f-7b7a-895b-ff17-2222ec55bc9c@redhat.com> (raw)
In-Reply-To: <20200820145635.1305276-1-imammedo@redhat.com>

Hi Igor,

On 08/20/20 16:56, Igor Mammedov wrote:
> It will allow firmware to notify QEMU that firmware requires SMI
> being triggered on CPU hot[un]plug, so that it would be able to account
> for hotplugged CPU and relocate it to new SMM base and/or safely remove
> CPU on unplug.
> 
> Using negotiated features, follow up patches will insert SMI upcall
> into AML code, to make sure that firmware processes hotplug before
> guest OS would attempt to use new CPU.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> v3:
>   - rebase on top of "[PATCH v2] hw: add compat machines for 5.2"
>     so apply that before this patch
> v2:
>   - rebase on top of 5.1 (move compat values to 5.1 machine)
>   - make "x-smi-cpu-hotunplug" false by default (Laszlo Ersek <lersek@redhat.com>)
> ---
>  include/hw/i386/ich9.h |  2 ++
>  hw/i386/pc.c           |  4 +++-
>  hw/i386/pc_piix.c      |  1 +
>  hw/i386/pc_q35.c       |  1 +
>  hw/isa/lpc_ich9.c      | 13 +++++++++++++
>  5 files changed, 20 insertions(+), 1 deletion(-)
> 
> diff --git a/include/hw/i386/ich9.h b/include/hw/i386/ich9.h
> index a98d10b252..d1bb3f7bf0 100644
> --- a/include/hw/i386/ich9.h
> +++ b/include/hw/i386/ich9.h
> @@ -247,5 +247,7 @@ typedef struct ICH9LPCState {
>  
>  /* bit positions used in fw_cfg SMI feature negotiation */
>  #define ICH9_LPC_SMI_F_BROADCAST_BIT            0
> +#define ICH9_LPC_SMI_F_CPU_HOTPLUG_BIT          1
> +#define ICH9_LPC_SMI_F_CPU_HOT_UNPLUG_BIT       2
>  
>  #endif /* HW_ICH9_H */
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 9aa813949c..583db11d28 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -97,7 +97,9 @@
>  #include "fw_cfg.h"
>  #include "trace.h"
>  
> -GlobalProperty pc_compat_5_1[] = {};
> +GlobalProperty pc_compat_5_1[] = {
> +    { "ICH9-LPC", "x-smi-cpu-hotplug", "off" },
> +};
>  const size_t pc_compat_5_1_len = G_N_ELEMENTS(pc_compat_5_1);
>  
>  GlobalProperty pc_compat_5_0[] = {
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index c5ba70ca17..68f8ba1bf9 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -433,6 +433,7 @@ static void pc_i440fx_5_2_machine_options(MachineClass *m)
>      m->alias = "pc";
>      m->is_default = true;
>      pcmc->default_cpu_version = 1;
> +    compat_props_add(m->compat_props, pc_compat_5_1, pc_compat_5_1_len);
>  }
>  
>  DEFINE_I440FX_MACHINE(v5_2, "pc-i440fx-5.2", NULL,
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index 0cb9c18cd4..b729cf9a58 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -359,6 +359,7 @@ static void pc_q35_5_2_machine_options(MachineClass *m)
>      pc_q35_machine_options(m);
>      m->alias = "q35";
>      pcmc->default_cpu_version = 1;
> +    compat_props_add(m->compat_props, pc_compat_5_1, pc_compat_5_1_len);
>  }
>  
>  DEFINE_Q35_MACHINE(v5_2, "pc-q35-5.2", NULL,

Sorry about the late response, I was away yesterday (public holiday in
my country).

The above two hunks should be dropped.

Cornelia's patch already handles both of:
- hw_compat_5_1,
- pc_compat_5_1.
in both of:
- pc_i440fx_5_1_machine_options(),
- pc_q35_5_1_machine_options().

So you don't need to modify those functions any longer.

Furthermore, the machine-options functions for 5.2 machine types should
not be modified *at all*. The effect of the above two hunks is that the
5.2 machine types will inherit the 5.1 compat props (such as

  ICH9-LPC.x-smi-cpu-hotplug=off

) and we do not want that.

So please drop the above two hunks.

If you could post a v4 of this patch today, that would be awesome; I
would like to play with this series extensively still today. "tonight"
is definitely an option, so if you can post the patch in the evening
(CEST), that's still great from my POV!

Thanks!
Laszlo

> diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
> index cd6e169d47..19f32bed3e 100644
> --- a/hw/isa/lpc_ich9.c
> +++ b/hw/isa/lpc_ich9.c
> @@ -373,6 +373,15 @@ static void smi_features_ok_callback(void *opaque)
>          /* guest requests invalid features, leave @features_ok at zero */
>          return;
>      }
> +    if (!(guest_features & BIT_ULL(ICH9_LPC_SMI_F_BROADCAST_BIT)) &&
> +        guest_features & (BIT_ULL(ICH9_LPC_SMI_F_CPU_HOTPLUG_BIT) |
> +                          BIT_ULL(ICH9_LPC_SMI_F_CPU_HOT_UNPLUG_BIT))) {
> +        /*
> +         * cpu hot-[un]plug with SMI requires SMI broadcast,
> +         * leave @features_ok at zero
> +         */
> +        return;
> +    }
>  
>      /* valid feature subset requested, lock it down, report success */
>      lpc->smi_negotiated_features = guest_features;
> @@ -747,6 +756,10 @@ static Property ich9_lpc_properties[] = {
>      DEFINE_PROP_BOOL("noreboot", ICH9LPCState, pin_strap.spkr_hi, true),
>      DEFINE_PROP_BIT64("x-smi-broadcast", ICH9LPCState, smi_host_features,
>                        ICH9_LPC_SMI_F_BROADCAST_BIT, true),
> +    DEFINE_PROP_BIT64("x-smi-cpu-hotplug", ICH9LPCState, smi_host_features,
> +                      ICH9_LPC_SMI_F_CPU_HOTPLUG_BIT, true),
> +    DEFINE_PROP_BIT64("x-smi-cpu-hotunplug", ICH9LPCState, smi_host_features,
> +                      ICH9_LPC_SMI_F_CPU_HOT_UNPLUG_BIT, false),
>      DEFINE_PROP_END_OF_LIST(),
>  };
>  
> 



  reply	other threads:[~2020-08-21 13:48 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-18 12:22 [PATCH v2 0/7] x86: fix cpu hotplug with secure boot Igor Mammedov
2020-08-18 12:22 ` [PATCH v2 1/7] x86: lpc9: let firmware negotiate 'CPU hotplug with SMI' features Igor Mammedov
2020-08-19  8:39   ` Laszlo Ersek
2020-08-19  8:51     ` Laszlo Ersek
2020-08-19  8:58     ` Cornelia Huck
2020-08-19  9:14       ` Laszlo Ersek
2020-08-19 12:37         ` Igor Mammedov
2020-08-20 14:56   ` [PATCH v3 " Igor Mammedov
2020-08-21 13:46     ` Laszlo Ersek [this message]
2020-08-24 11:00       ` [PATCH v4 1/6] " Igor Mammedov
2020-08-25 12:28         ` Laszlo Ersek
2020-08-18 12:22 ` [PATCH v2 2/7] x86: cphp: prevent guest crash on CPU hotplug when broadcast SMI is in use Igor Mammedov
2020-08-18 12:22 ` [PATCH v2 3/7] x86: cpuhp: refuse cpu hot-unplug request earlier if not supported Igor Mammedov
2020-08-25 12:50   ` Laszlo Ersek
2020-08-18 12:22 ` [PATCH v2 4/7] acpi: add aml_land() and aml_break() primitives Igor Mammedov
2020-08-18 13:03   ` Philippe Mathieu-Daudé
2020-08-25 13:01   ` Laszlo Ersek
2020-08-18 12:22 ` [PATCH v2 5/7] tests: acpi: mark to be changed tables in bios-tables-test-allowed-diff Igor Mammedov
2020-08-18 12:22 ` [PATCH v2 6/7] x68: acpi: trigger SMI before sending hotplug Notify event to OSPM Igor Mammedov
2020-08-25 17:25   ` Laszlo Ersek
2020-08-26  9:23     ` Igor Mammedov
2020-08-26  9:24     ` Laszlo Ersek
2020-08-26 11:55       ` Igor Mammedov
2020-08-26 15:12         ` Laszlo Ersek
2020-08-26 13:32       ` Laszlo Ersek
2020-08-26 13:32         ` Laszlo Ersek
2020-08-26 14:10         ` Igor Mammedov
2020-08-18 12:22 ` [PATCH v2 7/7] tests: acpi: update acpi blobs with new AML Igor Mammedov
2020-08-18 12:56 ` [PATCH v2 0/7] x86: fix cpu hotplug with secure boot no-reply
2020-08-18 13:01   ` Philippe Mathieu-Daudé
2020-08-18 13:39 ` no-reply
2020-08-18 14:07   ` Philippe Mathieu-Daudé

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=7fa8fa3f-7b7a-895b-ff17-2222ec55bc9c@redhat.com \
    --to=lersek@redhat.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=imammedo@redhat.com \
    --cc=qemu-devel@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.