Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751540AbeACHcG (ORCPT + 1 other); Wed, 3 Jan 2018 02:32:06 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:39066 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751150AbeACHcF (ORCPT ); Wed, 3 Jan 2018 02:32:05 -0500 Subject: Re: [PATCH 04/13] powerpc/powernv: Add platform-specific services for opencapi To: Frederic Barrat , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Cc: arnd@arndb.de, gregkh@linuxfoundation.org, mpe@ellerman.id.au, alastair@au1.ibm.com References: From: Andrew Donnellan Date: Wed, 3 Jan 2018 18:31:56 +1100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-AU Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 x-cbid: 18010307-0012-0000-0000-0000059F1C2A X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18010307-0013-0000-0000-0000191A659D Message-Id: <8ac007be-bbb5-ed4f-96b1-01f008252a11@au1.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-01-03_04:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1801030105 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On 19/12/17 02:21, Frederic Barrat wrote: > Implement a few platform-specific calls which can be used by drivers: > > - provide the Transaction Layer capabilities of the host, so that the > driver can find some common ground and configure the device and host > appropriately. > > - provide the hw interrupt to be used for translation faults raised by > the NPU > > - map/unmap some NPU mmio registers to get the fault context when the > NPU raises an address translation fault > > The rest are wrappers around the previously-introduced opal calls. > > > Signed-off-by: Frederic Barrat > --- > arch/powerpc/include/asm/pnv-ocxl.h | 36 ++++++ > arch/powerpc/platforms/powernv/Makefile | 1 + > arch/powerpc/platforms/powernv/ocxl.c | 187 ++++++++++++++++++++++++++++++++ > 3 files changed, 224 insertions(+) > create mode 100644 arch/powerpc/include/asm/pnv-ocxl.h > create mode 100644 arch/powerpc/platforms/powernv/ocxl.c > > diff --git a/arch/powerpc/include/asm/pnv-ocxl.h b/arch/powerpc/include/asm/pnv-ocxl.h > new file mode 100644 > index 000000000000..b9ab3f0a9634 > --- /dev/null > +++ b/arch/powerpc/include/asm/pnv-ocxl.h > @@ -0,0 +1,36 @@ > +/* > + * Copyright 2017 IBM Corp. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version > + * 2 of the License, or (at your option) any later version. > + */ > + > +#ifndef _ASM_PVN_OCXL_H > +#define _ASM_PVN_OCXL_H I assume you meant "PNV" here. > + > +#include > + > +#define PNV_OCXL_TL_MAX_TEMPLATE 63 > +#define PNV_OCXL_TL_BITS_PER_RATE 4 > +#define PNV_OCXL_TL_RATE_BUF_SIZE ((PNV_OCXL_TL_MAX_TEMPLATE+1) * PNV_OCXL_TL_BITS_PER_RATE / 8) > + > +extern int pnv_ocxl_get_tl_cap(struct pci_dev *dev, long *cap, > + char *rate_buf, int rate_buf_size); > +extern int pnv_ocxl_set_tl_conf(struct pci_dev *dev, long cap, > + uint64_t rate_buf_phys, int rate_buf_size); > + > +extern int pnv_ocxl_get_xsl_irq(struct pci_dev *dev, int *hwirq); > +extern void pnv_ocxl_unmap_xsl_regs(void __iomem *dsisr, void __iomem *dar, > + void __iomem *tfc, void __iomem *pe_handle); > +extern int pnv_ocxl_map_xsl_regs(struct pci_dev *dev, void __iomem **dsisr, > + void __iomem **dar, void __iomem **tfc, > + void __iomem **pe_handle); > + > +extern int pnv_ocxl_spa_setup(struct pci_dev *dev, void *spa_mem, int PE_mask, > + void **platform_data); > +extern void pnv_ocxl_spa_release(void *platform_data); > +extern int pnv_ocxl_spa_remove_pe(void *platform_data, int pe_handle); > + > +#endif /* _ASM_PVN_OCXL_H */ And here > diff --git a/arch/powerpc/platforms/powernv/Makefile b/arch/powerpc/platforms/powernv/Makefile > index 3732118a0482..6c9d5199a7e2 100644 > --- a/arch/powerpc/platforms/powernv/Makefile > +++ b/arch/powerpc/platforms/powernv/Makefile > @@ -17,3 +17,4 @@ obj-$(CONFIG_PERF_EVENTS) += opal-imc.o > obj-$(CONFIG_PPC_MEMTRACE) += memtrace.o > obj-$(CONFIG_PPC_VAS) += vas.o vas-window.o vas-debug.o > obj-$(CONFIG_PPC_FTW) += nx-ftw.o > +obj-$(CONFIG_OCXL_BASE) += ocxl.o > diff --git a/arch/powerpc/platforms/powernv/ocxl.c b/arch/powerpc/platforms/powernv/ocxl.c > new file mode 100644 > index 000000000000..3378b75cf5e5 > --- /dev/null > +++ b/arch/powerpc/platforms/powernv/ocxl.c > +int pnv_ocxl_get_xsl_irq(struct pci_dev *dev, int *hwirq) > +{ > + int rc; > + > + rc = of_property_read_u32(dev->dev.of_node, "ibm,opal-xsl-irq", hwirq); > + if (rc) { > + dev_err(&dev->dev, > + "Can't translation xsl interrupt for device\n"); Can't get? -- Andrew Donnellan OzLabs, ADL Canberra andrew.donnellan@au1.ibm.com IBM Australia Limited