All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ardb@kernel.org>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
	Rob Herring <robh+dt@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Christoph Hellwig <hch@lst.de>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Hanjun Guo <guohanjun@huawei.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	"moderated list:BROADCOM BCM2835 ARM ARCHITECTURE" 
	<linux-rpi-kernel@lists.infradead.org>,
	Jeremy Linton <jeremy.linton@arm.com>,
	Linux IOMMU <iommu@lists.linux-foundation.org>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" 
	<devicetree@vger.kernel.org>,
	Anshuman Khandual <anshuman.khandual@arm.com>,
	Will Deacon <will@kernel.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Len Brown <lenb@kernel.org>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>
Subject: Re: [PATCH v3 7/8] arm64: mm: Set ZONE_DMA size based on early IORT scan
Date: Fri, 16 Oct 2020 08:56:14 +0200	[thread overview]
Message-ID: <CAMj1kXGRcP_8OMHAdjTLNod40N_8dzqrX9=F+s7pd0EXy8O6DQ@mail.gmail.com> (raw)
In-Reply-To: <20201015103106.GA24739@e121166-lin.cambridge.arm.com>

On Thu, 15 Oct 2020 at 12:31, Lorenzo Pieralisi
<lorenzo.pieralisi@arm.com> wrote:
>
> On Wed, Oct 14, 2020 at 09:12:09PM +0200, Nicolas Saenz Julienne wrote:
>
> [...]
>
> > +unsigned int __init acpi_iort_get_zone_dma_size(void)
> > +{
> > +     struct acpi_table_iort *iort;
> > +     struct acpi_iort_node *node, *end;
> > +     acpi_status status;
> > +     u8 limit = 32;
> > +     int i;
> > +
> > +     if (acpi_disabled)
> > +             return limit;
> > +
> > +     status = acpi_get_table(ACPI_SIG_IORT, 0,
> > +                             (struct acpi_table_header **)&iort);
> > +     if (ACPI_FAILURE(status))
> > +             return limit;
> > +
> > +     node = ACPI_ADD_PTR(struct acpi_iort_node, iort, iort->node_offset);
> > +     end = ACPI_ADD_PTR(struct acpi_iort_node, iort, iort->header.length);
> > +
> > +     for (i = 0; i < iort->node_count; i++) {
> > +             if (node >= end)
> > +                     break;
> > +
> > +             switch (node->type) {
> > +                     struct acpi_iort_named_component *ncomp;
> > +                     struct acpi_iort_root_complex *rc;
> > +
> > +             case ACPI_IORT_NODE_NAMED_COMPONENT:
> > +                     ncomp = (struct acpi_iort_named_component *)node->node_data;
> > +                     if (ncomp->memory_address_limit)
> > +                             limit = min(limit, ncomp->memory_address_limit);
> > +                     break;
> > +
> > +             case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
> > +                     rc = (struct acpi_iort_root_complex *)node->node_data;
> > +                     if (rc->memory_address_limit)
>
> You need to add a node revision check here, see rc_dma_get_range() in
> drivers/acpi/arm64/iort.c, otherwise we may be reading junk data
> in older IORT tables - acpica structures are always referring to the
> latest specs.
>

Indeed - apologies for not mentioning that when handing over the patch.

Also, we could use min_not_zero() here instead of the if ()

WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ardb@kernel.org>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
	<devicetree@vger.kernel.org>, Will Deacon <will@kernel.org>,
	Anshuman Khandual <anshuman.khandual@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Jeremy Linton <jeremy.linton@arm.com>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	Linux IOMMU <iommu@lists.linux-foundation.org>,
	Rob Herring <robh+dt@kernel.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	Hanjun Guo <guohanjun@huawei.com>, Len Brown <lenb@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Christoph Hellwig <hch@lst.de>,
	"moderated list:BROADCOM BCM2835 ARM ARCHITECTURE"
	<linux-rpi-kernel@lists.infradead.org>
Subject: Re: [PATCH v3 7/8] arm64: mm: Set ZONE_DMA size based on early IORT scan
Date: Fri, 16 Oct 2020 08:56:14 +0200	[thread overview]
Message-ID: <CAMj1kXGRcP_8OMHAdjTLNod40N_8dzqrX9=F+s7pd0EXy8O6DQ@mail.gmail.com> (raw)
In-Reply-To: <20201015103106.GA24739@e121166-lin.cambridge.arm.com>

On Thu, 15 Oct 2020 at 12:31, Lorenzo Pieralisi
<lorenzo.pieralisi@arm.com> wrote:
>
> On Wed, Oct 14, 2020 at 09:12:09PM +0200, Nicolas Saenz Julienne wrote:
>
> [...]
>
> > +unsigned int __init acpi_iort_get_zone_dma_size(void)
> > +{
> > +     struct acpi_table_iort *iort;
> > +     struct acpi_iort_node *node, *end;
> > +     acpi_status status;
> > +     u8 limit = 32;
> > +     int i;
> > +
> > +     if (acpi_disabled)
> > +             return limit;
> > +
> > +     status = acpi_get_table(ACPI_SIG_IORT, 0,
> > +                             (struct acpi_table_header **)&iort);
> > +     if (ACPI_FAILURE(status))
> > +             return limit;
> > +
> > +     node = ACPI_ADD_PTR(struct acpi_iort_node, iort, iort->node_offset);
> > +     end = ACPI_ADD_PTR(struct acpi_iort_node, iort, iort->header.length);
> > +
> > +     for (i = 0; i < iort->node_count; i++) {
> > +             if (node >= end)
> > +                     break;
> > +
> > +             switch (node->type) {
> > +                     struct acpi_iort_named_component *ncomp;
> > +                     struct acpi_iort_root_complex *rc;
> > +
> > +             case ACPI_IORT_NODE_NAMED_COMPONENT:
> > +                     ncomp = (struct acpi_iort_named_component *)node->node_data;
> > +                     if (ncomp->memory_address_limit)
> > +                             limit = min(limit, ncomp->memory_address_limit);
> > +                     break;
> > +
> > +             case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
> > +                     rc = (struct acpi_iort_root_complex *)node->node_data;
> > +                     if (rc->memory_address_limit)
>
> You need to add a node revision check here, see rc_dma_get_range() in
> drivers/acpi/arm64/iort.c, otherwise we may be reading junk data
> in older IORT tables - acpica structures are always referring to the
> latest specs.
>

Indeed - apologies for not mentioning that when handing over the patch.

Also, we could use min_not_zero() here instead of the if ()
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ardb@kernel.org>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
	<devicetree@vger.kernel.org>, Will Deacon <will@kernel.org>,
	Anshuman Khandual <anshuman.khandual@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Jeremy Linton <jeremy.linton@arm.com>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	Linux IOMMU <iommu@lists.linux-foundation.org>,
	Rob Herring <robh+dt@kernel.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	Hanjun Guo <guohanjun@huawei.com>, Len Brown <lenb@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Christoph Hellwig <hch@lst.de>,
	Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
	"moderated list:BROADCOM BCM2835 ARM ARCHITECTURE"
	<linux-rpi-kernel@lists.infradead.org>
Subject: Re: [PATCH v3 7/8] arm64: mm: Set ZONE_DMA size based on early IORT scan
Date: Fri, 16 Oct 2020 08:56:14 +0200	[thread overview]
Message-ID: <CAMj1kXGRcP_8OMHAdjTLNod40N_8dzqrX9=F+s7pd0EXy8O6DQ@mail.gmail.com> (raw)
In-Reply-To: <20201015103106.GA24739@e121166-lin.cambridge.arm.com>

On Thu, 15 Oct 2020 at 12:31, Lorenzo Pieralisi
<lorenzo.pieralisi@arm.com> wrote:
>
> On Wed, Oct 14, 2020 at 09:12:09PM +0200, Nicolas Saenz Julienne wrote:
>
> [...]
>
> > +unsigned int __init acpi_iort_get_zone_dma_size(void)
> > +{
> > +     struct acpi_table_iort *iort;
> > +     struct acpi_iort_node *node, *end;
> > +     acpi_status status;
> > +     u8 limit = 32;
> > +     int i;
> > +
> > +     if (acpi_disabled)
> > +             return limit;
> > +
> > +     status = acpi_get_table(ACPI_SIG_IORT, 0,
> > +                             (struct acpi_table_header **)&iort);
> > +     if (ACPI_FAILURE(status))
> > +             return limit;
> > +
> > +     node = ACPI_ADD_PTR(struct acpi_iort_node, iort, iort->node_offset);
> > +     end = ACPI_ADD_PTR(struct acpi_iort_node, iort, iort->header.length);
> > +
> > +     for (i = 0; i < iort->node_count; i++) {
> > +             if (node >= end)
> > +                     break;
> > +
> > +             switch (node->type) {
> > +                     struct acpi_iort_named_component *ncomp;
> > +                     struct acpi_iort_root_complex *rc;
> > +
> > +             case ACPI_IORT_NODE_NAMED_COMPONENT:
> > +                     ncomp = (struct acpi_iort_named_component *)node->node_data;
> > +                     if (ncomp->memory_address_limit)
> > +                             limit = min(limit, ncomp->memory_address_limit);
> > +                     break;
> > +
> > +             case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
> > +                     rc = (struct acpi_iort_root_complex *)node->node_data;
> > +                     if (rc->memory_address_limit)
>
> You need to add a node revision check here, see rc_dma_get_range() in
> drivers/acpi/arm64/iort.c, otherwise we may be reading junk data
> in older IORT tables - acpica structures are always referring to the
> latest specs.
>

Indeed - apologies for not mentioning that when handing over the patch.

Also, we could use min_not_zero() here instead of the if ()

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2020-10-16  6:56 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-14 19:12 [PATCH v3 0/8] arm64: Default to 32-bit wide ZONE_DMA Nicolas Saenz Julienne
2020-10-14 19:12 ` Nicolas Saenz Julienne
2020-10-14 19:12 ` Nicolas Saenz Julienne
2020-10-14 19:12 ` [PATCH v3 1/8] arm64: mm: Move reserve_crashkernel() into mem_init() Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-15  8:40   ` Will Deacon
2020-10-15  8:40     ` Will Deacon
2020-10-15  8:40     ` Will Deacon
2020-10-15  8:55     ` Nicolas Saenz Julienne
2020-10-15  8:55       ` Nicolas Saenz Julienne
2020-10-15  8:55       ` Nicolas Saenz Julienne
2020-10-14 19:12 ` [PATCH v3 2/8] arm64: mm: Move zone_dma_bits initialization into zone_sizes_init() Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 19:12 ` [PATCH v3 3/8] of/address: Introduce of_dma_get_max_cpu_address() Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 22:02   ` Rob Herring
2020-10-14 22:02     ` Rob Herring
2020-10-14 22:02     ` Rob Herring
2020-10-15  6:56     ` Ard Biesheuvel
2020-10-15  6:56       ` Ard Biesheuvel
2020-10-15  6:56       ` Ard Biesheuvel
2020-10-15  9:16       ` Nicolas Saenz Julienne
2020-10-15  9:16         ` Nicolas Saenz Julienne
2020-10-15  9:16         ` Nicolas Saenz Julienne
2020-10-15  9:18         ` Ard Biesheuvel
2020-10-15  9:18           ` Ard Biesheuvel
2020-10-15  9:18           ` Ard Biesheuvel
2020-10-15  8:54     ` Nicolas Saenz Julienne
2020-10-15  8:54       ` Nicolas Saenz Julienne
2020-10-15  8:54       ` Nicolas Saenz Julienne
2020-10-15  5:42   ` Christoph Hellwig
2020-10-15  5:42     ` Christoph Hellwig
2020-10-15  5:42     ` Christoph Hellwig
2020-10-15 10:03     ` Nicolas Saenz Julienne
2020-10-15 10:03       ` Nicolas Saenz Julienne
2020-10-15 10:03       ` Nicolas Saenz Julienne
2020-10-16 13:19     ` Rob Herring
2020-10-16 13:19       ` Rob Herring
2020-10-16 13:19       ` Rob Herring
2020-10-14 19:12 ` [PATCH v3 4/8] of: unittest: Add test for of_dma_get_max_cpu_address() Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 22:04   ` Rob Herring
2020-10-14 22:04     ` Rob Herring
2020-10-14 22:04     ` Rob Herring
2020-10-15  9:51     ` Nicolas Saenz Julienne
2020-10-15  9:51       ` Nicolas Saenz Julienne
2020-10-15  9:51       ` Nicolas Saenz Julienne
2020-10-14 19:12 ` [PATCH v3 5/8] dma-direct: Turn zone_dma_bits default value into a define Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-15  5:38   ` Christoph Hellwig
2020-10-15  5:38     ` Christoph Hellwig
2020-10-15  5:38     ` Christoph Hellwig
2020-10-15 10:05     ` Nicolas Saenz Julienne
2020-10-15 10:05       ` Nicolas Saenz Julienne
2020-10-15 10:05       ` Nicolas Saenz Julienne
2020-10-14 19:12 ` [PATCH v3 6/8] arm64: mm: Set ZONE_DMA size based on devicetree's dma-ranges Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-15  5:39   ` Christoph Hellwig
2020-10-15  5:39     ` Christoph Hellwig
2020-10-15  5:39     ` Christoph Hellwig
2020-10-15 10:05     ` Nicolas Saenz Julienne
2020-10-15 10:05       ` Nicolas Saenz Julienne
2020-10-15 10:05       ` Nicolas Saenz Julienne
2020-10-14 19:12 ` [PATCH v3 7/8] arm64: mm: Set ZONE_DMA size based on early IORT scan Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-15 10:31   ` Lorenzo Pieralisi
2020-10-15 10:31     ` Lorenzo Pieralisi
2020-10-15 10:31     ` Lorenzo Pieralisi
2020-10-16  6:56     ` Ard Biesheuvel [this message]
2020-10-16  6:56       ` Ard Biesheuvel
2020-10-16  6:56       ` Ard Biesheuvel
2020-10-15 14:26   ` Hanjun Guo
2020-10-15 14:26     ` Hanjun Guo
2020-10-15 14:26     ` Hanjun Guo
2020-10-15 15:15     ` Nicolas Saenz Julienne
2020-10-15 15:15       ` Nicolas Saenz Julienne
2020-10-15 15:15       ` Nicolas Saenz Julienne
2020-10-15 18:03     ` Catalin Marinas
2020-10-15 18:03       ` Catalin Marinas
2020-10-15 18:03       ` Catalin Marinas
2020-10-16  6:51       ` Hanjun Guo
2020-10-16  6:51         ` Hanjun Guo
2020-10-16  6:51         ` Hanjun Guo
2020-10-16  6:54         ` Ard Biesheuvel
2020-10-16  6:54           ` Ard Biesheuvel
2020-10-16  6:54           ` Ard Biesheuvel
2020-10-16  7:27           ` Hanjun Guo
2020-10-16  7:27             ` Hanjun Guo
2020-10-16  7:27             ` Hanjun Guo
2020-10-16  7:34             ` Hanjun Guo
2020-10-16  7:34               ` Hanjun Guo
2020-10-16  7:34               ` Hanjun Guo
2020-10-14 19:12 ` [PATCH v3 8/8] mm: Update DMA zones description Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-14 19:12   ` Nicolas Saenz Julienne
2020-10-15  5:40   ` Christoph Hellwig
2020-10-15  5:40     ` Christoph Hellwig
2020-10-15  5:40     ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAMj1kXGRcP_8OMHAdjTLNod40N_8dzqrX9=F+s7pd0EXy8O6DQ@mail.gmail.com' \
    --to=ardb@kernel.org \
    --cc=anshuman.khandual@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=devicetree@vger.kernel.org \
    --cc=guohanjun@huawei.com \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jeremy.linton@arm.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=nsaenzjulienne@suse.de \
    --cc=rjw@rjwysocki.net \
    --cc=robh+dt@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=sudeep.holla@arm.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.