So before I've got a few slides as an introduction before presentations from BitTimes can we first of all know reveal who is here from a BitTime or what BitTimes exist so can we can you shout out who you are for representing the one thing Cape Town Montreal anyone else any last minute bids coming in ah ha ha and Paris is on its way see some local okay so we can say we'll do that at the end of slides it makes it more amusing yeah yeah you can help me with that because I'm really confused so shall I just start anyway yeah so let's start because I'm parsley they probably can figure out what's happening anyway so most information to do with the debcom of bids or debcom 16 information is on the debcom 16 wiki page so I guess lots of you have your laptops and you can go on there and start adding alternative alternative bids or whatever you want to do it's a wiki it has links to various useful information are just very quickly running through a couple of things now this is the debcom of goals which are given in more detail on the debcom of website so if you're thinking of doing a bit you should read the full version of these not just the headings and think about that as you prepare your well as you continue to prepare your bids we when we when we agreed these a few years ago we split things into primary goals which were to enable face-to-face interactions but also importantly providing talks and video lots of people can't make it to debcom we still want to serve them and providing time to work on debion and then we gave a secondary goals so they're kind of important but not what completely decides things in the first place to motivate contributors and to motivate the local community in the place where we hold debcom of in extremely brief version the since we have three presentations to come the debcom of bid process which you can find in extreme detail linked from the wiki page is that later this year sometime to be agreed we would have more more official submission of the bids in some kind of document form and that's normally documents on the wiki rather than anything else following that once we move forward we have a first meeting where we talk to the bid teams and agree stuff and then some amount of time later again this is all varies a bit from year to year depending what we try to push we have an actual meeting when make a decision and in that meeting we can either just decide someone is obviously the winner or we if it's somehow there's a kind of half the people each way then there's a group of people who will make a final decision on that who are the people called the debcom committee I believe some of them are in this room maybe the debcom committee people can embarrass themselves by standing up for a moment or waving or something Marga says no but that's probably tells you she's one of them I don't know who else we have in here from here well yeah another one debcom chairs are kind of automatically debcom committee then yeah Tiago here and there's again you can find the full list on the wiki I won't bore you by going through everything just now again if you are from a bid team you should speak to us or speak to the relevant parts of Debian on things that you need for that one of the bids I know already has set up a bid mailing list yeah on yeah a a boring point to mention for those of you not yet involved as we are migrating the debcom lists to lists dot debion org so if you're create if you want a new list then just behave like you normally would for a debion lists don't do anything strange and the debcom wiki you can probably find and debcom for RC channels are a kind of our regular way of communication as in much of the Debian project for non-official kind of stuff so if you just want to ask a question sure you can email debcom team for example and ask it but you can also jump on to IRC and see if someone's around just to have a chat at the time so not delaying things further and let's have the prep bid presentation so we are we just agreed a method of deciding the order of the bids presentations which obviously is the most important thing so we're going to put the bids alphabetically which means Cape Town Montreal and Paris we believe and we will toss a coin twice and generate four bits or sorry two bits from this if it is if the answer is tails tails we will discard it and retoss so give me a moment here so we have tails first and tails again so we retoss heads and tails so that's this so that's the second second bed which was Montreolle yes so the the format is ten minutes for each bid to talk and explain their bid please so ten minutes for each bid one after the other and at the end we will have questions and answers we cannot delay this much as you can imagine because it's another talk that my people some people might want to see later those below your ear I don't know how yeah anyway doesn't really matter so I'm here to kind of generate interest on having debconf in Montreal and I realize that for some people that may be a bit scary yeah where is yeah it's just I don't know what to do show me I think this way oh this way all right the problem is not really that but the speaker where the speaker is awesome yay so I still I think I'd save you from from that and maybe we could just still do it and around the same time as this year so Montreal lots of food and drink it's totally not an issue most things are walking distance it's it's a pretty small island it well small it's big but it's still things are still within luck local distance there's many options for accommodation one of the some of the things that I looked into were you cam and actually University Residence and there is a vibrant free software community so this is actually one of the places I thought about and I've actually reached out quickly to the you can people and there they would be interested in having debconf there so basically you can it's the University of Quebec Amoreal centrally located this is directly downtown the venue is accessible like I said great food great good network we have a local archive craft beers nearby like seconds away literally one interesting thing is assuming there'd be bad weather it doesn't mean we actually have to go outside in the big blue room and other venues are possible I know about the Crimson the center for computer science research in Montreal and that's also a very nice location and there are possibly others so as for maybe having fun in Montreal there's lots of things rental bikes assuming they don't go bankrupt before that Mount Royal which is a very nice place right in the center of Montreal botanical garden the natural museums like planetarium and sectarian everything and shows and festivals because assuming that comfort happen again around the same time as right now that's right after the festivals there's still lots of things going on it's a lot of fun there's always activities outside and then other cool places St. Helene Island where there's a beach team park and again shows and festivals outdoors so that's basically bike paths on the Montreal islands a view of the Mon Royal and the view of the botanical garden thank you yeah so Paris is the next one then it's red so hi everyone and thanks for being here for the bits from the French cabaret so we actually have a rock-solid local team we have a French trusted organization and in the past six years we did three successful mini-dead comp in 2010 2012 and 2014 so obviously we need to do something in 2016 so let's look at some venue options we can go into Corsica so this is the venue right here we can go in Lyon but Luca had that idea so you should ask him for the details we can also go to Tunisia we have a secret cunning plan but well to be more realistic we can go to the Paris suburbs yeah this is the venue so what are the good things about Paris well the location location location you love the people you love the language you see me the row you see me the grave and more importantly you love the bubble so we have a plethora of potential sponsors in Paris Mozilla EDF Evolyx logilab yeah actually we have credit if to Michael said yes sure we have smile we have in Rio we have the Ildeau France region we have well an incubator and we have the mérite de Paris for the day trip we do have a few options cheese wine well we know a bit about those two what else well there is no French cabaret maybe so the question was can we have it at the same time at the as the Tour de France I guess maybe but wait seriously we really have some venue options basically we have universities or conference centers where we have contacts and we really have a local team I mean the two masterminds are here maybe and myself and we have a lot of volunteers from past mini-debcons and other free software related events also we have a whip and that's it so that's it for our presentation so now the bit from Cape Town all the spectrum is flat say no red light means flat oh that's not right turn it around no there was a was the right way up doesn't go upside down there's something like that okay so there've been a few of us in Cape Town talking about hosting a debcon for a while it's been mostly idle discussion because we thought it'd be a nice thing to do and we thought people might like to come to Cape Town but we've been we put it in a bit last year and we never actually took it to completion so maybe we can do that this year first reason why we need to do it is because people keep asking whenever I introduced myself where I'm from it's obvious that when is Debcon gonna be in Cape Town we haven't had a debcon from Africa yet I think it's probably about time there are only five DD's in Africa but we can work on that sorry I'm sure we think Cape Town's very beautiful it's got a lot of free software and Debian people in it and it's very nice it's a cheap place to go out and drink and eat and enjoy life obviously it'll be good for free software in Cape Town there are few reasons why you might not want to have a debcon from Cape Town it's a bit of a pain to get there but that same goes for us whenever we try to go anyway so maybe it's a fair response yes there are three DD's in South Africa and I'm not in South Africa anymore so two but maybe this will help usually Debcon is around this time of year which is winter and unfortunately winter in Cape Town isn't that nice but if you get a nice week it'll be great there's no way of predicting that at all there is some crime but I wouldn't worry about that we'll have them come out of the way somewhere probably and public transport in the city isn't fantastic but thanks to the World Cup we now have a bus system that's pretty good in the city if we outside of the city it'll it's going to be a lot more taxis and hired cars I'm afraid but this is Africa yeah we've had some ideas of where we could host a debcon there is a very small little Institute of Mathematical Studies that could take about a hundred people on the coast they're probably too small but they have already said they would happily take it debcon there's the university the Cape Town University which you can see in the background here which is a spectacular campus with a great view but it's a big university and very bureaucratic the chance of getting unimpeded access to the network and dorm rooms when the students haven't been kicked out of them is fairly small otherwise maybe we go to a small university town about 80 kilometers out of Cape Town in the Wainlands if we we have some contacts there if we can do that that might be the best option that that would mean residents and drinking places and conference venues within walking distance of each other people Allison and I are both here and supporting the bird but neither of us actually live in Cape Town right now I'm just moving away from Cape Town there are a bunch of people in Cape Town who are keen just how keen remains to be seen but at least one of them has experience with running conferences and I think we can do something potential sponsors Amazon and Oracle are both throwing money at everything they possibly can in Cape Town at the moment to try and hire people if you don't know EC2 was started in Cape Town and they're now the biggest employee among geeks there by a mile but they're people art so maybe a couple yeah Oracle and pray and pray cult has been sponsoring lots of open-source related things like by concert a there are lots of nice things to do you can see Robin Island in the distance that's well worth a visit it's got penguins a fantastic amount of hiking game reserves around Cape Town not so great you might see a giraffe if you're lucky and some tortoises beach with penguins and wine wine farms we come show we can think of more great things to do as well wine farms time of year would be a big consideration it's kind of rainy from July to November on and off winter in Cape Town is cold and wet and no one has heating so it's cold and miserable what cold means about eight degrees Celsius but the rain goes sideways it's less than pleasant in the end say February it's very hot and dry but it's probably a bad time for debcon because it would be too close to another debcon and it's tourist season so you'd have to compete with Germans for beaches so maybe we just take our luck and see what we can what the weather is like any questions okay no questions so can the teams now come forward so we can they can take questions from the audience please first question for the Paris team of course debcon 15 is going to be next year in Heidelberg and the traditional pattern is that we try to alternate continents and move it around between regions from year to year rather than doing it on the same continent twice what would you argue is the reason that we should break from this pattern and do it in Paris as opposed to skipping Paris for 16 and having you reapply for 17 if I'm not mistaken on the wiki there is also a bit for Pag but I don't know if there would be any official proposal for it or not about the question for 16 or 17 yeah we could we just made the proposal because Nikola and me were have some time to organize the conference we are not sure to have this time for later on we have most of the volunteers we have with the iron purse so that's why the city makes most of us and to complete the answer the pattern didn't actually exist between debcon zero and debcon one I know that's low which also means that France is already over quota right from the Montreal bid there was an important piece of missing information which was the team could you please go into who do you think that would be helping you sure to be honest this is kind of my own initiative but at the same time I did approach a lot of people there's a few DD's in Montreal already I know Anarchat he's somewhat interested in helping out I know Chagot and Tassia might help out as well and there's so I mean there's a lot of people who are definitely interested in helping out I myself I'm I mean I'm not a DD but I I do have time and I'm from Montreal and I can do most of the stuff and I have contacts with University people the I know the the local computer science club is extremely interested in this and I also have help from other people like John Scherger and others so yeah the more important question for the Montreal bid where would we go on the day trip that's one of the things I tried to show that so I mean Montreal is absolutely awesome I know a few other places for like pretty interesting hiking I don't think it's quite the same as what I heard the the hiking was this time but there's Mount Saint-Hilaire there's like very very nice place Mount Saint-Hilaire for instance is a is a big park that's owned by McGill and is close enough that we can reach it fairly easily okay well for the three of the bids we up up to this year we usually have a two week a complete conference and well we will have to see what happens from next year onwards what duration of a depth comp are you considering I mean are you proposing holding a week of the camp or a this format we try this time I do know the previous format actually I would I think this format worked quite well and I well at least my own opinion is that this would work that would still work very well for Montreal I'd be perfectly fine with either format I haven't really considered that too much so yeah that's basically the same for us we'd be fine with the two formats I guess depending on the venue and the money we could extend to further than 10 days but I mean it's to be defined basically I was curious specifically for the Cape Town bid what are the entry requirements for the country or generally how difficult is it for people all over the world to enter the country legally as a visitor illegally is fairly straightforward I'm led to believe legally is fairly simple too for many countries you can come with a tourist visa that you can get on entry I think I'm sorry so I've been there many times as an American you get a pretty much an automatic three month entry visa and it's a pretty it's a long list of countries that have that access they are a little bit concerned about the neighboring African countries so they make it harder for entry from there because they're afraid people are going to come in and stay illegally but for most of the world they're they're very familiar with people coming as tourists and that's what they expect so they don't have very heavy restrictions there if we got any support from local government that would probably help with the neighboring countries as well who was first question for Cape Town I believe there's South African Airlines yeah do you think that you could establish contact with them and get them to sponsor because if we have 10 plus hours that also means a lot more money for us to fly in so that if South African Airlines can stay a float long enough I have no I have no idea I don't have any contacts in the airline industry I don't think anyone else does either yeah there are several other airlines and fly to South Africa as well if I'm allowed I'd like to ask a couple of questions to all the teams which I will stack here quickly because I think they're important to have everybody's answers to first of all how flexible are each of your proposals in terms of the date ranges for your target venues and secondly I at least I remember two of the teams listed prospective sponsors that have some local influence and it's possible that all three of them did but we found certainly this year in doing DEBCOM 14 that personal connections make a big difference for for raising sponsorships and so to what degree do you view these as as strong prospects because you have you have someone you know to talk to versus them just being large companies doing open source in the area I think as I'm holding the microphone I'll start by answering that we our venues are still so up in the air and the proposal is so vague that dates are variable we have contacts at some of the well the companies I mentioned I got contacts at all of them I probably could probably get sponsorship and I assumed that comes usual sponsors would also sponsor I'd say I agree with the like usual sponsors that would most likely very much work I know we have we have an office of Google in Montreal and I think we have some contacts there and we I mean at least in the computer science club at UCAM there's all the people with contacts and various free software companies so yeah the dates well for most of the summer it's pretty much fine so basically I don't know anytime end of June until about this time after that it becomes a bit more of a problem because classes will start again so I guess from the for the Paris bid the well it's maybe we don't know the people that can influence the sponsorship decisions but we know the people that know the people so it's not too far I mean it would be I think pretty pretty fair to find out yeah to be more precise the companies we listed in our bid are known to support such conferences and they've already have in France actually and you have contacts in many of them so we do expect at least some attention from them so to such conferences and regarding the dates I guess yeah guarding the dates I mean it would think depends on the venues we didn't explore deeply each possibility yet but as we identified mostly universities for now it will be during the summer it should be okay because many dorms will be almost empty so we'll have more possibilities yeah so question to Cape Town you mentioned that the timing might be difficult whether and stuff did you consider having maybe many depth confers to figure out how that would work and maybe you could have it in at a date which is not clashing with that come so much so our plans after our failure to get a bit in last day come forward to have a mini debcon the difficulty is there I don't think there enough people in the region to have a mini debcon that's specifically about Debian and they're already a large number of local conferences about other software projects we've got I mean all the languages have conferences there are a handful of other conferences so the bit out of the way the question was hosting a Debian team sprint sure but it's good except an expensive place to host a sprints absolutely so looking at actually thinking of costs from all three of the bids I mean how would you rate say accommodation cost locally for you know both for the sponsored type of accommodation in dorms or what ain't if you look at university or for local health hotels I mean what kind of range is it are we talking I don't have numbers on hand University dorms fairly cheap other accommodation as variable as you'd like but not a fairly cheap yeah I can't say very much more than that it's in general Montreal is fairly cheap I know we can get some kind of group discount at a very very great rate as for dorms I know it would be cheap but I seriously have no idea what it is right now I need to look into it so for the university dorms in the venues that we considered I guess the price would be in the range of 150 euros for two weeks something like that maybe less but max 150 euros and for the hotels I don't have any numbers I guess that considering that the venue would be close by to some specific options we could possibly arrange some discounts or group prices maybe well I mean related to the next to last question a several times in the past it has been like a push that's a good thing for them come to be close to an interesting a local big conference a do you think there's some other conference in the time of year I know it's too nebulous right now but some other conference we could either piggyback on or that keep that can piggyback on us right that they can make it drive the prices down or maybe get a wider audience so for price I have no idea so around April May there's scale conf which is a computing you know software at scale conference about two days long and around November there's Picon ZA those are the two I would try and be back to back to either in particular relevant it's kind of too bad that this is for 2016 and not 2015 because I know there was at least Picon in Montreal which could have gone very well with it but otherwise I mean I there's lots of conferences in the US in Canada I agree there's much fewer but it's something to look into any other questions so slightly more silly question maybe or maybe not depending on your point of view what's the local beer like all right well we have lots of craft beer Montreal is big on getting influence for beer making from various from various locations one of the one of the places I can definitely talk about is the location that's right beside the UCAM they make all their own they make all their own beers they have stout every every kind of beer you could think of and another good place is well or well-known place at least in Quebec is the bistro de bière belge I'm not sure they could actually accommodate something as big as debcoff but it's something to that I could definitely look into and they have such a great choice of beers but yeah so if you'd asked me ten years ago I would have said that's feedback I would have said it's absolutely awful but craft beer has been taking off in Cape Town in the last five years especially and especially especially amongst developers and free software people a lot of brewers so there's one commercial brewer who would be vaguely involved in the bid team and I'm sure he'd be interested in providing beer he brews Belgian style beers so in France I guess the good local beer is wine so if you really need the bubbly stuff I guess we are close enough from Belgium to get some beers well I think that's it we have a few breweries near Paris nothing really significant we have seven minutes left so certainly after organizing debcoff seven and seeing Gunnar after debcoff six the probably I think the thing that's most underestimated is the amount of time it takes for one person to do debcoff I certainly almost lost my job over it I know some other people it had been certainly lost their partners or something as they left them because they're spending too much time doing debcoff how much time do you do you think you have to do and how much time do you think it will take this is where I feel particularly bad except just left Cape Town so it would probably be mostly on other people's shoulders I would know I would commit as much time as I could to it and I could imagine that being a good I don't know what I should say on a live stream but a couple of days a week at the most but it would it would require other people who are actually there to be doing that as well to succeed sorry same team so I I've been for many years switching back and forth between Cape Town and the US so I would take this as an excuse to spend about half my time in Cape Town that year and I do know what conference organization takes I did ask on before I did debcoff yes we can go so yeah I don't think we underestimate the amount of time that it takes I mean since we since we emitted the idea of doing debcoff in France a lot of people have told us you're crazy you shouldn't do it never do it it's not a good idea but well I guess in France we are lucky to have a lot of days from work and yeah I guess for going weekends for two years is not that bad and after organizing the three minute debcoffs we we've seen that there are many volunteers who can dedicate some time for organizing conferences and I think we can count on them to so I agree I don't actually have any experience in making that kind of big event but I mean I have been carefully reorganizing my time and I know I could very easily spend at least 20 hours a week just dedicated to debcoff and then with the amount of interest and help that I expect that I see well with the amount of interest that I see in Montreal and of help that I know I can expect from some people I'm sure it can be pretty easily split up and with my 20 hours and a bit of help is doable related follow-up question and without getting into specific details on any particular organizer's relationship status but to the extent that the primary organizers of each of these bids has a significant other to what extent are those significant others on board with this plan so she's aware of it and she said cool and usually she's you and yeah we're usually pretty pretty much together on these kinds of crazy ideas so good being a single makes us really easy agreed she's not aware of it yet we had twins two years ago so I don't expect any help from her to be honest any closing question marking so I think Stefano for Cape Town has already done a fair job of listing all the negative points really good sales job there what about the other bids Paris and Montreal what do you think of the downsides of each of your your of your bids I agree I'm largely inexperienced in these kind of big events and I can't really account for although I know for instance Jagon Tessia did mention that they could help but not drive the show if you will and I know that most of the other people have approach who are interested also don't have a lot of experience so I'd say that's that's definitely there's definitely a learning curve so I think one of the main cons for Paris is the price which would be probably steep I guess that if the Swiss team managed it we can and another issue that could be in Paris is that it's so easily reachable that it could become too big so this is something we have to take into account when looking for venues because well we need to plan for capacity there was another downside I didn't mention which is thank you so no so large venues with net with decent internet are hard to find so academic institutions have good bandwidth other large venues might have a formic DSL line and think that's really good internet connectivity this it's difficult


I've been talking about other youtubers a lot lately but it's time for me to open up and be honest about some of the struggles that I still deal with. What is up everybody? This is Chris from the Rewired Soul where we talk about the problem but focus on the solution and if you're new to my channel, my channel is all about mental health. I provide information, I talk about my own mental health, I educate, I offer advice and support and all that kind of good stuff so if you're into improving your mental health make sure you subscribe and ring that notification bell. So today's problem that we're gonna talk about is black and white thinking.  I'll explain it a little bit in this one but anyways, I do want to start out the video by saying this. If you want to check out the video I'm gonna put up in the info card about my BPD story. I have never been diagnosed with borderline personality disorder. I just want to put that out there. I don't want to claim that I've ever been diagnosed but after talking with a psychiatrist and things like that, I can relate to a lot of the BPD symptoms. So one of the symptoms that I have definitely dealt with and it's still something that I work on overcoming is black and white thinking. So my life is leaps and bounds away from where it used to be but I wanted to talk about like how this still affects me and also towards the end of the video I'm gonna tell you about some solutions that I use that help me manage my life and manage my emotions, manage my relationships and all that kind of stuff. So black and white thinking, all right, to sum it all up, basically it's putting somebody in one of two categories. They're either all good or all bad and it's really difficult to have relationships because someone they could just be the best person on earth one day but then they do something that you don't like and then they are just the worst person on earth. So like one of the things is I constantly analyze myself. I meditate, meditation helps give me clarity, it helps get out all the noise and I take a look at myself and what I'm feeling and the thoughts that go through my head and everything like that. And like something I kind of thought about was you know when it comes to like setting boundaries black and white thinking it sometimes is very beneficial and what I mean by that is like it has helped me not hang out with bad people, bad friends or stay in bad relationships. So like I look at myself and I realize why I do that and I push people away pretty quick but one of the reasons for that is is because I'm somebody who has stayed in bad friendships for way too long or bad relationships for way too long, you might be able to relate to that. So one of my fears is is letting somebody come in close when they have all of the red flags and warning signs and then I get stuck in a relationship whether it's a friendship or relationship right. So like I notice like I cut out a lot of the BS but I'm going to be real with you.  So there's that old saying that says never meet your heroes right and one of the reasons they say that is because you idolize somebody or you look up to somebody and then you meet them and they're not a great person they're not what you thought they were. Well as a YouTuber trying to grow my channel like I interact with other YouTubers I reach out I talk to them but sometimes I don't. So I can think of two instances of other YouTubers and I notice the complete shift the change right and here's what I mean by that I'm not going to name who these YouTubers are but in one scenario there was a YouTuber that I just love I love it's a comedy channel it's pretty funny and things like that well they sent out a tweet they sent out a tweet talking about mental health and I replied and they replied back and I kind of noticed that they don't really align with my views on mental health and just I don't know advocacy helping people out being compassionate towards others who struggle with mental illness they're they just didn't it didn't sync up with me and like from there like I saw it and I'm like oh wow now I see your true colors and and there's another instance where you know multiple instances where there's YouTubers who I like and watching like if I never became a YouTuber I would look at certain YouTubers and just love them forever but now that I'm like kind of in this thing like I can't tell you how many YouTubers who I absolutely loved where they they never replied to a DM comment an email or any of that thing and like my brain just like tells me that they are just the worst person on earth like it's crazy and like the way it affects me I'm not even joking is it it's difficult for me to even watch their content okay and some of their content is very informative it educates me about different things whether it's mental health stuff or things going on in the community but now that I kind of see them in a different way like I can feel my anger there as I watch their videos some of the channels I watch that I used to laugh and have fun watching like I sit there and I kind of just have this like stink face like you're not a good person you're not a good person but I recognize that happening in my brain and it's it's kind of nuts you know and again like I do have some solutions that I'm going to provide with you but anyways you know one of the most uh you know recent forms of black and white thinking that I can talk about is when it came to me being single and you know going out in the dating world so when I was like dating uh you know and I was talking to a girl or anything like that like I I limited the amount of time like not limited but if they had some red flags right if they had certain viewpoints or certain things that they didn't like about you know what I mean I didn't try to you know make it work like I looked at it and I was like nope bye nope bye nope bye and like there's some balance that comes with that because yeah like you shouldn't try to force a relationship just because someone's attractive or they have a few of the same interests as you like you shouldn't try to force that but maybe in some instances I was pushing women away way too fast from one sign of uh you know trouble or a little red flag but anyways a funny story about me and my girlfriend uh you know in December it'll be like two years that we've been together but a funny story that I talked to her about um and I've told other people about too is when me and her first started talking like everything was great it's that whole honeymoon phase and all that kind of stuff you know she's busy doing her thing I'm busy doing my thing I have my son on the weekends and you know it was before I let her meet my son well I think it was like one weekend um his my son stayed with his mom and I asked her if she wanted to hang out it was like a Saturday I'm like yo let's go out let's go do something right and here's what she says to me she's like no I'm pretty tired I'm just gonna sleep all day and I just got furious and at that time I had a roommate and I went and talked to her like in a room and I was just like can you believe this chick can you believe I'm trying to hang out with her and she said that she would rather sleep that day and I'm just spewing all this stuff every crazy thing that my brain's telling me right like obviously she doesn't care or like me if she to it rather sleep then hang out with me and I'm just losing it right and I was I was about to never talk to her again you see how the black and white thinking could just ruin relationships right but after talking about it with my roommate and stuff she's like Chris you're acting a little nuts maybe she's tired maybe this doesn't you know what I mean I was like fine so I gave her another chance and we're still together to this day it was after that the remanded official started dating and stuff it's funny because she has a similar story where she kind of was testing me on some things but but anyways that's an example of how black and white thinking can affect us but anyways I want to get into the solution right because that's what we do here at the rewired soul talk about the problem but focus on the solution so what I do I do two things I do two things when it comes to my black and white thinking the first one is empathize so I try my best to put myself in the other person's shoes so when we're talking about like other YouTubers who don't get back to me or ignore me or you know whatever it is like I empathize okay and sometimes and I will make a video about this when it comes to anger management I lie to myself I lie to myself I'm like okay okay maybe they have like a thousand DMs they just didn't see it you know and all these other things maybe they just missed this tweet that I tagged them in or they didn't see my comments you know whatever it is right but I also try to empathize because sometimes I'm really bad at replying to all my messages and I'm a fraction of the size of some of the people I'm trying to reach out to and talk to you know just to get to know or collaborate or things like that so that's one way that I try to get out of my black and white thinking is I try to put myself in their shoes and imagine what might be going on in their lives that would cause them not to talk to me but not that negative kind of crazy stuff like oh they hate me or they're better than me like I try to acknowledge if my brain's going to that judgmental place the second thing I do is I try to find a balance okay I try to find that gray area rather than the black and white and what I mean by that like my black and white thinking will will make it so people have like one strike and they're out okay so I do my best to give somebody another chance another chance but it's all about balance because there's that there's that other saying right fool me once shame on you fool me twice shame on me you know but when it comes to that balance what happens is I lower my expectations I lower my expectations where it's like I don't expect you to reply but if you do that's cool you know and that's that's for me personally like this might be an awful person who thinks they're better than me or doesn't care about small creators and is only going to talk to me when I get huge and can benefit them more and all that might be the case but for my sanity for my mental health I have to tone it down and not stay stuck in that thinking all right so I really hope this video helped you whether it's helping you understand black and white thinking a little bit more or if you're somebody who struggles with black and white thinking I hope some of my suggestions help you out all right but if you are somebody who struggles with black and white thinking make sure you leave comments down below like let's let's make the comment section like how do you deal with it how do you cope with it what are your tips and tricks to dealing with black and white thinking all right I can't wait to see what you guys say down in the comments all right but before I end this video see this cool shirt it's actually available in the shop right now the rewired souls shop all right so make sure you go check it out if you want to be twinsies with me get yourself a rewired soul shirt I also got a bunch of other shirt designs in there as well as some coffee monks or if you're a coffee drinker check those out all right that's all I got for you if you like this video please give it a thumbs up and if you're new to this channel make sure you subscribe ring that notification bell because I got all sorts of mental health goodness on here all right and a huge huge huge thank you to everybody supporting the channel over on patreon and if you're looking for that link to the rewired soul shop boom it's right there for you all right thanks so much for watching work on your black and white thinking and I'll see you next time


Welcome to the NASA Lewis Research Center. Lewis, originally an aircraft propulsion lab, was one of the original NASA centers. With the start of the space race in 1958, Lewis became NASA's lead center for space propulsion, power, and communications. Lewis' science and technology has been critical to putting a man on the moon and the development of the space shuttle. Today, Lewis is also a lead center for microgravity sciences and is responsible for the power system of the space station. During your visit, you'll have the opportunity to learn about our aeronautics and space programs, from experimental high-performance jets to space shuttles and the space station. Unfortunately, you won't be able to experience how our pilots and astronauts feel in these dynamic environments. But there may be a way you can experience some of the sensations. The Cedar Point Amusement Park and NASA Lewis have teamed up to show you how your experiences within 200 feet of the Earth's surface relate to activities 200 miles above the Earth. Located 60 miles northwest of Lewis, Cedar Point has many rides in which you can challenge the laws of nature as you speed around corners and fly through the air. At times, seeming to defy gravity. Some of these rides create environments identical to those experienced by high-performance jet pilots and astronauts. The only difference is the length of time you are in these thrilling environments. Let's explore some of the similarities between amusement park rides and space flight. Keeping your orientation while spinning around on rides like the Witch's Wheel can be a difficult task. This was also difficult for the Mercury 7, America's first astronauts. To see if these men had the right stuff, they came to NASA Lewis to train in the Multiple Axis Space Test and Nursia Facility. The what? That's multiple. More than one? Axis. A real or imaginary straight line on which an object rotates. Space. You mean like outer space? Yes. Test. Can you do that again? I think I forgot to turn the data recorder on. Inertia. How do you stop this thing? Facility. Just down the midway behind the merry-go-round. Not that kind. As another example, if you take a ride on the Magnum XL 200, you'll notice that at the bottom of the first hill, you'll feel heavier. Typically, about three or four times heavier. That's because the seat of the roller coaster is pushing you back up so that you can climb the next hill. That's the same feeling the space shuttle astronauts have during a launch. In order to get up enough speed to get into space, the shuttle must accelerate at about four times the force of gravity. The difference is this lasts for over eight minutes when you're an astronaut. Perhaps the most obvious similarity is for those brave enough to go on the demon drop. This ride sends its occupants into a brief freefall. From the rider's point of view, gravity seems to be suspended as they rise up from their seats. This brief experience for demon drop riders is the way of life for astronauts. Shuttle crews have stayed in orbit for two weeks while space station crews will live and work in space for several months at a time. This puts a whole new meaning to the phrase, losing your lunch. Let's look at why what you feel on the demon drop is so similar to what the astronauts experience in space. If an astronaut releases an apple on Earth, it falls. When he releases an apple on the space shuttle, it falls too. It just doesn't look like it's falling. That's because they are all falling together. The apple, the astronaut, and the orbiter. But they aren't falling towards the Earth. They're falling around it. Let's imagine that we put another astronaut on an elevator on Earth. The elevator is going to the top of a very tall building. Suddenly, when he reaches the top, the cable breaks. The elevator car with the astronaut in it begins to fall. What will happen inside the elevator? Well, since he's falling and the elevator is falling at the same rate, he starts to float. His body isn't pushing on the inside of the elevator anymore. He has no weight. He's weightless. If he had an apple with him, it would float too, just like the one in the shuttle. Because the astronaut, the apple, and the elevator would all be falling together. It would be a fun ride until he hit the bottom. And that's why things float around in space. Because they all fall on a curved path around the Earth. Back at NASA Lewis, researchers have been using a facility similar to the demon drop for over 30 years to conduct experiments in the low gravity environment of freefall. The basic design and concept is the same as that of the demon drop. They are almost the same size, too. One difference between the demon drop and the Lewis drop tower is the use of a drag shield, the external cover which eliminates the effects of wind resistance. The experiment actually falls within the falling drag shield to create a pure low gravity environment, about 100,000s of normal Earth gravity. This environment lets scientists at Lewis get high fidelity data on low gravity processes and sneak previews of shuttle experiments. From a writer's point of view, the smooth slope at the bottom of the demon drop is much more comfortable than the sudden stop in the sand pit at the bottom of Lewis's drop tower. We have shown you just a small portion of NASA's space program, which overlaps with your experiences at amusement parks like Cedar Point.  And the next time you visit an amusement park, let your imagination take you to the edge. And dream of future adventures where dreams become reality.


The second demo and please be quiet everyone, some that we might be able to hear what's actually going on. No way to hear what's going on. I'll just have to sort of narrate. Again, the serial console, this is one of the GLLX boards, an AMD CPU. The embedded, AMD embedded CPU with 256 megabytes of RAM. And let's see when I reset, let's go with the reset. There we go, core boot running. And there it's already starting the Linux kernel. And that's the final prompt of the Linux system, which is full up at that time. So this shows that if you disable all the debugging stuff and you have a really trimmed down kernel, you can get a very nice startup time. And talking about boot time measurements, I think it's important to be careful with the numbers here or just be careful about what the numbers actually are saying because different people will use different metrics for boot time measurements. And of course everyone wants their numbers to be the best, so they're going to use what is best for them. What is this time measurement actually saying? Is it saying from power supply connected to Windows running with a full desktop, whatever login user or Linux or whatever you have? Or is it from after the mainboard power up sequence, which might make a difference? It sounds silly, but it might actually make a big difference. There are about 30 voltages in a PC system, and these all need to start in a special sequence. And that takes time, of course. Or is it from the first instruction fetch, which might be a lot later than after all the voltages are up? Who knows what's going on in the system? So the guy who's been developing CBIOS, his name is Kevin O'Connor, he did some optimizations for his particular board. He has an API board of the API CN with a C7 CPU and the CN700 chipset. He put Corbuth and CBIOS in Flash, CBIOS is the payload, and he had a grub on Asata SSD. And this is the results he got. It's been 350 milliseconds just waiting for what seems to be power sequencing. From the time he presses the button to some software actually running is almost half a second. Then he measured that it takes about 50 milliseconds to wait for a communications bus on the mainboard to stabilize. Another 20 milliseconds to configure the memory controller. 10 milliseconds running Corbuths. 200 milliseconds waiting for the VGA BIOS to initialize the graphics. And another 10 milliseconds in grub. And the grand total is that it takes 750 milliseconds from the time he presses the power button to when Linux is already starting. Security slide, I don't know. I think I'm going to skip this. I'll maybe just mention it quickly. Corbuth attack, there was an attack made public I guess the year before last year, so 2008, where even though you power down your computer, the RAM might not be completely empty. And if someone can steal your laptop or desktop for that matter, they can take out the RAM, the DIMM, and extract all the contents of the data. And it's really easy to find crypto keys and so on. So Corbuth can be used both in the attack and for defense here, because Corbuth has RAM initialization. It can start the memory controller and then have a special dump routine inside Corbuth to read out all the contents without changing anything in RAM. But you could also use it so that when you're shutting down, there's a part of Corbuth which runs and makes sure it's to clear all the memory before it powers off. Code injection into the operating system. There was an exploit published where part of the BIOS was changed to always rewrite permissions on a particular file in the root file system. So whenever you rebooted, this file became world executable with plus s and everyone had a root shell on the system. That's not something you want in your firmware. So it might be worthwhile to look carefully at the firmware you're running. There's a lot of good stuff about Corbuth. You can get really fast startup times. It's open source, C code, TPL. You can audit, you can read it. You don't have to study assembly sources a day on end to go through the code. We have one tree for all the boards. So there's a fair chance of reusability and extensibility there. There's still some challenges. We need more testing. That would be great. There's a testing infrastructure, but it's kind of difficult to hook up boards to be tested to this infrastructure. So even though we have really nice way in this infrastructure to test each commit on actual hardware because the fact that it's too difficult to connect boards to this infrastructure means that there's little testing actually done. Everything is built on each commit, and that's a good start, of course, but it would be very nice also to see boots testing because stuff can rake even though it compiles, it might not run. And it would be very nice to have all the boards really 100% supported. Most of the boards are implemented by one single developer or a small group of developers and they were really happy when all the stuff they need is working, but that might not be enough for everyone else. So little things on the main board might still need some code to work. Most boards are not really far away. There's only very small, very small stuff missing. ACPI, we need to get better at ACPI, but we already have a lot of good progress there, and thanks to Rodolf who's going to talk about it a bit later, and actually have fun also. And code is great fun, so come into the project, please. Thanks to Luke for organizing this dev room and some links, code.org, and we have a mailing list, and we're on IRC and the Wiki, you can just add anything after the URL and you should get an informative page. Questions? Question, yeah? What do you use for flashing your flash chip if it's completely screwed? What do you use for flashing your flash chip if it is completely screwed? Commercial flash chip. Sorry? Do you use some commercial flash chip program? You can, yeah, sure, that's one way. You can have a flash programmer or a flash writer standalone. That helps, but you don't always have access to that. One thing you can do is to use another main board instead, and hot swap the flash chips. Flash chip programmer. Good to have, but... You can also use another main board. Yeah, hot swap, that's fine. I think Carl Daniel will talk more about that also in the flashroom talk. Another question, yeah? What are the implications of not fully supporting ACPI? What are the implications of not fully supporting ACPI? Yeah, sure. Rudolph wants to answer. Perhaps I'm the right guy, so that's your question. But it's supported to the moment that everything, the line of needs is there. Everything with those needs is there. So both is that good. All is there. Everything is properly everything. So what we did is somewhat minimalistic ACPI implementation. This was the standard one. It's there. Nothing more. So we don't have much of the byte code stuff there. We have just only very basic routine what is required by a standard operating system. So in this case, everything which the real life operating system needs is there. But there is no consistent like the terminal zone and late and so on because it can be done either on some platform level by some other drivers and so on. So we don't need to be full-blown, madness, ACPI. And there are, so I guess I could add there that one implication would be that there needs to be a driver to handle some tasks that might otherwise be handled using ACPI on another operating system or, sorry, another firmware. But again, if Linux has that driver and you want to run Linux, then it's fine. No more, yeah? Okay. Another question? So your program, your first instruction that will be ever done is immediately output. Yes. Yeah. I presume that you have to configure output to say which serial port you are using. Yeah. Things like that. Yes. Yes. So you can configure the build and there are also some variables that are set or some settings that you can change runtime. Well, not runtime but are read from NB RAM. So if you boot up your operating system, you use NB RAM tool to change the settings and the next time you reboot, they will take effect. Yeah. For example, there's a new motherboard with, I don't know, newer version or a higher clocked RAM version. How can you extract the exact parameters? So a new main board with higher clocked RAM or a different type of RAM would be small to medium effort. Rudolph is also going to talk about porting coreboots to a new board and it would really be like adding a new main board if it's say an upgrade from DDR2 to DDR3. Not all of the work needs to be done as if it was a completely new main board but still some things have to be changed. And like for the RAM, in order to get the RAM stabilized to be read, is it some sort of file? So I'm going to talk about that in the next presentation of RAM initialization if you can spot the points. If you're, are you staying for that as well? Then maybe, okay. Well, if you have, then maybe we can come back to the question. All right. Yes. There's one laptop supported at the moment, two if you count the OLPC. So the laptop that is supported is, I mentioned that in the presentation. It's, the development was funded by the German BSI. And it's a rugged laptop but the components in it are fairly standard. So that code and that effort can be reused for supporting other laptops as well. And I also have one board that I'm, I'm sort of working on a laptop. They call it a netbook but I, it's a 12 inch. It has a 12 inch screen so I don't know if I think it's a network. But this is, this is the board anyway. This is all that is really in the laptop except for the screen and the hard drive. It's a VIA based platform of the Samsung NC20. So hopefully that will, will work at some point as well. Does that answer your question? Please do, but it, it might be a lot of work. And especially it depends a lot on the, which components are in your laptop. Rudolph will, will talk about that more also in his presentation. It can be really difficult to find out all the information that is, is necessary. All right. So no more questions. Thank you very much for coming. Sorry, I, I went over time a bit, but yeah, I hope you thought it was, was interesting. Do we need a break between presentations before I start the next one, or should I just go straight away? All right. I'll continue then. Okay. Yeah. So core boot and PC technical details is, is the title of this presentation. This is what I, I hope to, to be able to talk about here. Who am I again? I guess that's the same as, as before. A look at the 30 years of PCs. The PC has been around for a long time and it's changed quite a lot. I were to have a look at the Isobus, the, the first. Well, actually the second extension bus in the PC, but it worked the same way as the first one. So we're going to look at that in order to learn some things that are very important and still apply it to a lot of other buses and devices in a modern PC. Some thing about hardware registers, various, on various buses, ISA, PCI and MSR. I'm going to talk a bit about the RAM. I'm going to talk a bit about interrupts. RAM initialization, cache as RAM is a trick that is used by many firm, firmwares today. GCC and ROM CC, ROM CC is, is something that came out of its core boot as well. The different x86 execution modes, real mode, protected mode, dimension mode. Maybe embedded controllers if there's time and the thanks. This is the same as the last slide I've been doing core boot for a while. I started in Hamburg and I do stuff. The PC in the 1980s, it might have looked like this. There was a CPU and there was a boot ROM and there was some RAM connected. And it was a cassette player and the keyboard and an expansion port. And all of this was really connected to the same sort of same communications bus. So we went from cassette to DDR3. And this is what the PC might look like today. And there's a lot of stuff in here. We can have four or however many, eight, sixteen CPUs maybe. Every CPU might have its own memory controller. And the RAM is connected to the memory controller and that's one bus. And the different CPUs might be connected together in one special bus. And then there's some connection to the North Bridge and some IO, IO stuff. There's a whole graphics block which is either in the North Bridge or might be on a PCI Express bus somewhere. There's another bus down here to something south bridge which has a slower, the old PCI bus. There's some USB and IDE. PS2 maybe there or might be over here in the Super IO. LPC is a replacement bus for the old ISA bus. And it's, I would say that it's really on every main board these days. There's an LPC bus somewhere. It can connect to a Super IO. It can also connect to a boot flash or there could be an SPI bus which connects from the south bridge to the boot flash. Or there could be an SPI in the Super IO. So it goes from the LPC over to the Super IO to SPI and then to the boot flash. And the Super IO has lots of other stuff also. Floppy and it could be PS2 as I mentioned. Serial, parallel, GPIOs, watchdog, thermal measuring lots of temperatures on the board. And there might also be microcontroller. So another CPU inside the IO chip down here. That's the embedded controller that I hope to rant a bit about also. Oh yeah, and there's the SM bus. I mentioned in the previous presentation that Kevin had some issues waiting for the SM bus to stabilize. We'll come back to that when we're talking about RAM initialization because it's connected to the RAM. So this is a look at how it might be and it can of course be even more complex. You can have, this might not be a single core CPU, but it might be a four core CPU. So you have four CPU cores behind that one connected to one memory controller, but connected also to all the other CPUs and it can be pretty complicated. So HG is hyper transport, that's AMD's bus for interconnect, or AMD's interconnect between CPUs and IO nodes. Intel developed their own. It's both quick path interface I think is the abbreviation, the QPI. That's the same thing, connection between many CPUs in a system which has many CPUs. So what about this ISO bus? The way it looked back when? There's IO and memory access in the x86 CPU. It's an 8 or 16 bit data communication path. And depending on if you're doing IO access or you're doing memory access, the address space has a different size. So for IO, it's always 16 bit, so you have 64K addresses. These addresses, they're usually called ports. I'm not sure why, but that's if you see ports somewhere, it's about an IO. The CPU instructions used for IO is INW, OUTB, OUTW, and in newer CPUs you have INL and OUTL instructions also. These also are available as function calls in Linux. You can direct IO from Linux user space if you do some preparations first. I think Carl Daniel might talk about that also. Well that knows, in the lightning talk I guess. For the porting in the ELT OS room. Well anyway, it's possible to do this direct IO communication, these IO accesses from Linux. Even if there's no ISO bus in the system anymore, it's still possible to do these operations. And where are they going to end up? Well they will end up on LPC usually, and there might be something listening there. Typically the super IO is what you want to talk to in that case. If you're doing memory accesses, then you have 20 bits of address. And we'll have a look at how those 20 bit addresses are created in a bit. In the execution mode, stuff and the memory accesses, they all use move instructions. So it's just memory read and memory writes. If you're programming in C, you're reading from a variable that's a memory read. In the really early PCs, that memory was external in the new PC. The memory is actually connected to the CPU itself. And of course has a lot longer address space than 20 bits. There's a whole bunch of registers in all the hardware components that we looked at and in every add-on component that you can connect to a PC. And these register accesses, they will be either IO or the registers, they will either be IO mapped or they will be memory mapped. On ISA hardware, it was kind of common on the really old, for example, really old networking cards.  Yeah? You had to choose the base IO port and you had to choose the interrupt to make sure there were no conflicts and it never worked. They invented this plug and play stuff which was supposed to be clever, but I don't know. In theory it was good, but I think the implementations weren't really that awesome. PCI is very different. There are no jumpers, there's no conflicts. The firmware handles all the configuration. So Corebuild does all the long printouts that we saw from the first demo is checking all the PCI devices connected to the system and making sure that they can coexist and be accessible at the same time. PCI devices, they have what's called configuration space, 256 bytes of registers. They are always reachable. I think the standard says that it's not necessarily always, but in practice it really is always. They are reachable on IO to ports CF8, hexadecimal, and CFC. This is an index data combination, so you first write the address of the register you want to access to CF8 and then you do the actual value access on CFC. Say you want to access... No, I'm not going to give you an example, because you have to encode the PCI device address and something that's called a function number and the register number into this access to CF8. I can't do that in my head, so we'll have to skip that example. Anyway, first specify what you want to access and then do the actual access on a different IO port. This is typically always available. If the system has PCI, then this is going to be there. This is called the type 1 configuration interface and maybe you've seen that in the Linux kernel sources. You can choose what type of configuration access method that's going to be used. This is also what CoreBoot uses. CoreBoot used to support another access method, but it was never used, so we threw that out. Configuration space can also be reached via memory mapped registers and that's called MM config. Not every system supports it, but if they do, it's more convenient because you just access what could be a memory address. It looks just like any other address in memory, but there's no memory there. Instead, you're reading and writing. Well, there is memory, but the memory is small registers on some PCI device and it's not the DIM, the main RAM in the system. That's handy and it's also faster. These IO accesses tend to be pretty slow because they are so old and legacy compatibility stuff on the bus. The 16 first bytes out of these 256 are standardized by the PCI standard. Every single PCI device is going to have the first 16 bytes exactly the same. Well, not identical contents, but identical structure. The first four bytes show the vendor and the device ID, for example. There's also information about which interrupts is going to be used for this device and a couple of other things. Interrupt polarity detected errors on the PCI bus by this device. If this device is a bus master and a whole bunch of other settings as well. And there are base address registers or bars, as they're called. So maybe these 256-16 bytes, these 240 bytes, maybe that's not enough for doing everything that this PCI device can do. Maybe you need a lot more. If it's a graphics card, for example, you want access to the graphics memory. 240 bytes isn't really a lot of graphics memory today. You need some way to create a window into the graphics memory that is on the graphics card. So then you will configure a bar or when the firmware will configure a bar, a base address register. Saying to the PCI device that when the PCI bus sees an access to this particular address, then that is meant for you. So every PCI device looks at the traffic on the bus and only the one that has been configured to access to this particular address is going to accept them and decode them and process them. So in case the firmware does a half-assed job and sets up base address registers which conflict, then you're going to have more than one device react to stuff going on on the PCI bus and nothing is going to be working. So in the example of a graphics card, the base address register would set up memory mapping because you want the graphics memory to be accessible as memory. But base address registers can also be used for IO mapping. In that case, you have some number of IO ports that you want to end up on this particular PCI device and then you view the firmware, set a base address register in the same way which tells the PCI device to decode accesses, IO accesses to this particular port. This is really common for PCI devices to have one or both memory and an IO bar. It could even be several. I think in the 16 standard bytes, I think there's room for four base address registers. Sorry, it's in the full 256. It's room for four or maybe even more base address registers. So you can have one PCI device that has several different memory regions or IO regions that it's decoding. There are also the MSRs. Almost can't see. Model specific registers. That's low-level registers in the CPU itself, in the North Bridge, in the IO controller. Stuff like that. I'm going to come back to some of those. NVRAM, I mentioned that. It's also called CMOS. I probably don't use CMOS technology anymore, but the name has stuck. In its simplest form, it's 128 bytes of battery-backed RAM, and it's stored in the real-time clock chip. The real-time clock chip, in turn, is usually part of another chip in a modern PC. But in the original PC, that was one Motorola chip on its own. Now it's usually in the Supri-O or maybe in the chipset. So these 100-odd bytes, they survive power-down. You can have the system disconnected forever, or not forever, but for a long time, and the contents is still going to be the same. Also, the clock keeps ticking. Of course, when the system is shut down, that happens there. The standard way to access these registers is, again, one of these index value IO sequences. You write the address you want to access to port 70, and then you read or write port 71 hexadecimal to read or write that value. And this is where all the BIOS settings are stored, typically, and this is also what MVRAM tool messes with. So you give it the layout file of which bits are which setting, and it will do all the translation and make sure you don't overwrite any wrong bits. It accesses these ports 70 and 71, and it works out well. There are also extended registers, another 128 bytes, and there can also be another 256 bytes in other places, but that works just the same way. Ports 72 and 73 are really common. If you want to have a look at the driver for this in Linux, it's driver's car, MVRAM. Somewhere in ARC x86, there are a couple of macros which translate to the outB and inB, which will do the actual port accesses. Interrupts. How many recognize this picture? All right, excellent. How about 8, 9, 10 or so? So this is the legacy pick programmable interrupt controller. The way interrupts works in the beginning, single CPU systems. I guess all the way back to 8088, the original PC. There were 15 usable interrupt signals, interrupt inputs to these two interrupt controllers that are connected together. And the chain of events is, as described here, a device. Well, typically, each device would, one device would connect to each of these inputs, 0 through 15. The device wants attention from the CPU because something has happened. Maybe there's a byte coming in from the modem or from the keyboard, or maybe it's possible now to send a byte out to the modem or to the keyboard or wherever. A network card for that matter. So the device signals an interrupt, pulls one of these strings. The pick notices this, the interrupt controller, and it will, if it's one of these high ones, it's going to trickle through to the master. And the only interrupt signal going to the CPU is the actual int, that one. Yeah, so the one interrupt signal from the master pick is all that is going to the CPU. The CPU only accepts one single interrupt signal. But what about all these devices? How does that work out? Well, so when there's an interrupt, the CPU will acknowledge that it received this interrupt signal by pulling on this int A signal to the interrupt controller. And then it's going to wiggle the interrupt acknowledge signal a little bit more. Which causes then the program interrupt controller to write an address for the interrupt handler or the interrupt vector to the data bus. So the CPU says, okay, I got the interrupt. The CPU says, okay, what should I do now? The interrupt controller has been programmed, hence programmable interrupt controller, has been programmed to know that interrupt this and that, should be handled by code running at this particular address in memory. So the CPU says, okay, what should I do now? The programmable interrupt controller replies, you should go to this address in memory where the interrupt handler lives. So it writes that out to the data bus. The CPU reads the address and jumps to the address. And there's an interrupt handler running in the CPUs. So this was just one CPU. Then there's only one interrupt signal, even though we can have many interrupt sources. Hopefully this explains all the interrupt problems that were with the old ESA cards a little bit. Okay, what about when there are multiple CPUs? Then it gets fun again. There's always one bootstrap processor. That's the first processor that comes up running when the system is starting. That is all arranged in hardware, which processor will be running when the power comes on. Then any other CPUs are going to be application processors. So there's always only one running in the beginning and it has to, well, actually that's not true. That depends on if it's AMD or Intel. I think one of them, everyone comes up running and they have to agree to stop if they're not the BSP. But there has already been a decision made in hardware so that there's only one which is designated the BSP. It should check if it's the BSP and everyone should stop and the BSP will continue. Anyway, inside of these CPUs there's a local APIC. APIC is, I guess, advanced, programmable interrupt controller. The local APICs, there's one in each CPU, as I said, they communicate with each other. This, for example, have a transport or it could be some front side bus or such, system bus, whatever. They also connect with this IO APIC, which is the one dealing with... Well, this looks familiar. This is the same legacy APIC arrangement, which is still there even if you have an APIC. It might not be used. So the APIC situation, it needs to be configured before it's being used and if it's not configured then the system is still going to be using this legacy APIC setup. But if you configure the full-on APIC situation then you get the local APICs talking to each other and talking to the IO APIC and you can do really flexible mapping of all the interrupts coming into the IO APIC and all of the interrupts that can be generated by the local APICs also because by the time we have multiple CPUs the CPUs also have a lot of more functionality included than maybe the older ones did. So for example we have dimension already, machine check exceptions, MCEs. If the CPU detects that it has broken it can trigger an APIC interrupt and that can call into an interrupt vector somewhere. So the interrupt vectoring part is still the same. The local APIC will make sure that the CPU runs those often run some configured interrupt handler. The difference is that the difference from the legacy APIC situation is that well first of all the IO stuff which is connected to all the peripherals and the PCI bus down here that's separated out and the local APICs they also they have support for I think 256 interrupt sources instead of the 15 so there's plenty of interrupt signals available. They can come from interrupts can come from as I mentioned from within the APIC itself from within the CPU itself the APIC has also a timer which can generate interrupts and yes, of course the APIC enabled there it has to be enabled as I mentioned. Here's also the system management interrupt signal which goes into the CPU and not the APIC in this drawing. It's not more complicated but basically still the same principle you have programmed the APIC the interrupt controller with all the interrupt vectors and when the interrupt happens it will send the CPU to run the code that it should but there are a lot of possibilities with many different interrupts here. I think Rudolph will also come back to this. For RAM initialization how are we doing on time? For RAM initialization, what do we have to do there? Well, our goal in RAM initialization is to configure this thick red connection over here. It could be DDR2, it could be DDR3 in any case it's a lot of work we need to know exactly what kind of RAM is connected here on this side and the same for all of the CPUs or memory controllers which have RAM connected. Since this communication link isn't working what do we do? We then have to use this SM bus so from the CPU when we're doing a memory configuration we go through the North Bridge, South Bridge out onto the SM bus and follow this green line and talk to this little green guy which is an E-square prom on each DIMM. So a small serial E-prom it stores a couple of parameters. What size is this memory? How fast is it? Is it registered? Is it not registered? All the parameters, the timing supported by this memory module all the stuff that is needed to configure the memory controller correctly. And I'm not going to go into great detail with a memory controller configuration because it's so complicated. But I'm going to say that DDR2 at least requires some brute force searching for finding the correct tuning of the timing between the memory controller and the actual DIMM. So the firmware has to search through all possible settings or many possible settings for the tuning parameters in order to find the one that is working really well. And worst case, that parameter could actually change with the temperature in the room depending on how the board is laid out the traces on the main board. So it's a lot of work. Cache's RAM is used in core boot. This RAM initialization stuff. So when the RAM initialization is running, there is no RAM available. That means it's not possible to run C code because C compilers, they assume that there is RAM available. And RAM is used for the stack, which is used to call functions. So we can't use C code when we're doing this RAM initialization. And back when memory technology was simpler, or the memory buses were simpler, it was kind of okay to do I guess the memory initialization, the RAM initialization in assembly. We could do it in assembly language. And it wasn't all that bad. It wasn't too long. It was okay. But with this, for example, with this brute force search stuff that is in DDR2, it's really not something that we want to do in assembly anymore. So one way around it is to use cache as RAM. Which means that part of the CPU cache is used as memory. And in fact, it is memory. It's really fast memory. But normally it isn't addressable. But there's a way. It's documented by Intel even. It doesn't exactly... They don't exactly describe why you would do it. I guess... Well, they say how you do it, but not exactly that the result is cache as RAM. That you can run stuff without having RAM. You have to read between the lines a bit. But the information is there. You set up caching, and then you make sure that you load all the code that you want to run into the cache. And then you make sure that you don't run anything else. And that you don't access any code outside that. And if you do that, it's possible to have c code running without any RAM active. So that's used by Coreboots for many mainboards. But not for all yet. Our ambition is to have this for every mainboard. We have the cache as RAM support for a lot of different CPUs and platforms for AMD64 and for GeoLX and I think also for the VSC7. But all the boards aren't really using it yet. It can be tricky to do this in a general manner. We want cache as RAM support for everything, of course. But different platforms, different systems, they have restrictions on how big areas you can use for cache as RAM and where they need to live in which addresses you can use for this. So it's not really easy to do this cache as RAM setup always. Another option. So that's GCC. If you have cache as RAM you can use GCC compiled code. GCC assumes that there's memory. But before we started using cache as RAM we had another thing, another solution. ROM CC was created by one of the core boot developers. It's a C compiler custom made, one big source file that's really long. It generates machine code which doesn't need any RAM. Of course the X86 is sort of limited when it comes to the number of registers it has. So the C code cannot be infinitely complex because every time you call a function the C compiler has to reserve one register. So eventually you run out of registers and then the compiler will complain and is not going to be able to compile the source code you have. But if you have simple source code and if you write it in a certain way in lines for example can help then ROM CC does a fairly good job. There are a few bugs in there which have been a bit difficult to track down but I think the ROM CC code is pretty good by now. Question? So the question is how does ROM CC go at compile time when it runs out of storage? Yes. Well it has a model of the CPU that it's going to run on and at compile time it fills up that model it fills up the registers and eventually if it runs out of registers and it's impossible for the compiler to store the previous location then it's going to fail. Then you can do that function call at level 8 or 9. The compiler knows about the CPU but he probably doesn't know about the self-modifying dynamic code on the front end. The compiler surely knows about the CPU on the depth level he can cope with but he cannot know about somebody creating artificial calls and then... Artificial calls? If you get dynamic calls do you generate these types of... No dynamic calls? I think function pointers are much more... Yeah, for some... It could be supported as long as there's a register free but then you have to handle it on your order. Well it would be it would require one extra register I guess for saving the return or saving the function pointer somewhere. I think it's offline. Yeah, yeah. Sure explanation for this basically every function called is inlined around CC so if you have there is a function which calls itself around CC will try to inline and eventually detect that you have an infinite loop or something like that so recursion or something like that function pointers forget it so if you're fully inlined assembly code with no calls at all it can't be compiled by around CC that's the dream. So I hope that basically working out to be unrolled. Yeah, right it unrolls the source code completely, right? I think it should be possible to implement function pointers though but it might not be in the kernel code. Okay, all right. Still ROM CC is even though we're moving away from ROM CC code it's I think it's still useful for example serialize I believe is the ROM shell for serialize is compiled with ROM CC and it's really an amazing effort that went into it. Execution modes in the x86 there's a good old real mode the classic execution mode that every modern CPU still starts up in. You have a bunch of 16-bit registers the ones up there I hope I don't forget one. The first four are segment registers and the rest are they have sort of intended purposes but you can mix and match almost freely not quite but you can mix and match a bit and every memory address as I said in real mode is 20 bits so two of these 16-bit registers need to be combined and I've always seen that being called segmented addressing and it's written in the form segment register colon offset register they're both 16 bits and the address ends up being the segment register shifted left by four or multiplied by 16 and then add on the offset register. So for an example if ds equals f 00 0 hexadecimal and si equals 6 00 0 hexadecimal then the ds si segmented address would be a physical address of f 6 00 so that way you can reach a full megabyte of address space and this was in 8086 8088, 186 and 286 and then with the 386 there was the protected mode there was one protected mode in the 286 as well but it was so different that I'm not going to bother I don't remember even all the details but the protected mode as we know it and usually call it is the one that came in 386 it has a concept of privilege levels where you can specify that some parts of code is allowed to do some things and not some other things and this is also what every modern operating system relies on in order to do security properly otherwise you wouldn't be able to do anything even as a user in Linux for example but only the root user is really allowed or the kernel is really allowed to do anything in the system when one of these privilege instructions or when you're trying to do if you're trying to do something that you're not allowed to do then the 386 or a protected mode CPU is going to throw an exception and this can be handled by an interrupt handler and then the APIC stuff comes into play and you end up running some other piece of software which can sort of detect what happened and then it goes all the way back and tells the user that oops you did something that you're not supposed to do instead of crashing or whatever also included in the protected mode which is really engaging this is a reference table or a lookup table for addresses so you're using an address but it's not like up here if you say you want this address it might actually be a completely different address so there's there's a translation layer in between the address you're using the virtual address and the address that is actually seen the protected mode not actually protected mode this is more than 386 the 386 added 32 bit registers so there are versions of all the ones from AX out to SP that are 32 bits the lower 16 bit are the same and some of those can be divided into 8 bit registers and then the segment registers they change into what is called selectors it's the same register name it just has a different function in protected mode the selector will look up a data structure which has information about paging and privileged instructions and also base and limit so this is all part of the translation depending on what you put in cs if you say put for example 0 then you're going to get the first entry in this lookup table of selectors or descriptors and that means if you address if you access address 0 it's actually going to be somewhere completely different but if you then change cs to be 8 instead and you move one step forward in this table the global descriptor table as they're called and then if you're accessing 0 it gets a completely different meaning the limit specifies how big memory block you can access starting from the base address so system management mode I mentioned it's triggered by system management interrupt when the processor enters system management mode it's always running in real mode the switch to protect the mode if it wants to interrupts are always disabled and the debug traps are always disabled so when you're running in system management mode you're really you're really isolated the machine is all yours system management mode can be entered by as I mentioned IO traps or even MMIO traps so the memory maps register accesses machine check exceptions and APIC anything in the APIC can also generate or result in system management mode execution embedded controllers I'm out of time so unfortunately no rant about embedded controllers it's the 851 in the Super IO it can do a whole lot of stuff which sort of messes up the system because it's transparent and it might also be very difficult to detect but yeah, no thanks to Luke and questions if there's time how does Ron CC store local variables and variables pass to fantasy? in registers so you can have only a few local variables in the Super IO 3 851 when does it get it's go from good question so it depends on sometimes the 851 there it can be a standalone chip and if it's a standalone chip it can have built in firmware but it could also be sharing with the main sharing the boot flash with the main firmware in the system so say the first the first 50 56 kilobytes is the firmware for the microcontroller the embedded controller fairly common or it can have it's own flash chip it can definitely have it's own flash chip as well question system management mode yes yes yes definitely yes and someone also earlier asked the question where the system management code that is run in coreboot where does it come from it is also in coreboot we have two separate implementations of system management code handlers one is from AMD that's the one for the Geo.LX but they open sourced that and then there's the code for Intel and I think well maybe Rudolf you also wrote some small system management code for the AMD64 but it's all included in the coreboot source and there's full control and it does really very little because it wants to get out of the way all right okay thank you very much