linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 5/5] PCI: cadence: Add MSI-X capability to EP driver
@ 2018-08-15 13:49 Alan Douglas
  2018-09-04  4:45 ` Kishon Vijay Abraham I
  0 siblings, 1 reply; 6+ messages in thread
From: Alan Douglas @ 2018-08-15 13:49 UTC (permalink / raw)
  To: bhelgaas
  Cc: kishon, lorenzo.pieralisi, linux-pci, gustavo.pimentel,
	cyrille.pitchen, stelford, Alan Douglas

Add set_msix and get_msix functions to driver, and handle
PCI_EPC_IRQ_MSIX request in raise_irq.  BAR5 is used for
the MSI-X vectors.

Signed-off-by: Alan Douglas <adouglas@cadence.com>
---
 drivers/pci/controller/pcie-cadence-ep.c | 107 ++++++++++++++++++++++++++++++-
 drivers/pci/controller/pcie-cadence.h    |   1 +
 2 files changed, 107 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/controller/pcie-cadence-ep.c b/drivers/pci/controller/pcie-cadence-ep.c
index 1248d75..259b9a6 100644
--- a/drivers/pci/controller/pcie-cadence-ep.c
+++ b/drivers/pci/controller/pcie-cadence-ep.c
@@ -16,6 +16,7 @@
 #define CDNS_PCIE_EP_MIN_APERTURE		128	/* 128 bytes */
 #define CDNS_PCIE_EP_IRQ_PCI_ADDR_NONE		0x1
 #define CDNS_PCIE_EP_IRQ_PCI_ADDR_LEGACY	0x3
+#define CDNS_PCIE_EP_MSIX_BAR			0x5
 
 /**
  * struct cdns_pcie_ep - private data for this PCIe endpoint controller driver
@@ -255,6 +256,43 @@ static int cdns_pcie_ep_get_msi(struct pci_epc *epc, u8 fn)
 	return mme;
 }
 
+static int cdns_pcie_ep_get_msix(struct pci_epc *epc, u8 func_no)
+{
+	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
+	struct cdns_pcie *pcie = &ep->pcie;
+	u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET;
+	u32 val, reg;
+
+	reg = cap + PCI_MSIX_FLAGS;
+	val = cdns_pcie_ep_fn_readw(pcie, func_no, reg);
+	if (!(val & PCI_MSIX_FLAGS_ENABLE))
+		return -EINVAL;
+
+	val &= PCI_MSIX_FLAGS_QSIZE;
+
+	return val;
+}
+
+static int cdns_pcie_ep_set_msix(struct pci_epc *epc, u8 fn, u16 interrupts)
+{
+	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
+	struct cdns_pcie *pcie = &ep->pcie;
+	u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET;
+	u32 val, reg;
+
+	reg = cap + PCI_MSIX_FLAGS;
+	val = cdns_pcie_ep_fn_readw(pcie, fn, reg);
+	val &= ~PCI_MSIX_FLAGS_QSIZE;
+	val |= interrupts;
+	cdns_pcie_ep_fn_writew(pcie, fn, reg, val);
+	/* Set MSIX BAR and offset */
+	cdns_pcie_ep_fn_writel(pcie, fn, 0xb4, CDNS_PCIE_EP_MSIX_BAR);
+	/* Set PBA BAR and offset.  BAR must match MSIX BAR */
+	cdns_pcie_ep_fn_writel(pcie, fn, 0xb8, 0x10000 | CDNS_PCIE_EP_MSIX_BAR);
+
+	return 0;
+}
+
 static void cdns_pcie_ep_assert_intx(struct cdns_pcie_ep *ep, u8 fn,
 				     u8 intx, bool is_asserted)
 {
@@ -366,8 +404,69 @@ static int cdns_pcie_ep_send_msi_irq(struct cdns_pcie_ep *ep, u8 fn,
 	return 0;
 }
 
+static int cdns_pcie_ep_send_msix_irq(struct cdns_pcie_ep *ep, u8 fn,
+				      u16 interrupt_num)
+{
+	struct cdns_pcie *pcie = &ep->pcie;
+	u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET;
+	u16 flags;
+	u64 pci_addr_mask = 0xff;
+	u16 tbl_offset = 0;
+	u32 bar_addr_upper, bar_addr_lower;
+	u32 msg_addr_upper, msg_addr_lower;
+	u32 msg_data;
+	u64 tbl_addr, msg_addr;
+	void __iomem *msix_tbl;
+
+	/* Check whether the MSI-X feature has been enabled by the PCI host. */
+	flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSIX_FLAGS);
+	if (!(flags & PCI_MSIX_FLAGS_ENABLE))
+		return -EINVAL;
+	/* We want local address, not address on host. Table is at offset 0 */
+	bar_addr_lower = cdns_pcie_readl(pcie,
+		CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, CDNS_PCIE_EP_MSIX_BAR));
+	bar_addr_upper = cdns_pcie_readl(pcie,
+		CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, CDNS_PCIE_EP_MSIX_BAR));
+
+	tbl_addr = ((u64)bar_addr_upper) << 32 | bar_addr_lower;
+	tbl_addr += (tbl_offset + ((interrupt_num - 1) * PCI_MSIX_ENTRY_SIZE));
+	tbl_addr &= PCI_BASE_ADDRESS_MEM_MASK;
+	msix_tbl = phys_to_virt(tbl_addr);
+	if (!msix_tbl)
+		return -EINVAL;
+
+	msg_addr_lower = readl(msix_tbl + PCI_MSIX_ENTRY_LOWER_ADDR);
+	msg_addr_upper = readl(msix_tbl + PCI_MSIX_ENTRY_UPPER_ADDR);
+	msg_addr = ((u64)msg_addr_upper) << 32 | msg_addr_lower;
+
+	msg_data = readl(msix_tbl + PCI_MSIX_ENTRY_VECTOR_CTRL);
+	if (msg_data & 0x1)
+		return -EINVAL;
+
+	msg_data = readl(msix_tbl + PCI_MSIX_ENTRY_DATA);
+
+	iounmap(msix_tbl);
+
+	/* Set the outbound region if needed. */
+	if (unlikely(ep->irq_pci_addr != (msg_addr & ~pci_addr_mask) ||
+		     ep->irq_pci_fn != fn)) {
+		/* First region was reserved for IRQ writes. */
+		cdns_pcie_set_outbound_region(pcie, fn, 0,
+					      false,
+					      ep->irq_phys_addr,
+					      msg_addr & ~pci_addr_mask,
+					      pci_addr_mask + 1);
+		ep->irq_pci_addr = (msg_addr & ~pci_addr_mask);
+		ep->irq_pci_fn = fn;
+	}
+	writel(msg_data, ep->irq_cpu_addr + (msg_addr & pci_addr_mask));
+
+	return 0;
+}
+
 static int cdns_pcie_ep_raise_irq(struct pci_epc *epc, u8 fn,
-				  enum pci_epc_irq_type type, u8 interrupt_num)
+				  enum pci_epc_irq_type type,
+				  u16 interrupt_num)
 {
 	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
 	u32 link_status;
@@ -384,6 +483,9 @@ static int cdns_pcie_ep_raise_irq(struct pci_epc *epc, u8 fn,
 	case PCI_EPC_IRQ_MSI:
 		return cdns_pcie_ep_send_msi_irq(ep, fn, interrupt_num);
 
+	case PCI_EPC_IRQ_MSIX:
+		return cdns_pcie_ep_send_msix_irq(ep, fn, interrupt_num);
+
 	default:
 		break;
 	}
@@ -430,6 +532,8 @@ static int cdns_pcie_ep_start(struct pci_epc *epc)
 	.unmap_addr	= cdns_pcie_ep_unmap_addr,
 	.set_msi	= cdns_pcie_ep_set_msi,
 	.get_msi	= cdns_pcie_ep_get_msi,
+	.set_msix	= cdns_pcie_ep_set_msix,
+	.get_msix	= cdns_pcie_ep_get_msix,
 	.raise_irq	= cdns_pcie_ep_raise_irq,
 	.start		= cdns_pcie_ep_start,
 };
@@ -501,6 +605,7 @@ static int cdns_pcie_ep_probe(struct platform_device *pdev)
 	}
 
 	epc_set_drvdata(epc, ep);
+	epc->features |= EPC_FEATURE_MSIX_AVAILABLE;
 
 	if (of_property_read_u8(np, "max-functions", &epc->max_functions) < 0)
 		epc->max_functions = 1;
diff --git a/drivers/pci/controller/pcie-cadence.h b/drivers/pci/controller/pcie-cadence.h
index 4bb2733..bd83b5b 100644
--- a/drivers/pci/controller/pcie-cadence.h
+++ b/drivers/pci/controller/pcie-cadence.h
@@ -93,6 +93,7 @@
 #define CDNS_PCIE_EP_FUNC_BASE(fn)	(((fn) << 12) & GENMASK(19, 12))
 
 #define CDNS_PCIE_EP_FUNC_MSI_CAP_OFFSET	0x90
+#define CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET	0xb0
 
 /*
  * Root Port Registers (PCI configuration space for the root port function)
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 5/5] PCI: cadence: Add MSI-X capability to EP driver
  2018-08-15 13:49 [PATCH v2 5/5] PCI: cadence: Add MSI-X capability to EP driver Alan Douglas
@ 2018-09-04  4:45 ` Kishon Vijay Abraham I
  2018-09-04  9:32   ` Alan Douglas
  0 siblings, 1 reply; 6+ messages in thread
From: Kishon Vijay Abraham I @ 2018-09-04  4:45 UTC (permalink / raw)
  To: Alan Douglas, bhelgaas
  Cc: lorenzo.pieralisi, linux-pci, gustavo.pimentel, cyrille.pitchen,
	stelford

Hi,

On Wednesday 15 August 2018 07:19 PM, Alan Douglas wrote:
> Add set_msix and get_msix functions to driver, and handle
> PCI_EPC_IRQ_MSIX request in raise_irq.  BAR5 is used for
> the MSI-X vectors.
> 
> Signed-off-by: Alan Douglas <adouglas@cadence.com>
> ---
>   drivers/pci/controller/pcie-cadence-ep.c | 107 ++++++++++++++++++++++++++++++-
>   drivers/pci/controller/pcie-cadence.h    |   1 +
>   2 files changed, 107 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/controller/pcie-cadence-ep.c b/drivers/pci/controller/pcie-cadence-ep.c
> index 1248d75..259b9a6 100644
> --- a/drivers/pci/controller/pcie-cadence-ep.c
> +++ b/drivers/pci/controller/pcie-cadence-ep.c
> @@ -16,6 +16,7 @@
>   #define CDNS_PCIE_EP_MIN_APERTURE		128	/* 128 bytes */
>   #define CDNS_PCIE_EP_IRQ_PCI_ADDR_NONE		0x1
>   #define CDNS_PCIE_EP_IRQ_PCI_ADDR_LEGACY	0x3
> +#define CDNS_PCIE_EP_MSIX_BAR			0x5
>   
>   /**
>    * struct cdns_pcie_ep - private data for this PCIe endpoint controller driver
> @@ -255,6 +256,43 @@ static int cdns_pcie_ep_get_msi(struct pci_epc *epc, u8 fn)
>   	return mme;
>   }
>   
> +static int cdns_pcie_ep_get_msix(struct pci_epc *epc, u8 func_no)
> +{
> +	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
> +	struct cdns_pcie *pcie = &ep->pcie;
> +	u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET;
> +	u32 val, reg;
> +
> +	reg = cap + PCI_MSIX_FLAGS;
> +	val = cdns_pcie_ep_fn_readw(pcie, func_no, reg);
> +	if (!(val & PCI_MSIX_FLAGS_ENABLE))
> +		return -EINVAL;
> +
> +	val &= PCI_MSIX_FLAGS_QSIZE;
> +
> +	return val;
> +}
> +
> +static int cdns_pcie_ep_set_msix(struct pci_epc *epc, u8 fn, u16 interrupts)
> +{
> +	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
> +	struct cdns_pcie *pcie = &ep->pcie;
> +	u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET;
> +	u32 val, reg;
> +
> +	reg = cap + PCI_MSIX_FLAGS;
> +	val = cdns_pcie_ep_fn_readw(pcie, fn, reg);
> +	val &= ~PCI_MSIX_FLAGS_QSIZE;
> +	val |= interrupts;
> +	cdns_pcie_ep_fn_writew(pcie, fn, reg, val);
> +	/* Set MSIX BAR and offset */
> +	cdns_pcie_ep_fn_writel(pcie, fn, 0xb4, CDNS_PCIE_EP_MSIX_BAR);

Please add a macro for MSIX table offset.
I think it relies on endpoint function driver to invoke set_bar for 
BAR5? It's possible a function driver can invoke set_msix without set_bar.

> +	/* Set PBA BAR and offset.  BAR must match MSIX BAR */
> +	cdns_pcie_ep_fn_writel(pcie, fn, 0xb8, 0x10000 | CDNS_PCIE_EP_MSIX_BAR);

Here too add a macro for PBA.
How did you get the 0x10000?

Thanks
Kishon

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH v2 5/5] PCI: cadence: Add MSI-X capability to EP driver
  2018-09-04  4:45 ` Kishon Vijay Abraham I
