All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: drivers/platform/x86/asus-armoury.c:358 mini_led_mode_current_value_store() warn: potential spectre issue 'mini_led_mode_map' [r] (local cap)
Date: Tue, 10 Mar 2026 10:55:24 +0800	[thread overview]
Message-ID: <202603101034.DCC8mF48-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: "Luke D. Jones" <luke@ljones.dev>
CC: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
CC: Denis Benato <denis.benato@linux.dev>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
commit: f99eb098090e4c8bfca4190b545e20450fee8250 platform/x86: asus-armoury: move existing tunings to asus-armoury module
date:   4 months ago
:::::: branch date: 27 hours ago
:::::: commit date: 4 months ago
config: x86_64-randconfig-r073-20260310 (https://download.01.org/0day-ci/archive/20260310/202603101034.DCC8mF48-lkp@intel.com/config)
compiler: gcc-13 (Debian 13.3.0-16) 13.3.0
smatch: v0.5.0-9004-gb810ac53

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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603101034.DCC8mF48-lkp@intel.com/

smatch warnings:
drivers/platform/x86/asus-armoury.c:358 mini_led_mode_current_value_store() warn: potential spectre issue 'mini_led_mode_map' [r] (local cap)
drivers/platform/x86/asus-armoury.c:496 egpu_enable_current_value_store() warn: potential spectre issue 'egpu_status_map' [r] (local cap)
drivers/platform/x86/asus-armoury.c:500 egpu_enable_current_value_store() warn: possible spectre second half.  'enable'

vim +/mini_led_mode_map +358 drivers/platform/x86/asus-armoury.c

f99eb098090e4c Luke D. Jones 2025-11-02  322  
f99eb098090e4c Luke D. Jones 2025-11-02  323  static ssize_t mini_led_mode_current_value_store(struct kobject *kobj,
f99eb098090e4c Luke D. Jones 2025-11-02  324  						 struct kobj_attribute *attr,
f99eb098090e4c Luke D. Jones 2025-11-02  325  						 const char *buf, size_t count)
f99eb098090e4c Luke D. Jones 2025-11-02  326  {
f99eb098090e4c Luke D. Jones 2025-11-02  327  	u32 *mini_led_mode_map;
f99eb098090e4c Luke D. Jones 2025-11-02  328  	size_t mini_led_mode_map_size;
f99eb098090e4c Luke D. Jones 2025-11-02  329  	u32 mode;
f99eb098090e4c Luke D. Jones 2025-11-02  330  	int err;
f99eb098090e4c Luke D. Jones 2025-11-02  331  
f99eb098090e4c Luke D. Jones 2025-11-02  332  	err = kstrtou32(buf, 10, &mode);
f99eb098090e4c Luke D. Jones 2025-11-02  333  	if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  334  		return err;
f99eb098090e4c Luke D. Jones 2025-11-02  335  
f99eb098090e4c Luke D. Jones 2025-11-02  336  	switch (asus_armoury.mini_led_dev_id) {
f99eb098090e4c Luke D. Jones 2025-11-02  337  	case ASUS_WMI_DEVID_MINI_LED_MODE:
f99eb098090e4c Luke D. Jones 2025-11-02  338  		mini_led_mode_map = mini_led_mode1_map;
f99eb098090e4c Luke D. Jones 2025-11-02  339  		mini_led_mode_map_size = ARRAY_SIZE(mini_led_mode1_map);
f99eb098090e4c Luke D. Jones 2025-11-02  340  		break;
f99eb098090e4c Luke D. Jones 2025-11-02  341  
f99eb098090e4c Luke D. Jones 2025-11-02  342  	case ASUS_WMI_DEVID_MINI_LED_MODE2:
f99eb098090e4c Luke D. Jones 2025-11-02  343  		mini_led_mode_map = mini_led_mode2_map;
f99eb098090e4c Luke D. Jones 2025-11-02  344  		mini_led_mode_map_size = ARRAY_SIZE(mini_led_mode2_map);
f99eb098090e4c Luke D. Jones 2025-11-02  345  		break;
f99eb098090e4c Luke D. Jones 2025-11-02  346  
f99eb098090e4c Luke D. Jones 2025-11-02  347  	default:
f99eb098090e4c Luke D. Jones 2025-11-02  348  		pr_err("Unrecognized mini-LED devid: %u\n", asus_armoury.mini_led_dev_id);
f99eb098090e4c Luke D. Jones 2025-11-02  349  		return -EINVAL;
f99eb098090e4c Luke D. Jones 2025-11-02  350  	}
f99eb098090e4c Luke D. Jones 2025-11-02  351  
f99eb098090e4c Luke D. Jones 2025-11-02  352  	if (mode >= mini_led_mode_map_size) {
f99eb098090e4c Luke D. Jones 2025-11-02  353  		return pr_warn("mini-LED mode unrecognized device: %u\n", mode);
f99eb098090e4c Luke D. Jones 2025-11-02  354  		return -ENODEV;
f99eb098090e4c Luke D. Jones 2025-11-02  355  	}
f99eb098090e4c Luke D. Jones 2025-11-02  356  
f99eb098090e4c Luke D. Jones 2025-11-02  357  	return armoury_attr_uint_store(kobj, attr, buf, count,
f99eb098090e4c Luke D. Jones 2025-11-02 @358  				       0, mini_led_mode_map[mode],
f99eb098090e4c Luke D. Jones 2025-11-02  359  				       NULL, asus_armoury.mini_led_dev_id);
f99eb098090e4c Luke D. Jones 2025-11-02  360  }
f99eb098090e4c Luke D. Jones 2025-11-02  361  
f99eb098090e4c Luke D. Jones 2025-11-02  362  static ssize_t mini_led_mode_possible_values_show(struct kobject *kobj,
f99eb098090e4c Luke D. Jones 2025-11-02  363  						  struct kobj_attribute *attr, char *buf)
f99eb098090e4c Luke D. Jones 2025-11-02  364  {
f99eb098090e4c Luke D. Jones 2025-11-02  365  	switch (asus_armoury.mini_led_dev_id) {
f99eb098090e4c Luke D. Jones 2025-11-02  366  	case ASUS_WMI_DEVID_MINI_LED_MODE:
f99eb098090e4c Luke D. Jones 2025-11-02  367  		return armoury_attr_enum_list(buf, ARRAY_SIZE(mini_led_mode1_map));
f99eb098090e4c Luke D. Jones 2025-11-02  368  	case ASUS_WMI_DEVID_MINI_LED_MODE2:
f99eb098090e4c Luke D. Jones 2025-11-02  369  		return armoury_attr_enum_list(buf, ARRAY_SIZE(mini_led_mode2_map));
f99eb098090e4c Luke D. Jones 2025-11-02  370  	default:
f99eb098090e4c Luke D. Jones 2025-11-02  371  		return -ENODEV;
f99eb098090e4c Luke D. Jones 2025-11-02  372  	}
f99eb098090e4c Luke D. Jones 2025-11-02  373  }
f99eb098090e4c Luke D. Jones 2025-11-02  374  ASUS_ATTR_GROUP_ENUM(mini_led_mode, "mini_led_mode", "Set the mini-LED backlight mode");
f99eb098090e4c Luke D. Jones 2025-11-02  375  
f99eb098090e4c Luke D. Jones 2025-11-02  376  static ssize_t gpu_mux_mode_current_value_store(struct kobject *kobj,
f99eb098090e4c Luke D. Jones 2025-11-02  377  						struct kobj_attribute *attr,
f99eb098090e4c Luke D. Jones 2025-11-02  378  						const char *buf, size_t count)
f99eb098090e4c Luke D. Jones 2025-11-02  379  {
f99eb098090e4c Luke D. Jones 2025-11-02  380  	int result, err;
f99eb098090e4c Luke D. Jones 2025-11-02  381  	bool optimus;
f99eb098090e4c Luke D. Jones 2025-11-02  382  
f99eb098090e4c Luke D. Jones 2025-11-02  383  	err = kstrtobool(buf, &optimus);
f99eb098090e4c Luke D. Jones 2025-11-02  384  	if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  385  		return err;
f99eb098090e4c Luke D. Jones 2025-11-02  386  
f99eb098090e4c Luke D. Jones 2025-11-02  387  	if (armoury_has_devstate(ASUS_WMI_DEVID_DGPU)) {
f99eb098090e4c Luke D. Jones 2025-11-02  388  		err = armoury_get_devstate(NULL, &result, ASUS_WMI_DEVID_DGPU);
f99eb098090e4c Luke D. Jones 2025-11-02  389  		if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  390  			return err;
f99eb098090e4c Luke D. Jones 2025-11-02  391  		if (result && !optimus) {
f99eb098090e4c Luke D. Jones 2025-11-02  392  			pr_warn("Cannot switch MUX to dGPU mode when dGPU is disabled: %02X\n",
f99eb098090e4c Luke D. Jones 2025-11-02  393  				result);
f99eb098090e4c Luke D. Jones 2025-11-02  394  			return -ENODEV;
f99eb098090e4c Luke D. Jones 2025-11-02  395  		}
f99eb098090e4c Luke D. Jones 2025-11-02  396  	}
f99eb098090e4c Luke D. Jones 2025-11-02  397  
f99eb098090e4c Luke D. Jones 2025-11-02  398  	if (armoury_has_devstate(ASUS_WMI_DEVID_EGPU)) {
f99eb098090e4c Luke D. Jones 2025-11-02  399  		err = armoury_get_devstate(NULL, &result, ASUS_WMI_DEVID_EGPU);
f99eb098090e4c Luke D. Jones 2025-11-02  400  		if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  401  			return err;
f99eb098090e4c Luke D. Jones 2025-11-02  402  		if (result && !optimus) {
f99eb098090e4c Luke D. Jones 2025-11-02  403  			pr_warn("Cannot switch MUX to dGPU mode when eGPU is enabled\n");
f99eb098090e4c Luke D. Jones 2025-11-02  404  			return -EBUSY;
f99eb098090e4c Luke D. Jones 2025-11-02  405  		}
f99eb098090e4c Luke D. Jones 2025-11-02  406  	}
f99eb098090e4c Luke D. Jones 2025-11-02  407  
f99eb098090e4c Luke D. Jones 2025-11-02  408  	err = armoury_set_devstate(attr, optimus ? 1 : 0, NULL, asus_armoury.gpu_mux_dev_id);
f99eb098090e4c Luke D. Jones 2025-11-02  409  	if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  410  		return err;
f99eb098090e4c Luke D. Jones 2025-11-02  411  
f99eb098090e4c Luke D. Jones 2025-11-02  412  	sysfs_notify(kobj, NULL, attr->attr.name);
f99eb098090e4c Luke D. Jones 2025-11-02  413  	asus_set_reboot_and_signal_event();
f99eb098090e4c Luke D. Jones 2025-11-02  414  
f99eb098090e4c Luke D. Jones 2025-11-02  415  	return count;
f99eb098090e4c Luke D. Jones 2025-11-02  416  }
f99eb098090e4c Luke D. Jones 2025-11-02  417  ASUS_WMI_SHOW_INT(gpu_mux_mode_current_value, asus_armoury.gpu_mux_dev_id);
f99eb098090e4c Luke D. Jones 2025-11-02  418  ASUS_ATTR_GROUP_BOOL(gpu_mux_mode, "gpu_mux_mode", "Set the GPU display MUX mode");
f99eb098090e4c Luke D. Jones 2025-11-02  419  
f99eb098090e4c Luke D. Jones 2025-11-02  420  static ssize_t dgpu_disable_current_value_store(struct kobject *kobj,
f99eb098090e4c Luke D. Jones 2025-11-02  421  						struct kobj_attribute *attr, const char *buf,
f99eb098090e4c Luke D. Jones 2025-11-02  422  						size_t count)
f99eb098090e4c Luke D. Jones 2025-11-02  423  {
f99eb098090e4c Luke D. Jones 2025-11-02  424  	int result, err;
f99eb098090e4c Luke D. Jones 2025-11-02  425  	bool disable;
f99eb098090e4c Luke D. Jones 2025-11-02  426  
f99eb098090e4c Luke D. Jones 2025-11-02  427  	err = kstrtobool(buf, &disable);
f99eb098090e4c Luke D. Jones 2025-11-02  428  	if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  429  		return err;
f99eb098090e4c Luke D. Jones 2025-11-02  430  
f99eb098090e4c Luke D. Jones 2025-11-02  431  	if (asus_armoury.gpu_mux_dev_id) {
f99eb098090e4c Luke D. Jones 2025-11-02  432  		err = armoury_get_devstate(NULL, &result, asus_armoury.gpu_mux_dev_id);
f99eb098090e4c Luke D. Jones 2025-11-02  433  		if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  434  			return err;
f99eb098090e4c Luke D. Jones 2025-11-02  435  		if (!result && disable) {
f99eb098090e4c Luke D. Jones 2025-11-02  436  			pr_warn("Cannot disable dGPU when the MUX is in dGPU mode\n");
f99eb098090e4c Luke D. Jones 2025-11-02  437  			return -EBUSY;
f99eb098090e4c Luke D. Jones 2025-11-02  438  		}
f99eb098090e4c Luke D. Jones 2025-11-02  439  	}
f99eb098090e4c Luke D. Jones 2025-11-02  440  
f99eb098090e4c Luke D. Jones 2025-11-02  441  	scoped_guard(mutex, &asus_armoury.egpu_mutex) {
f99eb098090e4c Luke D. Jones 2025-11-02  442  		err = armoury_set_devstate(attr, disable ? 1 : 0, NULL, ASUS_WMI_DEVID_DGPU);
f99eb098090e4c Luke D. Jones 2025-11-02  443  		if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  444  			return err;
f99eb098090e4c Luke D. Jones 2025-11-02  445  	}
f99eb098090e4c Luke D. Jones 2025-11-02  446  
f99eb098090e4c Luke D. Jones 2025-11-02  447  	sysfs_notify(kobj, NULL, attr->attr.name);
f99eb098090e4c Luke D. Jones 2025-11-02  448  
f99eb098090e4c Luke D. Jones 2025-11-02  449  	return count;
f99eb098090e4c Luke D. Jones 2025-11-02  450  }
f99eb098090e4c Luke D. Jones 2025-11-02  451  ASUS_WMI_SHOW_INT(dgpu_disable_current_value, ASUS_WMI_DEVID_DGPU);
f99eb098090e4c Luke D. Jones 2025-11-02  452  ASUS_ATTR_GROUP_BOOL(dgpu_disable, "dgpu_disable", "Disable the dGPU");
f99eb098090e4c Luke D. Jones 2025-11-02  453  
f99eb098090e4c Luke D. Jones 2025-11-02  454  /* Values map for eGPU activation requests. */
f99eb098090e4c Luke D. Jones 2025-11-02  455  static u32 egpu_status_map[] = {
f99eb098090e4c Luke D. Jones 2025-11-02  456  	[0] = 0x00000000U,
f99eb098090e4c Luke D. Jones 2025-11-02  457  	[1] = 0x00000001U,
f99eb098090e4c Luke D. Jones 2025-11-02  458  	[2] = 0x00000101U,
f99eb098090e4c Luke D. Jones 2025-11-02  459  	[3] = 0x00000201U,
f99eb098090e4c Luke D. Jones 2025-11-02  460  };
f99eb098090e4c Luke D. Jones 2025-11-02  461  
f99eb098090e4c Luke D. Jones 2025-11-02  462  /*
f99eb098090e4c Luke D. Jones 2025-11-02  463   * armoury_pci_rescan() - Performs a PCI rescan
f99eb098090e4c Luke D. Jones 2025-11-02  464   *
f99eb098090e4c Luke D. Jones 2025-11-02  465   * Bring up any GPU that has been hotplugged in the system.
f99eb098090e4c Luke D. Jones 2025-11-02  466   */
f99eb098090e4c Luke D. Jones 2025-11-02  467  static void armoury_pci_rescan(void)
f99eb098090e4c Luke D. Jones 2025-11-02  468  {
f99eb098090e4c Luke D. Jones 2025-11-02  469  	struct pci_bus *b = NULL;
f99eb098090e4c Luke D. Jones 2025-11-02  470  
f99eb098090e4c Luke D. Jones 2025-11-02  471  	pci_lock_rescan_remove();
f99eb098090e4c Luke D. Jones 2025-11-02  472  	while ((b = pci_find_next_bus(b)) != NULL)
f99eb098090e4c Luke D. Jones 2025-11-02  473  		pci_rescan_bus(b);
f99eb098090e4c Luke D. Jones 2025-11-02  474  	pci_unlock_rescan_remove();
f99eb098090e4c Luke D. Jones 2025-11-02  475  }
f99eb098090e4c Luke D. Jones 2025-11-02  476  
f99eb098090e4c Luke D. Jones 2025-11-02  477  /*
f99eb098090e4c Luke D. Jones 2025-11-02  478   * The ACPI call to enable the eGPU might also disable the internal dGPU,
f99eb098090e4c Luke D. Jones 2025-11-02  479   * but this is not always the case and on certain models enabling the eGPU
f99eb098090e4c Luke D. Jones 2025-11-02  480   * when the dGPU is either still active or has been disabled without rebooting
f99eb098090e4c Luke D. Jones 2025-11-02  481   * will make both GPUs malfunction and the kernel will detect many
f99eb098090e4c Luke D. Jones 2025-11-02  482   * PCI AER unrecoverable errors.
f99eb098090e4c Luke D. Jones 2025-11-02  483   */
f99eb098090e4c Luke D. Jones 2025-11-02  484  static ssize_t egpu_enable_current_value_store(struct kobject *kobj, struct kobj_attribute *attr,
f99eb098090e4c Luke D. Jones 2025-11-02  485  							const char *buf, size_t count)
f99eb098090e4c Luke D. Jones 2025-11-02  486  {
f99eb098090e4c Luke D. Jones 2025-11-02  487  	int err;
f99eb098090e4c Luke D. Jones 2025-11-02  488  	u32 requested, enable, result;
f99eb098090e4c Luke D. Jones 2025-11-02  489  
f99eb098090e4c Luke D. Jones 2025-11-02  490  	err = kstrtou32(buf, 10, &requested);
f99eb098090e4c Luke D. Jones 2025-11-02  491  	if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  492  		return err;
f99eb098090e4c Luke D. Jones 2025-11-02  493  
f99eb098090e4c Luke D. Jones 2025-11-02  494  	if (requested >= ARRAY_SIZE(egpu_status_map))
f99eb098090e4c Luke D. Jones 2025-11-02  495  		return -EINVAL;
f99eb098090e4c Luke D. Jones 2025-11-02 @496  	enable = egpu_status_map[requested];
f99eb098090e4c Luke D. Jones 2025-11-02  497  
f99eb098090e4c Luke D. Jones 2025-11-02  498  	scoped_guard(mutex, &asus_armoury.egpu_mutex) {
f99eb098090e4c Luke D. Jones 2025-11-02  499  		/* Ensure the eGPU is connected before attempting to activate it. */
f99eb098090e4c Luke D. Jones 2025-11-02 @500  		if (enable) {
f99eb098090e4c Luke D. Jones 2025-11-02  501  			err = armoury_get_devstate(NULL, &result, ASUS_WMI_DEVID_EGPU_CONNECTED);
f99eb098090e4c Luke D. Jones 2025-11-02  502  			if (err) {
f99eb098090e4c Luke D. Jones 2025-11-02  503  				pr_warn("Failed to get eGPU connection status: %d\n", err);
f99eb098090e4c Luke D. Jones 2025-11-02  504  				return err;
f99eb098090e4c Luke D. Jones 2025-11-02  505  			}
f99eb098090e4c Luke D. Jones 2025-11-02  506  			if (!result) {
f99eb098090e4c Luke D. Jones 2025-11-02  507  				pr_warn("Cannot activate eGPU while undetected\n");
f99eb098090e4c Luke D. Jones 2025-11-02  508  				return -ENOENT;
f99eb098090e4c Luke D. Jones 2025-11-02  509  			}
f99eb098090e4c Luke D. Jones 2025-11-02  510  		}
f99eb098090e4c Luke D. Jones 2025-11-02  511  
f99eb098090e4c Luke D. Jones 2025-11-02  512  		if (asus_armoury.gpu_mux_dev_id) {
f99eb098090e4c Luke D. Jones 2025-11-02  513  			err = armoury_get_devstate(NULL, &result, asus_armoury.gpu_mux_dev_id);
f99eb098090e4c Luke D. Jones 2025-11-02  514  			if (err)
f99eb098090e4c Luke D. Jones 2025-11-02  515  				return err;
f99eb098090e4c Luke D. Jones 2025-11-02  516  
f99eb098090e4c Luke D. Jones 2025-11-02  517  			if (!result && enable) {
f99eb098090e4c Luke D. Jones 2025-11-02  518  				pr_warn("Cannot enable eGPU when the MUX is in dGPU mode\n");
f99eb098090e4c Luke D. Jones 2025-11-02  519  				return -ENODEV;
f99eb098090e4c Luke D. Jones 2025-11-02  520  			}
f99eb098090e4c Luke D. Jones 2025-11-02  521  		}
f99eb098090e4c Luke D. Jones 2025-11-02  522  
f99eb098090e4c Luke D. Jones 2025-11-02  523  		err = armoury_set_devstate(attr, enable, &result, ASUS_WMI_DEVID_EGPU);
f99eb098090e4c Luke D. Jones 2025-11-02  524  		if (err) {
f99eb098090e4c Luke D. Jones 2025-11-02  525  			pr_err("Failed to set %s: %d\n", attr->attr.name, err);
f99eb098090e4c Luke D. Jones 2025-11-02  526  			return err;
f99eb098090e4c Luke D. Jones 2025-11-02  527  		}
f99eb098090e4c Luke D. Jones 2025-11-02  528  
f99eb098090e4c Luke D. Jones 2025-11-02  529  		/*
f99eb098090e4c Luke D. Jones 2025-11-02  530  		 * ACPI returns value 0x01 on success and 0x02 on a partial activation:
f99eb098090e4c Luke D. Jones 2025-11-02  531  		 * performing a pci rescan will bring up the device in pci-e 3.0 speed,
f99eb098090e4c Luke D. Jones 2025-11-02  532  		 * after a reboot the device will work at full speed.
f99eb098090e4c Luke D. Jones 2025-11-02  533  		 */
f99eb098090e4c Luke D. Jones 2025-11-02  534  		switch (result) {
f99eb098090e4c Luke D. Jones 2025-11-02  535  		case 0x01:
f99eb098090e4c Luke D. Jones 2025-11-02  536  			/*
f99eb098090e4c Luke D. Jones 2025-11-02  537  			 * When a GPU is in use it does not get disconnected even if
f99eb098090e4c Luke D. Jones 2025-11-02  538  			 * the ACPI call returns a success.
f99eb098090e4c Luke D. Jones 2025-11-02  539  			 */
f99eb098090e4c Luke D. Jones 2025-11-02  540  			if (!enable) {
f99eb098090e4c Luke D. Jones 2025-11-02  541  				err = armoury_get_devstate(attr, &result, ASUS_WMI_DEVID_EGPU);
f99eb098090e4c Luke D. Jones 2025-11-02  542  				if (err) {
f99eb098090e4c Luke D. Jones 2025-11-02  543  					pr_warn("Failed to ensure eGPU is deactivated: %d\n", err);
f99eb098090e4c Luke D. Jones 2025-11-02  544  					return err;
f99eb098090e4c Luke D. Jones 2025-11-02  545  				}
f99eb098090e4c Luke D. Jones 2025-11-02  546  
f99eb098090e4c Luke D. Jones 2025-11-02  547  				if (result != 0)
f99eb098090e4c Luke D. Jones 2025-11-02  548  					return -EBUSY;
f99eb098090e4c Luke D. Jones 2025-11-02  549  			}
f99eb098090e4c Luke D. Jones 2025-11-02  550  
f99eb098090e4c Luke D. Jones 2025-11-02  551  			pr_debug("Success changing the eGPU status\n");
f99eb098090e4c Luke D. Jones 2025-11-02  552  			break;
f99eb098090e4c Luke D. Jones 2025-11-02  553  		case 0x02:
f99eb098090e4c Luke D. Jones 2025-11-02  554  			pr_info("Success changing the eGPU status, a reboot is strongly advised\n");
f99eb098090e4c Luke D. Jones 2025-11-02  555  			asus_set_reboot_and_signal_event();
f99eb098090e4c Luke D. Jones 2025-11-02  556  			break;
f99eb098090e4c Luke D. Jones 2025-11-02  557  		default:
f99eb098090e4c Luke D. Jones 2025-11-02  558  			pr_err("Failed to change the eGPU status: wmi result is 0x%x\n", result);
f99eb098090e4c Luke D. Jones 2025-11-02  559  			return -EIO;
f99eb098090e4c Luke D. Jones 2025-11-02  560  		}
f99eb098090e4c Luke D. Jones 2025-11-02  561  	}
f99eb098090e4c Luke D. Jones 2025-11-02  562  
f99eb098090e4c Luke D. Jones 2025-11-02  563  	/*
f99eb098090e4c Luke D. Jones 2025-11-02  564  	 * Perform a PCI rescan: on every tested model this is necessary
f99eb098090e4c Luke D. Jones 2025-11-02  565  	 * to make the eGPU visible on the bus without rebooting.
f99eb098090e4c Luke D. Jones 2025-11-02  566  	 */
f99eb098090e4c Luke D. Jones 2025-11-02  567  	armoury_pci_rescan();
f99eb098090e4c Luke D. Jones 2025-11-02  568  
f99eb098090e4c Luke D. Jones 2025-11-02  569  	sysfs_notify(kobj, NULL, attr->attr.name);
f99eb098090e4c Luke D. Jones 2025-11-02  570  
f99eb098090e4c Luke D. Jones 2025-11-02  571  	return count;
f99eb098090e4c Luke D. Jones 2025-11-02  572  }
f99eb098090e4c Luke D. Jones 2025-11-02  573  

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

                 reply	other threads:[~2026-03-10  2:55 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=202603101034.DCC8mF48-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /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.