[PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set auto_suspenddelay_ms

Vivi, Rodrigo rodrigo.vivi at intel.com
Fri Jan 19 14:47:53 UTC 2024


On Fri, 2024-01-19 at 14:12 +0000, Gupta, Anshuman wrote:
> 
> 
> > -----Original Message-----
> > From: Vivi, Rodrigo <rodrigo.vivi at intel.com>
> > Sent: Thursday, December 28, 2023 6:11 AM
> > To: Gupta, Anshuman <anshuman.gupta at intel.com>
> > Cc: igt-dev at lists.freedesktop.org; Tauro, Riana
> > <riana.tauro at intel.com>;
> > Nilawar, Badal <badal.nilawar at intel.com>; Konieczny, Kamil
> > <kamil.konieczny at intel.com>
> > Subject: Re: [PATCH i-g-t v4 2/4] lib/igt_pm: Add helper to get/set
> > auto_suspenddelay_ms
> > 
> > On Thu, Dec 21, 2023 at 10:03:36PM +0530, Anshuman Gupta wrote:
> > > Sometimes we want to test pm igt test with an explicit auto
> > > suspend
> > > delay, therefore adding helpers to get/set the pci_dev
> > > auto_suspenddelay_ms.
> > > 
> > > Signed-off-by: Anshuman Gupta <anshuman.gupta at intel.com>
> > 
> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> > 
> > we also need to change the default value from 0 to 1 at least, and
> > then see
> > how much more time machine we use. But 0 is unrealistic.
> Thanks Rodrigo for RB.
> You mean 1ms or 1 second ?

ops, yeap, I mentioned 1second. But we might attempt some smaller
ones like 500ms?! 200ms?

> Thanks,
> Anshuman Gupta.
> > 
> > > ---
> > >  lib/igt_pm.c | 53
> > > ++++++++++++++++++++++++++++++++++++++++------------
> > >  lib/igt_pm.h |  2 ++
> > >  2 files changed, 43 insertions(+), 12 deletions(-)
> > > 
> > > diff --git a/lib/igt_pm.c b/lib/igt_pm.c index
> > > c2d98fceb..d436c2c50
> > > 100644
> > > --- a/lib/igt_pm.c
> > > +++ b/lib/igt_pm.c
> > > @@ -1068,18 +1068,6 @@ static void igt_pm_write_power_attr(int
> > > fd,
> > const char *val, int len)
> > >         igt_assert(strncmp(buf, val, len) == 0);  }
> > > 
> > > -static int igt_pm_get_autosuspend_delay(struct pci_device
> > > *pci_dev)
> > > -{
> > > -       char delay_str[64];
> > > -       int delay, delay_fd;
> > > -
> > > -       delay_fd = igt_pm_get_power_attr_fd(pci_dev,
> > "autosuspend_delay_ms");
> > > -       if (igt_pm_read_power_attr(delay_fd, delay_str, 64,
> > > true))
> > > -               igt_assert(sscanf(delay_str, "%d", &delay) > 0);
> > > -
> > > -       return delay;
> > > -}
> > > -
> > >  static void
> > >  igt_pm_setup_pci_dev_power_attrs(struct pci_device *pci_dev,
> > >                                  struct igt_pm_pci_dev_pwrattr
> > > *pwrattr, int
> > delay_ms) @@ -1165,6
> > > +1153,47 @@ igt_pm_setup_pci_card_power_attrs(struct pci_device
> > *pci_dev, bool save_attrs, i
> > >         pci_iterator_destroy(iter);
> > >  }
> > > 
> > > +/**
> > > + * igt_pm_get_autosuspend_delay:
> > > + * @pci_dev: pci_dev.
> > > + * Get pci_dev autosuspend delay value from pci sysfs
> > "autosuspend_delay_ms".
> > > + *
> > > + * Returns:
> > > + * autosuspend_delay_ms.
> > > + */
> > > +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev) {
> > > +       char delay_str[64];
> > > +       int delay, delay_fd;
> > > +
> > > +       delay_fd = igt_pm_get_power_attr_fd(pci_dev,
> > "autosuspend_delay_ms");
> > > +       if (igt_pm_read_power_attr(delay_fd, delay_str, 64,
> > > true))
> > > +               igt_assert(sscanf(delay_str, "%d", &delay) > 0);
> > > +
> > > +       return delay;
> > > +}
> > > +
> > > +/**
> > > + * igt_pm_set_autosuspend_delay:
> > > + * @pci_dev: pci_dev.
> > > + * @delay_ms: autosuspend delay in ms.
> > > + * Set pci_dev autosuspend delay value through pci sysfs
> > "autosuspend_delay_ms".
> > > + */
> > > +void igt_pm_set_autosuspend_delay(struct pci_device *pci_dev,
> > > int
> > > +delay_ms) {
> > > +       char delay_str[64];
> > > +       int delay_fd;
> > > +
> > > +       delay_fd = igt_pm_get_power_attr_fd(pci_dev,
> > > +"autosuspend_delay_ms");
> > > +
> > > +       if (delay_ms >= 0) {
> > > +               int wc;
> > > +
> > > +               wc = snprintf(delay_str, 64, "%d\n", delay_ms);
> > > +               igt_pm_write_power_attr(delay_fd, delay_str, wc);
> > > +       }
> > > +}
> > > +
> > >  /**
> > >   * igt_pm_enable_pci_card_runtime_pm:
> > >   * @root: root port pci_dev.
> > > diff --git a/lib/igt_pm.h b/lib/igt_pm.h index
> > > 306a9eb46..8394315c6
> > > 100644
> > > --- a/lib/igt_pm.h
> > > +++ b/lib/igt_pm.h
> > > @@ -77,6 +77,8 @@ int igt_pm_get_pcie_acpihp_slot(struct
> > > pci_device
> > > *pci_dev);  bool igt_pm_acpi_d3cold_supported(struct pci_device
> > > *pci_dev);  enum igt_acpi_d_state 
> > > igt_pm_get_acpi_real_d_state(struct
> > > pci_device *pci_dev);
> > > +int igt_pm_get_autosuspend_delay(struct pci_device *pci_dev);
> > > void
> > > +igt_pm_set_autosuspend_delay(struct pci_device *pci_dev, int
> > > +delay_ms);
> > >  void igt_pm_enable_pci_card_runtime_pm(struct pci_device *root,
> > >                                        struct pci_device *i915);
> > >  void igt_pm_get_d3cold_allowed(const char *pci_slot_name,
> > > uint32_t
> > > *value);
> > > --
> > > 2.25.1
> > > 



More information about the igt-dev mailing list