* [PATCH 0/4] PCI / DPC: Few improvements
@ 2016-06-06 13:06 Mika Westerberg
2016-06-06 13:06 ` [PATCH 1/4] PCI / PCIe: Introduce module_pci_port_service() Mika Westerberg
` (6 more replies)
0 siblings, 7 replies; 9+ messages in thread
From: Mika Westerberg @ 2016-06-06 13:06 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Keith Busch, Mika Westerberg, linux-pci
Hi,
This series includes few improvements for the PCIe DPC driver. First we
introduce module_pci_port_service() which allows reducing of boilerblate
code used in the DPC driver. In addition we convert the driver to use
managed resource functions (devm) to get rid of even more boilerblate.
I do not have hardware supporting DPC so these are only compile tested.
Mika Westerberg (4):
PCI / PCIe: Introduce module_pci_port_service()
PCI / DPC: Convert to use module_pcie_port_service()
PCI / DPC: Convert the driver to use devm_* functions
PCI / DPC: Fix whitespace in struct dpc_dev
drivers/pci/pcie/pcie-dpc.c | 30 +++++++-----------------------
include/linux/pcieport_if.h | 13 +++++++++++++
2 files changed, 20 insertions(+), 23 deletions(-)
--
2.8.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/4] PCI / PCIe: Introduce module_pci_port_service()
2016-06-06 13:06 [PATCH 0/4] PCI / DPC: Few improvements Mika Westerberg
@ 2016-06-06 13:06 ` Mika Westerberg
2016-06-06 13:06 ` [PATCH 2/4] PCI / DPC: Convert to use module_pcie_port_service() Mika Westerberg
` (5 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Mika Westerberg @ 2016-06-06 13:06 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Keith Busch, Mika Westerberg, linux-pci
As used elsewhere in the kernel already. This will reduce amount of
boilerblate code PCIe port service drivers otherwise need to open-code.
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
include/linux/pcieport_if.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/include/linux/pcieport_if.h b/include/linux/pcieport_if.h
index afcd130ab3a9..9276a85bffde 100644
--- a/include/linux/pcieport_if.h
+++ b/include/linux/pcieport_if.h
@@ -67,4 +67,17 @@ struct pcie_port_service_driver {
int pcie_port_service_register(struct pcie_port_service_driver *new);
void pcie_port_service_unregister(struct pcie_port_service_driver *new);
+/**
+ * module_pcie_port_service() - Helper macro for registering a PCI driver
+ * @__port_service: pcie_port_service struct
+ *
+ * Helper macro for PCIe port service drivers which do not do anything
+ * special in module init/exit. This eliminates a lot of boilerplate. Each
+ * module may only use this macro once, and calling it replaces
+ * module_init() and module_exit()
+ */
+#define module_pcie_port_service(__port_service) \
+ module_driver(__port_service, pcie_port_service_register, \
+ pcie_port_service_unregister)
+
#endif /* _PCIEPORT_IF_H_ */
--
2.8.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/4] PCI / DPC: Convert to use module_pcie_port_service()
2016-06-06 13:06 [PATCH 0/4] PCI / DPC: Few improvements Mika Westerberg
2016-06-06 13:06 ` [PATCH 1/4] PCI / PCIe: Introduce module_pci_port_service() Mika Westerberg
@ 2016-06-06 13:06 ` Mika Westerberg
2016-06-06 13:06 ` [PATCH 3/4] PCI / DPC: Convert the driver to use devm_* functions Mika Westerberg
` (4 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Mika Westerberg @ 2016-06-06 13:06 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Keith Busch, Mika Westerberg, linux-pci
There is no need to open-code this in the driver. Use the helper we just
introduced to remove the boilerblate code from the driver.
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
drivers/pci/pcie/pcie-dpc.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/pci/pcie/pcie-dpc.c b/drivers/pci/pcie/pcie-dpc.c
index ab552f1bc08f..533c548607d7 100644
--- a/drivers/pci/pcie/pcie-dpc.c
+++ b/drivers/pci/pcie/pcie-dpc.c
@@ -144,20 +144,9 @@ static struct pcie_port_service_driver dpcdriver = {
.remove = dpc_remove,
};
-static int __init dpc_service_init(void)
-{
- return pcie_port_service_register(&dpcdriver);
-}
-
-static void __exit dpc_service_exit(void)
-{
- pcie_port_service_unregister(&dpcdriver);
-}
+module_pcie_port_service(dpcdriver);
MODULE_DESCRIPTION("PCI Express Downstream Port Containment driver");
MODULE_AUTHOR("Keith Busch <keith.busch@intel.com>");
MODULE_LICENSE("GPL");
MODULE_VERSION("0.1");
-
-module_init(dpc_service_init);
-module_exit(dpc_service_exit);
--
2.8.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/4] PCI / DPC: Convert the driver to use devm_* functions
2016-06-06 13:06 [PATCH 0/4] PCI / DPC: Few improvements Mika Westerberg
2016-06-06 13:06 ` [PATCH 1/4] PCI / PCIe: Introduce module_pci_port_service() Mika Westerberg
2016-06-06 13:06 ` [PATCH 2/4] PCI / DPC: Convert to use module_pcie_port_service() Mika Westerberg
@ 2016-06-06 13:06 ` Mika Westerberg
2016-06-06 13:06 ` [PATCH 4/4] PCI / DPC: Fix whitespace in struct dpc_dev Mika Westerberg
` (3 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Mika Westerberg @ 2016-06-06 13:06 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Keith Busch, Mika Westerberg, linux-pci
These will automatically release the resources when the driver is removed
so no need to do that explicitly in the driver.
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
drivers/pci/pcie/pcie-dpc.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/drivers/pci/pcie/pcie-dpc.c b/drivers/pci/pcie/pcie-dpc.c
index 533c548607d7..8a061645f217 100644
--- a/drivers/pci/pcie/pcie-dpc.c
+++ b/drivers/pci/pcie/pcie-dpc.c
@@ -89,7 +89,7 @@ static int dpc_probe(struct pcie_device *dev)
int status;
u16 ctl, cap;
- dpc = kzalloc(sizeof(*dpc), GFP_KERNEL);
+ dpc = devm_kzalloc(&dev->device, sizeof(*dpc), GFP_KERNEL);
if (!dpc)
return -ENOMEM;
@@ -98,11 +98,12 @@ static int dpc_probe(struct pcie_device *dev)
INIT_WORK(&dpc->work, interrupt_event_handler);
set_service_data(dev, dpc);
- status = request_irq(dev->irq, dpc_irq, IRQF_SHARED, "pcie-dpc", dpc);
+ status = devm_request_irq(&dev->device, dev->irq, dpc_irq, IRQF_SHARED,
+ "pcie-dpc", dpc);
if (status) {
dev_warn(&dev->device, "request IRQ%d failed: %d\n", dev->irq,
status);
- goto out;
+ return status;
}
pci_read_config_word(pdev, dpc->cap_pos + PCI_EXP_DPC_CAP, &cap);
@@ -117,9 +118,6 @@ static int dpc_probe(struct pcie_device *dev)
FLAG(cap, PCI_EXP_DPC_CAP_SW_TRIGGER), (cap >> 8) & 0xf,
FLAG(cap, PCI_EXP_DPC_CAP_DL_ACTIVE));
return status;
- out:
- kfree(dpc);
- return status;
}
static void dpc_remove(struct pcie_device *dev)
@@ -131,9 +129,6 @@ static void dpc_remove(struct pcie_device *dev)
pci_read_config_word(pdev, dpc->cap_pos + PCI_EXP_DPC_CTL, &ctl);
ctl &= ~(PCI_EXP_DPC_CTL_EN_NONFATAL | PCI_EXP_DPC_CTL_INT_EN);
pci_write_config_word(pdev, dpc->cap_pos + PCI_EXP_DPC_CTL, ctl);
-
- free_irq(dev->irq, dpc);
- kfree(dpc);
}
static struct pcie_port_service_driver dpcdriver = {
--
2.8.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/4] PCI / DPC: Fix whitespace in struct dpc_dev
2016-06-06 13:06 [PATCH 0/4] PCI / DPC: Few improvements Mika Westerberg
` (2 preceding siblings ...)
2016-06-06 13:06 ` [PATCH 3/4] PCI / DPC: Convert the driver to use devm_* functions Mika Westerberg
@ 2016-06-06 13:06 ` Mika Westerberg
2016-06-06 14:44 ` [PATCH 0/4] PCI / DPC: Few improvements Keith Busch
` (2 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Mika Westerberg @ 2016-06-06 13:06 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Keith Busch, Mika Westerberg, linux-pci
There is unnecesary space before tab in the two lines. Remove these.
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
drivers/pci/pcie/pcie-dpc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/pcie/pcie-dpc.c b/drivers/pci/pcie/pcie-dpc.c
index 8a061645f217..197d9ec18713 100644
--- a/drivers/pci/pcie/pcie-dpc.c
+++ b/drivers/pci/pcie/pcie-dpc.c
@@ -15,8 +15,8 @@
struct dpc_dev {
struct pcie_device *dev;
- struct work_struct work;
- int cap_pos;
+ struct work_struct work;
+ int cap_pos;
};
static void dpc_wait_link_inactive(struct pci_dev *pdev)
--
2.8.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 0/4] PCI / DPC: Few improvements
2016-06-06 13:06 [PATCH 0/4] PCI / DPC: Few improvements Mika Westerberg
` (3 preceding siblings ...)
2016-06-06 13:06 ` [PATCH 4/4] PCI / DPC: Fix whitespace in struct dpc_dev Mika Westerberg
@ 2016-06-06 14:44 ` Keith Busch
2016-06-17 9:57 ` Mika Westerberg
2016-06-21 18:57 ` Bjorn Helgaas
6 siblings, 0 replies; 9+ messages in thread
From: Keith Busch @ 2016-06-06 14:44 UTC (permalink / raw)
To: Mika Westerberg; +Cc: Bjorn Helgaas, linux-pci
On Mon, Jun 06, 2016 at 04:06:04PM +0300, Mika Westerberg wrote:
> Hi,
>
> This series includes few improvements for the PCIe DPC driver. First we
> introduce module_pci_port_service() which allows reducing of boilerblate
> code used in the DPC driver. In addition we convert the driver to use
> managed resource functions (devm) to get rid of even more boilerblate.
>
> I do not have hardware supporting DPC so these are only compile tested.
>
> Mika Westerberg (4):
> PCI / PCIe: Introduce module_pci_port_service()
> PCI / DPC: Convert to use module_pcie_port_service()
> PCI / DPC: Convert the driver to use devm_* functions
> PCI / DPC: Fix whitespace in struct dpc_dev
>
> drivers/pci/pcie/pcie-dpc.c | 30 +++++++-----------------------
> include/linux/pcieport_if.h | 13 +++++++++++++
> 2 files changed, 20 insertions(+), 23 deletions(-)
Thanks, these look good to me.
Acked-by: Keith Busch <keith.busch@intel.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/4] PCI / DPC: Few improvements
2016-06-06 13:06 [PATCH 0/4] PCI / DPC: Few improvements Mika Westerberg
` (4 preceding siblings ...)
2016-06-06 14:44 ` [PATCH 0/4] PCI / DPC: Few improvements Keith Busch
@ 2016-06-17 9:57 ` Mika Westerberg
2016-06-21 18:57 ` Bjorn Helgaas
6 siblings, 0 replies; 9+ messages in thread
From: Mika Westerberg @ 2016-06-17 9:57 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Keith Busch, linux-pci
Gentle ping on this.
On Mon, Jun 06, 2016 at 04:06:04PM +0300, Mika Westerberg wrote:
> Hi,
>
> This series includes few improvements for the PCIe DPC driver. First we
> introduce module_pci_port_service() which allows reducing of boilerblate
> code used in the DPC driver. In addition we convert the driver to use
> managed resource functions (devm) to get rid of even more boilerblate.
>
> I do not have hardware supporting DPC so these are only compile tested.
>
> Mika Westerberg (4):
> PCI / PCIe: Introduce module_pci_port_service()
> PCI / DPC: Convert to use module_pcie_port_service()
> PCI / DPC: Convert the driver to use devm_* functions
> PCI / DPC: Fix whitespace in struct dpc_dev
>
> drivers/pci/pcie/pcie-dpc.c | 30 +++++++-----------------------
> include/linux/pcieport_if.h | 13 +++++++++++++
> 2 files changed, 20 insertions(+), 23 deletions(-)
>
> --
> 2.8.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/4] PCI / DPC: Few improvements
2016-06-06 13:06 [PATCH 0/4] PCI / DPC: Few improvements Mika Westerberg
` (5 preceding siblings ...)
2016-06-17 9:57 ` Mika Westerberg
@ 2016-06-21 18:57 ` Bjorn Helgaas
2016-06-22 10:09 ` Mika Westerberg
6 siblings, 1 reply; 9+ messages in thread
From: Bjorn Helgaas @ 2016-06-21 18:57 UTC (permalink / raw)
To: Mika Westerberg; +Cc: Bjorn Helgaas, Keith Busch, linux-pci
On Mon, Jun 06, 2016 at 04:06:04PM +0300, Mika Westerberg wrote:
> Hi,
>
> This series includes few improvements for the PCIe DPC driver. First we
> introduce module_pci_port_service() which allows reducing of boilerblate
> code used in the DPC driver. In addition we convert the driver to use
> managed resource functions (devm) to get rid of even more boilerblate.
>
> I do not have hardware supporting DPC so these are only compile tested.
>
> Mika Westerberg (4):
> PCI / PCIe: Introduce module_pci_port_service()
> PCI / DPC: Convert to use module_pcie_port_service()
> PCI / DPC: Convert the driver to use devm_* functions
> PCI / DPC: Fix whitespace in struct dpc_dev
>
> drivers/pci/pcie/pcie-dpc.c | 30 +++++++-----------------------
> include/linux/pcieport_if.h | 13 +++++++++++++
> 2 files changed, 20 insertions(+), 23 deletions(-)
I applied the last two, with Keith's acks, to pci/dpc for v4.8.
I didn't apply the first two because I don't think these port drivers
should be modules. I think DPC and thunderbolt are the only candidates
right now, and I think it's a stretch to think about either one as a
module.
Bjorn
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/4] PCI / DPC: Few improvements
2016-06-21 18:57 ` Bjorn Helgaas
@ 2016-06-22 10:09 ` Mika Westerberg
0 siblings, 0 replies; 9+ messages in thread
From: Mika Westerberg @ 2016-06-22 10:09 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: Bjorn Helgaas, Keith Busch, linux-pci
On Tue, Jun 21, 2016 at 01:57:20PM -0500, Bjorn Helgaas wrote:
> On Mon, Jun 06, 2016 at 04:06:04PM +0300, Mika Westerberg wrote:
> > Hi,
> >
> > This series includes few improvements for the PCIe DPC driver. First we
> > introduce module_pci_port_service() which allows reducing of boilerblate
> > code used in the DPC driver. In addition we convert the driver to use
> > managed resource functions (devm) to get rid of even more boilerblate.
> >
> > I do not have hardware supporting DPC so these are only compile tested.
> >
> > Mika Westerberg (4):
> > PCI / PCIe: Introduce module_pci_port_service()
> > PCI / DPC: Convert to use module_pcie_port_service()
> > PCI / DPC: Convert the driver to use devm_* functions
> > PCI / DPC: Fix whitespace in struct dpc_dev
> >
> > drivers/pci/pcie/pcie-dpc.c | 30 +++++++-----------------------
> > include/linux/pcieport_if.h | 13 +++++++++++++
> > 2 files changed, 20 insertions(+), 23 deletions(-)
>
> I applied the last two, with Keith's acks, to pci/dpc for v4.8.
>
> I didn't apply the first two because I don't think these port drivers
> should be modules. I think DPC and thunderbolt are the only candidates
> right now, and I think it's a stretch to think about either one as a
> module.
Understood. Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2016-06-22 10:09 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-06 13:06 [PATCH 0/4] PCI / DPC: Few improvements Mika Westerberg
2016-06-06 13:06 ` [PATCH 1/4] PCI / PCIe: Introduce module_pci_port_service() Mika Westerberg
2016-06-06 13:06 ` [PATCH 2/4] PCI / DPC: Convert to use module_pcie_port_service() Mika Westerberg
2016-06-06 13:06 ` [PATCH 3/4] PCI / DPC: Convert the driver to use devm_* functions Mika Westerberg
2016-06-06 13:06 ` [PATCH 4/4] PCI / DPC: Fix whitespace in struct dpc_dev Mika Westerberg
2016-06-06 14:44 ` [PATCH 0/4] PCI / DPC: Few improvements Keith Busch
2016-06-17 9:57 ` Mika Westerberg
2016-06-21 18:57 ` Bjorn Helgaas
2016-06-22 10:09 ` Mika Westerberg
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.