@ 2018-09-04  9:32   ` Alan Douglas
  2018-09-17 15:26     ` Lorenzo Pieralisi
  0 siblings, 1 reply; 6+ messages in thread
From: Alan Douglas @ 2018-09-04  9:32 UTC (permalink / raw)
  To: Kishon Vijay Abraham I, bhelgaas
  Cc: lorenzo.pieralisi, linux-pci, gustavo.pimentel, cyrille.pitchen,
	Scott Telford

SGksDQpPbiAwNCBTZXB0ZW1iZXIgMjAxOCAwNTo0NiwgS2lzaG9uIFZpamF5IEFicmFoYW0gSSB3
cm90ZToNCj4gT24gV2VkbmVzZGF5IDE1IEF1Z3VzdCAyMDE4IDA3OjE5IFBNLCBBbGFuIERvdWds
YXMgd3JvdGU6DQo+ID4gQWRkIHNldF9tc2l4IGFuZCBnZXRfbXNpeCBmdW5jdGlvbnMgdG8gZHJp
dmVyLCBhbmQgaGFuZGxlDQo+ID4gUENJX0VQQ19JUlFfTVNJWCByZXF1ZXN0IGluIHJhaXNlX2ly
cS4gIEJBUjUgaXMgdXNlZCBmb3INCj4gPiB0aGUgTVNJLVggdmVjdG9ycy4NCj4gPg0KPiA+IFNp
Z25lZC1vZmYtYnk6IEFsYW4gRG91Z2xhcyA8YWRvdWdsYXNAY2FkZW5jZS5jb20+DQo+ID4gLS0t
DQo+ID4gICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtY2FkZW5jZS1lcC5jIHwgMTA3ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgIGRyaXZlcnMvcGNpL2NvbnRyb2xs
ZXIvcGNpZS1jYWRlbmNlLmggICAgfCAgIDEgKw0KPiA+ICAgMiBmaWxlcyBjaGFuZ2VkLCAxMDcg
aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl
cnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1jYWRlbmNlLWVwLmMgYi9kcml2ZXJzL3BjaS9jb250cm9s
bGVyL3BjaWUtY2FkZW5jZS1lcC5jDQo+ID4gaW5kZXggMTI0OGQ3NS4uMjU5YjlhNiAxMDA2NDQN
Cj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtY2FkZW5jZS1lcC5jDQo+ID4g
KysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWNhZGVuY2UtZXAuYw0KPiA+IEBAIC0x
Niw2ICsxNiw3IEBADQo+ID4gICAjZGVmaW5lIENETlNfUENJRV9FUF9NSU5fQVBFUlRVUkUJCTEy
OAkvKiAxMjggYnl0ZXMgKi8NCj4gPiAgICNkZWZpbmUgQ0ROU19QQ0lFX0VQX0lSUV9QQ0lfQURE
Ul9OT05FCQkweDENCj4gPiAgICNkZWZpbmUgQ0ROU19QQ0lFX0VQX0lSUV9QQ0lfQUREUl9MRUdB
Q1kJMHgzDQo+ID4gKyNkZWZpbmUgQ0ROU19QQ0lFX0VQX01TSVhfQkFSCQkJMHg1DQo+ID4NCj4g
PiAgIC8qKg0KPiA+ICAgICogc3RydWN0IGNkbnNfcGNpZV9lcCAtIHByaXZhdGUgZGF0YSBmb3Ig
dGhpcyBQQ0llIGVuZHBvaW50IGNvbnRyb2xsZXIgZHJpdmVyDQo+ID4gQEAgLTI1NSw2ICsyNTYs
NDMgQEAgc3RhdGljIGludCBjZG5zX3BjaWVfZXBfZ2V0X21zaShzdHJ1Y3QgcGNpX2VwYyAqZXBj
LCB1OCBmbikNCj4gPiAgIAlyZXR1cm4gbW1lOw0KPiA+ICAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBp
bnQgY2Ruc19wY2llX2VwX2dldF9tc2l4KHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8p
DQo+ID4gK3sNCj4gPiArCXN0cnVjdCBjZG5zX3BjaWVfZXAgKmVwID0gZXBjX2dldF9kcnZkYXRh
KGVwYyk7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19wY2llICpwY2llID0gJmVwLT5wY2llOw0KPiA+ICsJ
dTMyIGNhcCA9IENETlNfUENJRV9FUF9GVU5DX01TSVhfQ0FQX09GRlNFVDsNCj4gPiArCXUzMiB2
YWwsIHJlZzsNCj4gPiArDQo+ID4gKwlyZWcgPSBjYXAgKyBQQ0lfTVNJWF9GTEFHUzsNCj4gPiAr
CXZhbCA9IGNkbnNfcGNpZV9lcF9mbl9yZWFkdyhwY2llLCBmdW5jX25vLCByZWcpOw0KPiA+ICsJ
aWYgKCEodmFsICYgUENJX01TSVhfRkxBR1NfRU5BQkxFKSkNCj4gPiArCQlyZXR1cm4gLUVJTlZB
TDsNCj4gPiArDQo+ID4gKwl2YWwgJj0gUENJX01TSVhfRkxBR1NfUVNJWkU7DQo+ID4gKw0KPiA+
ICsJcmV0dXJuIHZhbDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjZG5zX3BjaWVf
ZXBfc2V0X21zaXgoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZm4sIHUxNiBpbnRlcnJ1cHRzKQ0K
PiA+ICt7DQo+ID4gKwlzdHJ1Y3QgY2Ruc19wY2llX2VwICplcCA9IGVwY19nZXRfZHJ2ZGF0YShl
cGMpOw0KPiA+ICsJc3RydWN0IGNkbnNfcGNpZSAqcGNpZSA9ICZlcC0+cGNpZTsNCj4gPiArCXUz
MiBjYXAgPSBDRE5TX1BDSUVfRVBfRlVOQ19NU0lYX0NBUF9PRkZTRVQ7DQo+ID4gKwl1MzIgdmFs
LCByZWc7DQo+ID4gKw0KPiA+ICsJcmVnID0gY2FwICsgUENJX01TSVhfRkxBR1M7DQo+ID4gKwl2
YWwgPSBjZG5zX3BjaWVfZXBfZm5fcmVhZHcocGNpZSwgZm4sIHJlZyk7DQo+ID4gKwl2YWwgJj0g
flBDSV9NU0lYX0ZMQUdTX1FTSVpFOw0KPiA+ICsJdmFsIHw9IGludGVycnVwdHM7DQo+ID4gKwlj
ZG5zX3BjaWVfZXBfZm5fd3JpdGV3KHBjaWUsIGZuLCByZWcsIHZhbCk7DQo+ID4gKwkvKiBTZXQg
TVNJWCBCQVIgYW5kIG9mZnNldCAqLw0KPiA+ICsJY2Ruc19wY2llX2VwX2ZuX3dyaXRlbChwY2ll
LCBmbiwgMHhiNCwgQ0ROU19QQ0lFX0VQX01TSVhfQkFSKTsNCj4gDQo+IFBsZWFzZSBhZGQgYSBt
YWNybyBmb3IgTVNJWCB0YWJsZSBvZmZzZXQuDQo+IEkgdGhpbmsgaXQgcmVsaWVzIG9uIGVuZHBv
aW50IGZ1bmN0aW9uIGRyaXZlciB0byBpbnZva2Ugc2V0X2JhciBmb3INCj4gQkFSNT8gSXQncyBw
b3NzaWJsZSBhIGZ1bmN0aW9uIGRyaXZlciBjYW4gaW52b2tlIHNldF9tc2l4IHdpdGhvdXQgc2V0
X2Jhci4NCj4gDQpJJ2xsIGFkZCBhIG1hY3JvIGZvciBNU0lYIHRhYmxlIG9mZnNldC4NClllcywg
aXQgcmVsaWVzIG9uIHRoZSBCQVIgYmVpbmcgc2V0IHVwIGFscmVhZHkuICBJJ2xsIGFkZCBjb2Rl
IHRvIGNoZWNrIEJBUg0KZXhpc3RzIGFuZCBpcyBsYXJnZSBlbm91Z2gsIGFuZCBjcmVhdGUgaXQg
aWYgbm90Lg0KDQo+ID4gKwkvKiBTZXQgUEJBIEJBUiBhbmQgb2Zmc2V0LiAgQkFSIG11c3QgbWF0
Y2ggTVNJWCBCQVIgKi8NCj4gPiArCWNkbnNfcGNpZV9lcF9mbl93cml0ZWwocGNpZSwgZm4sIDB4
YjgsIDB4MTAwMDAgfCBDRE5TX1BDSUVfRVBfTVNJWF9CQVIpOw0KPiANCj4gSGVyZSB0b28gYWRk
IGEgbWFjcm8gZm9yIFBCQS4NCj4gSG93IGRpZCB5b3UgZ2V0IHRoZSAweDEwMDAwPw0KSSdsbCBh
ZGQgYSBtYWNybyBmb3IgUEJBLg0KVGhlIDB4MTAwMDAgKDMyKjIwNDgpIGlzIHRvIGFsbG93IHNw
YWNlIGluIHRoZSBCQVIgZm9yIDIwNDggTVNJLVggdmVjdG9ycyBiZW5lYXRoDQp0aGUgUEJBLiBB
Y3R1YWxseSwgSSBjb3VsZCBjaGFuZ2UgdGhpcyB0byAzMippbnRlcnJ1cHRzIHNvIHRoYXQgdGhl
IEJBUiBzaXplIGNhbiBiZQ0KbWluaW1pemVkIGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIE1T
SS1YIHByb2dyYW1tZWQuDQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cywNCkFsYW4NCg==

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 5/5] PCI: cadence: Add MSI-X capability to EP driver
  2018-09-04  9:32   ` Alan Douglas
@ 2018-09-17 15:26     ` Lorenzo Pieralisi
  2018-09-17 15:55       ` Alan Douglas
  0 siblings, 1 reply; 6+ messages in thread
From: Lorenzo Pieralisi @ 2018-09-17 15:26 UTC (permalink / raw)
  To: Alan Douglas
  Cc: Kishon Vijay Abraham I, bhelgaas, linux-pci, gustavo.pimentel,
	cyrille.pitchen, Scott Telford

On Tue, Sep 04, 2018 at 09:32:56AM +0000, Alan Douglas wrote:
> Hi,
> On 04 September 2018 05:46, Kishon Vijay Abraham I wrote:
> > On Wednesday 15 August 2018 07:19 PM, Alan Douglas wrote:
> > > Add set_msix and get_msix functions to driver, and handle
> > > PCI_EPC_IRQ_MSIX request in raise_irq.  BAR5 is used for
> > > the MSI-X vectors.
> > >
> > > Signed-off-by: Alan Douglas <adouglas@cadence.com>
> > > ---
> > >   drivers/pci/controller/pcie-cadence-ep.c | 107 ++++++++++++++++++++++++++++++-
> > >   drivers/pci/controller/pcie-cadence.h    |   1 +
> > >   2 files changed, 107 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/pci/controller/pcie-cadence-ep.c b/drivers/pci/controller/pcie-cadence-ep.c
> > > index 1248d75..259b9a6 100644
> > > --- a/drivers/pci/controller/pcie-cadence-ep.c
> > > +++ b/drivers/pci/controller/pcie-cadence-ep.c
> > > @@ -16,6 +16,7 @@
> > >   #define CDNS_PCIE_EP_MIN_APERTURE		128	/* 128 bytes */
> > >   #define CDNS_PCIE_EP_IRQ_PCI_ADDR_NONE		0x1
> > >   #define CDNS_PCIE_EP_IRQ_PCI_ADDR_LEGACY	0x3
> > > +#define CDNS_PCIE_EP_MSIX_BAR			0x5
> > >
> > >   /**
> > >    * struct cdns_pcie_ep - private data for this PCIe endpoint controller driver
> > > @@ -255,6 +256,43 @@ static int cdns_pcie_ep_get_msi(struct pci_epc *epc, u8 fn)
> > >   	return mme;
> > >   }
> > >
> > > +static int cdns_pcie_ep_get_msix(struct pci_epc *epc, u8 func_no)
> > > +{
> > > +	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
> > > +	struct cdns_pcie *pcie = &ep->pcie;
> > > +	u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET;
> > > +	u32 val, reg;
> > > +
> > > +	reg = cap + PCI_MSIX_FLAGS;
> > > +	val = cdns_pcie_ep_fn_readw(pcie, func_no, reg);
> > > +	if (!(val & PCI_MSIX_FLAGS_ENABLE))
> > > +		return -EINVAL;
> > > +
> > > +	val &= PCI_MSIX_FLAGS_QSIZE;
> > > +
> > > +	return val;
> > > +}
> > > +
> > > +static int cdns_pcie_ep_set_msix(struct pci_epc *epc, u8 fn, u16 interrupts)
> > > +{
> > > +	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
> > > +	struct cdns_pcie *pcie = &ep->pcie;
> > > +	u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET;
> > > +	u32 val, reg;
> > > +
> > > +	reg = cap + PCI_MSIX_FLAGS;
> > > +	val = cdns_pcie_ep_fn_readw(pcie, fn, reg);
> > > +	val &= ~PCI_MSIX_FLAGS_QSIZE;
> > > +	val |= interrupts;
> > > +	cdns_pcie_ep_fn_writew(pcie, fn, reg, val);
> > > +	/* Set MSIX BAR and offset */
> > > +	cdns_pcie_ep_fn_writel(pcie, fn, 0xb4, CDNS_PCIE_EP_MSIX_BAR);
> > 
> > Please add a macro for MSIX table offset.
> > I think it relies on endpoint function driver to invoke set_bar for
> > BAR5? It's possible a function driver can invoke set_msix without set_bar.
> > 
> I'll add a macro for MSIX table offset.
> Yes, it relies on the BAR being set up already.  I'll add code to check BAR
> exists and is large enough, and create it if not.
> 
> > > +	/* Set PBA BAR and offset.  BAR must match MSIX BAR */
> > > +	cdns_pcie_ep_fn_writel(pcie, fn, 0xb8, 0x10000 | CDNS_PCIE_EP_MSIX_BAR);
> > 
> > Here too add a macro for PBA.
> > How did you get the 0x10000?
> I'll add a macro for PBA.
> The 0x10000 (32*2048) is to allow space in the BAR for 2048 MSI-X vectors beneath
> the PBA. Actually, I could change this to 32*interrupts so that the BAR size can be
> minimized depending on the number of MSI-X programmed.
> 
> Thanks for your comments,
> Alan

Hi Alan,

should I expect a v3 for this series to address Kishon's comments ?
Please let me know, the previous fixes look OK to me.

Thanks,
Lorenzo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH v2 5/5] PCI: cadence: Add MSI-X capability to EP driver
  2018-09-17 15:26     ` Lorenzo Pieralisi
