Re: [PATCH 4/5]PCIe native PME support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Aug 19, 2009 at 07:58:11PM +0800, Matthew Garrett wrote:
> On Wed, Aug 19, 2009 at 03:24:19PM +0800, Shaohua Li wrote:
> 
> > +static inline void npme_enable_pme(struct pci_dev *pdev, bool enable)
> > +{
> > +	int pos;
> > +	u16 rtctl;
> > +
> > +	pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
> > +
> > +	pci_read_config_word(pdev, pos + PCI_EXP_RTCTL, &rtctl);
> > +	if (!enable)
> > +		rtctl &= ~PCI_EXP_RTCTL_PMEIE;
> > +	else
> > +		rtctl |= PCI_EXP_RTCTL_PMEIE;
> > +	pci_write_config_word(pdev, pos + PCI_EXP_RTCTL, rtctl);
> > +}
> 
> This seems to duplicate the existing pci_pme_active() function?
No, these registers are completely different. pci_pme_active is to handle
the PM capability regiser. This routine is to handle the PCI express capability.
 
> > +static inline void npme_clear_pme(struct pci_dev *pdev)
> > +{
> > +	int pos;
> > +	u32 rtsta;
> > +
> > +	pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
> > +
> > +	pci_read_config_dword(pdev, pos + PCI_EXP_RTSTA, &rtsta);
> > +	rtsta |= PCI_EXP_RTSTA_PME;
> > +	pci_write_config_dword(pdev, pos + PCI_EXP_RTSTA, rtsta);
> > +}
> 
> Ditto.
Ditto.

> > +static bool npme_pme_target(struct pci_dev *target)
> > +{
> > +	bool ret = false;
> > +	if (target->dev.bus->pm && target->dev.bus->pm->wakeup_event)
> > +		ret = target->dev.bus->pm->wakeup_event(&target->dev);
> > +	return ret;
> > +}
> 
> Is there any situation in which we wouldn't want to just perform a 
> runtime resume of the device here?
The devices pcie-to-pci bridge can send wakeup event, but the event might use
root port or the bridge pci id, so can't directly send the event to the device.

Surely we can move the logic in my patch 3 here if we don't want to duplicate
code, and then we can directly perform a runtime resume for target devices.

Thanks,
Shaohua

_______________________________________________
linux-pm mailing list
linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/linux-pm

[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux