Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1426000
| Path | csiph.com!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Auger Eric <eric.auger@redhat.com> |
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v10 7/9] irqchip/gicv3-its: register the MSI global doorbell |
| Date | Sun, 19 Jun 2016 18:20:01 +0200 |
| Message-ID | <rLNC1-4DF-1@gated-at.bofh.it> (permalink) |
| References | <rHrJL-4Rf-3@gated-at.bofh.it> <rHrJM-4Rf-41@gated-at.bofh.it> <rL4Yh-tv-21@gated-at.bofh.it> |
| X-Original-To | Jean-Philippe Brucker <Jean-Philippe.Brucker@arm.com> |
| User-Agent | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0 |
| MIME-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8 |
| Content-Transfer-Encoding | 7bit |
| X-Scanned-By | MIMEDefang 2.68 on 10.5.11.22 |
| X-Greylist | Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Sun, 19 Jun 2016 16:11:56 +0000 (UTC) |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 95 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | eric.auger.pro@gmail.com, robin.murphy@arm.com, alex.williamson@redhat.com, will.deacon@arm.com, joro@8bytes.org, tglx@linutronix.de, jason@lakedaemon.net, marc.zyngier@arm.com, christoffer.dall@linaro.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Bharat.Bhushan@freescale.com, pranav.sawargaonkar@gmail.com, p.fedin@samsung.com, iommu@lists.linux-foundation.org, julien.grall@arm.com, yehuday@marvell.com |
| X-Original-Date | Sun, 19 Jun 2016 18:11:47 +0200 |
| X-Original-Message-ID | <eabd5d27-f19d-b641-2db6-775830bffc50@redhat.com> |
| X-Original-References | <1465315288-5931-1-git-send-email-eric.auger@redhat.com> <1465315288-5931-8-git-send-email-eric.auger@redhat.com> <20160617163327.GA26522@e106794-lin.localdomain> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1426000 |
Show key headers only | View raw
Hi Jean-Philippe,
On 17/06/2016 18:33, Jean-Philippe Brucker wrote:
> Hi Eric,
>
> On Tue, Jun 07, 2016 at 04:01:26PM +0000, Eric Auger wrote:
>> This patch adds the registration of the MSI global doorbell in
>> gicv3-its driver.
>>
>> This will allow the msi layer to iommu_map this doorbell when
>> requested.
>>
>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>> ---
>> drivers/irqchip/irq-gic-v3-its.c | 14 ++++++++++++++
>> 1 file changed, 14 insertions(+)
>>
>> diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
>> index 5eb1f9e..ed9dfce 100644
>> --- a/drivers/irqchip/irq-gic-v3-its.c
>> +++ b/drivers/irqchip/irq-gic-v3-its.c
>> @@ -29,6 +29,8 @@
>> #include <linux/of_platform.h>
>> #include <linux/percpu.h>
>> #include <linux/slab.h>
>> +#include <linux/iommu.h>
>> +#include <linux/msi-doorbell.h>
>>
>> #include <linux/irqchip.h>
>> #include <linux/irqchip/arm-gic-v3.h>
>> @@ -1607,6 +1609,7 @@ static int __init its_probe(struct device_node *node,
>>
>> if (of_property_read_bool(node, "msi-controller")) {
>> struct msi_domain_info *info;
>> + phys_addr_t translater;
>>
>> info = kzalloc(sizeof(*info), GFP_KERNEL);
>> if (!info) {
>> @@ -1614,10 +1617,21 @@ static int __init its_probe(struct device_node *node,
>> goto out_free_tables;
>> }
>>
>> + translater = its->phys_base + GITS_TRANSLATER;
>> + err = msi_doorbell_register_global(its, translater,
>> + sizeof(u32),
>> + IOMMU_WRITE | IOMMU_MMIO, true);
>
> This doesn't work :(
Sorry to hear that.
Thank you for testing with ITS. As mentioned in the part 3 cover letter,
I could not test assignment with this MSI controller; I now have access
to it so I am going to test it from next release onwards.
>
> First we have its_probe registering the global mapping with
> doorbell->chip_data = its, which is a pointer to an its_node structure.
>
> But when enabling MSIs for a device, its_irq_domain_alloc puts a pointer
> to an *its_device* into irq_data->chip_data. This seems to be a
> per-device structure, allocated by its_msi_prepare.
Hum OK, I missed the fact the chip_data was overwritten on
its_irq_domain_alloc. I will investigate what we have as other alternatives.
Thank you for the time spent on debugging that ;-)
Best Regards
Eric
>
> The following call to msi_doorbell_lookup won't ever succeed, because it
> will compare its_node to its_device. I can't figure out how to fix it
> cleanly at the moment.
>
> Jean-Philippe
>
>> + if (err) {
>> + kfree(info);
>> + goto out_free_tables;
>> + }
>> +
>> +
>> inner_domain = irq_domain_add_tree(node, &its_domain_ops, its);
>> if (!inner_domain) {
>> err = -ENOMEM;
>> kfree(info);
>> + msi_doorbell_unregister(its);
>> goto out_free_tables;
>> }
>>
>> --
>> 1.9.1
>>
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
Re: [PATCH v10 7/9] irqchip/gicv3-its: register the MSI global doorbell Jean-Philippe Brucker <Jean-Philippe.Brucker@arm.com> - 2016-06-17 18:40 +0200 Re: [PATCH v10 7/9] irqchip/gicv3-its: register the MSI global doorbell Auger Eric <eric.auger@redhat.com> - 2016-06-19 18:20 +0200
csiph-web