Date   

Re: API meeting: agenda

Carles Cufi
 

Hi all,

I'd like to amend the agenda for today's meeting with the following PRs which have been waiting for resolution for a while:

- PR: Validate pin ordinals in wrapper functions
- https://github.com/zephyrproject-rtos/zephyr/pull/20115

- PR: Add discussion of terms that define API behavior
- https://github.com/zephyrproject-rtos/zephyr/pull/21678

Regards,

Carles

-----Original Message-----
From: devel@lists.zephyrproject.org <devel@lists.zephyrproject.org> On
Behalf Of Cufi, Carles via Lists.Zephyrproject.Org
Sent: 20 January 2020 18:05
To: devel@lists.zephyrproject.org; users@lists.zephyrproject.org
Cc: devel@lists.zephyrproject.org
Subject: [Zephyr-devel] API meeting: agenda

Hi all,

Tomorrow we will discuss an RFC that is ready to be merged, two items
that were raised in last week's TSC and we will check on progress with
the GPIO porting.

- RFC (ready to merge): on-off service request and release
- https://github.com/zephyrproject-rtos/zephyr/pull/21090

- Discussion: Stability documentation for APIs. Should it be documented
in Doxygen?

- Discussion: What exactly is subject to the API lifecycle deprecation
policies described in
https://docs.zephyrproject.org/latest/development_process/api_lifecycle.
html?
- Options:
- APIs only
- APIs, Kconfig options, DeviceTree format
- APIs, Kconfig options, DeviceTree format, subsystems, drivers,
boards and SoCs

- GPIO update (users)
- https://github.com/zephyrproject-rtos/zephyr/issues/20017

Additional items in the "Triage" column in the GitHub project may be
discussed if time permits.
If you want an item included in the meeting, please add it to the GitHub
project.

https://github.com/zephyrproject-rtos/zephyr/wiki/Zephyr-Committee-and-
Working-Group-Meetings#zephyr-api-discussion
https://github.com/zephyrproject-rtos/zephyr/projects/18
https://docs.google.com/document/d/1lv-
8B5QE2m4FjBcvfqAXFIgQfW5oz6306zJ7GIZIWCk/edit

Regards,

Carles


Re: What is the difference "z_reschedule_irqlock" and "z_reschedule“? why two implementations?

Andy Ross
 

Traditional locking in Zephyr is done with a single global "irq lock" (implemented on single processor systems with a straightforward interrupt mask).  SMP allows for finer grained spinlocks, which have different semantics (though when !SMP the implementation is the same).  It wasn't feasible to port the entirety of the Zephyr kernel to use the new scheme, though there are very few spots that need z_reschedule while holding a legacy lock (vs. just using an IPC primitive) and I'd expect this particular API to go away at some point in the future.


Andy


On 1/21/2020 12:28 AM, "曹子龙 wrote:
Hi folks:
    
why there are two implmentations of schedule?   What is the difference "z_reschedule_irqlock" and "z_reschedule“? why two implementations?

曹子龙

珠海全志科技股份有限公司      BU1-PSW

地址:广东省珠海市高新区唐家湾镇科技2路9号

TEL:13824125580

Email:caozilong@...

网址: http://www.allwinnertech.com

 



Re: Is this a bug? how to guarantee the "atomic semantics access of readyqueue" in "do_swap" function during context switch in SMP mode?

Andy Ross
 

There is a fix for exactly this race this in https://github.com/zephyrproject-rtos/zephyr/pull/21903

On 1/21/2020 1:49 AM, "曹子龙 wrote:
HI folks:
     if from the call pass of z_swap, which with parameter,  
      do_swap(key.key, lock, 1);
    because is_spinlock is 1, so the lock would be released before invoke the actual switch function "arch_switch", 
