From: Igor Mammedov <imammedo@redhat.com>
To: Ani Sinha <ani@anisinha.ca>
Cc: mapfelba@redhat.com, kraxel@redhat.com, jusual@redhat.com,
qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [PATCH for 6.2 v2 4/5] hw/i386/acpi-build: Deny control on PCIe Native Hot-plug in _OSC
Date: Fri, 12 Nov 2021 11:51:28 +0100 [thread overview]
Message-ID: <20211112115128.66230040@redhat.com> (raw)
In-Reply-To: <alpine.DEB.2.22.394.2111111104320.133428@anisinha-lenovo>
On Thu, 11 Nov 2021 11:19:30 +0530 (IST)
Ani Sinha <ani@anisinha.ca> wrote:
> On Wed, 10 Nov 2021, Igor Mammedov wrote:
>
> > From: Julia Suvorova <jusual@redhat.com>
> >
> > There are two ways to enable ACPI PCI Hot-plug:
> >
> > * Disable the Hot-plug Capable bit on PCIe slots.
> >
> > This was the first approach which led to regression [1-2], as
> > I/O space for a port is allocated only when it is hot-pluggable,
> > which is determined by HPC bit.
> >
> > * Leave the HPC bit on and disable PCIe Native Hot-plug in _OSC
> > method.
> >
> > This removes the (future) ability of hot-plugging switches with PCIe
> > Native hotplug since ACPI PCI Hot-plug only works with cold-plugged
> > bridges. If the user wants to explicitely use this feature, they can
> > disable ACPI PCI Hot-plug with:
> > --global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
> >
> > Change the bit in _OSC method so that the OS selects ACPI PCI Hot-plug
> > instead of PCIe Native.
> >
> > [1] https://gitlab.com/qemu-project/qemu/-/issues/641
> > [2] https://bugzilla.redhat.com/show_bug.cgi?id=2006409
> >
> > Signed-off-by: Julia Suvorova <jusual@redhat.com>
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > v2:
> > - (mst)
> > * drop local hotplug var and opencode it
> > * rename acpi_pcihp parameter to enable_native_pcie_hotplug
> > to reflect what it actually does
> >
> > tested:
> > with hotplugging nic into 1 root port with seabios/ovmf/Fedora34
> > Windows tested only with seabios (using exiting images)
> > (installer fails to install regardless on bios)
> > ---
> > hw/i386/acpi-build.c | 12 ++++++++----
> > 1 file changed, 8 insertions(+), 4 deletions(-)
> >
> > diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
> > index a3ad6abd33..a99c6e4fe3 100644
> > --- a/hw/i386/acpi-build.c
> > +++ b/hw/i386/acpi-build.c
> > @@ -1337,7 +1337,7 @@ static void build_x86_acpi_pci_hotplug(Aml *table, uint64_t pcihp_addr)
> > aml_append(table, scope);
> > }
> >
> > -static Aml *build_q35_osc_method(void)
> > +static Aml *build_q35_osc_method(bool enable_native_pcie_hotplug)
> > {
> > Aml *if_ctx;
> > Aml *if_ctx2;
> > @@ -1359,8 +1359,10 @@ static Aml *build_q35_osc_method(void)
> > /*
> > * Always allow native PME, AER (no dependencies)
> > * Allow SHPC (PCI bridges can have SHPC controller)
> > + * Disable PCIe Native Hot-plug if ACPI PCI Hot-plug is enabled.
> > */
>
> Based on v2, I think its more useful to have this comment where the
> function is called.
I'd leave it as is, which is consistent with other bits described here
>
> > - aml_append(if_ctx, aml_and(a_ctrl, aml_int(0x1F), a_ctrl));
> > + aml_append(if_ctx, aml_and(a_ctrl,
> > + aml_int(0x1E | (enable_native_pcie_hotplug ? 0x1 : 0x0)), a_ctrl));
> >
> > if_ctx2 = aml_if(aml_lnot(aml_equal(aml_arg(1), aml_int(1))));
> > /* Unknown revision */
> > @@ -1449,7 +1451,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
> > aml_append(dev, aml_name_decl("_CID", aml_eisaid("PNP0A03")));
> > aml_append(dev, aml_name_decl("_ADR", aml_int(0)));
> > aml_append(dev, aml_name_decl("_UID", aml_int(pcmc->pci_root_uid)));
> > - aml_append(dev, build_q35_osc_method());
> > + aml_append(dev, build_q35_osc_method(!pm->pcihp_bridge_en));
>
> See above. I think it helps to add a comment here saying native hotplug is
> enabled when acpi hotplug is disabled for cold plugged bridges.
>
>
> > aml_append(sb_scope, dev);
> > if (mcfg_valid) {
> > aml_append(sb_scope, build_q35_dram_controller(&mcfg));
> > @@ -1565,7 +1567,9 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
> > if (pci_bus_is_express(bus)) {
> > aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A08")));
> > aml_append(dev, aml_name_decl("_CID", aml_eisaid("PNP0A03")));
> > - aml_append(dev, build_q35_osc_method());
> > +
> > + /* Expander bridges do not have ACPI PCI Hot-plug enabled */
> > + aml_append(dev, build_q35_osc_method(true));
> > } else {
> > aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A03")));
> > }
> > --
> > 2.27.0
> >
> >
>
next prev parent reply other threads:[~2021-11-12 10:52 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-10 21:11 [PATCH for 6.2 v2 0/5] Fix Q35 ACPI PCI Hot-plug I/O issues Igor Mammedov
2021-11-10 21:11 ` [PATCH for 6.2 v2 1/5] pcie: rename 'native-hotplug' to 'x-native-hotplug' Igor Mammedov
2021-11-11 3:25 ` Ani Sinha
2021-11-12 10:47 ` Igor Mammedov
2021-11-15 10:01 ` Ani Sinha
2021-11-10 21:11 ` [PATCH for 6.2 v2 2/5] hw/acpi/ich9: Add compat prop to keep HPC bit set for 6.1 machine type Igor Mammedov
2021-11-15 10:05 ` Ani Sinha
2021-11-16 8:02 ` Ani Sinha
2021-11-10 21:11 ` [PATCH for 6.2 v2 3/5] bios-tables-test: Allow changes in DSDT ACPI tables Igor Mammedov
2021-11-11 5:55 ` Ani Sinha
2021-11-10 21:11 ` [PATCH for 6.2 v2 4/5] hw/i386/acpi-build: Deny control on PCIe Native Hot-plug in _OSC Igor Mammedov
2021-11-11 5:49 ` Ani Sinha
2021-11-12 10:51 ` Igor Mammedov [this message]
2021-11-10 21:11 ` [PATCH for 6.2 v2 5/5] bios-tables-test: Update golden binaries Igor Mammedov
2021-11-11 5:51 ` Ani Sinha
2021-11-11 8:34 ` Michael S. Tsirkin
2021-11-11 9:27 ` Ani Sinha
2021-11-11 9:44 ` Ani Sinha
2021-11-12 8:56 ` Ani Sinha
2021-11-11 11:32 ` Igor Mammedov
2021-11-11 13:47 ` Thomas Lamprecht
2021-11-11 15:31 ` Michael S. Tsirkin
2021-11-12 9:47 ` [PATCH for 6.2 v2 0/5] Fix Q35 ACPI PCI Hot-plug I/O issues Michael S. Tsirkin
2021-11-12 10:17 ` Igor Mammedov
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=20211112115128.66230040@redhat.com \
--to=imammedo@redhat.com \
--cc=ani@anisinha.ca \
--cc=jusual@redhat.com \
--cc=kraxel@redhat.com \
--cc=mapfelba@redhat.com \
--cc=mst@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.