* [PATCH 0/3] trivial changes for MSI
@ 2014-07-26 1:48 wangyijing
2014-07-26 1:48 ` [PATCH 1/3] PCI/MSI: Clean up the kobject in struct msi_desc wangyijing
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: wangyijing @ 2014-07-26 1:48 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, Yijing Wang
From: Yijing Wang <wangyijing@huawei.com>
Yijing Wang (3):
PCI/MSI: Clean up the kobject in struct msi_desc
PCI/MSI: Remove msi_desc->msi_attrib.pos
PCI/MSI: Refactor msi_bus to support EP enable/disable MSI
arch/mips/pci/msi-octeon.c | 6 +++---
drivers/pci/host/pcie-designware.c | 2 +-
drivers/pci/msi.c | 13 -------------
drivers/pci/pci-sysfs.c | 12 ++++++------
include/linux/msi.h | 3 ---
5 files changed, 10 insertions(+), 26 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] PCI/MSI: Clean up the kobject in struct msi_desc
2014-07-26 1:48 [PATCH 0/3] trivial changes for MSI wangyijing
@ 2014-07-26 1:48 ` wangyijing
2014-07-27 3:18 ` Greg Kroah-Hartman
2014-07-26 1:48 ` [PATCH 2/3] PCI/MSI: Remove msi_desc->msi_attrib.pos wangyijing
` (2 subsequent siblings)
3 siblings, 1 reply; 6+ messages in thread
From: wangyijing @ 2014-07-26 1:48 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, Yijing Wang, Greg Kroah-Hartman
From: Yijing Wang <wangyijing@huawei.com>
commit 1c51b50c299 exported MSI mode using attributes
instead of kobject. So clean up the kobject in struct
msi_desc.
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
---
drivers/pci/msi.c | 11 -----------
include/linux/msi.h | 2 --
2 files changed, 0 insertions(+), 13 deletions(-)
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 5a40516..e2aa74e 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -384,17 +384,6 @@ static void free_msi_irqs(struct pci_dev *dev)
iounmap(entry->mask_base);
}
- /*
- * Its possible that we get into this path
- * When populate_msi_sysfs fails, which means the entries
- * were not registered with sysfs. In that case don't
- * unregister them.
- */
- if (entry->kobj.parent) {
- kobject_del(&entry->kobj);
- kobject_put(&entry->kobj);
- }
-
list_del(&entry->list);
kfree(entry);
}
diff --git a/include/linux/msi.h b/include/linux/msi.h
index 8103f32..8892d41 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -47,8 +47,6 @@ struct msi_desc {
/* Last set MSI message */
struct msi_msg msg;
-
- struct kobject kobj;
};
/*
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] PCI/MSI: Remove msi_desc->msi_attrib.pos
2014-07-26 1:48 [PATCH 0/3] trivial changes for MSI wangyijing
2014-07-26 1:48 ` [PATCH 1/3] PCI/MSI: Clean up the kobject in struct msi_desc wangyijing
@ 2014-07-26 1:48 ` wangyijing
2014-07-26 1:48 ` [PATCH 3/3] PCI/MSI: Refactor msi_bus to support EP enable/disable MSI wangyijing
2014-08-22 7:46 ` [PATCH 0/3] trivial changes for MSI Yijing Wang
3 siblings, 0 replies; 6+ messages in thread
From: wangyijing @ 2014-07-26 1:48 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, Yijing Wang
From: Yijing Wang <wangyijing@huawei.com>
Use pci_dev->msi/x_cap instead of msi_desc->msi_attrib.pos,
and remove pos member.
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
---
arch/mips/pci/msi-octeon.c | 6 +++---
drivers/pci/host/pcie-designware.c | 2 +-
drivers/pci/msi.c | 2 --
include/linux/msi.h | 1 -
4 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/arch/mips/pci/msi-octeon.c b/arch/mips/pci/msi-octeon.c
index ab0c5d1..c8814be 100644
--- a/arch/mips/pci/msi-octeon.c
+++ b/arch/mips/pci/msi-octeon.c
@@ -73,8 +73,8 @@ int arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc)
* wants. Most devices only want 1, which will give
* configured_private_bits and request_private_bits equal 0.
*/
- pci_read_config_word(dev, desc->msi_attrib.pos + PCI_MSI_FLAGS,
- &control);
+ pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS,
+ &control);
/*
* If the number of private bits has been configured then use
@@ -176,7 +176,7 @@ msi_irq_allocated:
/* Update the number of IRQs the device has available to it */
control &= ~PCI_MSI_FLAGS_QSIZE;
control |= request_private_bits << 4;
- pci_write_config_word(dev, desc->msi_attrib.pos + PCI_MSI_FLAGS,
+ pci_write_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS,
control);
irq_set_msi_desc(irq, desc);
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c
index 52bd3a1..c3706cb 100644
--- a/drivers/pci/host/pcie-designware.c
+++ b/drivers/pci/host/pcie-designware.c
@@ -355,7 +355,7 @@ static int dw_msi_setup_irq(struct msi_chip *chip, struct pci_dev *pdev,
return -EINVAL;
}
- pci_read_config_word(pdev, desc->msi_attrib.pos+PCI_MSI_FLAGS,
+ pci_read_config_word(pdev, pdev->msi_cap + PCI_MSI_FLAGS,
&msg_ctr);
msgvec = (msg_ctr&PCI_MSI_FLAGS_QSIZE) >> 4;
if (msgvec == 0)
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index e2aa74e..0d0f163 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -584,7 +584,6 @@ static struct msi_desc *msi_setup_entry(struct pci_dev *dev)
entry->msi_attrib.entry_nr = 0;
entry->msi_attrib.maskbit = !!(control & PCI_MSI_FLAGS_MASKBIT);
entry->msi_attrib.default_irq = dev->irq; /* Save IOAPIC IRQ */
- entry->msi_attrib.pos = dev->msi_cap;
entry->msi_attrib.multi_cap = (control & PCI_MSI_FLAGS_QMASK) >> 1;
if (control & PCI_MSI_FLAGS_64BIT)
@@ -688,7 +687,6 @@ static int msix_setup_entries(struct pci_dev *dev, void __iomem *base,
entry->msi_attrib.is_64 = 1;
entry->msi_attrib.entry_nr = entries[i].entry;
entry->msi_attrib.default_irq = dev->irq;
- entry->msi_attrib.pos = dev->msix_cap;
entry->mask_base = base;
list_add_tail(&entry->list, &dev->msi_list);
diff --git a/include/linux/msi.h b/include/linux/msi.h
index 8892d41..fff7201 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -29,7 +29,6 @@ struct msi_desc {
__u8 multi_cap : 3; /* log2 num of messages supported */
__u8 maskbit : 1; /* mask-pending bit supported ? */
__u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */
- __u8 pos; /* Location of the msi capability */
__u16 entry_nr; /* specific enabled entry */
unsigned default_irq; /* default pre-assigned irq */
} msi_attrib;
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] PCI/MSI: Refactor msi_bus to support EP enable/disable MSI
2014-07-26 1:48 [PATCH 0/3] trivial changes for MSI wangyijing
2014-07-26 1:48 ` [PATCH 1/3] PCI/MSI: Clean up the kobject in struct msi_desc wangyijing
2014-07-26 1:48 ` [PATCH 2/3] PCI/MSI: Remove msi_desc->msi_attrib.pos wangyijing
@ 2014-07-26 1:48 ` wangyijing
2014-08-22 7:46 ` [PATCH 0/3] trivial changes for MSI Yijing Wang
3 siblings, 0 replies; 6+ messages in thread
From: wangyijing @ 2014-07-26 1:48 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, Yijing Wang
From: Yijing Wang <wangyijing@huawei.com>
Msi_bus attribute is only valid for bridge device.
We can enable or disable MSI capability for a bus,
if we echo 1/0 > /sys/bus/pci/devices/$EP/msi_bus,
the action will be ignored. Sometime we need to
only enable/disable a device MSI, not all devices share
the same bus.
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
---
drivers/pci/pci-sysfs.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index 9ff0a90..b199ad9 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -251,11 +251,9 @@ static ssize_t msi_bus_show(struct device *dev, struct device_attribute *attr,
{
struct pci_dev *pdev = to_pci_dev(dev);
- if (!pdev->subordinate)
- return 0;
-
- return sprintf(buf, "%u\n",
- !(pdev->subordinate->bus_flags & PCI_BUS_FLAGS_NO_MSI));
+ return sprintf(buf, "%u\n", pdev->subordinate ?
+ !(pdev->subordinate->bus_flags & PCI_BUS_FLAGS_NO_MSI)
+ : !pdev->no_msi);
}
static ssize_t msi_bus_store(struct device *dev, struct device_attribute *attr,
@@ -278,8 +276,10 @@ static ssize_t msi_bus_store(struct device *dev, struct device_attribute *attr,
* Maybe devices without subordinate buses shouldn't have this
* attribute in the first place?
*/
- if (!pdev->subordinate)
+ if (!pdev->subordinate) {
+ pdev->no_msi = !val;
return count;
+ }
/* Is the flag going to change, or keep the value it already had? */
if (!(pdev->subordinate->bus_flags & PCI_BUS_FLAGS_NO_MSI) ^
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] PCI/MSI: Clean up the kobject in struct msi_desc
2014-07-26 1:48 ` [PATCH 1/3] PCI/MSI: Clean up the kobject in struct msi_desc wangyijing
@ 2014-07-27 3:18 ` Greg Kroah-Hartman
0 siblings, 0 replies; 6+ messages in thread
From: Greg Kroah-Hartman @ 2014-07-27 3:18 UTC (permalink / raw)
To: wangyijing; +Cc: Bjorn Helgaas, linux-pci
On Sat, Jul 26, 2014 at 09:48:34AM +0800, wangyijing@huawei.com wrote:
> From: Yijing Wang <wangyijing@huawei.com>
>
> commit 1c51b50c299 exported MSI mode using attributes
> instead of kobject. So clean up the kobject in struct
> msi_desc.
>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> drivers/pci/msi.c | 11 -----------
> include/linux/msi.h | 2 --
> 2 files changed, 0 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index 5a40516..e2aa74e 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -384,17 +384,6 @@ static void free_msi_irqs(struct pci_dev *dev)
> iounmap(entry->mask_base);
> }
>
> - /*
> - * Its possible that we get into this path
> - * When populate_msi_sysfs fails, which means the entries
> - * were not registered with sysfs. In that case don't
> - * unregister them.
> - */
> - if (entry->kobj.parent) {
> - kobject_del(&entry->kobj);
> - kobject_put(&entry->kobj);
> - }
> -
> list_del(&entry->list);
> kfree(entry);
> }
> diff --git a/include/linux/msi.h b/include/linux/msi.h
> index 8103f32..8892d41 100644
> --- a/include/linux/msi.h
> +++ b/include/linux/msi.h
> @@ -47,8 +47,6 @@ struct msi_desc {
>
> /* Last set MSI message */
> struct msi_msg msg;
> -
> - struct kobject kobj;
> };
>
> /*
> --
> 1.7.1
Oops, missed that one, nice catch.
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/3] trivial changes for MSI
2014-07-26 1:48 [PATCH 0/3] trivial changes for MSI wangyijing
` (2 preceding siblings ...)
2014-07-26 1:48 ` [PATCH 3/3] PCI/MSI: Refactor msi_bus to support EP enable/disable MSI wangyijing
@ 2014-08-22 7:46 ` Yijing Wang
3 siblings, 0 replies; 6+ messages in thread
From: Yijing Wang @ 2014-08-22 7:46 UTC (permalink / raw)
To: wangyijing, Bjorn Helgaas; +Cc: linux-pci
On 2014/7/26 9:48, wangyijing@huawei.com wrote:
> From: Yijing Wang <wangyijing@huawei.com>
Hi Bjorn, please drop this one, I have sent new version.
Thanks!
Yijing.
>
> Yijing Wang (3):
> PCI/MSI: Clean up the kobject in struct msi_desc
> PCI/MSI: Remove msi_desc->msi_attrib.pos
> PCI/MSI: Refactor msi_bus to support EP enable/disable MSI
>
> arch/mips/pci/msi-octeon.c | 6 +++---
> drivers/pci/host/pcie-designware.c | 2 +-
> drivers/pci/msi.c | 13 -------------
> drivers/pci/pci-sysfs.c | 12 ++++++------
> include/linux/msi.h | 3 ---
> 5 files changed, 10 insertions(+), 26 deletions(-)
>
>
> .
>
--
Thanks!
Yijing
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-08-22 7:46 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-26 1:48 [PATCH 0/3] trivial changes for MSI wangyijing
2014-07-26 1:48 ` [PATCH 1/3] PCI/MSI: Clean up the kobject in struct msi_desc wangyijing
2014-07-27 3:18 ` Greg Kroah-Hartman
2014-07-26 1:48 ` [PATCH 2/3] PCI/MSI: Remove msi_desc->msi_attrib.pos wangyijing
2014-07-26 1:48 ` [PATCH 3/3] PCI/MSI: Refactor msi_bus to support EP enable/disable MSI wangyijing
2014-08-22 7:46 ` [PATCH 0/3] trivial changes for MSI Yijing Wang
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.