All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ani Sinha <ani@anisinha.ca>
To: Julia Suvorova <jusual@redhat.com>
Cc: Ani Sinha <ani@anisinha.ca>, Igor Mammedov <imammedo@redhat.com>,
	QEMU Developers <qemu-devel@nongnu.org>,
	"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [RFC PATCH v3 3/7] hw/pci/pcie: Do not initialize slot capability if acpihp is used
Date: Thu, 24 Sep 2020 17:24:45 +0530 (IST)	[thread overview]
Message-ID: <alpine.DEB.2.21.2009241722470.17687@ani-ubuntu> (raw)
In-Reply-To: <CAMDeoFXobPuNnKB3bQB=20SPbvTCgNiE_UWJrtsT6d5aAS5sTQ@mail.gmail.com>



On Thu, 24 Sep 2020, Julia Suvorova wrote:

> On Thu, Sep 24, 2020 at 9:36 AM Michael S. Tsirkin <mst@redhat.com> wrote:
>>
>> On Thu, Sep 24, 2020 at 09:00:09AM +0200, Julia Suvorova wrote:
>>> Instead of changing the hot-plug type in _OSC register, do not
>>> initialize the slot capability or set the 'Slot Implemented' flag.
>>> This way guest will choose ACPI hot-plug if it is preferred and leave
>>> the option to use SHPC with pcie-pci-bridge.
>>>
>>> Signed-off-by: Julia Suvorova <jusual@redhat.com>
>>> ---
>>>  hw/i386/acpi-build.h |  2 ++
>>>  hw/i386/acpi-build.c |  2 +-
>>>  hw/pci/pcie.c        | 16 ++++++++++++++++
>>>  3 files changed, 19 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/hw/i386/acpi-build.h b/hw/i386/acpi-build.h
>>> index 487ec7710f..4c5bfb3d0b 100644
>>> --- a/hw/i386/acpi-build.h
>>> +++ b/hw/i386/acpi-build.h
>>> @@ -11,4 +11,6 @@ extern const struct AcpiGenericAddress x86_nvdimm_acpi_dsmio;
>>>
>>>  void acpi_setup(void);
>>>
>>> +Object *object_resolve_type_unambiguous(const char *typename);
>>> +
>>>  #endif
>>> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
>>> index cf503b16af..b7811a8912 100644
>>> --- a/hw/i386/acpi-build.c
>>> +++ b/hw/i386/acpi-build.c
>>> @@ -174,7 +174,7 @@ static void init_common_fadt_data(MachineState *ms, Object *o,
>>>      *data = fadt;
>>>  }
>>>
>>> -static Object *object_resolve_type_unambiguous(const char *typename)
>>> +Object *object_resolve_type_unambiguous(const char *typename)
>>>  {
>>>      bool ambig;
>>>      Object *o = object_resolve_path_type("", typename, &ambig);
>>> diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
>>> index 5b48bae0f6..c1a082e8b9 100644
>>> --- a/hw/pci/pcie.c
>>> +++ b/hw/pci/pcie.c
>>> @@ -27,6 +27,8 @@
>>>  #include "hw/pci/pci_bus.h"
>>>  #include "hw/pci/pcie_regs.h"
>>>  #include "hw/pci/pcie_port.h"
>>> +#include "hw/i386/ich9.h"
>>> +#include "hw/i386/acpi-build.h"
>>>  #include "qemu/range.h"
>>>
>>>  //#define DEBUG_PCIE
>>
>>
>> Not really happy with pcie.c getting an i386 dependency.
>>
>>
>>
>>> @@ -515,12 +517,26 @@ void pcie_cap_slot_unplug_request_cb(HotplugHandler *hotplug_dev,
>>>      pcie_cap_slot_push_attention_button(hotplug_pdev);
>>>  }
>>>
>>> +static bool acpi_pcihp_enabled(void)
>>> +{
>>> +    Object *lpc = object_resolve_type_unambiguous(TYPE_ICH9_LPC_DEVICE);
>>> +
>>> +    return lpc &&
>>> +           object_property_get_bool(lpc, "acpi-pci-hotplug-with-bridge-support",
>>> +                                    NULL);
>>> +
>>> +}
>>> +
>>
>> Why not just check the property unconditionally?
>
> Ok.

I do not see how that would work if lpc is NULL.
object_resolve_type_unambiguous() can return NULL, at least in theory.

>
>>>  /* pci express slot for pci express root/downstream port
>>>     PCI express capability slot registers */
>>>  void pcie_cap_slot_init(PCIDevice *dev, PCIESlot *s)
>>>  {
>>>      uint32_t pos = dev->exp.exp_cap;
>>>
>>> +    if (acpi_pcihp_enabled()) {
>>> +        return;
>>> +    }
>>> +
>>
>> I think I would rather not teach pcie about acpi. How about we
>> change the polarity, name the property
>> "pci-native-hotplug" or whatever makes sense.
>
> I'd prefer not to change the property name since the common code in
> hw/i386/acpi-build.c depends on it, but I can add a new one if it
> makes any sense.
>
>>>      pci_word_test_and_set_mask(dev->config + pos + PCI_EXP_FLAGS,
>>>                                 PCI_EXP_FLAGS_SLOT);
>>>
>>> --
>>> 2.25.4
>>
>
>


  parent reply	other threads:[~2020-09-24 11:55 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-24  7:00 [RFC PATCH v3 0/7] Use ACPI PCI hot-plug for Q35 Julia Suvorova
2020-09-24  7:00 ` [RFC PATCH v3 1/7] hw/acpi/pcihp: Enhance acpi_pcihp_disable_root_bus() to support Q35 Julia Suvorova
2020-09-24 10:53   ` Igor Mammedov
2020-09-24 10:54   ` Ani Sinha
2020-09-24  7:00 ` [RFC PATCH v3 2/7] hw/i386/acpi-build: Add ACPI PCI hot-plug methods to Q35 Julia Suvorova
2020-09-24 11:04   ` Igor Mammedov
2020-09-25  8:20     ` Gerd Hoffmann
2020-09-24 13:15   ` Ani Sinha
2020-09-24 13:58     ` Julia Suvorova
2020-09-24  7:00 ` [RFC PATCH v3 3/7] hw/pci/pcie: Do not initialize slot capability if acpihp is used Julia Suvorova
2020-09-24  7:36   ` Michael S. Tsirkin
2020-09-24  8:23     ` Julia Suvorova
2020-09-24  9:02       ` Michael S. Tsirkin
2020-09-24 11:54       ` Ani Sinha [this message]
2020-09-24 11:14   ` Igor Mammedov
2020-09-24 11:37     ` Ani Sinha
2020-09-24  7:00 ` [RFC PATCH v3 4/7] hw/acpi/ich9: Enable ACPI PCI hot-plug Julia Suvorova
2020-09-24  7:37   ` Michael S. Tsirkin
2020-09-24 11:28   ` Ani Sinha
2020-09-24 14:27     ` Julia Suvorova
2020-09-24  7:00 ` [RFC PATCH v3 5/7] bios-tables-test: Allow changes in DSDT ACPI tables Julia Suvorova
2020-09-24 10:57   ` Ani Sinha
2020-09-24  7:00 ` [RFC PATCH v3 6/7] hw/acpi/ich9: Set ACPI PCI hot-plug as default Julia Suvorova
2020-09-24  9:33   ` Igor Mammedov
2020-09-24  9:41     ` Michael S. Tsirkin
2020-09-24 10:36   ` Daniel P. Berrangé
2020-09-24 14:24     ` Julia Suvorova
2020-09-24  7:00 ` [RFC PATCH v3 7/7] bios-tables-test: Update golden binaries Julia Suvorova
2020-09-24  8:57 ` [RFC PATCH v3 0/7] Use ACPI PCI hot-plug for Q35 no-reply
2020-09-24  9:03 ` no-reply
2020-09-24  9:20 ` Michael S. Tsirkin
2020-10-01  8:55   ` Julia Suvorova
2020-10-01 11:40     ` Michael S. Tsirkin
2020-10-01 13:01       ` Ani Sinha
2020-10-01 15:25         ` Julia Suvorova
2020-10-01 15:54       ` Julia Suvorova
2020-10-01 16:11         ` Ani Sinha
2020-10-06  6:44         ` Michael S. Tsirkin
2020-09-24  9:30 ` Igor Mammedov
2020-09-24  9:39   ` Michael S. Tsirkin

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=alpine.DEB.2.21.2009241722470.17687@ani-ubuntu \
    --to=ani@anisinha.ca \
    --cc=imammedo@redhat.com \
    --cc=jusual@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.