Re: Linux stable vs RT stable and RT dev

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sebastian

On 02/09/2018 11:39 AM, Sebastian Andrzej Siewior wrote:
> On 2018-02-06 09:47:15 [-0600], Dan Murphy wrote:
>> Sebastian
> Hi Dan,
> 
>> Agreed sorry for that.  I sent the issues before I got the mail list information.
> 
> You complained about two warnings. For number one I cherry-picked
> 15f7b41f70dd ("brd: remove unused brd_mutex"). 
> 

Great thanks.  I did see a LKML patch for this but it was old not sure if it was reposted or
reported to the list.

> The other thing was a warning in
> pl011_console_write::drivers/tty/serial/amba-pl011.c the flags member. I
> have here:
> 
>     CC      drivers/tty/serial/amba-pl011.o
> 
> with gcc version 7.3.0 (Debian 7.3.0-1). Looking at the code, flags is
> not be initialized in the uap->port.sysrq case but it is also not used.

I was using 7.2 gcc compiler distributed via Linaro.

> So it is a compiler thing and not a bug. There is the same pattern in
> the 8250 UART or the omap-serial driver. If you care enough to get this
> one fixed, please send a patch.

Hmmm I wonder why the compiler does not complain about this warning then.

I will look into it.  This warning has been around for a while (4.9-rt as well).

We also noticed that there are 2 merge conflicts when going to 4.14.18.
Any comments about providing a merge conflict email to the list?

Attached is the merge conflicts we are seeing 4.14.15-> 4.14.18

Dan

> 
> Sebastian
> 


-- 
------------------
Dan Murphy
diff --cc arch/x86/include/asm/thread_info.h
index 4721692,eda3b68..0000000
--- a/arch/x86/include/asm/thread_info.h
+++ b/arch/x86/include/asm/thread_info.h
@@@ -55,8 -55,7 +55,12 @@@ struct task_struct
  
  struct thread_info {
  	unsigned long		flags;		/* low level flags */
++<<<<<<< HEAD
 +	int                     preempt_lazy_count;     /* 0 => lazy preemptable
 +							   <0 => BUG */
++=======
+ 	u32			status;		/* thread synchronous flags */
++>>>>>>> e94830efe7587ed0b733341934aca406edeaccc8
  };
  
  #define INIT_THREAD_INFO(tsk)			\
diff --cc kernel/time/hrtimer.c
index fb3413d,052773d..0000000
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@@ -649,32 -587,77 +649,39 @@@ hrtimer_force_reprogram(struct hrtimer_
  	tick_program_event(cpu_base->expires_next, 1);
  }
  
 +/* High resolution timer related functions */
 +#ifdef CONFIG_HIGH_RES_TIMERS
 +
  /*
 - * When a timer is enqueued and expires earlier than the already enqueued
 - * timers, we have to check, whether it expires earlier than the timer for
 - * which the clock event device was armed.
 - *
 - * Called with interrupts disabled and base->cpu_base.lock held
 + * High resolution timer enabled ?
   */
 -static void hrtimer_reprogram(struct hrtimer *timer,
 -			      struct hrtimer_clock_base *base)
 -{
 -	struct hrtimer_cpu_base *cpu_base = this_cpu_ptr(&hrtimer_bases);
 -	ktime_t expires = ktime_sub(hrtimer_get_expires(timer), base->offset);
 -
 -	WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0);
 -
 -	/*
 -	 * If the timer is not on the current cpu, we cannot reprogram
 -	 * the other cpus clock event device.
 -	 */
 -	if (base->cpu_base != cpu_base)
 -		return;
 -
 -	/*
 -	 * If the hrtimer interrupt is running, then it will
 -	 * reevaluate the clock bases and reprogram the clock event
 -	 * device. The callbacks are always executed in hard interrupt
 -	 * context so we don't need an extra check for a running
 -	 * callback.
 -	 */
 -	if (cpu_base->in_hrtirq)
 -		return;
 -
 -	/*
 -	 * CLOCK_REALTIME timer might be requested with an absolute
 -	 * expiry time which is less than base->offset. Set it to 0.
 -	 */
 -	if (expires < 0)
 -		expires = 0;
 -
 -	if (expires >= cpu_base->expires_next)
 -		return;
 -
 -	/* Update the pointer to the next expiring timer */
 -	cpu_base->next_timer = timer;
 -
 -	/*
 -	 * If a hang was detected in the last timer interrupt then we
 -	 * do not schedule a timer which is earlier than the expiry
 -	 * which we enforced in the hang detection. We want the system
 -	 * to make progress.
 -	 */
 -	if (cpu_base->hang_detected)
 -		return;
 +static bool hrtimer_hres_enabled __read_mostly  = true;
 +unsigned int hrtimer_resolution __read_mostly = LOW_RES_NSEC;
 +EXPORT_SYMBOL_GPL(hrtimer_resolution);
  
 -	/*
 -	 * Program the timer hardware. We enforce the expiry for
 -	 * events which are already in the past.
 -	 */
 -	cpu_base->expires_next = expires;
 -	tick_program_event(expires, 1);
 +/*
 + * Enable / Disable high resolution mode
 + */
 +static int __init setup_hrtimer_hres(char *str)
 +{
 +	return (kstrtobool(str, &hrtimer_hres_enabled) == 0);
  }
  
 +__setup("highres=", setup_hrtimer_hres);
 +
  /*
 - * Initialize the high resolution related parts of cpu_base
 + * hrtimer_high_res_enabled - query, if the highres mode is enabled
   */
 -static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base)
 +static inline int hrtimer_is_hres_enabled(void)
  {
++<<<<<<< HEAD
 +	return hrtimer_hres_enabled;
++=======
+ 	base->expires_next = KTIME_MAX;
+ 	base->hang_detected = 0;
+ 	base->hres_active = 0;
+ 	base->next_timer = NULL;
++>>>>>>> e94830efe7587ed0b733341934aca406edeaccc8
  }
  
  /*
@@@ -1900,13 -1593,9 +1907,14 @@@ int hrtimers_prepare_cpu(unsigned int c
  		timerqueue_init_head(&cpu_base->clock_base[i].active);
  	}
  
+ 	cpu_base->active_bases = 0;
  	cpu_base->cpu = cpu;
 -	hrtimer_init_hres(cpu_base);
 +	cpu_base->hres_active = 0;
 +	cpu_base->expires_next = KTIME_MAX;
 +	cpu_base->softirq_expires_next = KTIME_MAX;
 +#ifdef CONFIG_PREEMPT_RT_BASE
 +	init_waitqueue_head(&cpu_base->wait);
 +#endif
  	return 0;
  }
  

[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux