[PATCH v11 4/9] ACPI/IORT: Add support to retrieve IORT RMR reserved regions

Shameerali Kolothum Thodi shameerali.kolothum.thodi at huawei.com
Tue Apr 26 04:43:31 PDT 2022



> -----Original Message-----
> From: kernel test robot [mailto:lkp at intel.com]
> Sent: 23 April 2022 10:51
> To: Shameerali Kolothum Thodi <shameerali.kolothum.thodi at huawei.com>;
> linux-arm-kernel at lists.infradead.org; linux-acpi at vger.kernel.org;
> iommu at lists.linux-foundation.org
> Cc: llvm at lists.linux.dev; kbuild-all at lists.01.org; Linuxarm
> <linuxarm at huawei.com>; lorenzo.pieralisi at arm.com; joro at 8bytes.org;
> robin.murphy at arm.com; will at kernel.org; wanghuiqiang
> <wanghuiqiang at huawei.com>; Guohanjun (Hanjun Guo)
> <guohanjun at huawei.com>; steven.price at arm.com; Sami.Mujawar at arm.com;
> jon at solid-run.com; eric.auger at redhat.com; laurentiu.tudor at nxp.com;
> hch at infradead.org
> Subject: Re: [PATCH v11 4/9] ACPI/IORT: Add support to retrieve IORT RMR
> reserved regions
> 

[...]
 
> >> drivers/acpi/arm64/iort.c:801:29: warning: no previous prototype for
> function 'iort_rmr_alloc' [-Wmissing-prototypes]
>    struct iommu_iort_rmr_data *iort_rmr_alloc(struct acpi_iort_rmr_desc
> *rmr_desc,
>                                ^
>    drivers/acpi/arm64/iort.c:801:1: note: declare 'static' if the function is not
> intended to be used outside of this translation unit
>    struct iommu_iort_rmr_data *iort_rmr_alloc(struct acpi_iort_rmr_desc
> *rmr_desc,

Oops..missed the 'static' here. The rest of the warnings are because of the dependency
with ACPICA header patch here[1].

Hi Robin/Lorenzo,

I am planning to send out an updated series soon with that 'static' added and the R-by
tag received for patch #1 from Christoph. Appreciate if you can take a look and let me 
know if you have any further comments on this series.

Thanks,
Shameer

[1] https://lore.kernel.org/all/44610361.fMDQidcC6G@kreacher/


>    ^
>    static
>    drivers/acpi/arm64/iort.c:896:20: error: use of undeclared identifier
> 'ACPI_IORT_RMR_REMAP_PERMITTED'
>                    if (rmr->flags & ACPI_IORT_RMR_REMAP_PERMITTED)
>                                     ^
>    drivers/acpi/arm64/iort.c:901:20: error: use of undeclared identifier
> 'ACPI_IORT_RMR_ACCESS_PRIVILEGE'
>                    if (rmr->flags & ACPI_IORT_RMR_ACCESS_PRIVILEGE)
>                                     ^
>    drivers/acpi/arm64/iort.c:905:7: error: call to undeclared function
> 'ACPI_IORT_RMR_ACCESS_ATTRIBUTES'; ISO C99 and later do not support
> implicit function declarations [-Wimplicit-function-declaration]
>                    if (ACPI_IORT_RMR_ACCESS_ATTRIBUTES(rmr->flags) <=
>                        ^
>    drivers/acpi/arm64/iort.c:906:5: error: use of undeclared identifier
> 'ACPI_IORT_RMR_ATTR_DEVICE_GRE'
>                                    ACPI_IORT_RMR_ATTR_DEVICE_GRE)
>                                    ^
>    drivers/acpi/arm64/iort.c:909:5: error: use of undeclared identifier
> 'ACPI_IORT_RMR_ATTR_NORMAL_IWB_OWB'
> 
> ACPI_IORT_RMR_ATTR_NORMAL_IWB_OWB)
>                                    ^
>    1 warning and 5 errors generated.
> 
> 
> vim +/iort_rmr_alloc +801 drivers/acpi/arm64/iort.c
> 
>    800
>  > 801	struct iommu_iort_rmr_data *iort_rmr_alloc(struct
> acpi_iort_rmr_desc *rmr_desc,
>    802						   int prot, enum iommu_resv_type type,
>    803						   u32 *sids, u32 num_sids)
>    804	{
>    805		struct iommu_iort_rmr_data *rmr_data;
>    806		struct iommu_resv_region *region;
>    807		u32 *sids_copy;
>    808		u64 addr = rmr_desc->base_address, size = rmr_desc->length;
>    809
>    810		rmr_data = kmalloc(sizeof(*rmr_data), GFP_KERNEL);
>    811		if (!rmr_data)
>    812			return NULL;
>    813
>    814		/* Create a copy of SIDs array to associate with this rmr_data */
>    815		sids_copy = kmemdup(sids, num_sids * sizeof(*sids),
> GFP_KERNEL);
>    816		if (!sids_copy) {
>    817			kfree(rmr_data);
>    818			return NULL;
>    819		}
>    820		rmr_data->sids = sids_copy;
>    821		rmr_data->num_sids = num_sids;
>    822
>    823		if (!IS_ALIGNED(addr, SZ_64K) || !IS_ALIGNED(size, SZ_64K)) {
>    824			/* PAGE align base addr and size */
>    825			addr &= PAGE_MASK;
>    826			size = PAGE_ALIGN(size +
> offset_in_page(rmr_desc->base_address));
>    827
>    828			pr_err(FW_BUG "RMR descriptor[0x%llx - 0x%llx] not
> aligned to 64K, continue with [0x%llx - 0x%llx]\n",
>    829			       rmr_desc->base_address,
>    830			       rmr_desc->base_address + rmr_desc->length - 1,
>    831			       addr, addr + size - 1);
>    832		}
>    833
>    834		region = &rmr_data->rr;
>    835		INIT_LIST_HEAD(&region->list);
>    836		region->start = addr;
>    837		region->length = size;
>    838		region->prot = prot;
>    839		region->type = type;
>    840		region->free = iort_rmr_free;
>    841
>    842		return rmr_data;
>    843	}
>    844
> 
> --
> 0-DAY CI Kernel Test Service
> https://01.org/lkp



More information about the linux-arm-kernel mailing list