which means there are nothing procteced the readyqueue of the scheduler, during the moment, if other cpus access the readyqueue, there would be a chance that
"_current" task be selected by other cpus before the register  context do the actual backup. so did this a bug?
 40 static ALWAYS_INLINE unsigned int do_swap(unsigned int key,
 41                                         ¦ struct k_spinlock *lock,
 42                                         ¦ int is_spinlock)
 43 {                   
 44         ARG_UNUSED(lock);
 45         struct k_thread *new_thread, *old_thread;
 46                     
 47 #ifdef CONFIG_EXECUTION_BENCHMARKING
 48         extern void read_timer_start_of_swap(void);
 49         read_timer_start_of_swap();
 50 #endif              
 51                     
 52         old_thread = _current;
 53                     
 54         z_check_stack_sentinel();
 55                     
 56         if (is_spinlock) {
 57                 k_spin_release(lock);
 58         }           
 59                     
 60         new_thread = z_get_next_ready_thread();
 61                     
 62         if (new_thread != old_thread) {
 63                 sys_trace_thread_switched_out();
 64 #ifdef CONFIG_TIMESLICING
 65                 z_reset_time_slice();
 66 #endif              
 67                     
 68                 old_thread->swap_retval = -EAGAIN;
 69                     
 70 #ifdef CONFIG_SMP   
 71                 _current_cpu->swap_ok = 0;
 72                     
 73                 new_thread->base.cpu = arch_curr_cpu()->id;
 74                     
 75                 if (!is_spinlock) {
 76                         z_smp_release_global_lock(new_thread);
 77                 }   
 78 #endif              
 79                 _current = new_thread;
 80                 arch_switch(new_thread->switch_handle,
 81                         ¦   ¦&old_thread->switch_handle); 84         }          
 85         
 83                 sys_trace_thread_switched_in();
 84         }          
 85         
 86         if (is_spinlock) {
 87                 arch_irq_unlock(key);
 88         } else {   
 89                 irq_unlock(key);
 90         }
 91                    
 92         return _current->swap_retval;
 93 }
 94       

曹子龙

珠海全志科技股份有限公司      BU1-PSW

地址:广东省珠海市高新区唐家湾镇科技2路9号

TEL:13824125580

Email:caozilong@...

网址: http://www.allwinnertech.com

 



Re: What is the difference "z_reschedule_irqlock" and "z_reschedule“? why two implementations?

pawel.dunaj@...
 


Is this a bug? how to guarantee the "atomic semantics access of readyqueue" in "do_swap" function during context switch in SMP mode?

"曹子龙
 

HI folks:
     if from the call pass of z_swap, which with parameter,  
      do_swap(key.key, lock, 1);
    because is_spinlock is 1, so the lock would be released before invoke the actual switch function "arch_switch", 
which means there are nothing procteced the readyqueue of the scheduler, during the moment, if other cpus access the readyqueue, there would be a chance that
"_current" task be selected by other cpus before the register  context do the actual backup. so did this a bug?
 40 static ALWAYS_INLINE unsigned int do_swap(unsigned int key,
 41                                         ¦ struct k_spinlock *lock,
 42                                         ¦ int is_spinlock)
 43 {                   
 44         ARG_UNUSED(lock);
 45         struct k_thread *new_thread, *old_thread;
 46                     
 47 #ifdef CONFIG_EXECUTION_BENCHMARKING
 48         extern void read_timer_start_of_swap(void);
 49         read_timer_start_of_swap();
 50 #endif              
 51                     
 52         old_thread = _current;
 53                     
 54         z_check_stack_sentinel();
 55                     
 56         if (is_spinlock) {
 57                 k_spin_release(lock);
 58         }           
 59                     
 60         new_thread = z_get_next_ready_thread();
 61                     
 62         if (new_thread != old_thread) {
 63                 sys_trace_thread_switched_out();
 64 #ifdef CONFIG_TIMESLICING
 65                 z_reset_time_slice();
 66 #endif              
 67                     
 68                 old_thread->swap_retval = -EAGAIN;
 69                     
 70 #ifdef CONFIG_SMP   
 71                 _current_cpu->swap_ok = 0;
 72                     
 73                 new_thread->base.cpu = arch_curr_cpu()->id;
 74                     
 75                 if (!is_spinlock) {
 76                         z_smp_release_global_lock(new_thread);
 77                 }   
 78 #endif              
 79                 _current = new_thread;
 80                 arch_switch(new_thread->switch_handle,
 81                         ¦   ¦&old_thread->switch_handle); 84         }          
 85         
 83                 sys_trace_thread_switched_in();
 84         }          
 85         
 86         if (is_spinlock) {
 87                 arch_irq_unlock(key);
 88         } else {   
 89                 irq_unlock(key);
 90         }
 91                    
 92         return _current->swap_retval;
 93 }
 94       

曹子龙

珠海全志科技股份有限公司      BU1-PSW

地址:广东省珠海市高新区唐家湾镇科技2路9号

TEL:13824125580

Email:caozilong@...

网址: http://www.allwinnertech.com

 



What is the difference "z_reschedule_irqlock" and "z_reschedule“? why two implementations?

"曹子龙
 

Hi folks:
    
why there are two implmentations of schedule?   What is the difference "z_reschedule_irqlock" and "z_reschedule“? why two implementations?

曹子龙

珠海全志科技股份有限公司      BU1-PSW

地址:广东省珠海市高新区唐家湾镇科技2路9号

TEL:13824125580

Email:caozilong@...

网址: http://www.allwinnertech.com

 



API meeting: agenda

Carles Cufi
 

Hi all,

Tomorrow we will discuss an RFC that is ready to be merged, two items that were raised in last week's TSC and we will check on progress with the GPIO porting.

- RFC (ready to merge): on-off service request and release
- https://github.com/zephyrproject-rtos/zephyr/pull/21090

- Discussion: Stability documentation for APIs. Should it be documented in Doxygen?

- Discussion: What exactly is subject to the API lifecycle deprecation policies described in https://docs.zephyrproject.org/latest/development_process/api_lifecycle.html?
- Options:
- APIs only
- APIs, Kconfig options, DeviceTree format
- APIs, Kconfig options, DeviceTree format, subsystems, drivers, boards and SoCs

- GPIO update (users)
- https://github.com/zephyrproject-rtos/zephyr/issues/20017

Additional items in the "Triage" column in the GitHub project may be discussed if time permits.
If you want an item included in the meeting, please add it to the GitHub project.

https://github.com/zephyrproject-rtos/zephyr/wiki/Zephyr-Committee-and-Working-Group-Meetings#zephyr-api-discussion
https://github.com/zephyrproject-rtos/zephyr/projects/18
https://docs.google.com/document/d/1lv-8B5QE2m4FjBcvfqAXFIgQfW5oz6306zJ7GIZIWCk/edit

Regards,

Carles


Re: Did the SMP support arm architecture boards presents? if yes, which one?

Wayne Ren
 

As I know, currently there is no support of SMP for ARM architecture in Zephyr

 

From: devel@... <devel@...> On Behalf Of "曹子龙
Sent: 2020
118 16:26
To: devel <devel@...>
Subject: [Zephyr-devel] Did the SMP support arm architecture boards presents? if yes, which one?

 

HI folks:

     Did the SMP support arm architecture boards presents? if yes, which one?

 

    Thank you!

 

 

曹子龙

珠海全志科技股份有限公司      BU1-PSW

地址:广东省珠海市高新区唐家湾镇科技29

TEL13824125580

Emailcaozilong@...

网址: http://www.allwinnertech.com

 

 


Re: about the SMP implement ion, did the zephyr SMP support cpu affinity settings?

Boie, Andrew P
 

See the section on “CPU Mask” for directions on how to constrain threads to run on a particular set of CPUs.

 

https://docs.zephyrproject.org/latest/reference/kernel/smp/smp.html

 

Regards,

Andrew

 

From: devel@... <devel@...> On Behalf Of "???
Sent: Friday, January 17, 2020 8:35 PM
To: devel <devel@...>
Subject: [Zephyr-devel] about the SMP implement ion, did the zephyr SMP support cpu affinity settings

 

Hi folks:

 

    Did the SMP impl. of zephyr support the cpu affinity settings? i have not seen the  related members in k_thread structure.

 

Thanks for your kindly help.!

 

 

曹子

珠海全志科技股份有限公司      BU1-PSW

地址:广东省珠海市高新区唐家湾镇科技2路9号

TEL:13824125580

Email:caozilong@...

网址: http://www.allwinnertech.com

 

 


Did the SMP support arm architecture boards presents? if yes, which one?

"曹子龙
 

HI folks:
     Did the SMP support arm architecture boards presents? if yes, which one?

    Thank you!


曹子龙

珠海全志科技股份有限公司      BU1-PSW

地址:广东省珠海市高新区唐家湾镇科技2路9号

TEL:13824125580

Email:caozilong@...

网址: http://www.allwinnertech.com

 



