On Thu, Jul 09, 2020 at 11:58:18AM -0400, Steven Rostedt wrote:
> On Thu, 9 Jul 2020 14:45:05 +0200
> Peter Zijlstra <[email protected]> wrote:
> 
> > On Fri, Jun 19, 2020 at 10:15:51PM +0800, kernel test robot wrote:
> > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 
> > > sched/fifo
> > > head:   8b700983de82f79e05b2c1136d6513ea4c9b22c4
> > > commit: 616d91b68cd56bcb1954b6a5af7d542401fde772 [44/45] sched: Remove 
> > > sched_setscheduler*() EXPORTs
> > > config: x86_64-rhel (attached as .config)
> > > compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
> > > reproduce (this is a W=1 build):
> > >         git checkout 616d91b68cd56bcb1954b6a5af7d542401fde772
> > >         # save the attached .config to linux build tree
> > >         make W=1 ARCH=x86_64 
> > > 
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <[email protected]>
> > > 
> > > All errors (new ones prefixed by >>, old ones prefixed by <<):
> > >   
> > > >> ERROR: modpost: "sched_setscheduler" 
> > > >> [kernel/trace/ring_buffer_benchmark.ko] undefined!  
> > 
> > Steve, do you have any preference on how to go about fixing this one?
> 
> Well, I use to manually set the priority of the test, but I guess we
> can switch the parameters to accepting a "high, medium, and low" that
> will correspond to your setting of the other sched_setscheduler() calls
> that were replaced.

Steve, would this work for you, or would you prefer renaming the
parameters as well?

---
 kernel/trace/ring_buffer_benchmark.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/kernel/trace/ring_buffer_benchmark.c 
b/kernel/trace/ring_buffer_benchmark.c
index 8df0aa810950..0ee3d41ceee4 100644
--- a/kernel/trace/ring_buffer_benchmark.c
+++ b/kernel/trace/ring_buffer_benchmark.c
@@ -455,21 +455,19 @@ static int __init ring_buffer_benchmark_init(void)
         * Run them as low-prio background tasks by default:
         */
        if (!disable_reader) {
-               if (consumer_fifo >= 0) {
-                       struct sched_param param = {
-                               .sched_priority = consumer_fifo
-                       };
-                       sched_setscheduler(consumer, SCHED_FIFO, &param);
-               } else
+               if (consumer_fifo > 1)
+                       sched_set_fifo(consumer);
+               else if (consumer_fifo >= 0)
+                       sched_set_fifo_low(consumer);
+               else
                        set_user_nice(consumer, consumer_nice);
        }
 
-       if (producer_fifo >= 0) {
-               struct sched_param param = {
-                       .sched_priority = producer_fifo
-               };
-               sched_setscheduler(producer, SCHED_FIFO, &param);
-       } else
+       if (producer_fifo > 1)
+               sched_set_fifo(producer);
+       else if (producer_fifo >= 0)
+               sched_set_fifo_low(producer);
+       else
                set_user_nice(producer, producer_nice);
 
        return 0;

Reply via email to