Patch "ipmi: Prefer ACPI system interfaces over SMBIOS ones" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ipmi: Prefer ACPI system interfaces over SMBIOS ones
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ipmi-prefer-acpi-system-interfaces-over-smbios-ones.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
7e030d6dff713250c7dcfb543cad2addaf479b0eMon Sep 17 00:00:00 2001
From: Corey Minyard <[email protected]>
Date: Fri, 8 Sep 2017 14:05:58 -0500
Subject: ipmi: Prefer ACPI system interfaces over SMBIOS ones
From: Corey Minyard <[email protected]>
commit 7e030d6dff713250c7dcfb543cad2addaf479b0e upstream.
The recent changes to add SMBIOS (DMI) IPMI interfaces as platform devices caused DMI to be selected before ACPI, causing ACPI type of operations to not work.
--- drivers/char/ipmi/ipmi_si_intf.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-)
drivers/char/ipmi/ipmi_si_intf.c +23 -10
@@ -3424,7 +3424,7 @@ static inline void wait_for_timer_and_thdel_timer_sync (&smi_info->si_timer); } -static int is_new_interface (struct smi_info *info) +static struct smi_info *find_dup_si (struct smi_info *info) {struct smi_info *e;
@@ -3439,24 +3439,36 @@ static int is_new_interface(struct smi_i*/ if (info->slave_addr && !e->slave_addr) e->slave_addr = info->slave_addr; -return 0 ; +return e; } } -return 1 ; +return NULL ; }static int add_smi (struct smi_info *new_smi) {int rv =0 ; +struct smi_info *dup;mutex_lock (&smi_infos_lock); -if (!is_new_interface (new_smi)) { -pr_info (PFX "%s-specified %s state machine: duplicate\n" , -ipmi_addr_src_to_str (new_smi->addr_source), - si_to_str[new_smi->si_type]); - rv = -EBUSY ; - goto out_err; + dup =find_dup_si (new_smi); +if (dup) { +if (new_smi->addr_source ==SI_ACPI && + dup->addr_source ==SI_SMBIOS ) { +/* We prefer ACPI over SMBIOS. */ +dev_info (dup->dev, +"Removing SMBIOS-specified %s state machine in favor of ACPI\n" , + si_to_str[new_smi->si_type]); +cleanup_one_si (dup); + }else { +dev_info (new_smi->dev, +"%s-specified %s state machine: duplicate\n" , +ipmi_addr_src_to_str (new_smi->addr_source), + si_to_str[new_smi->si_type]); + rv = -EBUSY ; + goto out_err; + } } pr_info(PFX "Adding %s-specified %s state machine\n",
@@ -3865,7 +3877,8 @@ static void cleanup_one_si(struct smi_inpoll (to_clean);schedule_timeout_uninterruptible (1 ); } -disable_si_irq (to_clean, false); +if (to_clean->handlers) +disable_si_irq (to_clean, false);while (to_clean->curr_msg || (to_clean->si_state !=SI_NORMAL )) {poll (to_clean);schedule_timeout_uninterruptible (1 );
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/ipmi-fix-unsigned-long-underflow.patch queue-4.14/ipmi-prefer-acpi-system-interfaces-over-smbios-ones.patch