where is the "z_smp_reacquire_global_lock" called to restore the lock state to whatever the thread's counter?

"曹子龙
 

Hi folks:
   throught the docment of zephyr smp imple. a task take the irq_lock can be yield to another thread, but would restore the spinlock own status when it comes back

but, throught the code, i just found the code release the global spinlock , but have not seen the reacquire the globbal spin lock when comes back.
do_swap:
 76                 if (!is_spinlock) {
 77                         z_smp_release_global_lock(new_thread);                                                                                                                             
 78                 } 

so, can anyone show me where is the :z_smp_reacquire_global_lock called ?

thank you!

曹子龙

珠海全志科技股份有限公司      BU1-PSW

地址:广东省珠海市高新区唐家湾镇科技2路9号

TEL:13824125580

Email:caozilong@...

网址: http://www.allwinnertech.com

 



about the SMP implement ion, did the zephyr SMP support cpu affinity settings?

"曹子龙
 

Hi folks:

    Did the SMP impl. of zephyr support the cpu affinity settings? i have not seen the  related members in k_thread structure.

Thanks for your kindly help.!


曹子龙

珠海全志科技股份有限公司      BU1-PSW

地址:广东省珠海市高新区唐家湾镇科技2路9号

TEL:13824125580

Email:caozilong@...

网址: http://www.allwinnertech.com

 



Re: Dev-Review Meeting Agenda (Jan 16)

Kumar Gala
 

As a follow up we plan on The Jan 30th Dev Review meeting to discuss Pinmux/DT.

- k

On Jan 16, 2020, at 9:57 AM, Kumar Gala <kumar.gala@linaro.org> wrote:

[sorry for the late notice]

Here’s the agenda topics for this week:

