you to take time to get ready to log on and share this out with all of your friends. I want to thank the technical crew for working diligently to get everything ready to roll here tonight so that we can come to you in each one of these different venues through Facebook, YouTube, all the different areas through our box cast, through the app, the website, whatever that you may be viewing on. We thank you for joining us here tonight. Pray that tonight will be a blessing to you. It's a little bit different. We're sorry to have to come to you in just this frame. Normally we would be in our Wednesday night Bible class and we would normally be coming to you from the sanctuary at Pace Assembly, but we had a severe lightning strike that took place just about 24 hours or so ago and it hit our air conditioning system at the church and so as a result of that and it literally, literally frying some components in there, we're trying to get all that fixed up and ready to go for Sunday and so we thank you for taking time to join us in this way tonight from my study. It's not unusual these days for things to change on a dime. It's not enough for us to be able to have the situations we do with COVID and all that's happening that could change everything in a moment, but I think at this point you're kind of used to those kind of changes, whether it's in the sanctuary or here in the Bible study, whatever that it may be, I want to thank you for joining us. So would you take time to share it out to all of your friends as well? Let them know that this Bible class is on here tonight and that they can actually go back and watch again and share it out to your friends. I want to thank you for being a part of tonight right here at Pace Assembly. So as many of you are starting to log on and join in with us, we want you to be a gospel carrier through the internet here tonight and get it out to every location that is possible and we thank you for taking time to do that. Pardon my glasses giving you the little bit of a shine there and all of that. I know that it's a little bit unusual. In fact, we were working diligently to get everything just right where it needed to be and so thank you for your patience and your diligence in being able to help us right here. Again, share this out and get others logged on here tonight and we thank you for being a part of the Bible class here from my study, from the cave right here at our home and we want to thank you for being a part of it. There have been a lot of things that's been taking place over the past several days. I was looking forward to be back in the pulpit tonight at the church but obviously we're not able to do that and so I've been preaching out of town and ministering at different locations and just excited for what God has been doing at Pace and in these other locations this past weekend about six people saved in the service at Pastor Clint Brown's church so we were thrilled about that and thrilled about what happened at Pace Assembly as well. We're moving and in the time we're living we must attach ourselves to ministries that have that life-giving flow of the anointing that's pouring through it and you know exactly what I'm talking about. It's the place where life is. It's the place where you're getting a living word and an experience that is an encounter with God through the power of the Holy Spirit. I just want to encourage you that if you don't have that church home and you're living right here within our ability for you to drive to Pace Assembly to be in the sanctuary that would be fantastic but if you can't just like right now there are many people joining us literally around the world for this live broadcast and so I just want you to know that we appreciate you. We thank you for being a part of Pace Assembly each time that you log on and we pray it is our prayer that every time that you do log on that you have an encounter with God that is life-changing. We must have it day by day. There's not one of us that is not facing all kinds of challenges on a daily basis and I'm going to talk to you a little bit about that in just a few moments to encourage your faith but before we get too deep into that study first of all I want to encourage all of you that are young people Pace Assembly or you count yourself as an individual in student ministries. I know you just hit back at school like a lot of people did. Right now Pastor T is online with Ignite Student Ministries and I believe we're hoping that they are able to be on tonight. They had a funeral service today but Caleb and Audra to be able to be live with you on our Pace Kids and you can do that on Facebook. So get your kids, your students going to those different directions and let them be able to be a part of that as well as you being able to join us here tonight. So for those of you that are just logging on the reason why we're coming to you like this is because we had a severe lightning strike and it basically shut down our air conditioning systems at the church so we are now in that repair mode and we're working diligently or the company is to be able to get us back up and running for Sunday. So you pray that that happens quickly and then we can get all that system back online. And the time we're living especially in these dog days of August you've got to have some air conditioning that's flowing in the building and of course to keep things stirred. So thank you for praying for that. Thank you for being a part of giving. Let me just stop right now and say that just because we're in this particular setting doesn't mean that you don't need to give.  Would you take time to do that right now? Would you take time to send the offering your most generous gift? Obviously we're going to need that in order to pay for these repairs and we don't yet know how much that's going to cost. It was several things several items that literally took it down. So thank you for your faithfulness in giving do that online do it on your smart device whatever that it may be give tonight just like you would be if you're sitting in the sanctuary or at your home or around the world you can do that right there online and we thank you so much for your faithfulness to the kingdom of God here at Pace Assembly and may God bless you for that. I may mention to you also a few things you need to be aware of and that is this coming weekend we are always excited. It's one of the most exciting services of the year is Extreme Sunday our back to school anointing service that takes place this coming weekend. We delayed it by one week. The kids I know the students are back in school and some will be getting back into school. So this coming Sunday is Extreme Sunday. It's when we gather all of the students faculty staff teachers everybody into the sanctuary and we anoint everyone that is going back to school give them a prayer cloth the kids Pace kids and ignite student ministries will have very special gifts to give to all of the students and we're going to lay hands on people and pray that God's healing and his protection his anointing would be around your life as you're going back to school teachers faculty staff bus drivers whoever you are show up this coming weekend it's our annual back to school anointing service happens at 10 a.m. this coming Sunday morning you'll not want to miss it. It's going to be a tag team Sunday right here as Caleb and Taylor and myself are going to do a little tag team this weekend and be a blessing to you bring a word to you that's going to strengthen you encourage you help you to be able to keep your faith strong in these days that are challenging for everybody especially with students going back awful lot of news it's out there that's a distraction I'll say it like that it's kind of an introduction to this message I'm going to bring to you but it's important that we are covered by the anointing of God and by the presence and the power of the Holy Spirit and your students are so I want to encourage you to be here this weekend and then be sure to save these dates on your calendar for upcoming events I'm excited to be able to have our special friend Nikki Cruz on September the 12th I don't want you to miss that and the Sunday morning service mark it down you'll want to be a part of it if you can't be here be sure to log on you will not want to miss Nikki Cruz he is going to be our special guest on September the 12th and then October the 3rd a night of worship with Todd Delaney you won't want to miss that doors open at 5 that service starts at 6 o'clock and then mark down November the 6th something very exciting that's coming up that we are have been planning this past week and getting some things together for and it's going to be our pace family fest first one that we've done of this in fact we are going way out beyond the norm and we're bringing in Christian bull riders namely Zane Cook one of the PBR pro bull riding individuals who has who has won many many awards along with some of his pro bull riding friends are coming in they're traveling in from Oklahoma to be with us out at the June 8 arena and we'll give you more information that's going to be coming on that but I'm going to tell you it's going to be a great great evening it's all going to start around 6 o'clock you'll want to be there early to get a good seat and the Thompson family is going to be coming and bringing some great gospel music we're going to have some giveaways on that night food at this point there's going to be fireworks that's going to happen on that night and you'll get to enjoy a number of junior bull riders and then our special guest Zane Cook will be there along with his other pro bull riding friends that will be joining us on that night out at the Jeff our June 8 arena and again we'll give you more information just look on our Facebook and social media site right here from pace assembly as well as the website and you'll get more information on that very very soon so don't forget that that's on November the 6th at the June 8 arena it's out in East Milton and you won't want to miss that great night and then on that Sunday morning on the 7th Zane and his friends are going to be joining us in the Sunday morning service for a cowboy Sunday and they're going to be sharing their testimony of God's grace in their life and what God has done and you will not want to miss it it's going to be a it's going to be an exciting Sunday as with that entire weekend is going to be a great great weekend so mark that down and at this moment we are rain or shine on that particular event out at the June 8 arena because it's covered and we'll be able to do that and we don't want you to miss it so God bless you for being a part of that now let me also mention to you obviously I trust that you're watching I'm not the weatherman or the weather forecaster but I will tell you obviously as you've been watching and seeing that there is a storm that is brewing that's coming up through the Caribbean and into the Gulf of Mexico and at this point all things are very uncertain it's scheduled to come in here sometime over the weekend or the first part of the week but I just want to tell you as a pastor and I say this to my congregation all the time that it's so important that you are prepared for what is coming you already know that that the shelves at the stores and so forth many cases are not as stocked as what they have been especially throughout this past year of COVID a lot of services that are not available or are limited in their availability so do not wait I would encourage you to start tomorrow pace family and anywhere along this coast that may be joining us right now I want to encourage you to prepare yourself don't wait too late to get what you need to be taking care of you and your household and others around and being able to minister to them don't forget that please as we're seeing that they were coming into that time of year when these storms will want to creep in on us and some people will say well it's not too big or it's it's not a big deal whatever it may be but I just want you to know you need to take every one of them serious and do your due diligence to get yourself prepared for all that's going on also want to tell you for our pace family and those of you that are online church how important that it is we continue to pray for one another today I attended the homegoing service of some of the members of our of our church and their family members and I just want to tell you that things you know that things are in a very difficult place all around our country for that matter people that are in the hospital even just before that I came online here tonight was getting some more information of some that just tested positive for COVID so I just want to let you know something Jesus is more powerful than COVID that's what you need to remember and you also need to remember that God is concerned he cares about you and COVID is not caught him by surprise none of what's taking place I know that there is serious illness and that there are much there's much debate this out there and many people are in the hospital it makes no difference it's time for us to pray one for another hold one another up believe God for healing Jesus is still the healer and I want to encourage you tonight to never forget that and hold fast to that whether it's in as you've heard me say before in time or in eternity it makes no difference if you're a child of God you will be healed by the stripes of Jesus Christ now obviously we want things to work in our way and in our timing and here on this earth and all that and I'm just going to tell you having experienced it in my own family and difficulties and having to bury loved ones it all that touches all of our lives but that does not negate the fact and it does not undermine the fact that Jesus Christ is still the healer I've seen too many people that's healed by the power of Christ so I just want to encourage you to take responsibility for yourself do what you need to do wash your hands do whatever today I was wearing a mask in that environment where there were close people you know don't anything or anybody intimidate you or tell you even from the higher offices of the land or state or whatever it may be you make those good responsible decisions for yourself and for your family that's what God wants us to do and that's part of what I'm going to talk to you a little bit about here tonight so please pray for all of those that are sick that you know of if you need healing for your body send your prayer request in as a matter of fact I've got folks that are online right now our staff and folks that will track with us on this online service tonight and they can receive your prayer request right there you can just type it or text it in whatever and get that information to us and we'll add their names to our prayer list the prayer team is praying constantly people are praying all the time holding people up this past Sunday morning I was not in service but I heard about what took place as people broke out in prayer prior to the service and it set the tone for the entirety of the service this past Sunday prayer works my friends and it is important for you and for me to join together in prayer and praying for those that may not be able to get a prayer out for themselves so do that send in your prayer requests and before we leave here tonight we're going to join together in prayer for all of these that are sick and for you now this evening I want to take just a few moments to be able to share a little bit of the word of God I may not be able to share all of this tonight this was part of what I was going to be bringing to you this evening anyway so might as well bring it to you tonight we are certainly facing it and it it makes no difference each time that I step into the pulpit or here online whatever that it may be the fact is that people are dealing with all kinds of difficulties and obviously the severe sickness that's going on and all that's taking place and we're finding out probably above anything else that time becomes a very valuable and precious commodity to us we're only allotted so much in this life every person no one person gets any more than the other isn't that something in these days of terminologies like equality and equity and all these kind of things the bottom line is God has set the time clock and each one of us get the same amount of time there's only 24 hours in a day and whether it's stolen or whether it's wasted the bottom line is you can't get it back and so intentional one of the things that I've been pressing over the past few years to our staff to our church is about intentional ministry I don't want to be doing something just to be doing it I want to live an intentional life one that is as I will describe to you tonight focused that is focused upon the future you already know what's taking place in your past you don't have to have faith for your past in fact faith never operates in the past faith is always futuristic faith is not about anything behind but that's what Satan wants you to focus on Satan knows that if you're focused on a gold and on the purpose and plan of God and on your future instead of your past then the potential for hell and for his attack against your life could be devastating to hell that's no doubt about it into Satan's plans that's the reason why Philippians 4 13 is so vitally important the Bible says I can do all things through Christ who strengthens me which strengthens me get this in your spirit tonight because I want to talk to you for a few moments about focusing your faith when you believe that I can do all things through Christ who strengthens me it changes everything for your life everything the gold of Satan is to distract you on a daily basis as I was traveling on the road and have been for the past several days it was very obvious to me if we got behind someone that was on their phone or somehow distracted their car or the truck would veer off of the highway and then come slamming back and and all of these kind of distractions that was taking the attention of that person off of what their number one job was while you're traveling at a high rate of speed to focus upon what is needed in front of you to drive the car you're in the middle of traffic all these things that are taking place focus is anything that consumes our time our energy our finances for that matter our attention all of these things are critical to focus now you can lose your focus very easily in the time we're living and you know what I'm talking about much of what we describe as you know I lost time or somehow I ran out of time or I hear a lot of people say well I just didn't have time well the bottom line is the management of time is critical and every day there's something that's going to pull us to the right or to the left slow us down whatever that it may be but if you're focused in your faith you can get back on track that's what I want to help you to understand here tonight because with with all the reports that we hear every night on television the just the cares of life the Bible describes to us the things that every day seem to garner for our attention or pull our attention you've heard me say before perhaps that there are some 3000 impulses of media every day that hits our life from billboards the TV the phones whatever that it may be and all of it is designed to get our attention and we stand the chance if our faith is not truly focused in the time that we're living to lose the focus and how can that happen well we many times we will fight the wrong battle and we waste our energy fighting the wrong battle you might have even made this statement before like I have why am I in the middle of this why am I dealing with this situation I don't need to be dealing with this situation this is you know I've got a little phrase that I've thrown out to Rita before I said it's not my circus the bottom line is is that many people would like to get you involved in their drama and or in the situation or things that pull our attention away and you have to recognize what is a satanic distraction and fight against that because you'll find that your energy level physically mentally spiritually can be depleted and in a moment you can find yourself in the middle of a situation that you were never meant to be involved in we fight the wrong battles and lose our our focus many times when we fight at the wrong time sometimes the fight is not for right now it's important for us to discern the seasons that we're in is this the time for me to get involved in this is the time for me to move is this the time for me to be involved in this relationship or this investment whatever that it may be it's important for you to know the seasons God has outlined those seasons and they're going to come and they're going to go and how important that it is that each one of us learn how to fight our battles in the right season now ultimately the Lord of course fights our battles but our battle is with faith and focusing our faith because distractions are pulling us away to get us to do things that are not in season for us there is a due season the Bible says in that due season if we faint not we will be rewarded if we faint not we can see the victory but that is in due season sometimes we go through dry seasons or seasons of difficulties or distractions and just like right now I know that many people are losing their focus of faith because they see their loved ones passing away due to this horrible disease this this pandemic this virus and and other situations that are going on and somehow in that moment and the the enemy uses those seasons against us many times to say hey where's your faith now your prayer is not working this is not happening it seems like you know you prayed the prayer you've gone to church you've paid your tithes you've done all these kind of things and things are not happening maybe God has left you maybe God has somehow not listening to your prayer but you've got to take your faith right back to the cross and be determined to stay focused in your faith because it's in those seasons when you don't sense the presence of God or maybe you don't feel the presence of God let me ask you a question have you ever been in a place where you haven't felt the presence of God I can tell you it will happen many times in your walk with the Lord but that's that's not the indicator as to whether or not God is with you we walk by faith not by sight and the key to being able to maintain our faith in the cross is the victory this is the victory that overcome at the world even our faith the Bible says so we've got to learn the seasons and then we've got to be careful that we don't lose focus by fighting for the wrong reasons sometimes we may have a feeling in our heart that hey you know what so-and-so did something to me or this happened to me and now I'm gonna I'm gonna do something about this and I can assure you there's not a person among us that is listening right now that doesn't have those kind of feelings from time to time but don't allow your faith to be controlled by for the wrong reason for for getting distracted and moving to an area or a place that you don't need to be involved in this is so critical for us to understand because time is of the essence and let me just give you this important fact right here the only reason that your faith fails many times is because distractions come to break the focus of your faith one of the reasons why I have these glasses on the night because this close up if I pull these glasses off things go just a little bit blurry I don't see as well or maybe the my my notes or the Bible whatever but I can pull things into focus by magnifying them a little bit more oh magnify the Lord with me the Bible says and let us exalt his name together bring it in closer help me to see him clear help me to not get distracted because distraction is a temptation to place our faith in something other than Christ and him crucified some other God some other attraction to us some other temptation it is always trying to pull us away from the cross let me just tell you distraction by definition is a thing that prevents someone from giving their full attention to something else by definition it is a diversion or even a recreation a distraction or a the Webster says an extreme agitation of the mind or emotions I think that might describe most of us when we get off focus when our faith is not focused and pointed distraction is caused by the lack of ability to pay attention well that's pretty obvious isn't it the many times it's caused the distraction is is because we lack the interest in the object maybe that's being preached about talked about maybe I've lost focus I can tell you that many times this phone right here can cause people to lose their focus in a moment because they lack attention on the object or the person or the situation they just lose interest in that or the attractiveness to stay engaged with what's going on and in the time we're living in right now you and I both know that in a moment things can pull us away or distract us from what we are supposed to be doing how we're supposed to be living but focused faith is the key to being able to have the victory Jesus encouraged his disciples to keep their focus on him because he was the reason and the one who would provide for them and making sure that every need was supplied for their life Matthew 6 33 tells us to seek first the kingdom of God and his righteousness and then all these things shall be added to us what do you need to do to distract somebody from their dream all you got to do is just give them something else to think about another dream for that matter to give somebody another dream delutes the one that God gave to you that's reason why that it's so important because at that moment we wind up getting on another assignment distracted pulled to the side to do something that God did not intend for us to get involved in and then we wonder oh where is God in the situation well that's when we've stepped or taken our faith off of what we're supposed to be doing it is so easy believe me for that to take place in the time we're living focused will always determine what you master or what masters you some people are giving their attention their energy to things and it's literally controlling their life God help us today cleanse us wash us from every distraction of the heart a double mindedness that we don't need to have because our focus always determines how much energy you put into something you're putting your energy into something distractions take your focus off of the things of God but I can assure you that you're going to give yourself to something and maybe to someone that's the reason why keeping your faith by principle focused in Christ in him crucified well pastor how can I do that every day I mean I've got to do my job and so forth well let me just tell you that what you put in to your heart and into your mind your subconscious is going to bring that back and I don't know if you found yourself in this pattern especially in the days that we're living and in this past year that in a moment you can break into a time of prayer because subconsciously your spirit is alive and it's focused upon the Lord I'm not talking about you not being able to do your job or or go to your workplace or drive the car whatever it may be but I'm just going to tell you the Holy Spirit is going to help you to stay focused if you'll make sure your faith is in the right place let me give you a few things you need to know concerning your faith and the principles of God's word so you can get this in your spirit first of all what you focus upon becomes the strongest thing in your life so that's the reason why our focus should primarily be and and be the preeminent thing in our life upon Christ listen to this this is what Paul said in Philippians 3 brethren I count not myself to have apprehended but this one thing I do forgetting those things which are behind and reaching forth to those things which are before he said I press toward the mark for the prize of the high calling of God in Christ Jesus look at that his faith was focused into the future he said I've got to forget the past good and bad because whatever I focus upon becomes the strongest thing inside of my life if I'm focused upon what God has for me in the future then that begins the the that that is the strength that's the pull of the Holy Spirit moving me in that direction Paul said it becomes the mark for the prize of the high calling of God in Christ Jesus here's something else as a principle from God's word broken focus actually creates insecurities and instabilities in everything that we do broken focus when when our faith is distracted or broken from what God is wanting us to do wanting us to be how we're supposed to live all of those things this is what the Bible says in James chapter 1 verse 8 a double minded man is unstable instability in all of his ways sometimes we read that and we think it's just about our Christian ways but that's not true the Bible says in all of our ways so that becomes you know with our minds with our physical body with our mental spiritual whatever that it may financial all of these areas become unstable when we lose our focus upon what God is calling us to do and to be here's the third one only focused faith can produce miracles from the hand of God here's what James says in James 1 and 6 he says but let him ask in faith not wavering for he that wavereth is like a wave of the sea driven with the wind and tossed let not that man think that he shall receive anything of the Lord he said the individual who cannot stay focused won't receive the miracles won't receive the blessings from the Lord because their faith is all over the page driven the Bible says like the wind tossed around to and fro i'm going to tell you in the time we're living it doesn't take very much for that to happen you know what i'm talking about there's not one of us that doesn't find ourselves on a daily basis uh maybe off track some maybe uh in a daydream or or some kind of thought that is not supposed to be we've got to arrest those thoughts according to the book of saint garyntians and bring them captive to the obedience of christ this is so important write this down focused faith on the finished work of the cross is the pattern for our victory the bible says that i just quoted it to you a few moments ago in first john five and four this is the victory that overcomeeth the world even our faith the bible tells us in hebrews that it is faith that it takes to please god without it we can't please god without it we can't live this christian life i'm just going to tell you sometimes faith seems to feel like it's empty that's the reason why focusing it upon the cross and christ and him crucified gives us the object and the source of our faith and then along comes the holy spirit to assure us that our faith is secure steadfast unmovable because we have it placed in the right place write this down your enemy is anyone who breaks your focus from your god given assignment that becomes an enemy you need to look at it as an enemy get this in first timothy four he said this is the faithful saying worthy of all exception for therefore we both labor and suffer reproach because we trust in the living god did you get that who is the savior of all men specifically of those that believe in other words he's saying here that we're going to deal with all kinds of issues and problems and people that want to take us away from our faith but god is saying that you need to recognize that it is an enemy that comes to distract you and pull you away to something other than god and his plan and focus for your life it's a fight faith is a fight there is no doubt about it sometimes it feels like it's so easy and then sometimes it feels like it's so hard to believe but i'm just going to tell you god gives us enough of his word faith comes by hearing hearing by the word of god you're getting it right now that's the reason why studying the word of god praying hearing preaching and teaching from the word of god is constantly building your faith and let me tell you it only takes a moment for your faith tank to drain out you follow what i'm saying let me know what i'm talking about you get in certain situations and circumstances i think about the doctors and the nurses and emergency staff and hospital staff that every day they're right they're dealing with situations that are life and death and they never know what's going to happen the next moment and and they may have walked in there with their tank full of faith but it only takes a few moments of of giving their energy and and all that they have to that individual that's needing it so desperately for it to be drained i i know i've had that feeling before working in emergency services before and and as a pastor it listen just because you're a pastor does not give you some special dispensation some special attention from god that you are staying full all the time because it only takes one situation one circumstance maybe dealing with a family or an emergency whatever that it may be that can drain the very life out of you spiritually that's the reason why you can never every day you've got to walk by faith not by sight and every moment listen to me y'all every moment that we live and especially when you have those times when you may be driving in your car or maybe you know a little bit of time that you're waiting for somebody or waiting for something to happen or going to the store whatever it may be plugging in something in your car to hear a podcast something that's going to encourage your faith because you never know how much of it is going to be drained out of you at any one given time it's so important that you recognize that the enemy is after your faith he don't care about your house he don't care about your car he don't care about the relationships and all that's going on all he cares about is destroying your faith that's the reason why jesus said to simon peter he said peter uh satan have desired to have you to sift you as wheat but i have prayed for you here's what he said i haven't prayed for you that your car doesn't fail or your house doesn't fail i prayed for you that your faith does not fail because that is the key to victory and if you've still got your faith then you've still got the opportunity to get up again and be focused and be able to have the victory this is the victory that overcomes the world even our faith here's another one a principle from the word of god your friend is anyone who helps you to stay focused on the assignment of god for your life that's exactly what was happening for philemon the bible says in philemon having confidence in thy obedience i wrote unto thee knowing that thou would also do more than i say he said this i want you to know that paul is is dealing with this situation here in the book of philemon and he said i wrote to you because i know about i have confidence i have uh a confidence to know that you're a steadfast brother that you're in the obedience of god's word that you're doing what's supposed to be and i've got a true friend i'm going to tell you in the grand scheme of things some of you may disagree with me but i'm just going to tell you most likely you can actually count your true friends those that are going to help you in your walk with the lord and and stay in focused and the encouragement and being there when it's good and being there when it's bad and and all of that probably you can count those friends on one hand because there's not many there's not many people that have the time or the energy to put into your life but that's a reason why as a believer if we stay focused god's going to give those god opportunities to us that we can be able to dispense by faith into the life of other people and encourage and strengthen them this is so important for us to get a hold of let me share this with you before we leave how to keep your faith focused how to protect it from the adversity that's coming your way get these principles that i want to give to you very quickly first of all recognize that broken focus will destroy your dreams if you don't stay focused in the time we're in i mean i talk a lot of times about blinders on the horse uh you know in the kentucky derby or whatever it may be so that he can stay focused upon running well that's what we've got to do we must stay focused in the time we're in because any number of distractions could come at any time and if our focus is broken it has the potential to destroy what god has in store for our life on our part second thing is this is one of the most important things that i would say to you today i was dealing with some of this even today it's important for you to take personal responsibility in the time we're living now before we started this broadcast tonight i told you about a storm that's coming i'm just telling you that the storm is coming whether you like it or not some folks will say well i'll stand out the shore and i'll rebuke the storm and so forth and praise god for any prayer that can divert it and i'm all about that god has the ultimate control over everything but it is a prudent person that prepares for the day of evil the bible says and one of the reasons why we're in the in the in the issues that we are today with faith and people falling away from the faith or maybe getting discouraged or distracted whatever that it may be is because people are not taking personal responsibility that is to be the person that's at the gate that you are that you're just not allowing anything and everything to distract you and take you away from what you're supposed to be doing personal responsibility for my life i know what i'm supposed to be doing do you do you know what you're supposed to be doing every day if you don't i don't know about you but i'm a list maker i i'll take i'll i'll wear out legal pads all the time because i'm i'm writing a list for myself on a daily basis and then i'll go back and scratch uh maybe what i've done or maybe refine it whatever that it may be that's just me i don't know how you do it but in order to stay focused we have to take personal responsibility so you know i've heard people say well pastor will you pray for me or ask somebody they say would you pray for me pray i want to know are you praying for yourself laying hands on yourself uh every day that my wife gets up and now she's preparing for the day she'll take a bottle of oil that sits right there on her on her uh uh desk there and her and in the uh in the room and she'll anoint herself and pray over herself i want you to know something taking personal responsibility the time we're living in right now is so critical literally it could be life or death for someone so that's the reason why i say whatever the situations may be it's time for you to take the responsibility for you and then if you're the head of your house take responsibility for your house we want government to tell us we want the pastor to tell us we want other people to tell us you know tell me what you think how do you feel about this well my friends the principles of god's word stand sure the word of god is forever settled and if you can find what the principle is and you can in the word of god and then act upon that as personal responsibility god will not fail you people will fail you but god will never fail you here's the third thing you need to know you need to control what comes into your ears your eyes and your heart from music to the full spectrum you know what i'm talking about and i'm going to tell you there's not a day that goes by that the images of our eyes and mind and and our spirit what we're hearing with our ears it doesn't take long you know all the news reports every day i've gotten to where i just i turn it off because i already know what the news is going to say the first thing they're going to put up there is the reports of this and covid and all that's going on i'm just going to tell you while i know and i can appreciate getting the information i'm an information getter i'm i'm going to go out there and find out what's going on but there comes a point where you got to cut that off because it does have an effect on your faith and your ability to stay focused you better hear what i'm saying if you hear too much of what's coming out of this world that is doubting and faithless and and lost in its mindset and and grabbing for this you know follow the science follow the knowledge all that's going on and after a while people come become disillusioned because what are we supposed to do and then the people that are supposed to be telling you what to do throw their hands up and say well it didn't turn out like it's supposed to or or this didn't happen or if this would have happened then we could have said this but it didn't so there no no no it's time for us to take personal responsibility and control what the what our gate the gate the eye gate the ear gate the mind gate the heart gate guard those places so that you guard your faith because whatever it takes if there's a doubt that's coming that has to be combated with faith you hear what i'm saying and doubt is a dark place in fact the bible calls it an evil heart of unbelief an evil heart we've got to see that those things that are coming against the mind of god are hitting right inside of our mind and then we've got to use the energy and our faith uh spiritual fortitude to be able now to break that down and say okay what do i believe who am i going to believe this is so critical for us here's number four for you to help protect your faith and keep it focused is keep a continual praise in your mouth and in your heart you know and i know that there is a fight today uh in the in the atmosphere of doubt and unbelief and negativity and and all the reports that are coming but i'm going to tell you david is the example for us to know that no matter what was going on in his life he always was able to reach in and find a praise he was always able to uh explain detail tell god all about it this is what i've done i've sinned you know uh forgive me wash me cleanse me cleanse my heart oh god creating me a right spirit no matter what it was and then that would always turn around and he would say but i will still if you if you will wash me cleanse me lord and i've i'm asking you to forgive me of my sins that i'm going to push out a praise to you continually and let you know that you are my god because praise is that garment that needs to be around the believer in this time like never before cast off the garment that old spirit of heaviness you know what i'm talking about it's a spirit the bible says the spirit of heaviness uh that tries to drain you of your faith energy and uh to try to distract you from keeping your faith in the right place i'm just going to tell you it is praise my friend that will help you to to be lifted into heavenly places turn on the music that gives praise fill the house up with praise leave it going during the day when you're at work or whatever and let the atmosphere be changed because we're dealing with principalities and powers like never before and that's the reason why we must make sure that there's a praise continually in our heart and in our mind and then finally tonight from the book of second Corinthians i'm going to share this passage of scripture with you paul is writing and he says this but we have this treasure in earthen vessels that the excellency of the power may be of god and not of us listen to this he says we're troubled on every side troubled on every side is that the way it feels i could say amen to that yet not distressed i am not in a place where the trouble is distressing me that is to bring me down to stress me out to apply more pressure than what i give to god he said we're perplexed but not in despair sometimes i don't know what to think but i'm not in a place of despair that is to say if i was in a place of despair i wouldn't know what to do or who to go to in order to get out of this perplexity but see i don't care what the perplexity is i don't care what the struggle of the mind there is always a place in jesus christ that we can go to get out of a place of despair there are many people that have taken their own lives in recent days months and this past year because they got to a place of despair child of god we know who to go to and we know who to direct others to it's not us it's not to the counselor god bless any counseling and help that can take place but i'm just going to tell you there is only one savior only one lord only one deliverer his name is jesus and he is the person who can take you from despair into a place of praise in a moment of time paul goes on to say not only we trouble on every side yet not distress perplex but not despair persecuted but not forsaken i believe that persecution is going to ramp up in the united states of america and around the world for the people of god in different ways i'm watching it right now and so are you where the pressure is being applied now that if you don't do certain things that the potential of you losing your job losing your bank account all these kind of things are on the horizon and i truly believe my friends based upon the word of god that this is the very spirit of antichrist to apply pressure to believers in these last days but the bible says we're persecuted but not forsaken to be forsaken means that not only it's one thing to be forgotten somebody to walk away for you but forsaken would mean that i put you out of my mind god said i'll never put you out of my mind you're always in my thoughts god said i'm thinking a thought about you that's a good thing not an evil thing i am not forsaken because god will never leave me and he will never forsake me he'll never leave me in a physical way and he will never forsake me in a spiritual and mental and emotional way he said we're cast down but we're not destroyed i understand and so do you that there's going to be those times when we are when we are thrown to our knees when when we are when we are laid out on the floor and and we don't know and we don't feel like that we don't know what to do but i want you to know the bible says that we may be cast down but we're not destroyed you're not destroyed god is not going to destroy you in fact the destroyer cannot destroy you the bible says in john 10 and 10 that the thief comes but for to kill steal and to destroy but jesus said i have come to give you life and life more abundantly child of god i want you to take hold of these words that we've spoken to you tonight because in the time that we're living we must keep our faith focused upon christ and him crucified and allow our faith to be built up even on a moment by moment basis don't allow your your faith tank to get weakened or depleted or empty or or half full i'm going to tell you i told them and the staff today uh one of the most important things we do and we did it today as a storm is approaching as we know we're going to be dealing with some things and we don't know what we might be dealing with make sure that all of the vehicles of the church are all filled to capacity and then call in for the fuel to come in so that we can have what we need because i don't know what kind of faith fight i'm going to be in by this time tomorrow it could be a fight for my life but child of god you must fill up your tank with the anointing of god with faith with the word of god so that whenever and whatever comes your way you can stay focused upon what you need to do and have faith to match the battle because if god before us who can be against us praise god i hope that you have enjoyed this bible class tonight this was a little bit different i know for me coming to you from my study here at home but i want you to know that the word of god is powerful it's quick sharper than any two-edged sword we're facing battles today like we never have but i want you to know god has faith for the fight and when our faith runs out jesus comes in and picks us up and he holds us and carries us all i've got to do is make sure that my faith is firmly planted and unmovable at the cross where the victory is always found this is the victory that overcomeeth the world even our faith praise god let me pray for you tonight and let me just say to you um it doesn't take very much for us to get depleted and and worn down all those kind of things so take time not only to pray for as we pray for you praying for other people pray for yourself pray for others and and during the day as god gives you uh people to pray for and that's not an accident when he sends a face or a name across your heart uh take time to pray for them right then you don't know what they may be facing but your prayer can make the difference so let's pray together tonight let me pray for you father in the name of jesus for my friend who is watching tonight and all people that are all around the world that are watching this evening and joining us i pray for their faith that it would not fail i pray god that in the fight that they're facing right now and and the distractions that are all around us i pray god that you would help us lord forgive us for being distracted forgive us for allowing our faith to to miss the mark but let us step up now and and look for the mark and pinpoint our faith toward what you want us to do and what you want us to be holy spirit help us moment by moment to be what you've called us to be and encourage and strengthen our faith let us take responsibility for our our own spirituality and build ourselves up praying in the holy ghost getting the word of god in our understanding every moment of the day and reaching out to others by faith to encourage them help our faith to stay focused and not distracted in the time we're living lord we give you the praise for it we pray for those that are sick in the hospital those that are sick at home those that have received reports that have not been good in the past a few moments i pray holy spirit that you would go and strengthen comfort and let the healing virtue of christ now be manifest in the lives of people for by your stripes we are and we're healed we give you praise for that tonight jesus thank you for being the friend that sticks closer than our brother thank you lord that you've given to us faith let us increase that faith by hearing the word of god and having more confidence in you than we ever have before in jesus mighty name amen and amen god bless you so much for joining us tonight i hope that this study has been a blessing to you and encouraged you and strengthened you this evening i want to encourage you to make plans to join us for extreme sunday this coming weekend we're going to anoint all of the students faculty and staff if you're not able to be there or you live somewhere else and you'd like for us to send you a prayer cloth make sure that you're online and you give us your address we'll mail you a prayer cloth anointed and prayed over for you as your students are going back to school or you may be going back to school and i just want to encourage you my friend let's bind together like we never have i'm preaching i have been preaching in the past a few services in different denominations let me just tell you when you find someone that is of like precious faith and they believe this book completely and they trust in jesus christ it's time for us to lock arms and recognize that god is building his church all around this globe and how important that it is that we link together in faith believing and encouraging one another in the time we're living do that i look forward to being back with you god willing this coming weekend at 10 a.m central time at pace assembly dot org or on pace assembly app you can join us live in extreme sunday services are back to school anointing service don't miss being in the service this weekend if you can if not join us online thank you for being a faithful giver to the work of the ministry right here at pace assembly we appreciate you we love you we thank you for being a part of this bible class tonight from right here at the cave at my home in my bible study thank you god bless you and i encourage you to share this out to everyone let it be an encouragement to them till the next time that we get together around god's word remember jesus christ is coming soon god bless you