@ 2018-09-17 15:55       ` Alan Douglas
  2018-09-17 15:55         ` Alan Douglas
  0 siblings, 1 reply; 6+ messages in thread
From: Alan Douglas @ 2018-09-17 15:55 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Kishon Vijay Abraham I, bhelgaas, linux-pci, gustavo.pimentel,
	cyrille.pitchen, Scott Telford

SGkgTG9yZW56bywNCg0KT24gMTcgU2VwdGVtYmVyIDIwMTggMTY6MjYgTG9yZW56byBQaWVyYWxp
c2kgd3JvdGU6DQo+IE9uIFR1ZSwgU2VwIDA0LCAyMDE4IGF0IDA5OjMyOjU2QU0gKzAwMDAsIEFs
YW4gRG91Z2xhcyB3cm90ZToNCj4gPiBIaSwNCj4gPiBPbiAwNCBTZXB0ZW1iZXIgMjAxOCAwNTo0
NiwgS2lzaG9uIFZpamF5IEFicmFoYW0gSSB3cm90ZToNCj4gPiA+IE9uIFdlZG5lc2RheSAxNSBB
dWd1c3QgMjAxOCAwNzoxOSBQTSwgQWxhbiBEb3VnbGFzIHdyb3RlOg0KPiA+ID4gPiBBZGQgc2V0
X21zaXggYW5kIGdldF9tc2l4IGZ1bmN0aW9ucyB0byBkcml2ZXIsIGFuZCBoYW5kbGUNCj4gPiA+
ID4gUENJX0VQQ19JUlFfTVNJWCByZXF1ZXN0IGluIHJhaXNlX2lycS4gIEJBUjUgaXMgdXNlZCBm
b3INCj4gPiA+ID4gdGhlIE1TSS1YIHZlY3RvcnMuDQo+ID4gPiA+DQo+ID4gPiA+IFNpZ25lZC1v
ZmYtYnk6IEFsYW4gRG91Z2xhcyA8YWRvdWdsYXNAY2FkZW5jZS5jb20+DQo+ID4gPiA+IC0tLQ0K
PiA+ID4gPiAgIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1jYWRlbmNlLWVwLmMgfCAxMDcg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiA+ID4gPiAgIGRyaXZlcnMvcGNpL2Nv
bnRyb2xsZXIvcGNpZS1jYWRlbmNlLmggICAgfCAgIDEgKw0KPiA+ID4gPiAgIDIgZmlsZXMgY2hh
bmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPiA+ID4NCj4gPiA+ID4g
ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1jYWRlbmNlLWVwLmMgYi9k
cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtY2FkZW5jZS1lcC5jDQo+ID4gPiA+IGluZGV4IDEy
NDhkNzUuLjI1OWI5YTYgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xs
ZXIvcGNpZS1jYWRlbmNlLWVwLmMNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxl
ci9wY2llLWNhZGVuY2UtZXAuYw0KPiA+ID4gPiBAQCAtMTYsNiArMTYsNyBAQA0KPiA+ID4gPiAg
ICNkZWZpbmUgQ0ROU19QQ0lFX0VQX01JTl9BUEVSVFVSRQkJMTI4CS8qIDEyOCBieXRlcyAqLw0K
PiA+ID4gPiAgICNkZWZpbmUgQ0ROU19QQ0lFX0VQX0lSUV9QQ0lfQUREUl9OT05FCQkweDENCj4g
PiA+ID4gICAjZGVmaW5lIENETlNfUENJRV9FUF9JUlFfUENJX0FERFJfTEVHQUNZCTB4Mw0KPiA+
ID4gPiArI2RlZmluZSBDRE5TX1BDSUVfRVBfTVNJWF9CQVIJCQkweDUNCj4gPiA+ID4NCj4gPiA+
ID4gICAvKioNCj4gPiA+ID4gICAgKiBzdHJ1Y3QgY2Ruc19wY2llX2VwIC0gcHJpdmF0ZSBkYXRh
IGZvciB0aGlzIFBDSWUgZW5kcG9pbnQgY29udHJvbGxlciBkcml2ZXINCj4gPiA+ID4gQEAgLTI1
NSw2ICsyNTYsNDMgQEAgc3RhdGljIGludCBjZG5zX3BjaWVfZXBfZ2V0X21zaShzdHJ1Y3QgcGNp
X2VwYyAqZXBjLCB1OCBmbikNCj4gPiA+ID4gICAJcmV0dXJuIG1tZTsNCj4gPiA+ID4gICB9DQo+
ID4gPiA+DQo+ID4gPiA+ICtzdGF0aWMgaW50IGNkbnNfcGNpZV9lcF9nZXRfbXNpeChzdHJ1Y3Qg
cGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXN0cnVjdCBj
ZG5zX3BjaWVfZXAgKmVwID0gZXBjX2dldF9kcnZkYXRhKGVwYyk7DQo+ID4gPiA+ICsJc3RydWN0
IGNkbnNfcGNpZSAqcGNpZSA9ICZlcC0+cGNpZTsNCj4gPiA+ID4gKwl1MzIgY2FwID0gQ0ROU19Q
Q0lFX0VQX0ZVTkNfTVNJWF9DQVBfT0ZGU0VUOw0KPiA+ID4gPiArCXUzMiB2YWwsIHJlZzsNCj4g
PiA+ID4gKw0KPiA+ID4gPiArCXJlZyA9IGNhcCArIFBDSV9NU0lYX0ZMQUdTOw0KPiA+ID4gPiAr
CXZhbCA9IGNkbnNfcGNpZV9lcF9mbl9yZWFkdyhwY2llLCBmdW5jX25vLCByZWcpOw0KPiA+ID4g
PiArCWlmICghKHZhbCAmIFBDSV9NU0lYX0ZMQUdTX0VOQUJMRSkpDQo+ID4gPiA+ICsJCXJldHVy
biAtRUlOVkFMOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJdmFsICY9IFBDSV9NU0lYX0ZMQUdTX1FT
SVpFOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIHZhbDsNCj4gPiA+ID4gK30NCj4gPiA+
ID4gKw0KPiA+ID4gPiArc3RhdGljIGludCBjZG5zX3BjaWVfZXBfc2V0X21zaXgoc3RydWN0IHBj
aV9lcGMgKmVwYywgdTggZm4sIHUxNiBpbnRlcnJ1cHRzKQ0KPiA+ID4gPiArew0KPiA+ID4gPiAr
CXN0cnVjdCBjZG5zX3BjaWVfZXAgKmVwID0gZXBjX2dldF9kcnZkYXRhKGVwYyk7DQo+ID4gPiA+
ICsJc3RydWN0IGNkbnNfcGNpZSAqcGNpZSA9ICZlcC0+cGNpZTsNCj4gPiA+ID4gKwl1MzIgY2Fw
ID0gQ0ROU19QQ0lFX0VQX0ZVTkNfTVNJWF9DQVBfT0ZGU0VUOw0KPiA+ID4gPiArCXUzMiB2YWws
IHJlZzsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJlZyA9IGNhcCArIFBDSV9NU0lYX0ZMQUdTOw0K
PiA+ID4gPiArCXZhbCA9IGNkbnNfcGNpZV9lcF9mbl9yZWFkdyhwY2llLCBmbiwgcmVnKTsNCj4g
PiA+ID4gKwl2YWwgJj0gflBDSV9NU0lYX0ZMQUdTX1FTSVpFOw0KPiA+ID4gPiArCXZhbCB8PSBp
bnRlcnJ1cHRzOw0KPiA+ID4gPiArCWNkbnNfcGNpZV9lcF9mbl93cml0ZXcocGNpZSwgZm4sIHJl
ZywgdmFsKTsNCj4gPiA+ID4gKwkvKiBTZXQgTVNJWCBCQVIgYW5kIG9mZnNldCAqLw0KPiA+ID4g
PiArCWNkbnNfcGNpZV9lcF9mbl93cml0ZWwocGNpZSwgZm4sIDB4YjQsIENETlNfUENJRV9FUF9N
U0lYX0JBUik7DQo+ID4gPg0KPiA+ID4gUGxlYXNlIGFkZCBhIG1hY3JvIGZvciBNU0lYIHRhYmxl
IG9mZnNldC4NCj4gPiA+IEkgdGhpbmsgaXQgcmVsaWVzIG9uIGVuZHBvaW50IGZ1bmN0aW9uIGRy
aXZlciB0byBpbnZva2Ugc2V0X2JhciBmb3INCj4gPiA+IEJBUjU/IEl0J3MgcG9zc2libGUgYSBm
dW5jdGlvbiBkcml2ZXIgY2FuIGludm9rZSBzZXRfbXNpeCB3aXRob3V0IHNldF9iYXIuDQo+ID4g
Pg0KPiA+IEknbGwgYWRkIGEgbWFjcm8gZm9yIE1TSVggdGFibGUgb2Zmc2V0Lg0KPiA+IFllcywg
aXQgcmVsaWVzIG9uIHRoZSBCQVIgYmVpbmcgc2V0IHVwIGFscmVhZHkuICBJJ2xsIGFkZCBjb2Rl
IHRvIGNoZWNrIEJBUg0KPiA+IGV4aXN0cyBhbmQgaXMgbGFyZ2UgZW5vdWdoLCBhbmQgY3JlYXRl
IGl0IGlmIG5vdC4NCj4gPg0KPiA+ID4gPiArCS8qIFNldCBQQkEgQkFSIGFuZCBvZmZzZXQuICBC
QVIgbXVzdCBtYXRjaCBNU0lYIEJBUiAqLw0KPiA+ID4gPiArCWNkbnNfcGNpZV9lcF9mbl93cml0
ZWwocGNpZSwgZm4sIDB4YjgsIDB4MTAwMDAgfCBDRE5TX1BDSUVfRVBfTVNJWF9CQVIpOw0KPiA+
ID4NCj4gPiA+IEhlcmUgdG9vIGFkZCBhIG1hY3JvIGZvciBQQkEuDQo+ID4gPiBIb3cgZGlkIHlv
dSBnZXQgdGhlIDB4MTAwMDA/DQo+ID4gSSdsbCBhZGQgYSBtYWNybyBmb3IgUEJBLg0KPiA+IFRo
ZSAweDEwMDAwICgzMioyMDQ4KSBpcyB0byBhbGxvdyBzcGFjZSBpbiB0aGUgQkFSIGZvciAyMDQ4
IE1TSS1YIHZlY3RvcnMgYmVuZWF0aA0KPiA+IHRoZSBQQkEuIEFjdHVhbGx5LCBJIGNvdWxkIGNo
YW5nZSB0aGlzIHRvIDMyKmludGVycnVwdHMgc28gdGhhdCB0aGUgQkFSIHNpemUgY2FuIGJlDQo+
ID4gbWluaW1pemVkIGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIE1TSS1YIHByb2dyYW1tZWQu
DQo+ID4NCj4gPiBUaGFua3MgZm9yIHlvdXIgY29tbWVudHMsDQo+ID4gQWxhbg0KPiANCj4gSGkg
QWxhbiwNCj4gDQo+IHNob3VsZCBJIGV4cGVjdCBhIHYzIGZvciB0aGlzIHNlcmllcyB0byBhZGRy
ZXNzIEtpc2hvbidzIGNvbW1lbnRzID8NCj4gUGxlYXNlIGxldCBtZSBrbm93LCB0aGUgcHJldmlv
dXMgZml4ZXMgbG9vayBPSyB0byBtZS4NCj4gDQpJJ20gcHJlcGFyaW5nIGEgdjMgd2hpY2ggd2ls
bCBjaGVjayB0aGF0IHRoZSBCQVIgdG8gYmUgdXNlZCBmb3IgTVNJLVgNCmhhcyBiZWVuIHNldCB1
cCwgYW5kIHdpbGwgcmV0dXJuIC1FSU5WQUwgaWYgbm90LiAgSSBjb3VsZG4ndCBmaW5kIGENCnN1
aXRhYmxlIHdheSB0byBhbGxvY2F0ZSB0aGUgQkFSIGluc2lkZSB0aGUgc2V0X21zaXggZnVuY3Rp
b24uDQpJdCB3aWxsIGFsc28gYWRkcmVzcyBLaXNob24ncyBvdGhlciBjb21tZW50cy4NCg0KSSBl
eHBlY3QgdG8gc2VuZCBpdCB0b21vcnJvdywganVzdCBiYWNrIGZyb20gaG9saWRheSB0b2RheS4N
Cg0KUmVnYXJkcywNCkFsYW4NCiANCg==

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH v2 5/5] PCI: cadence: Add MSI-X capability to EP driver
  2018-09-17 15:55       ` Alan Douglas
@ 2018-09-17 15:55         ` Alan Douglas
  0 siblings, 0 replies; 6+ messages in thread