* drivers: watchdog: Add SiLabs Gecko WDOG driver
[ https://github.com/zephyrproject-rtos/zephyr/pull/20316 ]

Any topics anyone else has

- k


Dev-Review Meeting Agenda (Jan 16)

Kumar Gala
 

[sorry for the late notice]

Here’s the agenda topics for this week:

* drivers: watchdog: Add SiLabs Gecko WDOG driver
[ https://github.com/zephyrproject-rtos/zephyr/pull/20316 ]

Any topics anyone else has

- k


Upcoming Event: Zephyr Project: Dev Meeting - Thu, 01/16/2020 8:00am-9:00am, Please RSVP #cal-reminder

devel@lists.zephyrproject.org Calendar <devel@...>
 

Reminder: Zephyr Project: Dev Meeting

When: Thursday, 16 January 2020, 8:00am to 9:00am, (GMT-08:00) America/Los Angeles

Where:https://zoom.us/j/993312203

An RSVP is requested. Click here to RSVP

Organizer: devel@...

Description: Join Zoom Meeting
https://zoom.us/j/993312203

One tap mobile
+16699006833,,993312203# US (San Jose)
+16465588656,,993312203# US (New York)

Dial by your location
        +1 669 900 6833 US (San Jose)
        +1 646 558 8656 US (New York)
        +1 877 369 0926 US Toll-free
        +1 855 880 1246 US Toll-free
Meeting ID: 993 312 203
Find your local number: https://zoom.us/u/ankEMRagf


Re: zephyr_cc_option(-O0) issue in 1.14.99 (nrf52840)

pawel.dunaj@...
 

Hi,

I suggest checking the stack sizes. CONFIG_NO_OPTIMIZATIONS is sometimes used to decide which size to apply. Stack overflow could cause strange issues.
You can enlarge stacks enable stack analysis and see how much you need.

Regards,


Re: zephyr_cc_option(-O0) issue in 1.14.99 (nrf52840)

Abderrezak Mekkaoui <ab.mekka@...>
 

Hi Chris and All,

I replied too quickly. CONFIG_NO_OPTIMIZATIONS=y  only delays the point at which the program hangs.
In my case it starts by displaying data and BLE advertising as expected, but crashes when a BLE connection is attempted.
It still runs as expected if
zephyr_cc_option(-O0)  and CONFIG_NO_OPTIMIZATIONS=y are not used. The zephyr sample
peripheral_esp  behaves the same way.

This is a queer behavior. Any hint is most welcome.

kind regards

Abder

build command:

>west build -b nrf52840_pca10056 src -- -G"Eclipse CDT4 - Ninja" -DCMAKE_ECLIPSE_NINJA_ARGUMENTS=-j100 -DCMAKE_ECLIPSE_VERSION=4.7

original description of the issue:

I had a program than ran with no problems in 1.13. But would crash in 1.14.99 if  zephyr_cc_option(-O0) is present in the CMakeLists.txt file.
The program is based on the peripheral_esp sample. The peripheral_esp sample itself has the same problem: builds and runs if zephyr_cc_option(-O0)
is not present and would crash if it is present. Strangely it does not have any problem with zephyr_cc_option(-On) n=1,2 or 3.
Other programs, not using Bluetooth, have no problem with this option.
Any hints on what I might be doing wrong?

On 1/15/2020 1:46 PM, Abderrezak Mekkaoui wrote:

Thanks Chris.
That works. And using zephyr_cc_option(-O0) with CONFIG_NO_OPTIMIZATIONS=y  does not cause any trouble.
Still seems strange that other program do not seem to bother!

Kind regards

Abder

On 1/15/2020 1:12 PM, Christopher Friedt wrote:

Hi Ab,

On Wed., Jan. 15, 2020, 12:54 p.m. Abderrezak Mekkaoui, <ab.mekka@...> wrote:
I had a program than ran with no problems in 1.13. But would crash in
1.14.99 if  zephyr_cc_option(-O0) is present in the CMakeLists.txt file.

Have you tried using CONFIG_NO_OPTIMIZATIONS=y ? I've found that will achieve the same ends as explicitly changing CMakeLists.txt to use -O0.


Re: zephyr_cc_option(-O0) issue in 1.14.99

Abderrezak Mekkaoui <ab.mekka@...>
 

Thanks Chris.
That works. And using zephyr_cc_option(-O0) with CONFIG_NO_OPTIMIZATIONS=y  does not cause any trouble.
Still seems strange that other program do not seem to bother!

Kind regards

Abder

On 1/15/2020 1:12 PM, Christopher Friedt wrote:

Hi Ab,

On Wed., Jan. 15, 2020, 12:54 p.m. Abderrezak Mekkaoui, <ab.mekka@...> wrote:
I had a program than ran with no problems in 1.13. But would crash in
1.14.99 if  zephyr_cc_option(-O0) is present in the CMakeLists.txt file.

Have you tried using CONFIG_NO_OPTIMIZATIONS=y ? I've found that will achieve the same ends as explicitly changing CMakeLists.txt to use -O0.


Re: zephyr_cc_option(-O0) issue in 1.14.99

Christopher Friedt
 


Hi Ab,

On Wed., Jan. 15, 2020, 12:54 p.m. Abderrezak Mekkaoui, <ab.mekka@...> wrote:
I had a program than ran with no problems in 1.13. But would crash in
1.14.99 if  zephyr_cc_option(-O0) is present in the CMakeLists.txt file.

Have you tried using CONFIG_NO_OPTIMIZATIONS=y ? I've found that will achieve the same ends as explicitly changing CMakeLists.txt to use -O0.


zephyr_cc_option(-O0) issue in 1.14.99

Abderrezak Mekkaoui <ab.mekka@...>
 

Hi All,

I had a program than ran with no problems in 1.13. But would crash in 1.14.99 if  zephyr_cc_option(-O0) is present in the CMakeLists.txt file.
The program is based on the peripheral_esp sample. The peripheral_esp sample itself has the same problem: builds and runs if zephyr_cc_option(-O0)
is not present and would crash if it is present. Strangely it does not have any problem with zephyr_cc_option(-On) n=1,2 or 3.
Other programs, not using Bluetooth, have no problem with this option.
Any hints on what I might be doing wrong?

Thanks

Abderrezak


Output of peripheral_esp sample when build with zephyr_cc_option(-O0):


***** Booting Zephyr OS build zephyr-v1.14.0-2216-g3da2985b2837 *****
Bluetooth initialized
Advertising successfully started
***** USAGE FAULT *****
  Illegal load of EXC_RETURN into PC
***** Hardware exception *****
Current thread ID = 0x20000048
Faulting instruction address = 0x20001e28
Fatal fault in thread 0x20000048! Aborting.

1281 - 1300 of 7937