Patchwork [update] PCI / PM: Fix messages printed by acpi_pci_set_power_state()

login
register
mail settings
Submitter Rafael J. Wysocki
Date July 25, 2012, 8:48 p.m.
Message ID <201207252248.52620.rjw@sisk.pl>
Download mbox | patch
Permalink /patch/173262/
State Accepted
Headers show

Comments

Rafael J. Wysocki - July 25, 2012, 8:48 p.m.
On Wednesday, July 25, 2012, Alan Stern wrote:
> On Wed, 25 Jul 2012, Rafael J. Wysocki wrote:
> 
> > 
> > If a PCI device is put into D3_cold by acpi_bus_set_power(),
> > the message printed by acpi_pci_set_power_state() says that its
> > power state has been changed to D4, which doesn't make sense.
> > In turn, if the device is put into D3_hot, the message says just
> > "D3" without specifying which variant of D3 it is.
> > 
> > Fix that by using an array of state names corresponding to the
> > PCI device power states instead of building the state name from
> > the numeric value corresponding to the given state directly.
> > 
> > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> > ---
> >  drivers/pci/pci-acpi.c |   14 +++++++++++---
> >  1 file changed, 11 insertions(+), 3 deletions(-)
> > 
> > Index: linux/drivers/pci/pci-acpi.c
> > ===================================================================
> > --- linux.orig/drivers/pci/pci-acpi.c
> > +++ linux/drivers/pci/pci-acpi.c
> > @@ -265,9 +265,17 @@ static int acpi_pci_set_power_state(stru
> >  		error = acpi_bus_set_power(handle, state_conv[state]);
> >  	}
> >  
> > -	if (!error)
> > -		dev_printk(KERN_INFO, &dev->dev,
> > -				"power state changed by ACPI to D%d\n", state);
> > +	if (!error) {
> > +		static const char *state_name[] = {
> > +			[PCI_D0] = "D0",
> > +			[PCI_D1] = "D1",
> > +			[PCI_D2] = "D2",
> > +			[PCI_D3hot] = "D3hot",
> > +			[PCI_D3cold] = "D3cold"
> > +		};
> > +		dev_info(&dev->dev, "power state changed by ACPI to %s\n",
> > +			 state_name[state]);
> > +	}
> 
> How about using the pci_power_name macro defined in
> include/linux/pci.h instead?

That's even better, I forgot that the macro was there. :-)

Updated patch follows.

Thanks,
Rafael

---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PCI / PM: Fix messages printed by acpi_pci_set_power_state()

If a PCI device is put into D3_cold by acpi_bus_set_power(),
the message printed by acpi_pci_set_power_state() says that its
power state has been changed to D4, which doesn't make sense.
In turn, if the device is put into D3_hot, the message simply
says "D3" without specifying the variant of the D3 state.

Fix this by using the pci_power_name() macro for printing the state
name instead of building it from the numeric value corresponding to
the given state directly.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/pci/pci-acpi.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

Index: linux/drivers/pci/pci-acpi.c
===================================================================
--- linux.orig/drivers/pci/pci-acpi.c
+++ linux/drivers/pci/pci-acpi.c
@@ -266,8 +266,8 @@  static int acpi_pci_set_power_state(stru
 	}
 
 	if (!error)
-		dev_printk(KERN_INFO, &dev->dev,
-				"power state changed by ACPI to D%d\n", state);
+		dev_info(&dev->dev, "power state changed by ACPI to %s\n",
+			 pci_power_name(state));
 
 	return error;
 }