Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp3241028pxb; Tue, 20 Apr 2021 04:02:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyGoDIRf/bPy/04l6s1KPOA4VV+PtApJWTOM4LRBVlUFaaKKumWbyLsq+4n+98THrljF56f X-Received: by 2002:aa7:95aa:0:b029:256:143:e5d8 with SMTP id a10-20020aa795aa0000b02902560143e5d8mr23869942pfk.67.1618916522677; Tue, 20 Apr 2021 04:02:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618916522; cv=none; d=google.com; s=arc-20160816; b=BrdIFqgdqPstqS0lXizJKM3+eQgJ8X6Zn2QolZ/FEkj9V2NNK/s80NS3D/Ofac0xKP 2+3il0xVutO4EOx4gmvVT+cfXDM93MFGs6x7NXhK2raZMkIlt52Kp0+fOUr5t9/Bu7c2 ObY5bGbjslEtR3prmJ0nWTZUDKtdt1UsK1q57rBgReCRfnN6VzRDLlG1TDWKpaAk5aUW 9DDFUpHY+RVAW/jvlEhxZV2DtnRt1WkaXijZDdfjjcP/w/KgMAg7QgBBafUG2hYqsY5M XEg6wsXcU5MOOpJpJsDqCS7n6XgLqyAHrTV/vDdSvLB0v5B/rnipWNmJNOLCQQCrRUT1 lj4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:subject:cc:to:from:message-id :date; bh=md0R3EmHNmf/Si/bFQoV0DhPZ6/aNLPocs1mlv/mRiM=; b=UZcrlzKoP/StfER7h5/ftcX7MNPA6mBS3EDJS3QCX3dqTM/uCBghpHW5VZiE3kY9pl YgYDXZHifD3/rNWxMKeaStjq1cwHH3HhBZZzPTAHEZFsmWjWlCdJ6xyxkY7+6eg8lCuD Surjg2KIjtUqS1VRyMakOnaaEE3VWEhHzH4mTW+iVH6ykrLBlRU4Dvv9YtEEvhVemfgQ veXqkyGKARyoR8Mpwp0Tyz1cjHWLWACY76DGqdFDpeW9dA1k82KTQ8kOP42R1nX9PnGQ w+jKBnp9868VCgn8wtw80BHy3WGe8gjDeLQ5MeFzTWBclKQ4y7UiR70Ku14q+cgzQ8Yd JYyQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g4si20894201plq.433.2021.04.20.04.01.46; Tue, 20 Apr 2021 04:02:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231466AbhDTLBq convert rfc822-to-8bit (ORCPT + 99 others); Tue, 20 Apr 2021 07:01:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:40014 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230290AbhDTLBp (ORCPT ); Tue, 20 Apr 2021 07:01:45 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5A44B61026; Tue, 20 Apr 2021 11:01:14 +0000 (UTC) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1lYo80-008TZz-2b; Tue, 20 Apr 2021 12:01:12 +0100 Date: Tue, 20 Apr 2021 12:01:10 +0100 Message-ID: <87bla9qky1.wl-maz@kernel.org> From: Marc Zyngier To: Pali =?UTF-8?B?Um9ow6Fy?= Cc: Jianjun Wang , Bjorn Helgaas , Rob Herring , Lorenzo Pieralisi , Ryder Lee , Philipp Zabel , Matthias Brugger , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, youlin.pei@mediatek.com, chuanjia.liu@mediatek.com, qizhong.cheng@mediatek.com, sin_jieyang@mediatek.com, drinkcat@chromium.org, Rex-BC.Chen@mediatek.com, anson.chuang@mediatek.com, Krzysztof Wilczyski Subject: Re: [PATCH v10 5/7] PCI: mediatek-gen3: Add MSI support In-Reply-To: <20210420094402.hwdkbspl5wu4rtex@pali> References: <20210420061723.989-1-jianjun.wang@mediatek.com> <20210420061723.989-6-jianjun.wang@mediatek.com> <20210420094402.hwdkbspl5wu4rtex@pali> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: pali@kernel.org, jianjun.wang@mediatek.com, bhelgaas@google.com, robh+dt@kernel.org, lorenzo.pieralisi@arm.com, ryder.lee@mediatek.com, p.zabel@pengutronix.de, matthias.bgg@gmail.com, linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, youlin.pei@mediatek.com, chuanjia.liu@mediatek.com, qizhong.cheng@mediatek.com, sin_jieyang@mediatek.com, drinkcat@chromium.org, Rex-BC.Chen@mediatek.com, anson.chuang@mediatek.com, kw@linux.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 20 Apr 2021 10:44:02 +0100, Pali Rohár wrote: > > Hello! > > On Tuesday 20 April 2021 14:17:21 Jianjun Wang wrote: > > +static void mtk_pcie_enable_msi(struct mtk_pcie_port *port) > > +{ > > + int i; > > + u32 val; > > + > > + for (i = 0; i < PCIE_MSI_SET_NUM; i++) { > > + struct mtk_msi_set *msi_set = &port->msi_sets[i]; > > + > > + msi_set->base = port->base + PCIE_MSI_SET_BASE_REG + > > + i * PCIE_MSI_SET_OFFSET; > > + msi_set->msg_addr = port->reg_base + PCIE_MSI_SET_BASE_REG + > > + i * PCIE_MSI_SET_OFFSET; > > + > > + /* Configure the MSI capture address */ > > + writel_relaxed(lower_32_bits(msi_set->msg_addr), msi_set->base); > > + writel_relaxed(upper_32_bits(msi_set->msg_addr), > > + port->base + PCIE_MSI_SET_ADDR_HI_BASE + > > + i * PCIE_MSI_SET_ADDR_HI_OFFSET); > > This looks like as setting MSI doorbell address to MSI doorbell address. > > > +static void mtk_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) > > +{ > > + struct mtk_msi_set *msi_set = irq_data_get_irq_chip_data(data); > > + struct mtk_pcie_port *port = data->domain->host_data; > > + unsigned long hwirq; > > + > > + hwirq = data->hwirq % PCIE_MSI_IRQS_PER_SET; > > + > > + msg->address_hi = upper_32_bits(msi_set->msg_addr); > > + msg->address_lo = lower_32_bits(msi_set->msg_addr); > > + msg->data = hwirq; > > + dev_dbg(port->dev, "msi#%#lx address_hi %#x address_lo %#x data %d\n", > > + hwirq, msg->address_hi, msg->address_lo, msg->data); > > ... which is later used in compose_msi_msg(). > > Marc in some other patches for other pci controller drivers changed this > address to just main "port" structure. It simplified implementations and > also avoided need to declare additional member "msg_addr". > > Marc, would it be possible to simplify it also for this driver and just > set msg_addr to virt_to_phys(port)? Maybe. It really depends on what range the HW accepts, and the sole requirement is to use an address that the endpoint cannot DMA to. Here, the driver seems to be using something based on the port base address, which is good enough as far as I am concerned (the thing I usually object to is the allocation of memory just for the sake of getting a capture address). If you want to further simplify it, you could simply use port.reg_base as the MSI address for all sets, as I don't think they have to be distinct. But someone with access to the TRM for this should go and check it. I don't believe this should gate the merging od this driver though. M. -- Without deviation from the norm, progress is not possible.