lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 20 Dec 2011 18:15:42 +0800
From:	"Hao, Xudong" <xudong.hao@...el.com>
To:	"jbarnes@...tuousgeek.org" <jbarnes@...tuousgeek.org>,
	"linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>
CC:	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"kvm@...r.kernel.org" <kvm@...r.kernel.org>,
	"Zhang, Xiantao" <xiantao.zhang@...el.com>
Subject: RE: [PATCH] PCI: Enable ATS at the device state restore 

Hi, Jesse
Do you have any comments for this fix patch?

Thanks,
-Xudong

> -----Original Message-----
> From: Hao, Xudong
> Sent: Saturday, December 17, 2011 9:25 PM
> To: 'jbarnes@...tuousgeek.org'; 'linux-pci@...r.kernel.org'
> Cc: linux-kernel@...r.kernel.org; kvm@...r.kernel.org; Zhang, Xiantao
> Subject: [PATCH] PCI: Enable ATS at the device state restore
> 
> When system go to S3 or S4 sleep and then return, some register of PCI device
> does not be restored correctly, such as ATS capability. The same problem
> happen on pci reset function.
> 
> This patch enables ATS at the device state restore if PCI device has ATS
> capability.
> 
> Signed-off-by: Xudong Hao <xudong.hao@...el.com>
> Signed-off-by: Xiantao Zhang <xiantao.zhang@...el.com>
> ---
>  drivers/pci/ats.c |   17 +++++++++++++++++
>  drivers/pci/pci.c |    1 +
>  drivers/pci/pci.h |    8 ++++++++
>  3 files changed, 26 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c index 7ec56fb..a6c2b35 100644
> --- a/drivers/pci/ats.c
> +++ b/drivers/pci/ats.c
> @@ -127,6 +127,23 @@ void pci_disable_ats(struct pci_dev *dev)  }
> EXPORT_SYMBOL_GPL(pci_disable_ats);
> 
> +void pci_restore_ats_state(struct pci_dev *dev) {
> +	u16 ctrl;
> +
> +	if (!pci_ats_enabled(dev))
> +		return;
> +	if (!pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ATS))
> +		BUG();
> +
> +	ctrl = PCI_ATS_CTRL_ENABLE;
> +	if (!dev->is_virtfn)
> +		ctrl |= PCI_ATS_CTRL_STU(dev->ats->stu - PCI_ATS_MIN_STU);
> +
> +	pci_write_config_word(dev, dev->ats->pos + PCI_ATS_CTRL, ctrl); }
> +EXPORT_SYMBOL_GPL(pci_restore_ats_state);
> +
>  /**
>   * pci_ats_queue_depth - query the ATS Invalidate Queue Depth
>   * @dev: the PCI device
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 6f45a73..6dafc1d 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -956,6 +956,7 @@ void pci_restore_state(struct pci_dev *dev)
> 
>  	/* PCI Express register must be restored first */
>  	pci_restore_pcie_state(dev);
> +	pci_restore_ats_state(dev);
> 
>  	/*
>  	 * The Base Address register should be programmed before the command
> diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index b74084e..a4f3140 100644
> --- a/drivers/pci/pci.h
> +++ b/drivers/pci/pci.h
> @@ -249,6 +249,14 @@ struct pci_sriov {
>  	u8 __iomem *mstate;	/* VF Migration State Array */
>  };
> 
> +#ifdef CONFIG_PCI_ATS
> +extern void pci_restore_ats_state(struct pci_dev *dev); #else static
> +inline void pci_restore_ats_state(struct pci_dev *dev) { } #endif /*
> +CONFIG_PCI_ATS */
> +
>  #ifdef CONFIG_PCI_IOV
>  extern int pci_iov_init(struct pci_dev *dev);  extern void
> pci_iov_release(struct pci_dev *dev);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