Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp977675pxu; Fri, 16 Oct 2020 00:00:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxpZmMoYLUK+gD+VOmwrUZz2qsfl66eTr+0s+t7jYneRO3/yFm9kUIjBCGNkb8KrICO2Jxt X-Received: by 2002:a17:906:4ecb:: with SMTP id i11mr2324817ejv.387.1602831658478; Fri, 16 Oct 2020 00:00:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602831658; cv=none; d=google.com; s=arc-20160816; b=GlCyFWjdvqD/BVB+5y8rXgB3083o1JDvsviYVgsnbFcYtQXBjkcpXKPKIevUfwj2zH Kg9n1F9DWbM5nx75ggc1L3ugBpevUI3fQXejjJBwOm4A9eaMLlli+wgVRO67jcWMdVOe 2BxOgyhRUqt2dl5QNQDV8k3BXqXNElmgu9m1cKUWkJL1KeJKqboLzwtidfgULn309/ag i9qifKWLhSXw5UZrpxbOmiv77WeF1uwThRf+izwPnpTw9a79FqaNSHzjgBj5VzweLyK8 J8pqVvtujA4Caekl7m5WIeDE6RqHouI/hmiTw36bte19fsfINuR7zFpbbg5QYy/4pcZY PmCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=pjH0UFAcVudQZATkOYJa0XwjB0e8BpseydszebzeC/A=; b=MaeNdJzhjs0RLuDJVHJFbKJWBXZwAEAKhtUc5SjHve//UBGqo7aAEg6z3dq7rUOebO DiOIdEwBE7B2aSIEbSotCIiyBhMP+UUG5fmkC0tKKIET+CGmicSDinGCTHICsUsdPy/b xqpHHjUHuL7EMS/GtkJghVKN9GHM4TPUGtrnu7oqJ73i1K9Cry/okGUVmqv+amWjCUCx N62VAwKxLMUo2okM4RxBB1QsVMiF7GkCx2dgramlXxOPJ0cXe24Qy+DUaUXKiRduCpsr 5AWZzq9YuOQL/maoARZpef8+DgF8ZzO6EDylwheFJ8zgOjrZXY93a2zjvb6I+5+Xgw0Q ZsOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=kW25M9o0; 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 g5si1071385edu.574.2020.10.16.00.00.35; Fri, 16 Oct 2020 00:00:58 -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; dkim=pass header.i=@kernel.org header.s=default header.b=kW25M9o0; 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 S2394507AbgJPG41 (ORCPT + 99 others); Fri, 16 Oct 2020 02:56:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:40470 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2394370AbgJPG41 (ORCPT ); Fri, 16 Oct 2020 02:56:27 -0400 Received: from mail-oi1-f181.google.com (mail-oi1-f181.google.com [209.85.167.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6528A20878; Fri, 16 Oct 2020 06:56:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1602831386; bh=Qt5cK4GbMy1zYjzp9yoahcnNoGCra0PWF0mygx/BzDY=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=kW25M9o0mHtPxHMea8yV80oWEA7vsMtr2BnXS+nM5/3MQhqUaPvN+MhMXTh+FopX7 uX5bRbMj4YsNF7JnVpLGJ8bkygcEu+ZEiqZ/YvRS766TMA7DF9cF/fcUls1f6GBkDC KZugE4D2A0tX8R0wG7oMBjzYLxgCNaiu0dmN+tRI= Received: by mail-oi1-f181.google.com with SMTP id 16so1304914oix.9; Thu, 15 Oct 2020 23:56:26 -0700 (PDT) X-Gm-Message-State: AOAM531HCuQEnna6iOxKGOyB3vnnPvZ0yNCKizN5R3cmxlOivjNic3jN 6A2xymeivDxvxmdva287P2YvJNCmV9NpU6zqybs= X-Received: by 2002:aca:d64f:: with SMTP id n76mr1596675oig.174.1602831385656; Thu, 15 Oct 2020 23:56:25 -0700 (PDT) MIME-Version: 1.0 References: <20201014191211.27029-1-nsaenzjulienne@suse.de> <20201014191211.27029-8-nsaenzjulienne@suse.de> <20201015103106.GA24739@e121166-lin.cambridge.arm.com> In-Reply-To: <20201015103106.GA24739@e121166-lin.cambridge.arm.com> From: Ard Biesheuvel Date: Fri, 16 Oct 2020 08:56:14 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 7/8] arm64: mm: Set ZONE_DMA size based on early IORT scan To: Lorenzo Pieralisi Cc: Nicolas Saenz Julienne , Rob Herring , Catalin Marinas , Christoph Hellwig , Linux Kernel Mailing List , Hanjun Guo , Sudeep Holla , Robin Murphy , Linux ARM , "moderated list:BROADCOM BCM2835 ARM ARCHITECTURE" , Jeremy Linton , Linux IOMMU , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Anshuman Khandual , Will Deacon , "Rafael J. Wysocki" , Len Brown , ACPI Devel Maling List Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 15 Oct 2020 at 12:31, Lorenzo Pieralisi 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 ()