Linux-CXL Archive mirror
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Ben Cheatham <Benjamin.Cheatham@amd.com>
Cc: oe-kbuild-all@lists.linux.dev,
	Alison Schofield <alison.schofield@intel.com>,
	Vishal Verma <vishal.l.verma@intel.com>,
	Ira Weiny <ira.weiny@intel.com>,
	Dan Williams <dan.j.williams@intel.com>,
	linux-cxl@vger.kernel.org,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>
Subject: [cxl:next 14/23] drivers/acpi/apei/einj-core.c:222:11: sparse: sparse: incorrect type in assignment (different address spaces)
Date: Thu, 14 Mar 2024 12:59:49 +0800	[thread overview]
Message-ID: <202403141236.g8QtgI6t-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git next
head:   88482878c3b4abc2a6e66e016cc01eacbdc5b0ed
commit: 12fb28ea6b1cf24bde27c406eb38ee3c108d73f9 [14/23] EINJ: Add CXL error type support
config: i386-randconfig-063-20240314 (https://download.01.org/0day-ci/archive/20240314/202403141236.g8QtgI6t-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240314/202403141236.g8QtgI6t-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202403141236.g8QtgI6t-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/acpi/apei/einj-core.c:222:11: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct vendor_error_type_extension *v @@     got void [noderef] __iomem * @@
   drivers/acpi/apei/einj-core.c:222:11: sparse:     expected struct vendor_error_type_extension *v
   drivers/acpi/apei/einj-core.c:222:11: sparse:     got void [noderef] __iomem *
>> drivers/acpi/apei/einj-core.c:231:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __iomem *virt @@     got struct vendor_error_type_extension *v @@
   drivers/acpi/apei/einj-core.c:231:29: sparse:     expected void [noderef] __iomem *virt
   drivers/acpi/apei/einj-core.c:231:29: sparse:     got struct vendor_error_type_extension *v
>> drivers/acpi/apei/einj-core.c:257:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct set_error_type_with_address *v5param @@     got void [noderef] __iomem * @@
   drivers/acpi/apei/einj-core.c:257:25: sparse:     expected struct set_error_type_with_address *v5param
   drivers/acpi/apei/einj-core.c:257:25: sparse:     got void [noderef] __iomem *
>> drivers/acpi/apei/einj-core.c:267:25: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct einj_parameter *v4param @@     got void [noderef] __iomem * @@
   drivers/acpi/apei/einj-core.c:267:25: sparse:     expected struct einj_parameter *v4param
   drivers/acpi/apei/einj-core.c:267:25: sparse:     got void [noderef] __iomem *
>> drivers/acpi/apei/einj-core.c:271:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __iomem *virt @@     got struct einj_parameter *v4param @@
   drivers/acpi/apei/einj-core.c:271:45: sparse:     expected void [noderef] __iomem *virt
   drivers/acpi/apei/einj-core.c:271:45: sparse:     got struct einj_parameter *v4param
>> drivers/acpi/apei/einj-core.c:338:21: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct acpi_einj_trigger *trigger_tab @@     got void [noderef] __iomem * @@
   drivers/acpi/apei/einj-core.c:338:21: sparse:     expected struct acpi_einj_trigger *trigger_tab
   drivers/acpi/apei/einj-core.c:338:21: sparse:     got void [noderef] __iomem *
>> drivers/acpi/apei/einj-core.c:364:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got struct acpi_einj_trigger *trigger_tab @@
   drivers/acpi/apei/einj-core.c:364:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/acpi/apei/einj-core.c:364:17: sparse:     got struct acpi_einj_trigger *trigger_tab
   drivers/acpi/apei/einj-core.c:365:21: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct acpi_einj_trigger *trigger_tab @@     got void [noderef] __iomem * @@
   drivers/acpi/apei/einj-core.c:365:21: sparse:     expected struct acpi_einj_trigger *trigger_tab
   drivers/acpi/apei/einj-core.c:365:21: sparse:     got void [noderef] __iomem *
   drivers/acpi/apei/einj-core.c:428:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got struct acpi_einj_trigger *trigger_tab @@
   drivers/acpi/apei/einj-core.c:428:25: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/acpi/apei/einj-core.c:428:25: sparse:     got struct acpi_einj_trigger *trigger_tab
>> drivers/acpi/apei/einj-core.c:863:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void [noderef] __iomem *virt @@     got void *static [assigned] [toplevel] einj_param @@
   drivers/acpi/apei/einj-core.c:863:37: sparse:     expected void [noderef] __iomem *virt
   drivers/acpi/apei/einj-core.c:863:37: sparse:     got void *static [assigned] [toplevel] einj_param
   drivers/acpi/apei/einj-core.c: note: in included file (through include/linux/mmzone.h, include/linux/gfp.h, include/linux/umh.h, include/linux/kmod.h, ...):
   include/linux/page-flags.h:242:46: sparse: sparse: self-comparison always evaluates to false

vim +222 drivers/acpi/apei/einj-core.c

22fca621bd1bbc drivers/acpi/apei/einj.c Avadhut Naik     2023-11-16  212  
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  213  static void check_vendor_extension(u64 paddr,
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  214  				   struct set_error_type_with_address *v5param)
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  215  {
459413db33d6c9 drivers/acpi/apei/einj.c Tony Luck        2012-01-23  216  	int	offset = v5param->vendor_extension;
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  217  	struct	vendor_error_type_extension *v;
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  218  	u32	sbdf;
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  219  
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  220  	if (!offset)
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  221  		return;
a238317ce81855 drivers/acpi/apei/einj.c Lv Zheng         2014-05-20 @222  	v = acpi_os_map_iomem(paddr + offset, sizeof(*v));
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  223  	if (!v)
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  224  		return;
22fca621bd1bbc drivers/acpi/apei/einj.c Avadhut Naik     2023-11-16  225  	get_oem_vendor_struct(paddr, offset, v);
459413db33d6c9 drivers/acpi/apei/einj.c Tony Luck        2012-01-23  226  	sbdf = v->pcie_sbdf;
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  227  	sprintf(vendor_dev, "%x:%x:%x.%x vendor_id=%x device_id=%x rev_id=%x\n",
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  228  		sbdf >> 24, (sbdf >> 16) & 0xff,
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  229  		(sbdf >> 11) & 0x1f, (sbdf >> 8) & 0x7,
459413db33d6c9 drivers/acpi/apei/einj.c Tony Luck        2012-01-23  230  		 v->vendor_id, v->device_id, v->rev_id);
a238317ce81855 drivers/acpi/apei/einj.c Lv Zheng         2014-05-20 @231  	acpi_os_unmap_iomem(v, sizeof(*v));
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  232  }
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  233  
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  234  static void *einj_get_parameter_address(void)
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  235  {
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  236  	int i;
d3ab3edc029bf7 drivers/acpi/apei/einj.c Chen, Gong       2013-12-18  237  	u64 pa_v4 = 0, pa_v5 = 0;
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  238  	struct acpi_whea_header *entry;
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  239  
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  240  	entry = EINJ_TAB_ENTRY(einj_tab);
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  241  	for (i = 0; i < einj_tab->entries; i++) {
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  242  		if (entry->action == ACPI_EINJ_SET_ERROR_TYPE &&
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  243  		    entry->instruction == ACPI_EINJ_WRITE_REGISTER &&
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  244  		    entry->register_region.space_id ==
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  245  		    ACPI_ADR_SPACE_SYSTEM_MEMORY)
d3ab3edc029bf7 drivers/acpi/apei/einj.c Chen, Gong       2013-12-18  246  			pa_v4 = get_unaligned(&entry->register_region.address);
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  247  		if (entry->action == ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS &&
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  248  		    entry->instruction == ACPI_EINJ_WRITE_REGISTER &&
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  249  		    entry->register_region.space_id ==
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  250  		    ACPI_ADR_SPACE_SYSTEM_MEMORY)
d3ab3edc029bf7 drivers/acpi/apei/einj.c Chen, Gong       2013-12-18  251  			pa_v5 = get_unaligned(&entry->register_region.address);
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  252  		entry++;
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  253  	}
d3ab3edc029bf7 drivers/acpi/apei/einj.c Chen, Gong       2013-12-18  254  	if (pa_v5) {
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  255  		struct set_error_type_with_address *v5param;
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  256  
a238317ce81855 drivers/acpi/apei/einj.c Lv Zheng         2014-05-20 @257  		v5param = acpi_os_map_iomem(pa_v5, sizeof(*v5param));
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  258  		if (v5param) {
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  259  			acpi5 = 1;
d3ab3edc029bf7 drivers/acpi/apei/einj.c Chen, Gong       2013-12-18  260  			check_vendor_extension(pa_v5, v5param);
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  261  			return v5param;
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  262  		}
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  263  	}
d3ab3edc029bf7 drivers/acpi/apei/einj.c Chen, Gong       2013-12-18  264  	if (param_extension && pa_v4) {
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  265  		struct einj_parameter *v4param;
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  266  
a238317ce81855 drivers/acpi/apei/einj.c Lv Zheng         2014-05-20 @267  		v4param = acpi_os_map_iomem(pa_v4, sizeof(*v4param));
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  268  		if (!v4param)
29924b9f8f39e3 drivers/acpi/apei/einj.c Dan Carpenter    2012-01-20  269  			return NULL;
459413db33d6c9 drivers/acpi/apei/einj.c Tony Luck        2012-01-23  270  		if (v4param->reserved1 || v4param->reserved2) {
a238317ce81855 drivers/acpi/apei/einj.c Lv Zheng         2014-05-20 @271  			acpi_os_unmap_iomem(v4param, sizeof(*v4param));
29924b9f8f39e3 drivers/acpi/apei/einj.c Dan Carpenter    2012-01-20  272  			return NULL;
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  273  		}
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  274  		return v4param;
c130bd6f82e5dd drivers/acpi/apei/einj.c Tony Luck        2012-01-17  275  	}
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  276  
29924b9f8f39e3 drivers/acpi/apei/einj.c Dan Carpenter    2012-01-20  277  	return NULL;
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  278  }
6e320ec1d98f9e drivers/acpi/apei/einj.c Huang Ying       2010-05-18  279  
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  280  /* do sanity check to trigger table */
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  281  static int einj_check_trigger_header(struct acpi_einj_trigger *trigger_tab)
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  282  {
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  283  	if (trigger_tab->header_size != sizeof(struct acpi_einj_trigger))
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  284  		return -EINVAL;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  285  	if (trigger_tab->table_size > PAGE_SIZE ||
4c40aed869a200 drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09  286  	    trigger_tab->table_size < trigger_tab->header_size)
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  287  		return -EINVAL;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  288  	if (trigger_tab->entry_count !=
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  289  	    (trigger_tab->table_size - trigger_tab->header_size) /
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  290  	    sizeof(struct acpi_einj_entry))
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  291  		return -EINVAL;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  292  
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  293  	return 0;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  294  }
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  295  
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  296  static struct acpi_generic_address *einj_get_trigger_parameter_region(
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  297  	struct acpi_einj_trigger *trigger_tab, u64 param1, u64 param2)
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  298  {
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  299  	int i;
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  300  	struct acpi_whea_header *entry;
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  301  
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  302  	entry = (struct acpi_whea_header *)
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  303  		((char *)trigger_tab + sizeof(struct acpi_einj_trigger));
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  304  	for (i = 0; i < trigger_tab->entry_count; i++) {
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  305  		if (entry->action == ACPI_EINJ_TRIGGER_ERROR &&
1d5d820b8fe83b drivers/acpi/apei/einj.c Yazen Ghannam    2017-08-28  306  		entry->instruction <= ACPI_EINJ_WRITE_REGISTER_VALUE &&
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  307  		entry->register_region.space_id ==
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  308  			ACPI_ADR_SPACE_SYSTEM_MEMORY &&
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  309  		(entry->register_region.address & param2) == (param1 & param2))
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  310  			return &entry->register_region;
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  311  		entry++;
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  312  	}
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  313  
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  314  	return NULL;
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  315  }
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  316  /* Execute instructions in trigger error action table */
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  317  static int __einj_error_trigger(u64 trigger_paddr, u32 type,
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  318  				u64 param1, u64 param2)
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  319  {
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  320  	struct acpi_einj_trigger *trigger_tab = NULL;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  321  	struct apei_exec_context trigger_ctx;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  322  	struct apei_resources trigger_resources;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  323  	struct acpi_whea_header *trigger_entry;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  324  	struct resource *r;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  325  	u32 table_size;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  326  	int rc = -EIO;
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  327  	struct acpi_generic_address *trigger_param_region = NULL;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  328  
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  329  	r = request_mem_region(trigger_paddr, sizeof(*trigger_tab),
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  330  			       "APEI EINJ Trigger Table");
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  331  	if (!r) {
b2f740baa42152 drivers/acpi/apei/einj.c Borislav Petkov  2016-05-23  332  		pr_err("Can not request [mem %#010llx-%#010llx] for Trigger table\n",
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  333  		       (unsigned long long)trigger_paddr,
46b91e379f7180 drivers/acpi/apei/einj.c Bjorn Helgaas    2011-12-08  334  		       (unsigned long long)trigger_paddr +
46b91e379f7180 drivers/acpi/apei/einj.c Bjorn Helgaas    2011-12-08  335  			    sizeof(*trigger_tab) - 1);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  336  		goto out;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  337  	}
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18 @338  	trigger_tab = ioremap_cache(trigger_paddr, sizeof(*trigger_tab));
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  339  	if (!trigger_tab) {
b2f740baa42152 drivers/acpi/apei/einj.c Borislav Petkov  2016-05-23  340  		pr_err("Failed to map trigger table!\n");
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  341  		goto out_rel_header;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  342  	}
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  343  	rc = einj_check_trigger_header(trigger_tab);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  344  	if (rc) {
933ca4e323de77 drivers/acpi/apei/einj.c Kefeng Wang      2019-10-18  345  		pr_warn(FW_BUG "Invalid trigger error action table.\n");
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  346  		goto out_rel_header;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  347  	}
4c40aed869a200 drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09  348  
4c40aed869a200 drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09  349  	/* No action structures in the TRIGGER_ERROR table, nothing to do */
4c40aed869a200 drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09  350  	if (!trigger_tab->entry_count)
4c40aed869a200 drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09  351  		goto out_rel_header;
4c40aed869a200 drivers/acpi/apei/einj.c Niklas Söderlund 2012-01-09  352  
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  353  	rc = -EIO;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  354  	table_size = trigger_tab->table_size;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  355  	r = request_mem_region(trigger_paddr + sizeof(*trigger_tab),
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  356  			       table_size - sizeof(*trigger_tab),
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  357  			       "APEI EINJ Trigger Table");
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  358  	if (!r) {
b2f740baa42152 drivers/acpi/apei/einj.c Borislav Petkov  2016-05-23  359  		pr_err("Can not request [mem %#010llx-%#010llx] for Trigger Table Entry\n",
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  360  		       (unsigned long long)trigger_paddr + sizeof(*trigger_tab),
46b91e379f7180 drivers/acpi/apei/einj.c Bjorn Helgaas    2011-12-08  361  		       (unsigned long long)trigger_paddr + table_size - 1);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  362  		goto out_rel_header;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  363  	}
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18 @364  	iounmap(trigger_tab);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  365  	trigger_tab = ioremap_cache(trigger_paddr, table_size);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  366  	if (!trigger_tab) {
b2f740baa42152 drivers/acpi/apei/einj.c Borislav Petkov  2016-05-23  367  		pr_err("Failed to map trigger table!\n");
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  368  		goto out_rel_entry;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  369  	}
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  370  	trigger_entry = (struct acpi_whea_header *)
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  371  		((char *)trigger_tab + sizeof(struct acpi_einj_trigger));
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  372  	apei_resources_init(&trigger_resources);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  373  	apei_exec_ctx_init(&trigger_ctx, einj_ins_type,
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  374  			   ARRAY_SIZE(einj_ins_type),
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  375  			   trigger_entry, trigger_tab->entry_count);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  376  	rc = apei_exec_collect_resources(&trigger_ctx, &trigger_resources);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  377  	if (rc)
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  378  		goto out_fini;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  379  	rc = apei_resources_sub(&trigger_resources, &einj_resources);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  380  	if (rc)
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  381  		goto out_fini;
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  382  	/*
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  383  	 * Some firmware will access target address specified in
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  384  	 * param1 to trigger the error when injecting memory error.
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  385  	 * This will cause resource conflict with regular memory.  So
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  386  	 * remove it from trigger table resources.
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  387  	 */
c5a130325f13b2 drivers/acpi/apei/einj.c Chen Gong        2013-06-06  388  	if ((param_extension || acpi5) && (type & MEM_ERROR_MASK) && param2) {
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  389  		struct apei_resources addr_resources;
37ea9693869627 drivers/acpi/apei/einj.c Jay Lu           2022-12-06  390  
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  391  		apei_resources_init(&addr_resources);
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  392  		trigger_param_region = einj_get_trigger_parameter_region(
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  393  			trigger_tab, param1, param2);
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  394  		if (trigger_param_region) {
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  395  			rc = apei_resources_add(&addr_resources,
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  396  				trigger_param_region->address,
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  397  				trigger_param_region->bit_width/8, true);
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  398  			if (rc)
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  399  				goto out_fini;
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  400  			rc = apei_resources_sub(&trigger_resources,
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  401  					&addr_resources);
b4e008dc53a31c drivers/acpi/apei/einj.c Xiao, Hui        2011-12-08  402  		}
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  403  		apei_resources_fini(&addr_resources);
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  404  		if (rc)
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  405  			goto out_fini;
fdea163d8c17ba drivers/acpi/apei/einj.c Huang Ying       2011-12-08  406  	}
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  407  	rc = apei_resources_request(&trigger_resources, "APEI EINJ Trigger");
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  408  	if (rc)
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  409  		goto out_fini;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  410  	rc = apei_exec_pre_map_gars(&trigger_ctx);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  411  	if (rc)
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  412  		goto out_release;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  413  
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  414  	rc = apei_exec_run(&trigger_ctx, ACPI_EINJ_TRIGGER_ERROR);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  415  
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  416  	apei_exec_post_unmap_gars(&trigger_ctx);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  417  out_release:
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  418  	apei_resources_release(&trigger_resources);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  419  out_fini:
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  420  	apei_resources_fini(&trigger_resources);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  421  out_rel_entry:
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  422  	release_mem_region(trigger_paddr + sizeof(*trigger_tab),
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  423  			   table_size - sizeof(*trigger_tab));
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  424  out_rel_header:
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  425  	release_mem_region(trigger_paddr, sizeof(*trigger_tab));
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  426  out:
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  427  	if (trigger_tab)
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  428  		iounmap(trigger_tab);
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  429  
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  430  	return rc;
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  431  }
e40213450b5315 drivers/acpi/apei/einj.c Huang Ying       2010-05-18  432  

:::::: The code at line 222 was first introduced by commit
:::::: a238317ce8185519ed083e81e84260907fbbcf7f ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem.

:::::: TO: Lv Zheng <lv.zheng@intel.com>
:::::: CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2024-03-14  5:00 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202403141236.g8QtgI6t-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Benjamin.Cheatham@amd.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=alison.schofield@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=ira.weiny@intel.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=vishal.l.verma@intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).