From: Mario Limonciello <mario.limonciello@amd.com>
To: Kai-Heng Feng <kai.heng.feng@canonical.com>
Cc: "Bjorn Helgaas" <bhelgaas@google.com>,
"Hans de Goede" <hdegoede@redhat.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Rafael J . Wysocki" <rjw@rjwysocki.net>,
"Shyam Sundar S K" <Shyam-sundar.S-k@amd.com>,
"open list:PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
"Lukas Wunner" <lukas@wunner.de>
Subject: Re: [RFC v1 4/4] platform/x86/amd: pmc: Add support for using constraints to decide D3 policy
Date: Tue, 24 Oct 2023 14:45:38 -0500 [thread overview]
Message-ID: <00cf1ce5-a850-4e39-b698-bb16ba71c190@amd.com> (raw)
In-Reply-To: <CAAd53p620SFMetOeig-JE7mJzMt7jpFcB8tA=SNSOhi93QMA2Q@mail.gmail.com>
>>> I've seen both 3 (i.e. ACPI_STATE_D3_HOT) and 4 (i.e.
>>> ACPI_STATE_D3_COLD) defined in LPI constraint table.
>>> Should those two be treated differently?
>>
>> Was this AMD system or Intel system? AFAIK AMD doesn't use D3cold in
>> constraints, they are collectively "D3".
>
> Intel based system.
>
> So the final D3 state is decided by the presence of power resources?
>
Right. This is why I've mentioned in some of my series that
pci_d3cold_enable() / pci_d3cold_disable() are misnamed and
dev->no_d3cold can be misleading.
FYI - I have (slowly) been modifying this series to use
pci_d3_cold_enable()/pci_d3_cold_disable() instead of the extra overhead
of the policy decision but I have some problems.
I anticipate future version will also modify pci_bridge_d3_update().
>>
>>>
>>>> + default:
>>>> + break;
>>>> + }
>>>> +
>>>> + return BRIDGE_PREF_UNSET;
>>>> +}
>>>> +
>>>> static int amd_pmc_verify_czn_rtc(struct amd_pmc_dev *pdev, u32 *arg)
>>>> {
>>>> struct rtc_device *rtc_device;
>>>> @@ -881,6 +924,11 @@ static struct acpi_s2idle_dev_ops amd_pmc_s2idle_dev_ops = {
>>>> .restore = amd_pmc_s2idle_restore,
>>>> };
>>>>
>>>> +static struct pci_d3_driver_ops amd_pmc_d3_ops = {
>>>> + .check = amd_pmc_d3_check,
>>>> + .priority = 50,
>>>> +};
>>>> +
>>>> static int amd_pmc_suspend_handler(struct device *dev)
>>>> {
>>>> struct amd_pmc_dev *pdev = dev_get_drvdata(dev);
>>>> @@ -1074,10 +1122,19 @@ static int amd_pmc_probe(struct platform_device *pdev)
>>>> amd_pmc_quirks_init(dev);
>>>> }
>>>>
>>>> + if (amd_pmc_use_acpi_constraints(dev)) {
>>>> + err = pci_register_driver_d3_policy_cb(&amd_pmc_d3_ops);
>>>> + if (err)
>>>> + goto err_register_lps0;
>>>> + }
>>>
>>> Does this only apply to PCI? USB can have ACPI companion too.
>>
>> It only applies to things in the constraints, which is only "SOC
>> internal" devices. No internal USB devices.
>
> So sounds like it only applies to PCI devices?
Correct.
>
> Kai-Heng
>
>>
>>>
>>> Kai-Heng
>>>
>>>> +
>>>> amd_pmc_dbgfs_register(dev);
>>>> pm_report_max_hw_sleep(U64_MAX);
>>>> return 0;
>>>>
>>>> +err_register_lps0:
>>>> + if (IS_ENABLED(CONFIG_SUSPEND))
>>>> + acpi_unregister_lps0_dev(&amd_pmc_s2idle_dev_ops);
>>>> err_pci_dev_put:
>>>> pci_dev_put(rdev);
>>>> return err;
>>>> @@ -1089,6 +1146,8 @@ static void amd_pmc_remove(struct platform_device *pdev)
>>>>
>>>> if (IS_ENABLED(CONFIG_SUSPEND))
>>>> acpi_unregister_lps0_dev(&amd_pmc_s2idle_dev_ops);
>>>> + if (amd_pmc_use_acpi_constraints(dev))
>>>> + pci_unregister_driver_d3_policy_cb(&amd_pmc_d3_ops);
>>>> amd_pmc_dbgfs_unregister(dev);
>>>> pci_dev_put(dev->rdev);
>>>> mutex_destroy(&dev->lock);
>>>> --
>>>> 2.34.1
>>>>
>>
prev parent reply other threads:[~2023-10-24 19:45 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-09 22:56 [RFC v1 0/4] Add support for drivers to decide bridge D3 policy Mario Limonciello
2023-10-09 22:56 ` [RFC v1 1/4] ACPI: x86: s2idle: Export symbol for fetching constraints for module use Mario Limonciello
2023-10-09 22:56 ` [RFC v1 2/4] PCI: Add support for drivers to decide bridge D3 policy Mario Limonciello
2023-10-14 10:53 ` Lukas Wunner
2023-10-15 18:55 ` Mario Limonciello
2023-10-09 22:56 ` [RFC v1 3/4] PCI: Check for changes in pci_bridge_d3_possible() when updating D3 Mario Limonciello
2023-10-09 22:56 ` [RFC v1 4/4] platform/x86/amd: pmc: Add support for using constraints to decide D3 policy Mario Limonciello
2023-10-16 2:11 ` Kai-Heng Feng
2023-10-16 21:34 ` Mario Limonciello
2023-10-24 7:05 ` Kai-Heng Feng
2023-10-24 19:45 ` Mario Limonciello [this message]
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=00cf1ce5-a850-4e39-b698-bb16ba71c190@amd.com \
--to=mario.limonciello@amd.com \
--cc=Shyam-sundar.S-k@amd.com \
--cc=bhelgaas@google.com \
--cc=hdegoede@redhat.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=kai.heng.feng@canonical.com \
--cc=linux-pci@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=rjw@rjwysocki.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox