All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] time/tick-broadcast: Fix tick_broadcast_offline() lockdep complaint
From: Paul E. McKenney @ 2019-06-20 16:01 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: linux-kernel, mingo, frederic, tglx
In-Reply-To: <20190620121032.GU3436@hirez.programming.kicks-ass.net>

On Thu, Jun 20, 2019 at 02:10:32PM +0200, Peter Zijlstra wrote:
> On Wed, Jun 19, 2019 at 11:19:03AM -0700, Paul E. McKenney wrote:
> > [ Hearing no objections and given no test failures in multiple weeks of
> >   rcutorture testing, I intend to submit this to the upcoming merge
> >   window.  Thoughts? ]
> 
> I can't remember seeing this before; but then, there's a ton of unread
> email in the inbox :-(

I have no idea whether or not you were on CC in the earlier thread.
But you are now!  ;-)

> > Some debugging code showed that the culprit was sched_cpu_dying().
> > It had irqs enabled after return from sched_tick_stop().  Which in turn
> > had irqs enabled after return from cancel_delayed_work_sync().  Which is a
> > wrapper around __cancel_work_timer().  Which can sleep in the case where
> > something else is concurrently trying to cancel the same delayed work,
> > and as Thomas Gleixner pointed out on IRC, sleeping is a decidedly bad
> > idea when you are invoked from take_cpu_down(), regardless of the state
> > you leave interrupts in upon return.
> > 
> > Code inspection located no reason why the delayed work absolutely
> > needed to be canceled from sched_tick_stop():  The work is not
> > bound to the outgoing CPU by design, given that the whole point is
> > to collect statistics without disturbing the outgoing CPU.
> > 
> > This commit therefore simply drops the cancel_delayed_work_sync() from
> > sched_tick_stop().  Instead, a new ->state field is added to the tick_work
> > structure so that the delayed-work handler function sched_tick_remote()
> > can avoid reposting itself.  A cpu_is_offline() check is also added to
> > sched_tick_remote() to avoid mucking with the state of an offlined CPU
> > (though it does appear safe to do so).  The sched_tick_start() and
> > sched_tick_stop() functions also update ->state, and sched_tick_start()
> > also schedules the delayed work if ->state indicates that it is not
> > already in flight.
> > 
> > Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
> > Cc: Ingo Molnar <mingo@redhat.com>
> > Cc: Peter Zijlstra <peterz@infradead.org>
> > Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
> > 
> > diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> > index 102dfcf0a29a..8409c83aa5fa 100644
> > --- a/kernel/sched/core.c
> > +++ b/kernel/sched/core.c
> > @@ -3050,14 +3050,44 @@ void scheduler_tick(void)
> >  
> >  struct tick_work {
> >  	int			cpu;
> > +	int			state;
> >  	struct delayed_work	work;
> >  };
> > +// Values for ->state, see diagram below.
> > +#define TICK_SCHED_REMOTE_OFFLINE	0
> > +#define TICK_SCHED_REMOTE_RUNNING	1
> > +#define TICK_SCHED_REMOTE_OFFLINING	2
> 
> That seems a daft set of values; consider { RUNNING, OFFLINING, OFFLINE }
> and see below.

As in make it an enum?  I could do that.

> > +
> > +// State diagram for ->state:
> > +//
> > +//
> > +//      +----->OFFLINE--------------------------+
> > +//      |                                       |
> > +//      |                                       |
> > +//      |                                       | sched_tick_start()
> > +//      | sched_tick_remote()                   |
> > +//      |                                       |
> > +//      |                                       V
> > +//      |                        +---------->RUNNING
> > +//      |                        |              |
> > +//      |                        |              |
> > +//      |                        |              |
> > +//      |     sched_tick_start() |              | sched_tick_stop()
> > +//      |                        |              |
> > +//      |                        |              |
> > +//      |                        |              |
> > +//      +--------------------OFFLINING<---------+
> > +//
> > +//
> > +// Other transitions get WARN_ON_ONCE(), except that sched_tick_remote()
> > +// and sched_tick_start() are happy to leave the state in RUNNING.
> 
> Can we please stick to old skool C comments?

Your file, your rules!

> Also, I find it harder to read that needed, maybe a little something
> like so:
> 
> /*
>  *              OFFLINE
>  *               |   ^
>  *               |   | tick_remote()
>  *               |   |
>  *               +--OFFLINING
>  *               |   ^
>  *  tick_start() |   | tick_stop()
>  *               v   |
>  *              RUNNING
>  */

As in remove the leading "sched_" from the function names?  (The names
were already there, so I left them be.)

> >  static struct tick_work __percpu *tick_work_cpu;
> >  
> >  static void sched_tick_remote(struct work_struct *work)
> >  {
> >  	struct delayed_work *dwork = to_delayed_work(work);
> > +	int os;
> 
> this should go at the end, reverse xmas tree preference and all that.

Alphabetical by variable name for me, but your file, your rules!

> >  	struct tick_work *twork = container_of(dwork, struct tick_work, work);
> >  	int cpu = twork->cpu;
> >  	struct rq *rq = cpu_rq(cpu);
> > @@ -3077,7 +3107,7 @@ static void sched_tick_remote(struct work_struct *work)
> >  
> >  	rq_lock_irq(rq, &rf);
> >  	curr = rq->curr;
> > -	if (is_idle_task(curr))
> > +	if (is_idle_task(curr) || cpu_is_offline(cpu))
> >  		goto out_unlock;
> >  
> >  	update_rq_clock(rq);
> > @@ -3097,13 +3127,22 @@ static void sched_tick_remote(struct work_struct *work)
> >  	/*
> >  	 * Run the remote tick once per second (1Hz). This arbitrary
> >  	 * frequency is large enough to avoid overload but short enough
> > -	 * to keep scheduler internal stats reasonably up to date.
> > +	 * to keep scheduler internal stats reasonably up to date.  But
> > +	 * first update state to reflect hotplug activity if required.
> >  	 */
> > -	queue_delayed_work(system_unbound_wq, dwork, HZ);
> > +	do {
> > +		os = READ_ONCE(twork->state);
> > +		WARN_ON_ONCE(os == TICK_SCHED_REMOTE_OFFLINE);
> > +		if (os == TICK_SCHED_REMOTE_RUNNING)
> > +			break;
> > +	} while (cmpxchg(&twork->state, os, TICK_SCHED_REMOTE_OFFLINE) != os);
> > +	if (os == TICK_SCHED_REMOTE_RUNNING)
> > +		queue_delayed_work(system_unbound_wq, dwork, HZ);
> >  }
> >  
> >  static void sched_tick_start(int cpu)
> >  {
> > +	int os;
> >  	struct tick_work *twork;
> >  
> >  	if (housekeeping_cpu(cpu, HK_FLAG_TICK))
> > @@ -3112,14 +3151,23 @@ static void sched_tick_start(int cpu)
> >  	WARN_ON_ONCE(!tick_work_cpu);
> >  
> >  	twork = per_cpu_ptr(tick_work_cpu, cpu);
> > -	twork->cpu = cpu;
> > -	INIT_DELAYED_WORK(&twork->work, sched_tick_remote);
> > -	queue_delayed_work(system_unbound_wq, &twork->work, HZ);
> > +	do {
> > +		os = READ_ONCE(twork->state);
> > +		if (WARN_ON_ONCE(os == TICK_SCHED_REMOTE_RUNNING))
> > +			break;
> > +		// Either idle or offline for a short period
> > +	} while (cmpxchg(&twork->state, os, TICK_SCHED_REMOTE_RUNNING) != os);
> > +	if (os == TICK_SCHED_REMOTE_OFFLINE) {
> > +		twork->cpu = cpu;
> > +		INIT_DELAYED_WORK(&twork->work, sched_tick_remote);
> > +		queue_delayed_work(system_unbound_wq, &twork->work, HZ);
> > +	}
> >  }
> >  
> >  #ifdef CONFIG_HOTPLUG_CPU
> >  static void sched_tick_stop(int cpu)
> >  {
> > +	int os;
> >  	struct tick_work *twork;
> >  
> >  	if (housekeeping_cpu(cpu, HK_FLAG_TICK))
> > @@ -3128,7 +3176,13 @@ static void sched_tick_stop(int cpu)
> >  	WARN_ON_ONCE(!tick_work_cpu);
> >  
> >  	twork = per_cpu_ptr(tick_work_cpu, cpu);
> > -	cancel_delayed_work_sync(&twork->work);
> > +	// There cannot be competing actions, but don't rely on stop_machine.
> > +	do {
> > +		os = READ_ONCE(twork->state);
> > +		WARN_ON_ONCE(os != TICK_SCHED_REMOTE_RUNNING);
> > +		// Either idle or offline for a short period
> > +	} while (cmpxchg(&twork->state, os, TICK_SCHED_REMOTE_OFFLINING) != os);
> > +	// Don't cancel, as this would mess up the state machine.
> >  }
> >  #endif /* CONFIG_HOTPLUG_CPU */
> 
> While not wrong, it seems overly complicated; can't we do something
> like:
> 
> tick:

As in sched_tick_remote(), right?

> 	state = atomic_read(->state);
> 	if (state) {

You sure you don't want "if (state != RUNNING)"?  But I guess you need
to understand that RUNNING==0 to understand the atomic_inc_not_zero().

> 		WARN_ON_ONCE(state != OFFLINING);
> 		if (atomic_inc_not_zero(->state))

This assumes that there cannot be concurrent calls to sched_tick_remote(),
otherwise, you can end up with ->state==3.  Which is a situation that
my version does a WARN_ON_ONCE() for, so I guess the only difference is
that mine would be guaranteed to complain and yours would complain with
high probability.  So fair enough!

> 			return;
> 	}
> 	queue_delayed_work();
> 
> 
> stop:
> 	/*
> 	 * This is hotplug; even without stop-machine, there cannot be
> 	 * concurrency on offlining specific CPUs.
> 	 */
> 	state = atomic_read(->state);

There cannot be a sched_tick_stop() or sched_tick_stop(), but there really
can be a sched_tick_remote() right here in the absence of stop-machine,
can't there?  Or am I missing something other than stop-machine that
prevents this?

Now, you could argue that concurrency is safe: Either sched_tick_remote()
sees RUNNING and doesn't touch the value, or it sees offlining and
sched_tick_stop() makes no further changes, but I am not sure that
this qualifies as simpler...

> 	WARN_ON_ONCE(state != RUNNING);
> 	atomic_set(->state, OFFLINING);

Another option would be to use atomic_xchg() as below instead of the
atomic_read()/atomic_set() pair.  Would that work for you?

> start:
> 	state = atomic_xchg(->state, RUNNING);
> 	WARN_ON_ONCE(state == RUNNING);
> 	if (state == OFFLINE) {
> 		// ...
> 		queue_delayed_work();
> 	}

This one looks to be an improvement on mine regardless of the other two.

								Thanx, Paul

^ permalink raw reply

* [Xen-devel] [linux-4.4 test] 138012: tolerable FAIL - PUSHED
From: osstest service owner @ 2019-06-20 16:00 UTC (permalink / raw)
  To: xen-devel, osstest-admin

flight 138012 linux-4.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/138012/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 10 debian-hvm-install fail never pass
 test-amd64-amd64-libvirt-xsm 13 migrate-support-check        fail   never pass
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict 10 debian-hvm-install fail never pass
 test-amd64-i386-xl-pvshim    12 guest-start                  fail   never pass
 test-amd64-amd64-xl-pvhv2-amd 12 guest-start                  fail  never pass
 test-amd64-i386-libvirt-xsm  13 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2   7 xen-boot                     fail   never pass
 test-arm64-arm64-xl           7 xen-boot                     fail   never pass
 test-amd64-i386-libvirt      13 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm       7 xen-boot                     fail   never pass
 test-arm64-arm64-libvirt-xsm  7 xen-boot                     fail   never pass
 test-arm64-arm64-examine      8 reboot                       fail   never pass
 test-amd64-amd64-libvirt     13 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1   7 xen-boot                     fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check fail never pass
 test-amd64-amd64-xl-pvhv2-intel 12 guest-start                 fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check fail never pass
 test-amd64-amd64-qemuu-nested-amd 17 debian-hvm-install/l1/l2  fail never pass
 test-amd64-amd64-libvirt-vhd 12 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  14 saverestore-support-check    fail   never pass
 test-amd64-amd64-xl-qemuu-win7-amd64 17 guest-stop             fail never pass
 test-amd64-i386-xl-qemuu-win7-amd64 17 guest-stop              fail never pass
 test-armhf-armhf-xl-vhd      12 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      13 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  14 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  14 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 12 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-raw 13 saverestore-support-check    fail   never pass
 test-amd64-amd64-xl-qemut-win7-amd64 17 guest-stop             fail never pass
 test-armhf-armhf-xl-rtds     13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     14 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          14 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 13 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 14 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-cubietruck 13 migrate-support-check        fail never pass
 test-armhf-armhf-xl-cubietruck 14 saverestore-support-check    fail never pass
 test-armhf-armhf-libvirt     13 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     14 saverestore-support-check    fail   never pass
 test-amd64-i386-xl-qemut-win7-amd64 17 guest-stop              fail never pass
 test-amd64-amd64-xl-qemut-ws16-amd64 17 guest-stop             fail never pass
 test-amd64-amd64-xl-qemuu-ws16-amd64 17 guest-stop             fail never pass
 test-amd64-i386-xl-qemuu-ws16-amd64 17 guest-stop              fail never pass
 test-amd64-i386-xl-qemut-ws16-amd64 17 guest-stop              fail never pass
 test-amd64-i386-xl-qemuu-win10-i386 10 windows-install         fail never pass
 test-amd64-amd64-xl-qemut-win10-i386 10 windows-install        fail never pass
 test-amd64-i386-xl-qemut-win10-i386 10 windows-install         fail never pass
 test-amd64-amd64-xl-qemuu-win10-i386 10 windows-install        fail never pass

version targeted for testing:
 linux                33790f2eda7393d422927078597a33475792c82c
baseline version:
 linux                d7b7345c3a5d9560ccb9d1551c7aab1d0126837c

Last test of basis   137717  2019-06-13 14:04:27 Z    7 days
Testing same since   137905  2019-06-17 18:10:32 Z    2 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  David S. Miller <davem@davemloft.net>
  Eric Dumazet <edumazet@google.com>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Neal Cardwell <ncardwell@google.com>
  Yuchung Cheng <ycheng@google.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                fail    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-armhf-armhf-xl-cubietruck                               pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        fail    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         fail    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     fail    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-xl-qemut-win10-i386                         fail    
 test-amd64-i386-xl-qemut-win10-i386                          fail    
 test-amd64-amd64-xl-qemuu-win10-i386                         fail    
 test-amd64-i386-xl-qemuu-win10-i386                          fail    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              fail    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-amd64-pvgrub                                pass    
 test-amd64-amd64-i386-pvgrub                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-xl-raw                                       pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/linux-pvops.git
   d7b7345c3a5d..33790f2eda73  33790f2eda7393d422927078597a33475792c82c -> tested/linux-4.4

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply

* ✗ patchtest: failure for python3: Reproducible build fixes
From: Patchwork @ 2019-06-20 16:01 UTC (permalink / raw)
  To: Joshua Watt; +Cc: openembedded-core
In-Reply-To: <20190620154302.9251-1-JPEWhacker@gmail.com>

== Series Details ==

Series: python3: Reproducible build fixes
Revision: 1
URL   : https://patchwork.openembedded.org/series/18272/
State : failure

== Summary ==


Thank you for submitting this patch series to OpenEmbedded Core. This is
an automated response. Several tests have been executed on the proposed
series by patchtest resulting in the following failures:



* Issue             Errors in your Python code were encountered [test_pylint] 
  Suggested fix    Correct the lines introduced by your patch
  Output           Please, fix the listed issues:
                   meta/recipes-devtools/python/python3/reformat_sysconfig.py does not exist



If you believe any of these test results are incorrect, please reply to the
mailing list (openembedded-core@lists.openembedded.org) raising your concerns.
Otherwise we would appreciate you correcting the issues and submitting a new
version of the patchset if applicable. Please ensure you add/increment the
version number when sending the new version (i.e. [PATCH] -> [PATCH v2] ->
[PATCH v3] -> ...).

---
Guidelines:     https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest
Test suite:     http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe



^ permalink raw reply

* Warrior, extended SDK
From: Peter Balazovic @ 2019-06-20 16:01 UTC (permalink / raw)
  To: Yocto list discussion

[-- Attachment #1: Type: text/plain, Size: 456 bytes --]

Hello guys

I'm trying to generate extended SDK under Yocto-Warrior and getting error
such as

ERROR: image-qt5-1.0-r0 do_sdk_depends: The file
/usr/include/tensorflow/contrib/lite/string_util.h is installed by both
tensorflow and tensorflow-lite, aborting
ERROR: image-qt5-1.0-r0 do_sdk_depends:
ERROR: image-qt5-1.0-r0 do_sdk_depends: Function failed:
extend_recipe_sysroot

can you help me identify an issue on this fail?

Thanks.
Peter

[-- Attachment #2: Type: text/html, Size: 604 bytes --]

^ permalink raw reply

* Re: [PATCH] drm: Dump mode picture aspect ratio
From: Ilia Mirkin @ 2019-06-20 15:59 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: Intel Graphics Development, dri-devel
In-Reply-To: <20190620154608.16239-1-ville.syrjala@linux.intel.com>

On Thu, Jun 20, 2019 at 11:46 AM Ville Syrjala
<ville.syrjala@linux.intel.com> wrote:
>
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Currently the logs show nothing about the mode's aspect ratio.
> Include that information in the normal mode dump.
>
> Cc: Ilia Mirkin <imirkin@alum.mit.edu>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/video/hdmi.c    | 3 ++-
>  include/drm/drm_modes.h | 4 ++--
>  include/linux/hdmi.h    | 3 +++
>  3 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
> index b939bc28d886..bc593fe1c268 100644
> --- a/drivers/video/hdmi.c
> +++ b/drivers/video/hdmi.c
> @@ -1057,7 +1057,7 @@ static const char *hdmi_colorimetry_get_name(enum hdmi_colorimetry colorimetry)
>         return "Invalid";
>  }
>
> -static const char *
> +const char *
>  hdmi_picture_aspect_get_name(enum hdmi_picture_aspect picture_aspect)
>  {
>         switch (picture_aspect) {
> @@ -1076,6 +1076,7 @@ hdmi_picture_aspect_get_name(enum hdmi_picture_aspect picture_aspect)
>         }
>         return "Invalid";
>  }
> +EXPORT_SYMBOL(hdmi_picture_aspect_get_name);

So this will return "No Data" most of the time (since the DRM_CAP
won't be enabled)? This will look awkward, esp since the person seeing
this print will have no idea what "No Data" is referring to.

>
>  static const char *
>  hdmi_active_aspect_get_name(enum hdmi_active_aspect active_aspect)
> diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h
> index 083f16747369..2b1809c74fbe 100644
> --- a/include/drm/drm_modes.h
> +++ b/include/drm/drm_modes.h
> @@ -431,7 +431,7 @@ struct drm_display_mode {
>  /**
>   * DRM_MODE_FMT - printf string for &struct drm_display_mode
>   */
> -#define DRM_MODE_FMT    "\"%s\": %d %d %d %d %d %d %d %d %d %d 0x%x 0x%x"
> +#define DRM_MODE_FMT    "\"%s\": %d %d %d %d %d %d %d %d %d %d 0x%x 0x%x %s"
>
>  /**
>   * DRM_MODE_ARG - printf arguments for &struct drm_display_mode
> @@ -441,7 +441,7 @@ struct drm_display_mode {
>         (m)->name, (m)->vrefresh, (m)->clock, \
>         (m)->hdisplay, (m)->hsync_start, (m)->hsync_end, (m)->htotal, \
>         (m)->vdisplay, (m)->vsync_start, (m)->vsync_end, (m)->vtotal, \
> -       (m)->type, (m)->flags
> +       (m)->type, (m)->flags, hdmi_picture_aspect_get_name((m)->picture_aspect_ratio)

Flags are printed as a literal integer value. Given that AR stuff is
fairly esoteric, I might just print an integer here too. (Why was
picture_aspect_ratio not stuffed into ->flags in the first place?)

>
>  #define obj_to_mode(x) container_of(x, struct drm_display_mode, base)
>
> diff --git a/include/linux/hdmi.h b/include/linux/hdmi.h
> index 9918a6c910c5..de7cbe385dba 100644
> --- a/include/linux/hdmi.h
> +++ b/include/linux/hdmi.h
> @@ -434,4 +434,7 @@ int hdmi_infoframe_unpack(union hdmi_infoframe *frame,
>  void hdmi_infoframe_log(const char *level, struct device *dev,
>                         const union hdmi_infoframe *frame);
>
> +const char *
> +hdmi_picture_aspect_get_name(enum hdmi_picture_aspect picture_aspect);
> +
>  #endif /* _DRM_HDMI_H */
> --
> 2.21.0
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply

* Re: Move away from default password
From: Joseph Reynolds @ 2019-06-20 16:00 UTC (permalink / raw)
  To: Stewart Smith
  Cc: Adriana Kobylak, openbmc, Openbmc, Thomaiyar, Richard Marian
In-Reply-To: <871rzr6cqt.fsf@linux.vnet.ibm.com>

On 2019-06-17 17:58, Stewart Smith wrote:
> Adriana Kobylak <anoo@linux.ibm.com> writes:
>>>> 1. Unique password per BMC.
>>>> In this approach, there is a way to change the factory default
>>>> password.  Example flow: assemble the BMC, test it, factory reset,
>>>> generate unique password (such as `pwgen`), then use a new function
>>>> “save factory default settings” which would save the current
>>>> setting into a new “factory settings” flash partition. After 
>>>> that,
>>>> a factory reset would reset to the factory installed password, not 
>>>> to
>>>> the setting in the source code.
>> 
>> How would this new "factory settings" flash partition be protected
>> against being modified by an unauthorized or malicious user?
> 
> My guess would be it'd be protected the same way that the default
> password is today: not at all. If an attacker can write to flash, the
> only way to reset the box is to dediprog the BMC flash chip.

Access to the flash would be protected from attack by network agents via 
password access to the BMC at two critical points.

In this scenario:
1. The factory assembles and tests the BMC, then changes its password to 
a new value.  The password hash is stored on the flash "factory 
settings" partition.  The BMC is then shipped to its new owner with the 
new password.
At this point, only the owner has password access to the BMC (unless the 
factory keeps a record of the new password).
2. The owner installs the BMC and configures it, including its network.  
For example, change the password, creates new accounts, and set up IP.
At this point, only the owner and owner's agents have password access to 
the BMC.

At this point, one of the owner's agents could use ssh to access the 
flash partition.  (But why would they need to?)

^ permalink raw reply

* [igt-dev] [PATCH i-g-t 2/2] tests/testdisplay: Allow testing aspect ratios
From: Ville Syrjala @ 2019-06-20 15:58 UTC (permalink / raw)
  To: igt-dev
In-Reply-To: <20190620155830.20500-1-ville.syrjala@linux.intel.com>

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Add a new knob "-A" to enable the aspect ratio client cap
and thus test modes with potentially different aspect ratios.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tests/testdisplay.c | 38 ++++++++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/tests/testdisplay.c b/tests/testdisplay.c
index 32590547e9f8..2fdc0236984b 100644
--- a/tests/testdisplay.c
+++ b/tests/testdisplay.c
@@ -80,7 +80,7 @@ struct termios saved_tio;
 drmModeRes *resources;
 int drm_fd, modes;
 int test_all_modes = 0, test_preferred_mode = 0, force_mode = 0, test_plane,
-    test_stereo_modes;
+    test_stereo_modes, test_aspect_ratio;
 uint64_t tiling = LOCAL_DRM_FORMAT_MOD_NONE;
 int sleep_between_modes = 0;
 int do_dpms = 0; /* This aliases to DPMS_ON */
@@ -248,6 +248,24 @@ static void paint_image(cairo_t *cr, const char *file)
 	igt_paint_image(cr, file, img_x, img_y, img_h, img_w);
 }
 
+static const char *picture_aspect_ratio_str(uint32_t flags)
+{
+	switch (flags & DRM_MODE_FLAG_PIC_AR_MASK) {
+	case DRM_MODE_FLAG_PIC_AR_NONE:
+		return "";
+	case DRM_MODE_FLAG_PIC_AR_4_3:
+		return "(4:3) ";
+	case DRM_MODE_FLAG_PIC_AR_16_9:
+		return "(16:9) ";
+	case DRM_MODE_FLAG_PIC_AR_64_27:
+		return "(64:27) ";
+	case DRM_MODE_FLAG_PIC_AR_256_135:
+		return "(256:135) ";
+	default:
+		return "(invalid) ";
+	}
+}
+
 static void paint_output_info(struct connector *c, struct igt_fb *fb)
 {
 	cairo_t *cr = igt_get_cairo_ctx(drm_fd, fb);
@@ -288,8 +306,10 @@ static void paint_output_info(struct connector *c, struct igt_fb *fb)
 			cairo_move_to(cr, x, top_y);
 		}
 		str_width = igt_cairo_printf_line(cr, align_right, 10,
-			"%s @ %dHz", c->connector->modes[i].name,
-			 c->connector->modes[i].vrefresh);
+						  "%s%s @ %dHz",
+						  picture_aspect_ratio_str(c->connector->modes[i].flags),
+						  c->connector->modes[i].name,
+						  c->connector->modes[i].vrefresh);
 		if (str_width > max_width)
 			max_width = str_width;
 	}
@@ -573,7 +593,7 @@ static void set_termio_mode(void)
 	tcsetattr(tio_fd, TCSANOW, &tio);
 }
 
-static char optstr[] = "3iaf:s:d:p:mrto:j:y";
+static char optstr[] = "3Aiaf:s:d:p:mrto:j:y";
 static struct option long_opts[] = {
 	{"yb", 0, 0, OPT_YB},
 	{"yf", 0, 0, OPT_YF},
@@ -588,6 +608,7 @@ static const char *help_str =
 	"  -p\t<planew,h>,<crtcx,y>,<crtcw,h> test overlay plane\n"
 	"  -m\ttest the preferred mode\n"
 	"  -3\ttest all 3D modes\n"
+	"  -A\ttest all aspect ratios\n"
 	"  -t\tuse an X-tiled framebuffer\n"
 	"  -y, --yb\n"
 	"  \tuse a Y-tiled framebuffer\n"
@@ -609,6 +630,9 @@ static int opt_handler(int opt, int opt_index, void *data)
 	case '3':
 		test_stereo_modes = 1;
 		break;
+	case 'A':
+		test_aspect_ratio = 1;
+		break;
 	case 'i':
 		opt_dump_info = true;
 		break;
@@ -697,6 +721,12 @@ igt_simple_main_args(optstr, long_opts, help_str, opt_handler, NULL)
 		goto out_close;
 	}
 
+	if (test_aspect_ratio &&
+	    drmSetClientCap(drm_fd, DRM_CLIENT_CAP_ASPECT_RATIO, 1) < 0) {
+		igt_warn("DRM_CLIENT_CAP_ASPECT_RATIO failed\n");
+		goto out_close;
+	}
+
 	if (opt_dump_info) {
 		dump_info();
 		goto out_close;
-- 
2.21.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related

* [igt-dev] [PATCH i-g-t 1/2] lib/igt_kms: Dump mode picture aspect ratio
From: Ville Syrjala @ 2019-06-20 15:58 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Include the mode picture aspect ratio in kmstest_dump_mode().

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 lib/igt_kms.c | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index da188a394cd6..dc8992cb043b 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -595,6 +595,24 @@ static const char *mode_stereo_name(const drmModeModeInfo *mode)
 	}
 }
 
+static const char *mode_picture_aspect_name(const drmModeModeInfo *mode)
+{
+	switch (mode->flags & DRM_MODE_FLAG_PIC_AR_MASK) {
+	case DRM_MODE_FLAG_PIC_AR_NONE:
+		return NULL;
+	case DRM_MODE_FLAG_PIC_AR_4_3:
+		return "4:3";
+	case DRM_MODE_FLAG_PIC_AR_16_9:
+		return "16:9";
+	case DRM_MODE_FLAG_PIC_AR_64_27:
+		return "64:27";
+	case DRM_MODE_FLAG_PIC_AR_256_135:
+		return "256:135";
+	default:
+		return "invalid";
+	}
+}
+
 /**
  * kmstest_dump_mode:
  * @mode: libdrm mode structure
@@ -604,8 +622,9 @@ static const char *mode_stereo_name(const drmModeModeInfo *mode)
 void kmstest_dump_mode(drmModeModeInfo *mode)
 {
 	const char *stereo = mode_stereo_name(mode);
+	const char *aspect = mode_picture_aspect_name(mode);
 
-	igt_info("  %s %d %d %d %d %d %d %d %d %d 0x%x 0x%x %d%s%s%s\n",
+	igt_info("  %s %d %d %d %d %d %d %d %d %d 0x%x 0x%x %d%s%s%s%s%s%s\n",
 		 mode->name, mode->vrefresh,
 		 mode->hdisplay, mode->hsync_start,
 		 mode->hsync_end, mode->htotal,
@@ -613,7 +632,9 @@ void kmstest_dump_mode(drmModeModeInfo *mode)
 		 mode->vsync_end, mode->vtotal,
 		 mode->flags, mode->type, mode->clock,
 		 stereo ? " (3D:" : "",
-		 stereo ? stereo : "", stereo ? ")" : "");
+		 stereo ? stereo : "", stereo ? ")" : "",
+		 aspect ? " (PAR:" : "",
+		 aspect ? aspect : "", aspect ? ")" : "");
 }
 
 /**
-- 
2.21.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related

* Re: [Qemu-devel] [PATCH v5 2/2] ati-vga: Implement DDC and EDID info from monitor
From: BALATON Zoltan @ 2019-06-20 15:40 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: Corey Minyard, qemu-devel
In-Reply-To: <20190620150923.gpe4rqn3qc54gcsn@sirius.home.kraxel.org>

On Thu, 20 Jun 2019, Gerd Hoffmann wrote:
> On Thu, Jun 20, 2019 at 12:55:23PM +0200, BALATON Zoltan wrote:
>> This adds DDC support to ati-vga and connects i2c-ddc to it. This
>> allows at least MacOS with an ATI ndrv, Linux radeonfb and MorphOS to
>
> linux radeonfb is rv100 only, and aty128fb has no i2c support.
> Do MacOS and MorphOS have working edid with both card variants?

I've only tested EDID with MacOS with an NDRV from an ATI card ROM and 
MorphOS on mac99. These could read EDID with this patch. Haven't tried 
RV100 as that's known to be very incomplete to work yet (probably needs at 
least command FIFO to do something). The rage128 Xorg driver might load 
but that wants to use VESA BIOS function mentioned in the commit message 
to read EDID so it does not work yet. If you can add that function to 
vesabios it might get further.

>> +    case GPIO_MONID ... GPIO_MONID + 3:
>> +        /* FIXME What does Radeon have here? */
>> +        if (s->dev_id == PCI_DEVICE_ID_ATI_RAGE128_PF) {
>> +            /* Rage128p accesses DDC used to get EDID on these pins */
>> +            ati_reg_write_offs(&s->regs.gpio_monid,
>> +                               addr - GPIO_MONID, data, size);
>> +            if ((s->regs.gpio_monid & BIT(25)) &&
>
> Extra enable bit, ok.

This bit is listed as mask bit in docs and clients set this to enable 
other bits. It could probably safely be ignored (does not seem to be 
present on RV100 only on older card) but checking it does not hurt either.

>> +                addr <= GPIO_MONID + 2 && addr + size > GPIO_MONID + 2) {
>
> Hmm, isn't this just "addr == GPIO_MONID + 2" ?

No because there could be all kinds of unalligned or multibyte access and 
we only want to trigger this when the byte with the enable bits are 
touched. (The MacOS NDRV accesses this 1 byte at a time so this is needed 
to avoid spurious i2c bit banging but other drivers write 4 bytes so then 
addr is not equal but covering above byte which is what this test allows.

>> +                s->regs.gpio_monid = ati_i2c(s->bbi2c, s->regs.gpio_monid, 1);
>
> So all i2c bits are shifted by one compared to rv100, correct?

They are in a different register and drivers I've tried poke bits shifted 
by one on R128P.

Regards,
BALATON Zoltan


^ permalink raw reply

* [PATCH] irqchip/gic-pm: remove PM_CLK dependency
From: Sameer Pujar @ 2019-06-20 15:57 UTC (permalink / raw)
  To: thierry.reding, jonathanh, marc.zyngier, jason, tglx
  Cc: linux-tegra, linux-kernel, Sameer Pujar

gic-pm driver does not use pm-clk interface now and hence the dependency
is removed from Kconfig.

Signed-off-by: Sameer Pujar <spujar@nvidia.com>
---
 drivers/irqchip/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index 2d3b5a2..6346d6f 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -15,7 +15,6 @@ config ARM_GIC_PM
 	bool
 	depends on PM
 	select ARM_GIC
-	select PM_CLK
 
 config ARM_GIC_MAX_NR
 	int
-- 
2.7.4


^ permalink raw reply related

* [PATCH] irqchip/gic-pm: remove PM_CLK dependency
From: Sameer Pujar @ 2019-06-20 15:57 UTC (permalink / raw)
  To: thierry.reding, jonathanh, marc.zyngier, jason, tglx
  Cc: linux-tegra, linux-kernel, Sameer Pujar

gic-pm driver does not use pm-clk interface now and hence the dependency
is removed from Kconfig.

Signed-off-by: Sameer Pujar <spujar@nvidia.com>
---
 drivers/irqchip/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index 2d3b5a2..6346d6f 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -15,7 +15,6 @@ config ARM_GIC_PM
 	bool
 	depends on PM
 	select ARM_GIC
-	select PM_CLK
 
 config ARM_GIC_MAX_NR
 	int
-- 
2.7.4

^ permalink raw reply related

* Re: [PATCH v1 1/4] mm: introduce MADV_COLD
From: Joel Fernandes @ 2019-06-20 15:57 UTC (permalink / raw)
  To: Minchan Kim
  Cc: Andrew Morton, linux-mm, LKML, Linux API, Michal Hocko,
	Johannes Weiner, Tim Murray, Suren Baghdasaryan,
	Daniel Colascione, Shakeel Butt, Sonny Rao, Brian Geffon,
	Jann Horn, Oleg Nesterov, Christian Brauner, oleksandr, hdanton,
	Vladimir Davydov
In-Reply-To: <20190620050132.GC105727@google.com>

On Thu, Jun 20, 2019 at 1:01 AM Minchan Kim <minchan@kernel.org> wrote:
[snip]
> > > >
> > > > I think to fix this, what you should do is clear the PG_Idle flag if the
> > > > young/accessed PTE bits are set. If PG_Idle is already cleared, then you
> > > > don't need to do anything.
> > >
> > > I'm not sure. What does it make MADV_COLD special?
> > > How about MADV_FREE|MADV_DONTNEED?
> > > Why don't they clear PG_Idle if pte was young at tearing down pte?
> >
> > Good point, so it sounds like those (MADV_FREE|MADV_DONTNEED) also need to be fixed then?
>
> Not sure. If you want it, maybe you need to fix every pte clearing and pte_mkold
> part, which is more general to cover every sites like munmap, get_user_pages and
> so on. Anyway, I don't think it's related to this patchset.

Ok, I can look into this issue on my own when I get time. I'll add it
to my list. No problems with your patch otherwise from my side.

 -Joel

^ permalink raw reply

* Re: [Qemu-devel] [PATCH v5 2/2] ati-vga: Implement DDC and EDID info from monitor
From: Gerd Hoffmann @ 2019-06-20 15:52 UTC (permalink / raw)
  To: BALATON Zoltan; +Cc: Corey Minyard, qemu-devel
In-Reply-To: <alpine.BSF.2.21.9999.1906201729320.50442@zero.eik.bme.hu>

  Hi,

> > > +                addr <= GPIO_MONID + 2 && addr + size > GPIO_MONID + 2) {
> > 
> > Hmm, isn't this just "addr == GPIO_MONID + 2" ?
> 
> No because there could be all kinds of unalligned or multibyte access and we
> only want to trigger this when the byte with the enable bits are touched.
> (The MacOS NDRV accesses this 1 byte at a time so this is needed to avoid
> spurious i2c bit banging but other drivers write 4 bytes so then addr is not
> equal but covering above byte which is what this test allows.

Can you add a comment explaining this (no need to respin, incremental patch is fine)?

thanks,
  Gerd



^ permalink raw reply

* [Qemu-devel] [PATCH v2] qmp: make qmp-shell work with python3
From: Igor Mammedov @ 2019-06-20 15:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: crosa, armbru, ehabkost

python3 doesn't have raw_input(), so qmp-shell breaks.
Use input() instead and override it with raw_input()
if running on python2.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v2:
 use sys.version_info[0] instead try/except 
    (Cleber Rosa <crosa@redhat.com>)

 scripts/qmp/qmp-shell | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
index 7776c7b141..f1cddeafbc 100755
--- a/scripts/qmp/qmp-shell
+++ b/scripts/qmp/qmp-shell
@@ -78,6 +78,9 @@ import re
 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
 from qemu import qmp
 
+if sys.version_info[0] == 2:
+    input = raw_input
+
 class QMPCompleter(list):
     def complete(self, text, state):
         for cmd in self:
@@ -308,7 +311,7 @@ class QMPShell(qmp.QEMUMonitorProtocol):
         @return True if execution was ok, return False if disconnected.
         """
         try:
-            cmdline = raw_input(prompt)
+            cmdline = input(prompt)
         except EOFError:
             print()
             return False
-- 
2.18.1



^ permalink raw reply related

* Re: [PATCH 1/2] lib/raid6: remove duplicated CFLAGS_REMOVE_altivec8.o
From: Masahiro Yamada @ 2019-06-20 15:55 UTC (permalink / raw)
  To: Linux Kbuild mailing list
  Cc: Michael Ellerman, Linux Kernel Mailing List, Russell King,
	Stefan Agner, Joel Stanley, Nick Desaulniers, Nathan Chancellor
In-Reply-To: <20190616174805.3069-1-yamada.masahiro@socionext.com>

On Mon, Jun 17, 2019 at 2:50 AM Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
>
> No intended change in behavior.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---

Applied to linux-kbuild.


>  lib/raid6/Makefile | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/lib/raid6/Makefile b/lib/raid6/Makefile
> index e723eacf7868..74004037033f 100644
> --- a/lib/raid6/Makefile
> +++ b/lib/raid6/Makefile
> @@ -26,7 +26,6 @@ CFLAGS_REMOVE_altivec1.o  += -msoft-float
>  CFLAGS_REMOVE_altivec2.o  += -msoft-float
>  CFLAGS_REMOVE_altivec4.o  += -msoft-float
>  CFLAGS_REMOVE_altivec8.o  += -msoft-float
> -CFLAGS_REMOVE_altivec8.o  += -msoft-float
>  CFLAGS_REMOVE_vpermxor1.o += -msoft-float
>  CFLAGS_REMOVE_vpermxor2.o += -msoft-float
>  CFLAGS_REMOVE_vpermxor4.o += -msoft-float
> --
> 2.17.1
>


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply

* Re: [PATCH 2/2] lib/raid6: refactor unroll rules with pattern rules
From: Masahiro Yamada @ 2019-06-20 15:55 UTC (permalink / raw)
  To: Linux Kbuild mailing list
  Cc: Michael Ellerman, Linux Kernel Mailing List, Joel Stanley,
	Nick Desaulniers, Nathan Chancellor
In-Reply-To: <20190616174805.3069-2-yamada.masahiro@socionext.com>

On Mon, Jun 17, 2019 at 2:49 AM Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
>
> This Makefile repeats very similar rules.
>
> Let's use pattern rules. $(UNROLL) can be replaced with $*.
>
> No intended change in behavior.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---

Applied to linux-kbuild.

>
>  lib/raid6/Makefile | 97 ++++++----------------------------------------
>  1 file changed, 11 insertions(+), 86 deletions(-)
>
> diff --git a/lib/raid6/Makefile b/lib/raid6/Makefile
> index 74004037033f..42695bc8d451 100644
> --- a/lib/raid6/Makefile
> +++ b/lib/raid6/Makefile
> @@ -12,9 +12,6 @@ raid6_pq-$(CONFIG_S390) += s390vx8.o recov_s390xc.o
>
>  hostprogs-y    += mktables
>
> -quiet_cmd_unroll = UNROLL  $@
> -      cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$(UNROLL) < $< > $@
> -
>  ifeq ($(CONFIG_ALTIVEC),y)
>  altivec_flags := -maltivec $(call cc-option,-mabi=altivec)
>
> @@ -50,111 +47,39 @@ CFLAGS_REMOVE_neon8.o += -mgeneral-regs-only
>  endif
>  endif
>
> -targets += int1.c
> -$(obj)/int1.c:   UNROLL := 1
> -$(obj)/int1.c:   $(src)/int.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
> -targets += int2.c
> -$(obj)/int2.c:   UNROLL := 2
> -$(obj)/int2.c:   $(src)/int.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
> -targets += int4.c
> -$(obj)/int4.c:   UNROLL := 4
> -$(obj)/int4.c:   $(src)/int.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
> -targets += int8.c
> -$(obj)/int8.c:   UNROLL := 8
> -$(obj)/int8.c:   $(src)/int.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
> -targets += int16.c
> -$(obj)/int16.c:  UNROLL := 16
> -$(obj)/int16.c:  $(src)/int.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> +quiet_cmd_unroll = UNROLL  $@
> +      cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$* < $< > $@
>
> -targets += int32.c
> -$(obj)/int32.c:  UNROLL := 32
> -$(obj)/int32.c:  $(src)/int.uc $(src)/unroll.awk FORCE
> +targets += int1.c int2.c int4.c int8.c int16.c int32.c
> +$(obj)/int%.c: $(src)/int.uc $(src)/unroll.awk FORCE
>         $(call if_changed,unroll)
>
>  CFLAGS_altivec1.o += $(altivec_flags)
> -targets += altivec1.c
> -$(obj)/altivec1.c:   UNROLL := 1
> -$(obj)/altivec1.c:   $(src)/altivec.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
>  CFLAGS_altivec2.o += $(altivec_flags)
> -targets += altivec2.c
> -$(obj)/altivec2.c:   UNROLL := 2
> -$(obj)/altivec2.c:   $(src)/altivec.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
>  CFLAGS_altivec4.o += $(altivec_flags)
> -targets += altivec4.c
> -$(obj)/altivec4.c:   UNROLL := 4
> -$(obj)/altivec4.c:   $(src)/altivec.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
>  CFLAGS_altivec8.o += $(altivec_flags)
> -targets += altivec8.c
> -$(obj)/altivec8.c:   UNROLL := 8
> -$(obj)/altivec8.c:   $(src)/altivec.uc $(src)/unroll.awk FORCE
> +targets += altivec1.c altivec2.c altivec4.c altivec8.c
> +$(obj)/altivec%.c: $(src)/altivec.uc $(src)/unroll.awk FORCE
>         $(call if_changed,unroll)
>
>  CFLAGS_vpermxor1.o += $(altivec_flags)
> -targets += vpermxor1.c
> -$(obj)/vpermxor1.c: UNROLL := 1
> -$(obj)/vpermxor1.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
>  CFLAGS_vpermxor2.o += $(altivec_flags)
> -targets += vpermxor2.c
> -$(obj)/vpermxor2.c: UNROLL := 2
> -$(obj)/vpermxor2.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
>  CFLAGS_vpermxor4.o += $(altivec_flags)
> -targets += vpermxor4.c
> -$(obj)/vpermxor4.c: UNROLL := 4
> -$(obj)/vpermxor4.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
>  CFLAGS_vpermxor8.o += $(altivec_flags)
> -targets += vpermxor8.c
> -$(obj)/vpermxor8.c: UNROLL := 8
> -$(obj)/vpermxor8.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
> +targets += vpermxor1.o vpermxor2.o vpermxor4.o vpermxor8.o
> +$(obj)/vpermxor%.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
>         $(call if_changed,unroll)
>
>  CFLAGS_neon1.o += $(NEON_FLAGS)
> -targets += neon1.c
> -$(obj)/neon1.c:   UNROLL := 1
> -$(obj)/neon1.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
>  CFLAGS_neon2.o += $(NEON_FLAGS)
> -targets += neon2.c
> -$(obj)/neon2.c:   UNROLL := 2
> -$(obj)/neon2.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
>  CFLAGS_neon4.o += $(NEON_FLAGS)
> -targets += neon4.c
> -$(obj)/neon4.c:   UNROLL := 4
> -$(obj)/neon4.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
> -       $(call if_changed,unroll)
> -
>  CFLAGS_neon8.o += $(NEON_FLAGS)
> -targets += neon8.c
> -$(obj)/neon8.c:   UNROLL := 8
> -$(obj)/neon8.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
> +targets += neon1.c neon2.c neon4.c neon8.c
> +$(obj)/neon%.c: $(src)/neon.uc $(src)/unroll.awk FORCE
>         $(call if_changed,unroll)
>
>  targets += s390vx8.c
> -$(obj)/s390vx8.c:   UNROLL := 8
> -$(obj)/s390vx8.c:   $(src)/s390vx.uc $(src)/unroll.awk FORCE
> +$(obj)/s390vx%.c: $(src)/s390vx.uc $(src)/unroll.awk FORCE
>         $(call if_changed,unroll)
>
>  quiet_cmd_mktable = TABLE   $@
> --
> 2.17.1
>


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply

* [PATCH 3/3] tools: memory-model: Improve data-race detection
From: Alan Stern @ 2019-06-20 15:55 UTC (permalink / raw)
  To: LKMM Maintainers -- Akira Yokosawa, Andrea Parri, Boqun Feng,
	Daniel Lustig, David Howells, Jade Alglave, Luc Maranget,
	Nicholas Piggin, Paul E. McKenney, Peter Zijlstra, Will Deacon
  Cc: Herbert Xu, Kernel development list

Herbert Xu recently reported a problem concerning RCU and compiler
barriers.  In the course of discussing the problem, he put forth a
litmus test which illustrated a serious defect in the Linux Kernel
Memory Model's data-race-detection code.

The defect was that the LKMM assumed visibility and executes-before
ordering of plain accesses had to be mediated by marked accesses.  In
Herbert's litmus test this wasn't so, and the LKMM claimed the litmus
test was allowed and contained a data race although neither is true.

In fact, plain accesses can be ordered by fences even in the absence
of marked accesses.  In most cases this doesn't matter, because most
fences only order accesses within a single thread.  But the rcu-fence
relation is different; it can order (and induce visibility between)
accesses in different threads -- events which otherwise might be
concurrent.  This makes it relevant to data-race detection.

This patch makes two changes to the memory model to incorporate the
new insight:

	If a store is separated by a fence from another access,
	the store is necessarily visible to the other access (as
	reflected in the ww-vis and wr-vis relations).  Similarly,
	if a load is separated by a fence from another access then
	the load necessarily executes before the other access (as
	reflected in the rw-xbstar relation).

	If a store is separated by a strong fence from a marked access
	then it is necessarily visible to any access that executes
	after the marked access (as reflected in the ww-vis and wr-vis
	relations).

With these changes, the LKMM gives the desired result for Herbert's
litmus test and other related ones.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-by: Herbert Xu <herbert@gondor.apana.org.au>

---


 tools/memory-model/linux-kernel.cat |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Index: usb-devel/tools/memory-model/linux-kernel.cat
===================================================================
--- usb-devel.orig/tools/memory-model/linux-kernel.cat
+++ usb-devel/tools/memory-model/linux-kernel.cat
@@ -181,9 +181,11 @@ let r-post-bounded = (nonrw-fence | ([~N
 	[Marked]
 
 (* Visibility and executes-before for plain accesses *)
-let ww-vis = w-post-bounded ; vis ; w-pre-bounded
-let wr-vis = w-post-bounded ; vis ; r-pre-bounded
-let rw-xbstar = r-post-bounded ; xbstar ; w-pre-bounded
+let ww-vis = fence | (strong-fence ; xbstar ; w-pre-bounded) |
+	(w-post-bounded ; vis ; w-pre-bounded)
+let wr-vis = fence | (strong-fence ; xbstar ; r-pre-bounded) |
+	(w-post-bounded ; vis ; r-pre-bounded)
+let rw-xbstar = fence | (r-post-bounded ; xbstar ; w-pre-bounded)
 
 (* Potential races *)
 let pre-race = ext & ((Plain * M) | ((M \ IW) * Plain))



^ permalink raw reply

* [PATCH 2/3] tools: memory-model: Change definition of rcu-fence
From: Alan Stern @ 2019-06-20 15:55 UTC (permalink / raw)
  To: LKMM Maintainers -- Akira Yokosawa, Andrea Parri, Boqun Feng,
	Daniel Lustig, David Howells, Jade Alglave, Luc Maranget,
	Nicholas Piggin, Paul E. McKenney, Peter Zijlstra, Will Deacon
  Cc: Kernel development list

The rcu-fence relation in the Linux Kernel Memory Model is not well
named.  It doesn't act like any other fence relation, in that it does
not relate events before a fence to events after that fence.  All it
does is relate certain RCU events to one another (those that are
ordered by the RCU Guarantee); this induces an actual
strong-fence-like relation linking events preceding the first RCU
event to those following the second.

This patch renames rcu-fence, now called rcu-order.  It adds a new
definition of rcu-fence, something which should have been present all
along because it is used in the rb relation.  And it modifies the
fence and strong-fence relations by making them incorporate the new
rcu-fence.

As a result of this change, there is no longer any need to define
full-fence in the section for detecting data races.  It can simply be
replaced by the updated strong-fence relation.

This change should have no effect on the operation of the memory model.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>

---


 tools/memory-model/linux-kernel.cat |   23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

Index: usb-devel/tools/memory-model/linux-kernel.cat
===================================================================
--- usb-devel.orig/tools/memory-model/linux-kernel.cat
+++ usb-devel/tools/memory-model/linux-kernel.cat
@@ -124,24 +124,28 @@ let rcu-link = po? ; hb* ; pb* ; prop ;
 
 (*
  * Any sequence containing at least as many grace periods as RCU read-side
- * critical sections (joined by rcu-link) acts as a generalized strong fence.
+ * critical sections (joined by rcu-link) induces order like a generalized
+ * inter-CPU strong fence.
  * Likewise for SRCU grace periods and read-side critical sections, provided
  * the synchronize_srcu() and srcu_read_[un]lock() calls refer to the same
  * struct srcu_struct location.
  *)
-let rec rcu-fence = rcu-gp | srcu-gp |
+let rec rcu-order = rcu-gp | srcu-gp |
 	(rcu-gp ; rcu-link ; rcu-rscsi) |
 	((srcu-gp ; rcu-link ; srcu-rscsi) & loc) |
 	(rcu-rscsi ; rcu-link ; rcu-gp) |
 	((srcu-rscsi ; rcu-link ; srcu-gp) & loc) |
-	(rcu-gp ; rcu-link ; rcu-fence ; rcu-link ; rcu-rscsi) |
-	((srcu-gp ; rcu-link ; rcu-fence ; rcu-link ; srcu-rscsi) & loc) |
-	(rcu-rscsi ; rcu-link ; rcu-fence ; rcu-link ; rcu-gp) |
-	((srcu-rscsi ; rcu-link ; rcu-fence ; rcu-link ; srcu-gp) & loc) |
-	(rcu-fence ; rcu-link ; rcu-fence)
+	(rcu-gp ; rcu-link ; rcu-order ; rcu-link ; rcu-rscsi) |
+	((srcu-gp ; rcu-link ; rcu-order ; rcu-link ; srcu-rscsi) & loc) |
+	(rcu-rscsi ; rcu-link ; rcu-order ; rcu-link ; rcu-gp) |
+	((srcu-rscsi ; rcu-link ; rcu-order ; rcu-link ; srcu-gp) & loc) |
+	(rcu-order ; rcu-link ; rcu-order)
+let rcu-fence = po ; rcu-order ; po?
+let fence = fence | rcu-fence
+let strong-fence = strong-fence | rcu-fence
 
 (* rb orders instructions just as pb does *)
-let rb = prop ; po ; rcu-fence ; po? ; hb* ; pb* ; [Marked]
+let rb = prop ; rcu-fence ; hb* ; pb* ; [Marked]
 
 irreflexive rb as rcu
 
@@ -165,9 +169,8 @@ flag ~empty mixed-accesses as mixed-acce
 
 (* Executes-before and visibility *)
 let xbstar = (hb | pb | rb)*
-let full-fence = strong-fence | (po ; rcu-fence ; po?)
 let vis = cumul-fence* ; rfe? ; [Marked] ;
-	((full-fence ; [Marked] ; xbstar) | (xbstar & int))
+	((strong-fence ; [Marked] ; xbstar) | (xbstar & int))
 
 (* Boundaries for lifetimes of plain accesses *)
 let w-pre-bounded = [Marked] ; (addr | fence)?


^ permalink raw reply

* [PATCH] mtd: mtd-abi: Don't use C++ comments
From: Nathan Chancellor @ 2019-06-20 15:55 UTC (permalink / raw)
  To: David Woodhouse, Brian Norris, Marek Vasut, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: clang-built-linux, Nathan Chancellor, linux-mtd, linux-kernel

When compiled standalone after commit b91976b7c0e3 ("kbuild:
compile-test UAPI headers to ensure they are self-contained"),
a warning about the C++ comments appears:

  In file included from usr/include/mtd/mtd-user.hdrtest.c:1:
  In file included from ./usr/include/mtd/mtd-user.h:25:
  ./usr/include/mtd/mtd-abi.h:116:28: warning: // comments are not
  allowed in this language [-Wcomment]
  #define MTD_NANDECC_OFF         0       // Switch off ECC (Not recommended)
                                          ^
  1 warning generated.

Replace them with standard C comments so this warning no longer occurs.

Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
---
 include/uapi/mtd/mtd-abi.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/uapi/mtd/mtd-abi.h b/include/uapi/mtd/mtd-abi.h
index aff5b5e59845..3fe9237f723a 100644
--- a/include/uapi/mtd/mtd-abi.h
+++ b/include/uapi/mtd/mtd-abi.h
@@ -113,11 +113,11 @@ struct mtd_write_req {
 #define MTD_CAP_NVRAM		(MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
 
 /* Obsolete ECC byte placement modes (used with obsolete MEMGETOOBSEL) */
-#define MTD_NANDECC_OFF		0	// Switch off ECC (Not recommended)
-#define MTD_NANDECC_PLACE	1	// Use the given placement in the structure (YAFFS1 legacy mode)
-#define MTD_NANDECC_AUTOPLACE	2	// Use the default placement scheme
-#define MTD_NANDECC_PLACEONLY	3	// Use the given placement in the structure (Do not store ecc result on read)
-#define MTD_NANDECC_AUTOPL_USR 	4	// Use the given autoplacement scheme rather than using the default
+#define MTD_NANDECC_OFF		0	/* Switch off ECC (Not recommended) */
+#define MTD_NANDECC_PLACE	1	/* Use the given placement in the structure (YAFFS1 legacy mode) */
+#define MTD_NANDECC_AUTOPLACE	2	/* Use the default placement scheme */
+#define MTD_NANDECC_PLACEONLY	3	/* Use the given placement in the structure (Do not store ecc result on read) */
+#define MTD_NANDECC_AUTOPL_USR	4	/* Use the given autoplacement scheme rather than using the default */
 
 /* OTP mode selection */
 #define MTD_OTP_OFF		0
-- 
2.22.0


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply related

* [PATCH 1/3] tools: memory-model: Expand definition of barrier
From: Alan Stern @ 2019-06-20 15:55 UTC (permalink / raw)
  To: LKMM Maintainers -- Akira Yokosawa, Andrea Parri, Boqun Feng,
	Daniel Lustig, David Howells, Jade Alglave, Luc Maranget,
	Nicholas Piggin, Paul E. McKenney, Peter Zijlstra, Will Deacon
  Cc: Kernel development list

Commit 66be4e66a7f4 ("rcu: locking and unlocking need to always be at
least barriers") added compiler barriers back into rcu_read_lock() and
rcu_read_unlock().  Furthermore, srcu_read_lock() and
srcu_read_unlock() have always contained compiler barriers.

The Linux Kernel Memory Model ought to know about these barriers.
This patch adds them into the memory model.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>

---


 tools/memory-model/linux-kernel.cat |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: usb-devel/tools/memory-model/linux-kernel.cat
===================================================================
--- usb-devel.orig/tools/memory-model/linux-kernel.cat
+++ usb-devel/tools/memory-model/linux-kernel.cat
@@ -47,7 +47,8 @@ let strong-fence = mb | gp
 let nonrw-fence = strong-fence | po-rel | acq-po
 let fence = nonrw-fence | wmb | rmb
 let barrier = fencerel(Barrier | Rmb | Wmb | Mb | Sync-rcu | Sync-srcu |
-		Before-atomic | After-atomic | Acquire | Release) |
+		Before-atomic | After-atomic | Acquire | Release |
+		Rcu-lock | Rcu-unlock | Srcu-lock | Srcu-unlock) |
 	(po ; [Release]) | ([Acquire] ; po)
 
 (**********************************)


^ permalink raw reply

* XDC 2019: Less than three weeks to go to submit your talks, workshops or demos!
From: Mark Filion @ 2019-06-20 15:55 UTC (permalink / raw)
  To: events

Hello!

Less than three weeks to go to submit your talks, workshops or demos
for this year's X.Org Developer Conference, which will be taking place
in Montréal, Canada on October 2-4, 2019!

The 2019 X.Org Developers Conference is the annual technical meeting
for X Window System and Free Desktop developers. Attendees will gather
to discuss outstanding technical issues related to the Open Source
Graphics stack (Linux kernel, Mesa, DRM, Wayland, X11, etc.) and its
software ecosystem.

While any serious proposal will be gratefully considered, topics of
interest
to X.Org and freedesktop.org developers are encouraged. The program
focus is on new development, ongoing challenges and anything else that
will spark discussions among attendees in the hallway track.

We are open to talks across all layers of the graphics stack, from the
kernel
to desktop environments / graphical applications and about how to make
things better for the developers who build them. 

Head to the XDC website to learn more: 

    https://xdc2019.x.org/

The deadline for submissions Sunday, 7 July 2019.

Best,

Mark

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply

* XDC 2019: Less than three weeks to go to submit your talks, workshops or demos!
From: Mark Filion @ 2019-06-20 15:55 UTC (permalink / raw)
  To: events

Hello!

Less than three weeks to go to submit your talks, workshops or demos
for this year's X.Org Developer Conference, which will be taking place
in Montréal, Canada on October 2-4, 2019!

The 2019 X.Org Developers Conference is the annual technical meeting
for X Window System and Free Desktop developers. Attendees will gather
to discuss outstanding technical issues related to the Open Source
Graphics stack (Linux kernel, Mesa, DRM, Wayland, X11, etc.) and its
software ecosystem.

While any serious proposal will be gratefully considered, topics of
interest
to X.Org and freedesktop.org developers are encouraged. The program
focus is on new development, ongoing challenges and anything else that
will spark discussions among attendees in the hallway track.

We are open to talks across all layers of the graphics stack, from the
kernel
to desktop environments / graphical applications and about how to make
things better for the developers who build them. 

Head to the XDC website to learn more: 

    https://xdc2019.x.org/

The deadline for submissions Sunday, 7 July 2019.

Best,

Mark

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply

* XDC 2019: Less than three weeks to go to submit your talks, workshops or demos!
From: Mark Filion @ 2019-06-20 15:55 UTC (permalink / raw)
  To: events-go0+a7rfsptAfugRpC6u6w

Hello!

Less than three weeks to go to submit your talks, workshops or demos
for this year's X.Org Developer Conference, which will be taking place
in Montréal, Canada on October 2-4, 2019!

The 2019 X.Org Developers Conference is the annual technical meeting
for X Window System and Free Desktop developers. Attendees will gather
to discuss outstanding technical issues related to the Open Source
Graphics stack (Linux kernel, Mesa, DRM, Wayland, X11, etc.) and its
software ecosystem.

While any serious proposal will be gratefully considered, topics of
interest
to X.Org and freedesktop.org developers are encouraged. The program
focus is on new development, ongoing challenges and anything else that
will spark discussions among attendees in the hallway track.

We are open to talks across all layers of the graphics stack, from the
kernel
to desktop environments / graphical applications and about how to make
things better for the developers who build them. 

Head to the XDC website to learn more: 

    https://xdc2019.x.org/

The deadline for submissions Sunday, 7 July 2019.

Best,

Mark

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply

* XDC 2019: Less than three weeks to go to submit your talks, workshops or demos!
From: Mark Filion @ 2019-06-20 15:55 UTC (permalink / raw)
  To: events-go0+a7rfsptAfugRpC6u6w

Hello!

Less than three weeks to go to submit your talks, workshops or demos
for this year's X.Org Developer Conference, which will be taking place
in Montréal, Canada on October 2-4, 2019!

The 2019 X.Org Developers Conference is the annual technical meeting
for X Window System and Free Desktop developers. Attendees will gather
to discuss outstanding technical issues related to the Open Source
Graphics stack (Linux kernel, Mesa, DRM, Wayland, X11, etc.) and its
software ecosystem.

While any serious proposal will be gratefully considered, topics of
interest
to X.Org and freedesktop.org developers are encouraged. The program
focus is on new development, ongoing challenges and anything else that
will spark discussions among attendees in the hallway track.

We are open to talks across all layers of the graphics stack, from the
kernel
to desktop environments / graphical applications and about how to make
things better for the developers who build them. 

Head to the XDC website to learn more: 

    https://xdc2019.x.org/

The deadline for submissions Sunday, 7 July 2019.

Best,

Mark

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply

* [PATCH] mtd: mtd-abi: Don't use C++ comments
From: Nathan Chancellor @ 2019-06-20 15:55 UTC (permalink / raw)
  To: David Woodhouse, Brian Norris, Marek Vasut, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, clang-built-linux, Nathan Chancellor

When compiled standalone after commit b91976b7c0e3 ("kbuild:
compile-test UAPI headers to ensure they are self-contained"),
a warning about the C++ comments appears:

  In file included from usr/include/mtd/mtd-user.hdrtest.c:1:
  In file included from ./usr/include/mtd/mtd-user.h:25:
  ./usr/include/mtd/mtd-abi.h:116:28: warning: // comments are not
  allowed in this language [-Wcomment]
  #define MTD_NANDECC_OFF         0       // Switch off ECC (Not recommended)
                                          ^
  1 warning generated.

Replace them with standard C comments so this warning no longer occurs.

Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
---
 include/uapi/mtd/mtd-abi.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/uapi/mtd/mtd-abi.h b/include/uapi/mtd/mtd-abi.h
index aff5b5e59845..3fe9237f723a 100644
--- a/include/uapi/mtd/mtd-abi.h
+++ b/include/uapi/mtd/mtd-abi.h
@@ -113,11 +113,11 @@ struct mtd_write_req {
 #define MTD_CAP_NVRAM		(MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
 
 /* Obsolete ECC byte placement modes (used with obsolete MEMGETOOBSEL) */
-#define MTD_NANDECC_OFF		0	// Switch off ECC (Not recommended)
-#define MTD_NANDECC_PLACE	1	// Use the given placement in the structure (YAFFS1 legacy mode)
-#define MTD_NANDECC_AUTOPLACE	2	// Use the default placement scheme
-#define MTD_NANDECC_PLACEONLY	3	// Use the given placement in the structure (Do not store ecc result on read)
-#define MTD_NANDECC_AUTOPL_USR 	4	// Use the given autoplacement scheme rather than using the default
+#define MTD_NANDECC_OFF		0	/* Switch off ECC (Not recommended) */
+#define MTD_NANDECC_PLACE	1	/* Use the given placement in the structure (YAFFS1 legacy mode) */
+#define MTD_NANDECC_AUTOPLACE	2	/* Use the default placement scheme */
+#define MTD_NANDECC_PLACEONLY	3	/* Use the given placement in the structure (Do not store ecc result on read) */
+#define MTD_NANDECC_AUTOPL_USR	4	/* Use the given autoplacement scheme rather than using the default */
 
 /* OTP mode selection */
 #define MTD_OTP_OFF		0
-- 
2.22.0


^ permalink raw reply related


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.