From: Alan Douglas @ 2018-09-17 15:55 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Kishon Vijay Abraham I, bhelgaas, linux-pci, gustavo.pimentel,
	cyrille.pitchen, Scott Telford

Hi Lorenzo,

On 17 September 2018 16:26 Lorenzo Pieralisi wrote:
> On Tue, Sep 04, 2018 at 09:32:56AM +0000, Alan Douglas wrote:
> > Hi,
> > On 04 September 2018 05:46, Kishon Vijay Abraham I wrote:
> > > On Wednesday 15 August 2018 07:19 PM, Alan Douglas wrote:
> > > > Add set_msix and get_msix functions to driver, and handle
> > > > PCI_EPC_IRQ_MSIX request in raise_irq.  BAR5 is used for
> > > > the MSI-X vectors.
> > > >
> > > > Signed-off-by: Alan Douglas <adouglas@cadence.com>
> > > > ---
> > > >   drivers/pci/controller/pcie-cadence-ep.c | 107 ++++++++++++++++++++++++++++++-
> > > >   drivers/pci/controller/pcie-cadence.h    |   1 +
> > > >   2 files changed, 107 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/pci/controller/pcie-cadence-ep.c b/drivers/pci/controller/pcie-cadence-ep.c
> > > > index 1248d75..259b9a6 100644
> > > > --- a/drivers/pci/controller/pcie-cadence-ep.c
> > > > +++ b/drivers/pci/controller/pcie-cadence-ep.c
> > > > @@ -16,6 +16,7 @@
> > > >   #define CDNS_PCIE_EP_MIN_APERTURE		128	/* 128 bytes */
> > > >   #define CDNS_PCIE_EP_IRQ_PCI_ADDR_NONE		0x1
> > > >   #define CDNS_PCIE_EP_IRQ_PCI_ADDR_LEGACY	0x3
> > > > +#define CDNS_PCIE_EP_MSIX_BAR			0x5
> > > >
> > > >   /**
> > > >    * struct cdns_pcie_ep - private data for this PCIe endpoint controller driver
> > > > @@ -255,6 +256,43 @@ static int cdns_pcie_ep_get_msi(struct pci_epc *epc, u8 fn)
> > > >   	return mme;
> > > >   }
> > > >
> > > > +static int cdns_pcie_ep_get_msix(struct pci_epc *epc, u8 func_no)
> > > > +{
> > > > +	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
> > > > +	struct cdns_pcie *pcie = &ep->pcie;
> > > > +	u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET;
> > > > +	u32 val, reg;
> > > > +
> > > > +	reg = cap + PCI_MSIX_FLAGS;
> > > > +	val = cdns_pcie_ep_fn_readw(pcie, func_no, reg);
> > > > +	if (!(val & PCI_MSIX_FLAGS_ENABLE))
> > > > +		return -EINVAL;
> > > > +
> > > > +	val &= PCI_MSIX_FLAGS_QSIZE;
> > > > +
> > > > +	return val;
> > > > +}
> > > > +
> > > > +static int cdns_pcie_ep_set_msix(struct pci_epc *epc, u8 fn, u16 interrupts)
> > > > +{
> > > > +	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
> > > > +	struct cdns_pcie *pcie = &ep->pcie;
> > > > +	u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET;
> > > > +	u32 val, reg;
> > > > +
> > > > +	reg = cap + PCI_MSIX_FLAGS;
> > > > +	val = cdns_pcie_ep_fn_readw(pcie, fn, reg);
> > > > +	val &= ~PCI_MSIX_FLAGS_QSIZE;
> > > > +	val |= interrupts;
> > > > +	cdns_pcie_ep_fn_writew(pcie, fn, reg, val);
> > > > +	/* Set MSIX BAR and offset */
> > > > +	cdns_pcie_ep_fn_writel(pcie, fn, 0xb4, CDNS_PCIE_EP_MSIX_BAR);
> > >
> > > Please add a macro for MSIX table offset.
> > > I think it relies on endpoint function driver to invoke set_bar for
> > > BAR5? It's possible a function driver can invoke set_msix without set_bar.
> > >
> > I'll add a macro for MSIX table offset.
> > Yes, it relies on the BAR being set up already.  I'll add code to check BAR
> > exists and is large enough, and create it if not.
> >
> > > > +	/* Set PBA BAR and offset.  BAR must match MSIX BAR */
> > > > +	cdns_pcie_ep_fn_writel(pcie, fn, 0xb8, 0x10000 | CDNS_PCIE_EP_MSIX_BAR);
> > >
> > > Here too add a macro for PBA.
> > > How did you get the 0x10000?
> > I'll add a macro for PBA.
> > The 0x10000 (32*2048) is to allow space in the BAR for 2048 MSI-X vectors beneath
> > the PBA. Actually, I could change this to 32*interrupts so that the BAR size can be
> > minimized depending on the number of MSI-X programmed.
> >
> > Thanks for your comments,
> > Alan
> 
> Hi Alan,
> 
> should I expect a v3 for this series to address Kishon's comments ?
> Please let me know, the previous fixes look OK to me.
> 
I'm preparing a v3 which will check that the BAR to be used for MSI-X
has been set up, and will return -EINVAL if not.  I couldn't find a
suitable way to allocate the BAR inside the set_msix function.
It will also address Kishon's other comments.

I expect to send it tomorrow, just back from holiday today.

Regards,
Alan
 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-09-17 22:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-15 13:49 [PATCH v2 5/5] PCI: cadence: Add MSI-X capability to EP driver Alan Douglas
2018-09-04  4:45 ` Kishon Vijay Abraham I
2018-09-04  9:32   ` Alan Douglas
2018-09-17 15:26     ` Lorenzo Pieralisi
2018-09-17 15:55       ` Alan Douglas
2018-09-17 15:55         ` Alan Douglas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).