So this is probably what you're expecting instead of the previous slides. Well, I have my regular audience. They know what to expect. They know what to expect. There's always going to be a travel log to start my talk out. I'm Frank Rowand. I have a couple of roles that relate to this talk. I work for Sony and one of those roles is I teach people inside of Sony how to work in open source, including how to work with the kernel. And some of the things I teach in a class are what motivated me to give this talk. I was trying to explain to them how do you figure it out warnings when you modify source code. And I'm also a kernel maintainer. And in that role, I face the same problem. And I have my own set of scripts historically to deal with that issue. But when I started this talk, I realized I could do much better. And I came up with a much better set of scripts, which we'll see late in the talk. So you probably are all familiar with static analysis tools. This goes to the title of the talk. Just some examples of them are GCC, DTC, SMATCH, SPARS. And we have Julia here. She has her tool, which I can never say the name of correctly. There are a whole bunch of different static tools that will show you possible problems or typically warnings like from GCC. So what is the problem that led to this talk? And I have a premise to talk about the problem. Three parts to the premise. First, there are many warnings reported by the existing static analysis tools against the code that's already in the kernel. The second premise is it can be difficult to determine when you get new warnings when you added a change to the code. Because there are so many warnings already in the code. The third premise is because of that, there are many developers and maintainers who don't even bother to check to see if there are new warnings when they get a new submission of code. So let's break that apart and see, is this true or is this false? And I'll look for your opinion also to see what you think. So here's a simple example. Look at the bolded code. That's really the part that matters. All the other stuff are steps that I just have to go through to do this sort of a check when I'm doing it by hand. First of all, I check out some version of the code that I'm going to modify. And then you see the bottom of that block of instructions, I do a make with w equals 3. So w equals 1, 2, or 3 invokes a different set of checks for different types of warnings. And I'm doing this make against a single object file. And I'm redirecting the output of this into just a normal file. So now I have a file full of warnings. Then the second block, I've checked out a new version of the code. You'll see there's one commit made there. I've modified one file. And again, I go through these black magic steps and I do the make w equals 3. And I put the warnings into a new file called new warnings. So I have old warnings with original warnings, file new warnings with a new set of warnings. So here's my first premise. Are there many warnings pre-existing? And taking a simplistic look at this, we just simply do a word count of the number of lines in those two files. 1,318 lines of warnings in the old, 1,320 after I made my modification. So let me start claiming my first premise. Yes, there are many warnings in existing code. It varies by file, but this was just a random file I just picked. Second premise, is it hard to find these new warnings when they occur? So I showed you how many lines there were in each of these warning files. Now if I just diff those two files and again look at how many lines there are, this is a nice simplistic approach. You should be able to just diff them, right? But no, I have 127 lines of difference. The naive way of looking at this, the very first thing I'm saying, I have two new lines of warnings. So why do I have 127 lines in my diff? And we'll see that. And here's that diff. Sorry, can anyone in the back read that? This is page one of the diff and page two of the diff. See, you can get a sense of what you're facing if you're trying to find where the heck is my two new lines of warning. So I'm going to claim that yes, it's hard to find new warnings with existing infrastructure. Okay, and in here just for reference, this is that one change I made. I simply added one empty function with one argument and exported it. And that's what led to the new warning or warnings, whatever it is. And we'll come back to this later. Third premise, do people actually check for warnings given this existing, okay, so we have a few people, let me start with narrowing this down a little bit. So when you just build the kernel, the default is w equals zero. So I'd expect all of you would check for new warnings for w equals zero. So the question then becomes, for w equals one, two and three, do you check? We had a handful of hands, like five hands that went up said that you do check for warnings. Do you always check for warnings? Do you sometimes check for warnings? How consistent? Kind of if the earned builds a thousand ran configs, we're going to have some, one of the things that I thought about when I started approaching this problem for myself was there must be a tool out there and I'll come back because we have actually someone told me about a tool yesterday. And occasionally you see reports on the mail list, your submission led to a new warning. But I wasn't able to figure out what these tools are and how they work. And so my premise was they're probably talking about w equals zero. Hopefully there is someone out there who's automated this and is checking one, two and three as well. But I didn't find those. So I wrote my own. Now I'm making this claim that it's really difficult. How about maybe I'm wrong? So actually did I not didn't ask. So how many of you think that my three premises are true? Kind of true. Sad but true. How many people think that it's not a problem. It's easy. You don't have any issues with it. Okay, no hands. Okay. So here's a counter example saying maybe I'm wrong. Here's another commit an entirely different source change as a single warning. And here I do the checkout and here's my get log showing I have a single patch. And I do a nice simple make with w equals one and my output is nice and simple. There's my warning. It's obvious. It just jumps right out. No problem. So sometimes it's easy. It's no big deal. And I have reformatted that warning message. So it's nice and pretty and easy to see. If we look at the actual raw, let me step back. So there are a lot of subsystems. If you say w equals one, they will build cleanly. And that's really, really good. A lot of subsystems is not to you get to w equals two or three. You'll start seeing a lot of warnings. But then there are subsystems where even if w equals one, you will get plenty of warnings. Okay. So like I said, it's really easy to see that warning. This is not reformatted. This is what it actually looks like. It wraps around. So it's not quite as pretty, but still no big deal. Really easy to read. Really easy to see. And I don't build in the source tree. I build in an external directory. So the world looks different in my world. Instead of just having warning messages have filenames starting at the root of the kernel directory or the kernel tree, mine start at slash and show the full path up to my git tree and then the path within the git tree. So my paths and my files are much longer, as you can see in this example. And just comparing those two examples, there's the warning message originally if you're building in tree versus building out of tree. So it's a little bit uglier. It's a little bit more noise. It's a little bit harder to find error messages and interpret them, especially if you have a lot of them. Okay. So am I whining?  Can I even tie shoes? Look, I do have lace-up shoes. I do tie my shoes. Tim claims I did a code of conduct violation on myself. Do you want to report me or should I? So what are the implications of this? It really turns out that there are many, many sources of these little bits of noise. And each and everyone on its own may not be a big issue. But when they add up, it starts to become really, really hard sometimes to find your new warnings. So as trying to get rid of lots of different types of noise. So we have some examples, different types of noise. If you do a make even quiet, make is going to tell you what it's doing. It's going to tell you what script it's calling. It's going to tell you what files it's compiling, things like that. It's going to tell you when it's leaving directories. So I like to get rid of all that noise. That's useless to me. I don't need that. So with a simple pipeline, I can do a grep and get rid of that. Make dash s. I was looking for that. You would think there would be a silent. Okay, so Aaron tells us to make dash s. I'll have to do it the easy way then. The way that I did it here was simply redirecting standard out. So it goes away and I'm only getting standard error, which is where the warnings are. And then I pipe it through said to remove that long prefix on my path. So that said is substituting get curder into blank. Get curder is a script that I wrote. And just a real quick digression. Why don't you just use PWD? It works for most people. I have a corner case. There's always a corner case. And I get to my kernel tree through a soft link. And PWD gives a different result when you get in through a soft link. And it doesn't match what makes says. So I wrote get curder to report what makes thinks the path is trivial. But you know, it's all these little details that add up into making this a more difficult task for the average person who really doesn't want to spend time on fixing these things. Another gotcha is if you do make with W equals one, and then you do make W equals two of the same exact file, there's extra work that goes on. And so you have to do make W equals one, do whatever you want to do, make W equals two, throw that away, do make W equals two again. And here's an example. So I did the make W equals one. And you can see that there's a lot of CCs going on, a lot of compiling host CC, host LD, the linkers going on. There's even a CC, a whole bunch of stuff going on there. The second time I do make W equals one, all that stuff disappears. So pardon? Dependencies. I didn't look into why those dependencies exist. Make W equals two will change the compiler flags. And the kernel remembers how you compiled every single file that you have compiled before with what flags. And the flags are different from the last time it will compile it again. Yeah. In this example, these other compiles had no warnings. I do have cases that I've encountered where these other incidental compiles generate warnings also. So you don't want to mix those into your warnings output file and think here's a new warning because of the change I made. It's not. It's a preexisting warning. Another issue is I'm sure you're used to GCC warnings. The line number is in there. If a line number of where a warning is changes, here's an example where it moved by three lines, the warning message is different as far as diff is concerned, simply because the line number has changed. So it's easy enough to filter that out. You can use said, there are a lot of tools to get rid of those line numbers. But it's just annoying. And if you do remove the line numbers and look at the result with no line numbers and then try and go and find out what line number is that warning on, that line number is now gone. You have to go back to the original warning diff that had the line numbers. It's just real pain, real annoying. Another source of noise. This is kind of a misnomer when I say it's a macro expansion. This is really an error check within something that a macro calls. But for shorthand, this is essentially a macro expansion leads to something that has a line number incorporated into it. So it's the underscore underscore compile time assert underscore line number. So if I have this macro moved from one line to another, the warning message changes that number. This was a surprise to find. It was interesting chasing it down to see quite what was being invoked. So I have my own personal script as maintainer. I teach my class inside of Sony and as giving them line by line examples of how to fix all these things and build pipelines and what commands to use. And I was going to essentially give that as my talk. And then I got into it and I thought this is crazy. I really should just fix up the scripts and make it easy. None of this do it by hand all the time. So I have a new script called check worn and some programs and here's an example of using it. This is the same commit for my very, very first example, simply adding one new function with one parameter and exporting the function. And here's an example of running the script. I simply check out my original version. I run my script. Warn check. And I got carried away here. V verbose. Rf2 is how what filters is going to apply. Dash s was save my temporary warning files so I can look at them afterwards. And then I'm just saying here's the source file that I want to analyze. So I could have ignored all those other flags and just said drivers of overlay. And the script will create warning files for the original checked out version. Then it prompts me and says somehow get to your new version of the file. So you could do a get check out. You could do a quilt push. You could apply a patch by hand whatever your workflow is to get to a new version of the file and then just continue from that point. So in my case I did a get check out to get to my newer version. And here's the output from that script. There are going to be several sections starting kind of at a rough get an idea how things changed. This is not a very precise accurate report at this level. There could be false positives, false negatives. So for W equals zero, the old version had zero warnings, zero lines of warnings in the output and the new one still has zero. When I went to W equals one we went from two lines to three lines of output. W equals two we went from 606 to 609. So there are three more lines of warning. Not necessarily three more warnings, but three more lines of warning message. So this is kind of a rough, but it gives you a good quick characterization of did things maybe change and how aggressively did they change. Then the next report coming out of this is for each type of warning, how many were there before and how many after. And so far the tool knows about GCC warnings and DTC warnings. I haven't yet added in SMATCH and SPARS. So it categorizes by type of warning and you can see it highlights W redundant decals incremented by one. So it's a real good way again of getting a quick overview what type of errors happened or warnings did they change. If you added a new warning of one type and removed one of a different type that would jump out here whereas that might not jump out in the number of lines in a warning report or number of warnings. So there are definitely false negatives and false positives still available in these various outputs. And this is the W equals one, two and three. So I was showing the whole list of, so for W equals three that was redundant decals which I just showed. W equals two, one of the warnings they checked for were shadows. And W equals one, it caught a missing prototype. So it's good to check all those W levels. And this is a real good example of why that applies. Then there's the detail. This is the one that is much harder to get a false negative. I said that when you just do a diff with no line numbers it's hard to figure out where the problem really is. So the very first chunk, the filtered chunk, is the diff with no line numbers. And it did pull out there's only one new warning. We see the two new lines. We can see what the warning was. It was that redundant decal. And then I show both the old warnings and the new warnings with the line numbers in them. So now you have the source, the reference to see where to go look in the source. So in the old coding of course there was no warning in this case. In the new code we see the three lines of new warnings with the line numbers involved. So it's really easy to go find that new warning out in the source code. That's really convenient. So where do you find Warren Check? Eventually I want it to end up in the kernel source tree. I hope we get it there. There's been talk recently about creating an area for maintainers tools to live in the kernel source tree. And it's a gray area. Is it a maintainer tool? Is it a submitter tool? Is it both? I think they'll all fit in the same place. And hopefully we do create that location. And hopefully something like this will get accepted in there. Right now I have it on GitHub so you can pull it down and use it for yourself. It is totally useful at this point. It's better than what I've been using myself. So I'm happy to have a better tool for myself. And as I continue to work on it, I will mirror it on GitHub. So as it gets enhanced it will continue to live there. Once it's in kernel.org it will probably disappear from GitHub eventually. So there's still some things to do. There's still some rough edges. I'm a bash person so I wrote it in bash. I probably should make it work for just plain old shell, right?  I love three space tabs. Eight space tabs to get it in the kernel.  Little trivia things. Like I said I support C files, assembly files, and DTS files. And I like to add support for some of the other static tools. I showed you the example of running command and I specified a single file name. It's going to be a very simple change to be able to specify a whole list of files and run the report for all of them. And the natural outflow of that is if you have two git commits you should be able to feed the script one git commit old, one git commit new. And the script should be able to check out the old version, do the checks, check out the new version, do the checks. And it should be able to know what were the files modified between those commits. So it should be able to figure that out itself or let you manually choose which of the files modified you want to look at specifically. And again I like it to go to kernel.org. So what I'm asking for is I found just through stumbling over them some of these things that lead to difficulty filtering out changes that really aren't changes but just things like the lines moved. So if you encounter any other types of patterns that the tool doesn't take care of please let me know and I'd be glad to filter those out too. And I meant to sidetrack here. So I mentioned that, okay, you can never say your name. I want to use the g but it's here. Oops, you got to get you so you can see. Just told me yesterday he has a tool that does a lot of the similar things for removing some of that noise, things like lag numbers. He does some other things to move some other noise. And the place that he uses it is he takes reports of entire kernel builds from Michael Ellerman and he runs his tool against those. So it's a slightly different environment. My tool would not work in that very well. My tool is focused on a single file or a small number of files. And his tool is in his Git repo, the Linux script on GitHub. GitHub G E G E E R T U. Another thing on my second slide or first slide I talked about static tools and gave just a few examples. Mr. Arndt gave a talk at ELC 2016 about static tools. And I recommend going and looking at this for a lot more information on some of the static tools. But it just was a distraction for today to try and go into any detail of static tools. So at this point does this seem like a good solution? Do you think life will be easier? Will people start being able to check for warnings? Will people be more likely to check for warnings if these tools are in the kernel tree? Where's the microphone? I'd give it a spin. Okay, got one. I would be happy to sacrifice, I don't know, what a 20, 30K of my Git repositories going forward. Nice. I have some other plans, but I could probably use those tools to help with those. So some of the other plans I have are reorganizing the warning levels so that a lot more of these things in W equals one that have very few warnings get enabled by default and then we fix them all. And I also have some ideas for how you can more easily turn on and off a particular warning locally in the code when there's a known warning that we don't have a good solution for, but we want to shut it up. And I have ideas for turning on extra warnings per directory or per file. So you don't have to pass it on the command line, you just annotate the make file saying all of this directory we always want with W equals one for things like drivers media and drivers MFD. They already test that way, which means there are no false positives. And then they get everybody else to do the same. Yeah. You'll also find that in different subsystems, there are different practices for the different warning levels. Like I said, some subsystems are really clean at W equals one. And so you can expect that if you inject a new error at that level, you'll get called out on it. There are other subsystems with so many that maybe no one will notice if you add another one. But overall, I think we would like to push the entire kernel toward fewer and fewer warnings. More questions? Comments? Question from the way in the back. Have you considered using LLVM for compiling? Yeah. So there's LLVM is, I always get confused. Is Clang and LLVM, are they related or separate and different? Same thing. Same. Okay. Yeah. I was hoping that the format of the warnings coming out of LLVM will be the same. And that's one of my questions to follow up on to make sure it really is. So if that's the case, then it will just work. So what I'm searching for is the dash W, essentially. There's a little bit more to it. But if the same format of warning comes out, it should be really easy. Yeah. So I don't know the answer to that question. But a few years ago, I looked at like the error messages produced by GCC and the error messages produced by LLVM. And it seemed like LLVM was more intelligent about removing irrelevant things. GCC was tend to get confused and then spew out a lot of messages that didn't mean anything. Yeah. So you might get more precise or at least different information from LLVM. Yeah. That'd be good to get rid of some of the false negative or false positives. And again, if there are other static tools that people are interested in, I'd love to hear about them. So GCC, I don't know which version it was, but they just redid a bunch of their error message formats. So they tried to make them more user friendly, I think because of competition from Clang, because Clang had better error messages. That was the general consensus. Right. So you may have to adapt to that. So the only part of the format that matters to this tool is the dash W, some string, because it reports that table of how many were there before, how many are there after. But if you look in the diff, you'll see the full string of the warning message. So as long as just dash W, some string, I'm good. Okay. So I have a couple of questions. Firstly, do maintainers actually take warning fixes seriously? I'm sorry, is that it again? Do maintainers take warning fixes seriously? Some of them seem to. Yeah. I've unfortunately been forced to do pre-sales work. So I've been trying to do something useful by hunting sparse warnings in the kernel. I'm up to 147 patches now. Yeah. And what do you feel about people adding more warnings? Yeah. If it's a warning that's showing a real potential code problem, then to me that's a good warning. If it's just a preference warning, like, well, I'll use the check patch example, you know, 80 line limit. Then sometimes that's a nuisance warning. Sometimes it actually is a very valuable warning because sometimes when I've hit it, it makes me stop and think, is my code structured well? Do I have horrendously long variable names, which are more difficult to read and understand and scan through. And so actually that 80 column warning is sometimes helped me clean up my code. Sometimes it's just a lot easier to have clean code when it's long lines. So again, it's the type of warning. If it's useful, yes, more warnings are good. Just to go back to my example, of those 147 patches, there are actual four bugs found in that where people have either passed the wrong argument or have missed some sort of user space annotation or in one case missed an engine cast. Yeah. And I actually saw those messages in the mail list and I was really happy to see real bugs being catch caught. And in my own examples, in device tree, when I started running these different levels of W equals, I have caught real bugs also just with the existing warnings. So it definitely is valuable when I can look at the ones that are real versus versus not. And my last comment is one of the things I have been recently doing is why I'm running sparse a lot is I'm currently teaching sparse how to deal with printer formatting strings, which apparently is a lot of fun and they are incredibly difficult things to deal with. So hopefully that will get merged at some point. Yeah, that'd be great. I'm glad you've been working on this stuff. Originally, in my early years, I wasn't using smash and sparse. There are so many levels of things to do as you become more involved as a maintainer or submitter. And once I started using those tools, I really became hooked on them and they become part of my automated process. Just makes it a whole lot easier when you automate things. Question over or comment? Hi. I'm not sure it's related, but I have observed that some warnings are specific to configuration. It means that for the same code base, you change the .config file and then some warnings pop up. Yes. So how is it related to your work basically? Yeah, this tool can't deal with that at all. It doesn't know, but that is one of the things I teach about in my class. One of the things that the tool does is check whether the .o, the corresponding .o exists. If it doesn't exist, it gives you a warning. It'll try and make it. It checks again. If it still doesn't exist, that's a very good clue that your config is off. You need to change your config. But there are other config types. There's a lot of, if a certain config do real stuff, else essentially stub things out because you still want the builds to build and try and detect warnings and errors. And you have to know whether you're checking the real code or stubs and be sure that, in the example of running my tool, you'd actually want to run it with both configs, the one with the real code and the one with the stubs, and make sure that they're both clean. And that becomes a very complex, ugly issue with the commentorial config options, which may impact your code. That may not be obvious. It may be more generic config options that aren't specific to your code. Okay. And what configuration do you use for your experiments? My experiment is on a dragon board. And I'm using the MSM 8970, it's arch arm dev config. MSM 8974. Yeah. Just that dev config. And then given that I do device tree, I like to turn on my unit testing. So I tend to turn that on. And I actually had to, in this case, to get the overlay file, because that only comes into play once you start doing dynamic. And I turn on dynamic and unit tests kind of as a whole. So that's a real good example. If I didn't turn it on, I couldn't even check for any warnings in this file that I'd modified. Thank you. So we have two minutes, question from Julia and question up here. So just in the interest of endless self-promotion, a couple years ago, I'm presented here a tool which is called jmake, which lets you, it informs you if the configuration you chose doesn't actually compile the lines that you changed. That would be really good to tie into this. I have a last question for people. Is anybody actually checking the warning tools to make sure they are actually producing correct warnings? Answer from Arndt. Where's my compiler guy? I was talking to him earlier. I've just spent a year building kernels with Clang, and when I submitted the last patches for the current merge window, Linus pointed out that I had introduced a very trivial warning that Clang had apparently never missed and that Jesus had always warned about and was very embarrassing. So yes, a lot of the tools do miss important warnings. Yeah, that's an example of where it's good to have multiple tool chains building the same project. You have 10 seconds. I'll be around till tomorrow morning. I'll definitely be at the closing game session if you don't find me anywhere else, and I'll hang around here after the talk. I have no need to rush off right now. Pardon? Oh, I've in half an hour after rush off, but until then, I'm available here. Thank you all for coming.