"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "drivers/char/ipmi/ipmi_si_intf.c" between
linux-4.4.195.tar.xz and linux-4.4.196.tar.xz

About: The full source of the Linux kernel 4.4.x (longterm stable)

ipmi_si_intf.c  (linux-4.4.195.tar.xz):ipmi_si_intf.c  (linux-4.4.196.tar.xz)
skipping to change at line 283 skipping to change at line 283
* of brokenness is present. * of brokenness is present.
*/ */
bool cannot_disable_irq; bool cannot_disable_irq;
/* /*
* Some systems are broken and cannot set the irq enable * Some systems are broken and cannot set the irq enable
* bit, even if they support interrupts. * bit, even if they support interrupts.
*/ */
bool irq_enable_broken; bool irq_enable_broken;
/* Is the driver in maintenance mode? */
bool in_maintenance_mode;
/* /*
* Did we get an attention that we did not handle? * Did we get an attention that we did not handle?
*/ */
bool got_attn; bool got_attn;
/* From the get device id response... */ /* From the get device id response... */
struct ipmi_device_id device_id; struct ipmi_device_id device_id;
/* Driver model stuff. */ /* Driver model stuff. */
struct device *dev; struct device *dev;
skipping to change at line 1092 skipping to change at line 1095
* and the thread here sees something else, the timer * and the thread here sees something else, the timer
* handler won't restart the timer even though it is * handler won't restart the timer even though it is
* required. So start it here if necessary. * required. So start it here if necessary.
*/ */
if (smi_result != SI_SM_IDLE && !smi_info->timer_running) if (smi_result != SI_SM_IDLE && !smi_info->timer_running)
smi_mod_timer(smi_info, jiffies + SI_TIMEOUT_JIFFIES); smi_mod_timer(smi_info, jiffies + SI_TIMEOUT_JIFFIES);
spin_unlock_irqrestore(&(smi_info->si_lock), flags); spin_unlock_irqrestore(&(smi_info->si_lock), flags);
busy_wait = ipmi_thread_busy_wait(smi_result, smi_info, busy_wait = ipmi_thread_busy_wait(smi_result, smi_info,
&busy_until); &busy_until);
if (smi_result == SI_SM_CALL_WITHOUT_DELAY) if (smi_result == SI_SM_CALL_WITHOUT_DELAY) {
; /* do nothing */ ; /* do nothing */
else if (smi_result == SI_SM_CALL_WITH_DELAY && busy_wait) } else if (smi_result == SI_SM_CALL_WITH_DELAY && busy_wait) {
schedule(); /*
else if (smi_result == SI_SM_IDLE) { * In maintenance mode we run as fast as
* possible to allow firmware updates to
* complete as fast as possible, but normally
* don't bang on the scheduler.
*/
if (smi_info->in_maintenance_mode)
schedule();
else
usleep_range(100, 200);
} else if (smi_result == SI_SM_IDLE) {
if (atomic_read(&smi_info->need_watch)) { if (atomic_read(&smi_info->need_watch)) {
schedule_timeout_interruptible(100); schedule_timeout_interruptible(100);
} else { } else {
/* Wait to be woken up when we are needed. */ /* Wait to be woken up when we are needed. */
__set_current_state(TASK_INTERRUPTIBLE); __set_current_state(TASK_INTERRUPTIBLE);
schedule(); schedule();
} }
} else } else {
schedule_timeout_interruptible(1); schedule_timeout_interruptible(1);
}
} }
return 0; return 0;
} }
static void poll(void *send_info) static void poll(void *send_info)
{ {
struct smi_info *smi_info = send_info; struct smi_info *smi_info = send_info;
unsigned long flags = 0; unsigned long flags = 0;
bool run_to_completion = smi_info->run_to_completion; bool run_to_completion = smi_info->run_to_completion;
skipping to change at line 1283 skipping to change at line 1296
return 0; return 0;
} }
static void set_maintenance_mode(void *send_info, bool enable) static void set_maintenance_mode(void *send_info, bool enable)
{ {
struct smi_info *smi_info = send_info; struct smi_info *smi_info = send_info;
if (!enable) if (!enable)
atomic_set(&smi_info->req_events, 0); atomic_set(&smi_info->req_events, 0);
smi_info->in_maintenance_mode = enable;
} }
static const struct ipmi_smi_handlers handlers = { static const struct ipmi_smi_handlers handlers = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.start_processing = smi_start_processing, .start_processing = smi_start_processing,
.get_smi_info = get_smi_info, .get_smi_info = get_smi_info,
.sender = sender, .sender = sender,
.request_events = request_events, .request_events = request_events,
.set_need_watch = set_need_watch, .set_need_watch = set_need_watch,
.set_maintenance_mode = set_maintenance_mode, .set_maintenance_mode = set_maintenance_mode,
 End of changes. 6 change blocks. 
5 lines changed or deleted 19 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)