Hi everyone, Sean with jaspyscasebreaks.com here doing 2021 Bowman baseball 12 box hobby case break pick your team number three where all card ship even paper. There you go. Just released yesterday. Here is our full list of customers and respective teams from Adam Swift and the Diamondbacks down to Mark Bassett and the Nationals. Daniel Ausley with the Rangers last spot mojo. Good luck to everybody. Yeah, luckily it's not like all coaches. You know what I mean? It's like Hall of Fame, like classic coach names. No, no, but somebody got in contact with me. I was like, yeah, interested. And I have a line on the red also. There you go. There are our boxes. Oh, let's turn this over. Change the exposure on this. So the first part of this video is going to be me opening up these boxes. Not all that exciting, but you can fast forward a little bit. You can fast forward. If you are watching this on replay, you can forward. There's a there will be a hyperlink for you to be able to click forward to a recap portion of the video where it'll show pretty much the autos and any lower numbered out of less than 100, 100 or less on the hits. If you want to see everything, obviously you're in for the long haul. That is true. The packs on these don't rip as clean as they did last on the Bowman draft, which is kind of a bummer, especially when you're ripping a lot of packs. Thanks, dude. Okay, cool. Yeah, it's a rough. I mean, the obviously the jumbo is nicer. It doesn't it's not as good as the Bowman draft that we did earlier this year, but it's less packs, you know what I mean? This is double the packs, and it just doesn't rip. I get it sticks too much. Time about boondocks. I'm rewatching the draft. I'm wondering who the raiders are going to draft this time. It looks funny. The draft was like a was like a mock draft where like everything was going normal. And then you have like one guy who's like mock drafting. Everybody's taking it seriously. And then the raiders pick. And it's just like, right?  What are you doing? Like, we're all taking this seriously. We're all trying to see what's going to happen. Well, like, that was that was pretty crazy. It's like a fantasy football draft. But all of a sudden somebody take like like a quarterback gets taken in the third round. You're like, what? What just happened? Whoa, Joe, you can't wish that on that kid. Joe just can't wait until your pick trends is ACL and rookie cap. You don't hate me. I wish nothing but the best to your to your your offensive lineman. Yeah, trust me.  I was angry last year. Hey, that turned out okay for us. Mojo, your Texans didn't have any, right? You didn't have any. You guys didn't have a first round pick. Did your was your first round pick the dolphins? I think it was right from forgetting what's his name? Okay, that's what I thought. I was I don't know if I was more surprised about that pick or a running back like running backs going in the first round. But I mean, it makes sense. It's crazy. But nobody's saying anything about the the Steelers taking Harris or the Bengals taking ETN. You know what I mean? Yeah, that's the weird part is I remember that pick to Joe. Colton Miller was never really that good either was he? The Jags took ETN. Sorry, not Bengals. But both of those seemed early. They are they getting hammered? Okay. Yeah, I mean, not not a single projection had running backs in the first round. I was like, what? It's not going to be cheap. That's for sure. Two offensive players, position players in the first round. Oh, they might have they might have two fillers for the Jags. Yeah. Jason, how much do you think Jags will be in pick your team breaks next year? For like any football with the with Lawrence and ETN? What were they in NT like 2400? Were they 4,000? Okay. That's nuts. Yeah. Yeah. But I mean, even just like even Joe even burrow with not having a year because of injury, Bengals are still expensive. And then imagine them having like a good running back to, you know what I mean? Like, I still think I mean, the Patriots price is probably going to be pretty high too. Oh, there's no way they could do that.  Yeah. Yeah. Brady's like, no, don't put me. What are you doing? It might be cheap. Second year Herbert Otto's. Yes, please. Yeah. It's weird is like I don't like I don't like the Patriots drafting a quarterback, nor do I like Mac Jones, like as a quarterback per se. But I for some reason think both of them together is crazy. Yeah, tons of value in second year Herbert. And I mean, it's not like we're going to do anything crazy with the draft in, I think offensive players this year. It's mostly going to be like offensive linemen. So it's not like there's going to be a lot of, a lot of interest for the Chargers in regards to our offensive line stuff. Jalen Mond is a mojo is that the dude from Texas A&M? That's the quarterback, right? Or Kellan Mond? That's the Texas A&M quarterback, right? I think Lawrence has the highest floor. I think Lawrence has the highest floor and highest ceiling. I think he was as close to a, to a like, you know, sure thing as possible when it comes to quarterback. But I'd say Mac probably has like the second lowest or highest ceiling or not highest has the second highest floor. Yeah, yeah. No, I agree with that. He sat behind to a he sat behind Hertz. He's had experience. He's been in that office, like in that, that quarterback room.  Obviously he seems like he's, you know, it's weird though, is like, I didn't hear anybody talk about the fact that he got a DUI. His was a freshman or sophomore year, where he crashed his car, which I thought was crazy. Like, how do you not talk about that? You know what I mean? Really talk about Johnny Manziel and like discipline issues and these players and discipline issues and stuff like that. But you don't never really heard me talk about Mac Jones and DUI. I think first week, there's no way they let Jimmy Garoppolo run that offense next year. They're going to trade Jimmy, right? I think Trey Lance is first week starter. I think he, I think Trey Lance outbattles him in preseason. In training camp. I don't think he has confidence in himself anymore. I'm saying week one. I mean, they picked a guy with third overall.  It'll be interesting too, Joe. Well, we'll have to see once the schedule comes out what it looks like. Because let's say that the 49ers, their very first game of the year is against like an inter-divisional like, like the Rams or somebody like that. Maybe they don't put Trey Lance have his first, his first game against Aaron Donald. That would not be fun. But I think it depends on when the schedule comes out, which is May 21st, what it looks like. And remember with the extra game this year as well. It also gives team the option of if you drop a game, you have one more to make it up to make up that, that, that gap, you know. Yeah, that'd be terrifying. Your first professional game is just looking on the edge and see Aaron Donald just staring at you. Yeah, 17 games this year. Chargers got an extra home game, so nine home games for me and my season ticket. So no more 500 years. No more 500 seasons. Yeah. So Chargers got nine home games, eight, eight, eight road games. And next year, it'll be eight home, nine road. But they already have, they already have the opponents and stuff like that. You know what I mean? Wait, so next year they're also adding an extra game. So yeah, 17, 17 games next year. At least next year. So it's one less, I think it's only two pre-season games. Yeah, that's something like they already agreed for up until next year. Yeah. And after that they decided, yeah. No, no, no, like that's for sure. Like this is, this is for sure 17 games from now on. So the reason why was, remember the collective barning agreement they agreed to that like it was taking forever? Yeah. They told the players union either you agree to a 17th game a year or we're just gonna drop the cap to lower. So it's gonna cost everybody money. Yeah. So they're like, so we'll either we'll keep the cap higher or we're gonna cut it because of lost revenues this year. And everybody's gonna struggle and you guys still get 16 games. So they're like, well shit, just throw in the 17th game. Yeah. Yeah, for sure. But no, it's awesome because I mean it's two less pre-season games for me, which I mean, I kind of like that just one buy and three wall cards. Yeah. I prefer that. I think that's cool. And I just think it's a major playoff. Each NFL's worst first round for the last decade. First round pick for the chargers worst over the last decade. Just the last decade. So back to 2010. That's hard because the chargers actually drafted really well in the first round. Forest Lamp was a second round pick, I think. Yeah, because Mike Williams was a first round pick. Forest Lamp was second round picked in 2017. Later guys. See you. Okay. Yeah, for sure. Cool. Have a fun trip guys. Yeah, Ryan Leaf was out of the decade. Ryan Leaf was 2000 and Ryan Leaf was before Breeze. So he was 2000. Might have been 99. I don't know. Who was it, Adam? See the chargers have actually drafted pretty well over the last, I mean, especially with Tom Tolesco. So I mean, their worst draft pick in the first round might not be as bad as I'm expecting. DJ Fluker. See, that's the thing. I mean, that might be our worst first round pick, but that's not a bad pick at all. DJ Fluker is legit. That's what I'm saying. I mean, the chargers have actually drafted pretty decent over the last decade. So I was trying to think. I was like Mike Williams, Joey Bosa. I agree. Fluker actually just signed a contract somewhere, I think. I want to say he's in Carolina now or somewhere down that way. Injury issues. Maybe a little bit soft, but that guy's not bad. So he's Miami. Okay.  Almost saying something nice about the chargers. What was DJ Fluker? Was he 2013? Trying to remember what product his rookies have pulled from. It's been this story for the last four years. It seems like all one possession games. It's definitely coaching. I mean, I think chargers actually draft a kicker this year. We might draft a kicker and a punter. Not gonna lie. That's the, that's the bet right now. 100%. I take over. I mean, I think Joe, I think that line, I think that line is also reflective on the bets earlier. The Broncos line for wins and chances at winning the AFC West and AFC and everything Super Bowl line also improved a lot because apparently they were pretty heavily entrenched in the Aaron Rodgers thing. So maybe that win total is reflecting Aaron Rodgers going to the Packers. That'd be interesting. I wonder what it was beforehand. I think they're selling for a pretty good amount, Ryan. Check 130 points, see what they're selling for. What I would do is, since you see what the RAWs are selling for, Ryan, check and see what a PSA9 sells for. What? Joe, you should see how much the Silvers are selling for on draft picks. Check and see what a nine is selling for, Ryan. And if it's enough to pay the difference on the grading, check it out. But if not, I mean, check what a 10 is. But yeah, the draft picks Silvers were selling for a lot greater than 10s and that's not for me either. But people are buying them and it's a little mellow. Yeah, I mean, that's the thing, Joe, as it is, because it's the same thing as like Zion and Jaw from last year. Their draft is still pretty good. What's a nine selling for right now? Okay, but when we had him Omar, he was not good at all. He was pretty terrible. He wasn't in the league for a year or two. Then he went and came back and like he went, worked out, obviously, you know, trained and did whatever he needed to do and got better. So he was not good when he was with the Chargers. That's for sure. And like he came in in the middle of the year. Yeah, he was bad. Very bad. But yes, now he is one of the best. That year we had probably like five or six different kickers kick for us at certain times. But that's Omar. Kicker is one of those positions that you don't give time. You just don't give time.  We can get him back to normal. Yeah, 172.50 for a PSA nine. That's triple the money. I think it's worth it for 215. So $150 difference. I think it's worth it. Because if you get a 10, there you go. The other thing is to Ryan, if you go slow boat to PSA and get, let's say, you know, whatever their regular value is on the grading, by the time you get that back, how many more products will have been released with Lamella ball rookies in them? And what will that do to the draft pick rookies, even though it is prism. So the prism still gets the benefit of being, you know, the most sought after product. No, he wasn't Omar, but that's the thing. You're talking about a rookie kicker compared to what some people would say is one of the greatest quarterbacks of all time. You know what I mean? No, I didn't think Tyrod would be the answer at all. But I thought our defense would be good enough to win enough games.  I didn't think Herbert was the guy. Oh yeah, 100%. The fact that we had one of the greatest quarterbacks of all time in Phillip Rivers, one of the greatest running backs of all time in Ladanian Tomlinson, and arguably the greatest tied end of all time in Antonio Gates and did not win a Super Bowl is an absolute joke. Especially because one of the years that all three of those guys were on the team, we had the top three rated offense and the top three rated defense. But that same year, we also had the worst rated special teams of all time, of all time. Guess what that team has now been surpassed in worst rated special teams in all time. Guess what team beat it? 2020 chargers. Yeah, two worst season special teams all time. 2010 chargers, 2020 chargers. So just when you think it can't get worse. Yeah, he was young, Lamar, but that's what I'm saying. Kickers aren't one of the positions that you can waste time on at all. I guess that they're important in the game, but you don't take time to groom a kicker. Would I have kept Breeze or Rivers? I mean, knowing what we, do I get the knowledge of knowing what I know now about Breeze? Obviously I'd keep Breeze. You wouldn't have drafted Rivers, you know what I mean? But there was no, nobody thought Breeze would be able to play well again, let alone potentially play for a long term at all. I mean, Omar, what you need to understand is Nick Saban was the coach of the Miami Dolphins when the year that Drew Breeze left the chargers, right? This is true, we didn't draft Rivers. So Nick Saban was the coach of the Dolphins. The Dolphins were all in on Drew Breeze. It was between Drew Breeze and Dante Culpeper for their future quarterback. They brought Drew Breeze in and gave him a thorough physical, had multiple doctors check his shoulder, everything, everything. And guess what? They were like, there's no way this guy's going to be able to do it. Ever. So they went Dante Culpeper. So everybody looks at it as like the chargers blew it. The Dolphins did their entire thing. Cool. Good luck guys. Here are our 12 boxes.  Brett Batty for the Mets. Austin Martin for the Blue Jays, Matthew Shearer. Seth Beard 150 for the Diamondbacks, Adam Swift. Emerson Hancock for the Mariners. Emerson Hancock for the Mariners. Joey Bart for the Giants. Talent Pipeline for the Yankees. And Casey Martin Sparkle for the Phillies. That is to 2.99. Bob Montgomery. Garrett Mitchell for the Brewers. First Otto is Brady Incarnacion. Bowman First Otto for the Marlins. And Mark Bissette. Trevor Larnack for the Twins. Zach Veen for the Rockies. Aaron Sabato for the Twins. Damien Stock. Austin Martin for the Blue Jays. Matthew Shearer. Nate Pearson for the Blue Jays. Talent Pipeline for the Tigers. Bobby Wood Jr. for the Royals. Cody Bellinger for the Dodgers. Austin Hendrick for the Reds. Xavier Edwards for the Rays. Nate Pearson for the Blue Jays. Forrest Whitley to 25 for the Astros. Eric Ange. Sixto Sanchez for the Marlins. Asa Lacy for the Royals. Dylan Dingler-Atomic for the Tigers. Darren McKenzie. Andrew Vaughn for the White Sox. Isaiah Green to 125 for the Mets. Armando Montero. Wander Franco for the Rays. When are we going to see him? And Aaron Sabato for the Twins at the end there. Damien Stock. Luis Garcia to 250 for the Phillies. Bob Montgomery. Joey Bart for the Giants. Blaze Jordan for the Red Sox. Matthew Shearer. Brady Singer for the Royals. Andres Amenes for the Mets. And Marco Luciano to 50 for the Giants. Chris Walker. Oh yeah, Adam. I mean I'll be here until there's nothing for me to do unless I'll be here as long as there's a break for me to do or there's nothing else that's going to sell out. Aaron Sabato for the Twins. Damien Stock. But yeah, this is going to be until probably 1230-1245 at the earliest. Luis Garcia for the Nationals. Mick Abel for the Phillies. Gerardo Pradomo for the Diamondbacks. Mick Abel-Atomic for the Phillies. Bob Montgomery. Casey Meyers for the Tigers. Asa Lacy for the Royals. Nate Pearson for the Blue Jays. Max Meyer for the Marlins. Ryan Mountcastle for the Orioles. Talent Pipeline Mets. Adley Rushman for the Orioles. Bryner Bonacci. Gold Otto 42 out of 50 for the Red Sox. Matthew Shearer. Every time I see his last name I think of Fibonacci. Jazz Chisholm for the Marlins. Heston Kirstad for the Orioles. Almost said Willers. What am I doing? A hockey break? Acunia for the Braves. Talent Pipeline for the Rays. And Christopher Morel to 250 for the Cubs. Charles Wolfkill. Sam Huff for the Rangers. Yeah, however it says on Young Guns, do it that way. Whatever it says on the Young Guns card, do it that way. Daniel Lynch for the Royals. That's going to be the way people search it the most. Mick Abel for the Phillies. Casey Meyers for the Tigers. Talent Pipeline for the Twins. Dalton Varshow for the Diamondbacks. I would do it without any punctuations. Just to heads up. Just do the letters. Dylan Carlson for the Cardinals. Because most people will search without putting that stuff on there. C.J. Abrams for the Padres. Ryan Mountcastle for the Orioles. Maximo Acosta for the Rangers. Daniel Ausley with the Last Spot Mojo. Wander Franco for the Rays. Heston Kirstad for the Orioles. Kiebert Ries for the Dodgers. Spencer Howard to 299 for the Phillies. Bob Montgomery and Tyler Freeman to 125 for the Indians. Daniel Ausley. Aaron Sabato for the Twins. Damian Stock. Juan Soto for the Nationals. J.D. Abelida for the Marlins. And Blaze Jordan for the Red Sox. Matthew Shearer. Yeah, nobody's typing in the umlats or whatever it may be. Reed Dentmers for the Angels. And even the people that are searching that, they're also, those are people that are like legit searching and they'll also search without. Marco Luciano for the Giants. Bob Thomas for the Diamond Bax. Clayton Beter. Aaron Sabato, Chrome for the Tigers. Sorry, for the Twins. Damian Stock. And Kevin Alcantara for the Yankees. Matthew Shearer. Christian Javier. Austin Martin. Christian Javier is for the Astros. And Austin Martin for the Blue Jays. Matthew Shearer. Austin Cox. Sorry, Sparkle Otto for the Royals. That is Patrick Colombe. Ronnie Maricio for the Mets. Corbin Carroll for the Diamond Bax. And Grayson Rodriguez to 499 for the Orioles. Mark Neubauer. He seems like it. Yeah, Mojo, I was gonna say Mojo would know, but that guy seems really good. I gotta go back and dig all his stuff out of my boxes. Nick Gonzalez for the Pirates. Christian Robinson for the Diamond Bax. Francisco Alvarez for the Mets. Jake Cronenworth for the Padres. Talent Pipeline for the Giants. Evan White for the Mariners. Maximo Acosta for the Rangers. Daniel Housley. Nate Pearson for the Blue Jays. Nick Gonzalez for the Pirates. And Blaze Jordan for the Red Sox. Matthew Shearer. Braylan Marquez for the Cubs. Tyler Freeman to 199 for the Indians. Daniel Housley. Nick Madrigal for the White Sox. And our Otto is Daniel Montano. Bowman 1st Otto to 150 for the Rockies. And Marc Wissette. Aaron Sabato for the Twins. Damian Stock and Austin Wells to 299 for the Yankees. Matthew Shearer. Tristan Costas for the Red Sox. Bobby Whit Jr. for the Royals. Wander Franco for the Rays. Talent Pipeline for the Dodgers. Brewstar Gratterall for the Dodgers. Bobby Whit Jr. to 125 for the Royals. Mojo, Patrick Cuomo. Kibriane Hayes for the Pirates. Reed Dettmers for the Angels. Maximo Acosta for the Rangers. Daniel Housley. Shane Boz for the Rays. Nick Matan, Bowman 1st Atomic for the Phillies. Bob Montgomery. Juan Soto for the Nationals. And there you go. Third of the way through the break. Francisco Alvarez for the Mets. Heston Kirstad for the Orioles. Blaze Jordan for the Red Sox. Matthew Shearer. Rhyme Mountcastle for the Orioles. Talent Pipeline for the Phillies. Maximo Acosta for the Rangers. Daniel Housley. Keeper Ruiz for the Dodgers. Maximo Acosta again for the Rangers and Daniel Housley. The Last Spot Mojo. Blaze Jordan. Red Sox. Matthew Shearer. Aaron Sabato. Pink to 2.99. Nice one for the Twins. Damien Stock. Juan Soto for the Nationals. Max Meyer for the Marlins. Blaze Jordan for the Red Sox. Reed Dettmers for the Angels. Andres Jimenez for the Mets. Austin Hendrick. Purple Otto to 250 for the Reds. John Ulf. There you go. Kevin Alcantara for the Yankees. Matthew Shearer. Dalton Varshow for the Diamondbacks. Mick Avell for the Phillies. And Ivan Johnson to 4.99 for the Reds. John Ulfs. Dylan Carlson for the Cardinals. Talent Pipeline for the Cubs. Alec Thomas for the Diamondbacks. Heston Kirstad for the Orioles. Ronnie Mauricio for the Mets. Alex Kierloff to 3.99 for the Twins. Damien Stock. And Marco Luciano-Atomic for the Giants. Chris Walker. Royce Lewis for the Twins. Luis Garcia for the Nationals. Kevin Alcantara. Very nice. Bowman First Otto for the Yankees. Matthew Shearer. Matt did really well with me in the Red Sox last night. Drew Romo to 4.99 for the Rockies. Mark Bassett. Shayling Lears in the Braves. Riley Green for the Tigers. Heston Kirstad for the Orioles. Aaron Sabato for the Twins. Damien Stock. Aaron Sabato for the Twins again and Damien. Talent Pipeline Orioles. Austin Martin for the Blue Jays. Matthew Shearer. Brandon Marsh for the Angels. Alex Baum for the Phillies. Spencher Torkelson for the Tigers. Andres Jimenez for the Mets. Jordan Westbrook for the Orioles and Ed Howard Atomic for the Cubs. Charles Wolfkill. Maximil Acosta for the Rangers. Daniel Ausley. Mike Trout for the Angels. Riley Green for the Tigers. Nick Madrigal for the White Sox. Garrett Mitchell for the Brewers. Joe Adele for the Angels. Talent Pipeline for the A's. Josh Jung for the Rangers. Sixto Sanchez for the Marlins. Kevin Alcantara again for the Yankees. Matthew Shearer. Jason Dominguez for the Yankees. O'Neal Cruz for the Pirates. Evan White for the Mariners. Matthew Libertura for the Cardinals. Alec Baum for the Phillies. Spencher Torkelson for the Tigers. Josiah Gray for the Dodgers. Vlad Guerrero for the 499. Blue Jays Matthew Shearer and Xavier Edwards Atomic for the Rays. John McCall. Edward Cabrera for the Marlins. Mackenzie Gord of 499 for the Padres. Mark Bassett. Christian Pache for the Braves. Austin Hendrick for the Reds. Taylor Trammell for the Mariners. Erin Sabato for the Twins. Evan White for the Mariners. Mack Wainwright. Bowman First Purple to 250 for the Reds. John Alves. Kay Bryan Hayes for the Pirates. Riley Green for the Tigers. And Riley Green to 125 for the Tigers. Darren McKenzie. Austin Martin for the Blue Jays. Erin Judge for the Yankees. Talent Pipeline for the Mariners. Alec Baum for the Phillies. Andrew Vaughn for the White Sox. Junior Severino to 499 for the Twins. Brennan Davis for the Cubs. Emerson Hancock for the Mariners. Joey Bart for the Giants. Kevin Alcantara for the Yankees. Talent Pipeline for the Yankees. Charlie Blackman to 250 for the Rockies. And Mark Bassett. Brennan Davis. Atomic for the Cubs. Charles Wolfkill. Juan Soto for the Nationals. J.J. Bladet for the Marlins. Kevin Alcantara for the Yankees. Matthew Shura. Keybert Reeves for the Dodgers. C.J. Abrams for the Padres. Reed Dettmers for the Angels. Aaron Sabato for the Twins. Dalton Varshow for the Diamondbacks. Kay Bryan Hayes for the Pirates. Maximo Costo for the Tigers. And Cole Franklin, Bowman First Otto for the Cubs. Charles Wolfkill. Heston Kirstad Sparkle to 299 for the Orioles. Mark Newbauer. Alec Thomas for the Diamondbacks. Blaze Jordan for the Red Sox. Austin Martin for the Blue Jays. Cody Host to 499 for the Dodgers. Katie Thones. Ronnie Mauricio for the Mets. And Casey Myers for the Tigers. Robert Hassell for the Padres. Wander Franco for the Rays. Royce Lewis for the Twins. Heston Kirstad for the Orioles. Austin Martin for the Blue Jays. Marco Luciano for the Giants. Lakers, this is Bowman, yes. Nick Madrigal for the Socks. Talent Pipeline for the Twins. Reed Dettmers for the Angels. Dylan Carlsson for the Cardinals. Heston Kirstad for the Orioles. Josiah Gray to 50 for the Dodgers. Katie Thones. Corbin Carroll for the Diamondbacks. Emerson Hancock for the Mariners. Blaze Jordan for the Red Sox. Joey Bart for the Giants. Kevin Alcantara for the Yankees. Talent Pipeline for the Cardinals. Hunter Green for the Reds. Maximo Acosta for the Rangers. And George Kirby to 150 for the Mariners. Patrick Colom. Julio Rodriguez for the Mariners. Austin Hendricks for the Reds. And Blaze Jordan for the Diamond, sorry for the Red Sox. Jeter Down for the Red Sox. Nate Pearson for the Blue Jays. Austin Cox for the Royals. Bowman First Auto, Patrick Colom. Sean Murphy for the Athletics. Zach Veen for the Rockies. Adley Rushman for the Orioles. Talent Pipeline for the Astros. J.J. Bleday for the Marlins. Sixto Sanchez for the Marlins. Asa Lacy for the Royals. And Ismail Maneath, Atomic for the Padres. Mark Basette, Austin Martin for the Blue Jays. CJ Abrams for the Padres. Max Kepler to 499 for the Twins. Damien Stock and Austin Martin Pink, Chrome to 199 for the Blue Jays. Matthew Shearer. Jared Kalamick for the Mariners. Kevin Alcantara for the Yankees. Spencer Torkelson for the Tigers. Nick Gonzalez for the Pirates. And Nick Allen to 125 for the A's. William Clayton. Francesco Alvarez for the Mets. Nick Madrigal for the White Sox. K. Bryan Hayes for the Pirates. Reed Detmerge for the Angels. Drue Waters for the Braves. Kettle Marte to 75 for the Diamondbacks. Adam Swift. And Colton Welker, Atomic for the Rockies. Mark Basette. Austin Martin for the Blue Jays. Aaron Judge for the Yankees. Jason Dominguez for the Yankees. Maximo Acosta for the Rangers. Mikabel for the Phillies. Francisco Alvarez for the Mets. Jake Croninworth for the Padres. Talent Pipeline for the Braves. Blaze Jordan for the Red Sox. Ryan Mountcastle for the Orioles.  Falcons. He was on the Falcons, wasn't he? That's where he did his best work. Luis Santana, Bowman 1st Auto for the Astros. Eric Ange. Jared Kelly to 399 for the White Sox. Jason Siebert. Ian Anderson for the Braves. Was he Sinsey? I thought he was Falcons. I don't know. I'm younger than all you guys. I don't know. Bobby Whitjr for the Royals. Aaron Sabato for the Twins. Bangles, 90% sure. Lubaub, White Sox, Austin Martin for the Blue Jays. Talent Pipeline for the Pirates. Bangles, Rex says. I'm just too young for you guys. Ace Alacey for the Royals. Did he play for the Falcons? Played for Sinsey. Oh, okay. Blaze Jordan Red Sox. Fernando Tutsi's Jr. for the Padres. Jason Dominguez for the Yankees. Alec Baum for the Phillies. Kevin Alcantara for the Yankees. Evan White for the Mariners. Alec Baum for the Phillies. Spencer Torquilson for the Tigers. Joe Adele for the Angels. Jorge Solaire to 299 for the Royals. Patrick Colom and Jason Rosario, Atomic for the Red Sox, Matthew Shira. Mackenzie Gore for the Padres. Michael Toglio for the Rockies. Garrett Crochet for the White Sox. Garrett Mitchell for the Brewers. Maximo Acosta for the Rangers. Joe Adele for the Angels. Talent Pipeline for the Marlins. Max Meyer for the Marlins. And William Holmes. Bowman for Sparkle Otto to 299 for the Angels. My Angels. Daniel Ausley. And Jeter Downs to 99. Nice one there for the Red Sox. Matthew Shira. Dad is Jack. Son is Joe. Right? I think you got it reversed. Sixto Sanchez for the Marlins. Riley Green for the Tigers. Asa Lacy for the Royals. Talent Pipeline for the Mariners. Sprendan McKay for the Rays. I thought I had it wrong for a minute. I was like, I thought it was Joe. Joe Buck was the current announcer. Spencer Torquilson for the Tigers. Blaze Jordan for the Red Sox. Kevin Alcantara for the Yankees. Last box, guys. Luis Campesano for the Padres. Marco Luciano for the Giants. And Gerardo Perdomo to 299 for the Diamondbacks. Adam Swift. Casey Meis for the Tigers. Talent Pipeline for the Brewers. Tarex Gubel for the Tigers. Dylan Carlson for the Cardinals. CJ Abrams for the Padres. Spencer Howard for the Phillies. Jesus Sanchez to 150 for the Marlins. Mark Bistet. Christian Javier for the Astros. Austin Martin for the Blue Jays. Oswald Paraza to 499 for the Yankees. Matthew Shira. Dylan Carlson for the Cardinals. Robert Hassel for the Padres. Mario Feliciano to 125 for the Brewers. Jonathan Crawford. Spencer Torquilson for the Tigers. Tanner Hout to 399 for the Red Sox. Matthew Shira. Riley Green Atomic for the Tigers. Darren McKenzie. Joe Adel for the Angels. And Yolbert Sanchez. Bowman First Auto for the White Sox and Jason Siebert. Should be our last auto. Oh for sure. I knew it. Dylan Carlson for the Cardinals. Corbin Carroll for the Diamondbacks. Royce Lewis for the Twins. Talent Pipeline for the Rockies. Christian Pache for the Braves. And that's the break. There you go guys. Nice break. Recap time. Okay so first non-auto recap. Forest Whitley out of 25 for the Astros. Marco Luciano Gold to 50. Aaron Sabato Paper Pink to 299. Austin Martin Pink Chrome to 199. And Josiah Gray Paper Gold to 50 for the Dodgers. And Autos. Brady Incarnacion for the Marlins. Brainer Bonacci to 50 for the Red Sox. Austin Cox to 299 for the Royals. Daniel Montano to 150 for the Rockies. Austin Hendrick to 250 for the Reds. Kevin Alcantara to 499 for the Yankees. Mack Wainwright to 250 for the Reds. Cole Franklin for the Cubs. Austin Cox for the Royals. Kettle Marte Non-Auto. Yellow to 75 for the Diamondbacks. Luis Santana for the Astros. William Holmes to 299 for the Angels. Jeter Downs to 99 for the Red Sox. And Yolbert Sanchez Auto for the White Sox to finish it off. And there you go guys. That was the break. It was 2021 Bowman Baseball 12 Box Hobby Case Break. Pick your team number three from jaspyscasebreaks.com. I'm Sean, jaspyscasebreaks.com. Thanks for hanging out and I'll see you next time.


Hello everyone and welcome back to another video. My name is Jon Hammond and let me tell you a little story before we dive into this video. So a couple of weeks ago, I think it might be a week or two. I don't even know. Time is the thing. The hack the box, cyber apocalypse captured the flag was going on and it was a week long game and it was incredible. There were so many people that were playing. I think they had almost like 10,000 people that played the game. There were a ton of fantastic challenges and I really, really wanted to jump in and play and get some content, get some videos recorded to share with you. Now I am human and also really bad at a lot of things.  So I reached out to hack the box and I was asking like, hey guys, I would love to kind of get some videos recorded, get some stuff for cyber apocalypse because it looked like an incredible success. I'm kind of jealous that you guys had such a stellar game. I'm not going to lie. And they said like, hey, John, it's totally cool. Like if you want to record some challenges, we can like spin up the game again for you. And I'm like, what? Thank you. Thank you. Thank you. Thank you. So I have a little bit like a slice of the cyber apocalypse capture the flag kind of spun up for me and I'm super duper grateful. Thanks so much for letting me do this guys. So crewed out in credit, all goes to them. But I have a couple of some of like the most liked challenges or the people that the challenges that people said were their favorite or they really kind of loved. So this is after the game, I will admit. So that is the situation. And I realized like, look, there are probably a lot of these challenges that I also wouldn't be able to solve on my own and I'm understanding of that. And I want to be transparent and about that. So with the disclaimer, with the honesty that this is after the fact and I want to showcase some cool stuff for you. So in the transparency, I do have access to write ups. So I will still be learning and experiencing new things that I haven't seen before, but I also wanted to bring that to you and share that I will be maybe checking a little bit of write ups in there. So don't hate me, please don't fault me. But with that out of the way, now that I have a two minute introduction, I want to jump in and I want to showcase a couple of these challenges. So hopefully there'll be a lot of videos that come from this, but let's do it. I have on my screen here, check it out. The Cyber Apocalypse and JH Party. Thank you, thank you, thank you for letting me do this guys. The first one I kind of want to get started with, I'm going to stick around in the web category for a little bit of time. I want to check out this CAS challenge or C-A-A-S.  And it says Curl as a Service or CAS is a brand new alien application built so that humans can test the status of their websites. However it seems the aliens have not quite got the hang in the human programming and the application is riddled with issues. So it has a kind of container and instance portion, right? That we can go ahead and start up on demand, which is awesome. Glad everyone has kind of their own individual instance and a downloadable part. So I'll go ahead and spin up the Docker instance. There we go. And it gives me in just a moment an IP address with the URL that I could go ahead and grab and click on and copy. So now I can go access that in my web browser and here we are kind of at the interface, what we're looking at here. This is Health Checker 9000 where I can verify the status of a host by specifying an IP address. So this is kind of a simple challenge before we dive into a lot of the other stuff, but it looks like I just have a prompt that I can run Curl maybe. Like if I were to just type in anything, a legal character is detected.  Anything, A? It's probably gonna be expecting like a URL or someplace to reach out to with the Curl command. So we can keep that in mind, but we go ahead and need to download these files here that we can kind of see what this challenge is doing, what this application, what this service is. So I've gone ahead and done that. Created a directory in my home directory for Apocalypse, which is really nice to be able to type in. Don't normally have a reason to type in Apocalypse into my terminal, but I have downloaded in a downloads folder, the webcast kind of archive here. So I'm gonna go ahead and unzip that and we'll get to see all the files that we have here. They're all inside this webcast directory and it looks like I have a Docker build script, challenge folder, config folder, a Docker file and the flag. Oh, we can just go ahead and cut that out. No, it's just a fake flag. Okay, just kind of for test. But we can see the Docker file and how this instance, how this container was kind of built. I'm gonna go ahead and open that up in sublime text. I will hit control shift P to set the syntax to bash. So it has a little bit more syntax highlighting and color. We'll come and grab this image for the instance from Debian, slim, having a www user. Looks like we're just installing packages for this thing to run and go ahead and install PHP dependencies. So we are gonna end up using nginx as a web server with PHP on there and configure it with specific files, get the challenge files in there from the directory and the flag looks like on the application, on the actual target and remote service, the flag is gonna be located at the root directory. So the very, very top of the file system, just the forward slash. So the path to flag, what we wanna be able to obtain and retrieve to prove that we solved this challenge, we need to access slash flag. Looks like permissions here and we go ahead and expose port 80 to run nginx. So that is that. Now, because we have these files downloaded, we could check out what's in config, but these are just gonna be configuration files. So I'm not exactly interested in that right now. I kinda wanna see more of what is in this actual challenge and what's the source code. So we'll check out the index.php looks like set up a time zone and auto load registers with controllers in PHP, okay? And models. So this is kind of that model view controller setup where you have controllers kind of displaying the logic or at least containing the logic for what an application might do, models being kind of abstract ideas and entities for objects and things you might end up using, like the concept behind it and object typically how it's stored in a database if you're using like an MVC or model view controller layout, but the router object is created and then we set up these routes for forward slash being the homepage and that looks like it brings us to the curl controller index and API which we could post to API slash curl with the code controller execute. Great. So then we do that and we just route for these specific URL routes. Great. So we're more interested in what really goes on in the controller and model then. We could take a look at that router.php if we wanted to but this is kind of just gonna be the functionality for knowing what page to go to and how. So not extremely interesting in this case. We know that that's how we're gonna get from page to page but we should check out those controllers and models here. Again, we could check out static files and the views to display them but it's just gonna be like how this page is portrayed in the view and static files that it might be pulling in images or things. We're more interested in the logic behind this so we'll go check out those controllers here. The curl controller looks like it has a function index which is what we would go to on the homepage. It renders that view that we just looked at momentarily but the execute function that we know is kind of being routed to that post on slash API slash curl. It will take in the argument IP that seemingly will pass along to the program and we will determine if it's been supplied and then we'll go ahead and create a command model following that where we go ahead and execute based off of this command model and return out some JSON encoded data that's returned from that. Okay, so that means that we're interested in what this model might look like. So let's go back, hop into the models directory and now we have that command model. I'll go ahead and sublime, open that up. All this does is take kind of the URL that's supplied from that IP argument or what we passed to the application and it looks like it uses curl, the command just like that. Adding in or appending and concatenating here the escape shell CMD. So looks like it's going to try and escape special characters out of something that you would pass to the command line. Like you could find that in PHP documentation if we wanted to actually Google that. We could see what it does but escapes any character in a string that might be used to trick a shell command and executing arbitrary commands. So I guess we won't be able to use things like a semicolon to add in another command or ampersand to call something else or even add new lines to kind of create a new command following that. So that gets in the way of some things that we might be able to do but it is still adding in like syntax to a curl command and it will simply exec or execute it from the command line. So that means that we have control over what's happening after curl, like the syntax. We can kind of specify arguments or what curl will end up doing and any other parameters or any other functions necessary. So now that we know when we've kind of verified this is in fact calling curl we can just try like a dummy site. I'll go to HTTPexample.com and now I can see okay it has returned out the contents of that page. I could curl my own website, I could curl something else but I'm kind of curious, can we get this to actually contact and reach us like us as the attacker, right? So I will go ahead and set up like, what should we do here? Let's go all the way, all the way back and see if we can just maybe make it dummy site. So I'll create a dub, dub, dub directory and I'll echo this is from John in like index.html. We'll just redirect that out, super easy, right? So at that point I'll probably use like a Python 3 HTTP.server. So we go ahead and host this. Now keep in mind I'm only hosting this locally. It's bound to every interface. So any other machine that's kind of in my network would be able to access this but because I'm kind of working on my home computer it's not gonna be publicly accessible out on the world because I'm behind that or my router isn't gonna forward this out to the open and public internet. To solve that problem because we do wanna see if we can get the target and remote servers to call back to us. I'll go ahead and just tunnel this out with Ngrok. You could do this without using Ngrok by just using a VPS or like a virtual private server maybe something you spin up in Linode or DigitalOcean or anything else you might wanna do out in the cloud but for our sanity check I'll just go ahead and use Ngrok in this case. I'll use Ngrok for an HTTP server on port 8000. So then it will funnel out and now I have this address redirecting to my website. So I'll go ahead, grab this URL and I'll check it in my web browser and it returns, hey, this is from John. So now this is publicly accessible out on the open internet thanks to Ngrok. Ngrok does have a free tier so you can do this on your own if you'd like to but going back to the service I'll try and enter this here and it returns, hey, this is from John. So we know that it is calling back to our instance. If I go look at kind of our server logs here we can see that tunnel and those requests that come through. So what could we do now if we could have Curl call back to us and maybe we could get some data from it? Well, since we have control over the arguments of Curl and really what Curl does we could try and just read the man page and see what could we have Curl do that's particularly interesting. This is where that concept and idea of RTFM or read the manual really comes into play here because you might immediately know just off the top of your head what you can do with Curl to be able to do something else that's a bit more interesting. In our case, we know that we specifically want to access this flag file that we know is at slash flag with the root of the file system. So what could we do to get the contents of a file included in our web request that we end up sending back to ourselves so we can see the contents of that file. In the Curl man page we could just scroll through this thing and read the whole thing if we wanted to. I realize this is pretty lengthy. If I scroll all the way down here what we're up to like 3,706 lines maybe. So there's a lot in here. I'm gonna try and just search for things like file or upload. I'll use the forward slash to be able to run a search in this kind of paginated output with less or viewing a man page. So if I search for file I can hit N to hit the next display of that or the next finding. And there are a lot of entries for file. Something that it kind of notes at the very, very beginning of how you use Curl. You can specify these locations and things you want to reach out to with a specific URL protocol or schema, right? HTTP for the hypertext transfer protocol, HTTPS when you add SSL in there, FTP and there are a lot of others we could use. In fact, we'll dive into that maybe at the very end of the video but I do want to showcase something before we get to that quick cut. Let's keep looking for places that we can use file. I'm scrolling through and I want to probably find something that's not gonna end up maybe reading from a configuration file or checking out certificates that we might supply. Searching for file is kind of tough in here because obviously a lot of command line arguments and parameters might be just using files that you would supply on your local system as stuff that Curl could use. So maybe upload would be a better thing to search for or just again scrolling through this until we see something interesting that is really what we gotta do. Just kind of a lot of reading in this case. Supplying cookies, there's a lot here that might not be immediately useful for us but I do see something now adding in a file name. It looks like this will make Curl load data from a given file. You will encode that and pass it in to a post request. Okay, so I might be in a interesting worthwhile part here. I'm gonna scroll up. Oh, it looks like I can supply like data binary, passing stuff in. Yeah, if you start the data with the letter at symbol the rest should be a file name. Data is posted in a similar manner as tag D or data. Maybe that would be worthwhile. Can I just do that with that tag D or tag, tag data argument? We can try it. Looks like tag D also is kind of defined here and you could also use tag F or tag form. Oh, and there's another one scrolling through this. Tag, tag data binary, also referenced our upload file with tag T. That sounds good. Upload is something that we knew we kind of wanted. So if I scroll down to that tag T, do they give us a better example? I guess it was called tag, tag upload file. Did they showcase that? Yeah, this transfers the specified local file to the remote URL. If there's no file prefaced. Oh, so that syntax will just take a file immediately following it. It doesn't need that at syntax kind of there. That might be useful for us. So let's try a couple of these, right? We do have our Ngrok service still listening for our own local website. But if it were to try and post to our own website, maybe it won't be able to retrieve that data because post might not be a supported method. We can try it. Let's use that curl, I guess, tag, tag data binary at symbol to specify a flag or file location. And we know we want slash flag and we need of course our own URL. So I'll grab that from Ngrok one more time. Let's try and paste that in. Oh, that got an illegal characters detected. Did it make a request? It didn't look like it. Let's try that tag F argument. Is that still giving me illegal files or legal characters detected? Does this need to be in quotes or something? We'll just kind of experiment. We'll just try stuff. Maybe that at sign is something that it might not alike. Let's try that T for upload file. We'll enter on that. Still nothing coming through. Huh. Is it the Ngrok URL that's making a mess here? Or is it because of our illegal characters in that escape shell command? Let's try without quotes. In fact, let's reload this page to see if we can just clean it up. That still gets me illegal characters detected. Hmm. What else could we do here? Part of me wonders if using the web interface is kind of getting in the way. We know we are making a post request. So could we do this with our own curl command, really? Let's try and find out. So I will try this with curl with the URL here itself. And we know this was going to post. All right, I think it was API curl and we needed to make sure that this was a post method. So I'll use tack capital X to specify the method type. We'll post to it and we'll specify tack D for the data there and we'll say the IP address and we'll just use kind of our example.com proof of concept again. Okay, looks like it comes out here with a message. And that's all in JSON, so I'll pipe that to JQ. So now that displays it out. But we wanna try and reach our own IP address as we were attempting to do, right? So we'll copy this and we will change that syntax to now reach our IP address, which it retrieves, good. But let's see if we can add in those arguments that we knew that we wanted. We wanted a tack T and a slash flag to upload a file. Mm. So our server finally got the kind of request but when it tried to put a flag, it didn't really wanna do that. So our little simple HTTP server or HTTP server in Python won't know what to do with a put method that it might be trying to use here. If we were to actually just use that tack F syntax to upload for a form and we had that prefix for an at sign with the flag, would that behave? Looks like that didn't return an error but it also didn't seem to do much. Let's try that tack tack data binary. There we go. And that also has an unsupported method we could see here. Post also failed. So let's switch this up. We'll use a netcat listener to see if we can just retrieve data out here. Rather than hosting a full blown HTTP server with that Python simple HTTP server solution, let's see if we could do this just as easily with a tiny netcat listener so that way we can see the contents. So running that same structure, I'll use the tack tack data binary with the at sign prefix for that flag file and that comes right through. Nice and easy. Okay, we could have very well done the exact same with tack T or that upload file. And again, that doesn't require the at symbol prefix. I'll start listening one more time. Let's see if that will return. Looks like it did. File retrieval as a service. And that was one technique, right? That was one trick that we could use. That was kind of calling out back to us with a little bit of a troubleshooting to see what was going wrong. Maybe trying to do it through the web interface just wasn't interacting with us well because of all the spaces that we might have been using. So curling it kind of on our own to access the webpage is a worthwhile venue just as well. But using all that, push the file back out to us with upload at using those arguments. But remember that we're specifying the schema for this protocol here with HTTP. We could just as easily try and read some local files by using the file schema for that protocol. So rather than HTTP colon slash slash, we could look for file colon slash slash. And then kind of any absolute path on the file system that we'd like. So I will view like it's at rehosts as a proof of concept or it's at repassword if you'd like. But you know, hey, we know we just wanna see the flag file. So we'll use that file schema and just literally read from file flag. And that's it. That's how we solve that challenge in a nice quick and easy, simple way. So that wasn't an egregiously hard challenge. Just kind of understanding what's really going on. Taking a look at the code certainly helped us do that. But I'm sure you might be able to see just kind of at first glance, oh, that's what this is doing. It's running curl with our arguments passed in and supplied. So we could take advantage of that. We could use curl to retrieve data that's useful from that target system or even just read local files like with that structure of that file schema. So that is that goodness. I was talking way too much for this sort of video on such a simple challenge, but that's that flag.  Let's see if I can submit a flag here, paste it in, and cool. I'm finally back in action, right? Even though I missed the game, we're still getting some points here. 1,000 points on the board. Yeah, go me, right? All right, everybody. Hey, thanks so much for watching. I appreciate you tuning in these videos. Forgive me if I am a bit long-winded and verbose. I still kind of want to be showcasing the whole thought process and troubleshooting and everything. So maybe if it's a long video for something as simple as this, I still hope that is worthwhile. But thanks again to Hack the Box for letting me do some of these videos. Thanks so much for you tuning in. Please do all those YouTube algorithm things I would love if you could like the video. Maybe leave a comment below. Let me know what you think. Do you like this format? Even though it is long form and verbose, and subscribe, that'd be great. That'd be excellent. Thanks so much for watching, everybody. I'll see you in the next video. Take care.


Hello, welcome to our session, which is called Long-Live Asynchronous Pagefold. A few words about us. We are both from Red Hat. My name is Vitaly, and I'm a KBM contributor. I mostly work on PV features in KBM, on Hyper-V emulation, Windows guest support, and Nesting. Vivek? Hello, everyone. I am Vivek. I'm a kernel developer. I primarily work at Red Hat in storage and file system team. Right now, working on what IFS have contributed to OverlayFS, KXF, KDOM, block C group controllers, etc. Back to you, Vitaly. Yeah, so what event are we going to talk about today? Imagine the following situation. You have a guest running on KBM, and there is a memory access happening at the guest. And from the guest perspective, this memory is available. But on the host at the same time, it is not present. For example, because the page was swapped out. So what's going to happen in this situation? Well, under normal circumstances, KBM will have to block guest's VCPU, and then handle the pagehold condition. For example, bring the page back from swap. And when it's done, it can resume guest VCPU. So it doesn't see that anything happened at this time. But resolving the condition may actually take time because it involves a storage. And at the same time, your physical CPU may actually be idle. Because, for example, you have nothing else to run on this physical CPU. If you, for example, use VCPU pinning for your guests. So what can be done? KBM uses two ideas. First idea requires the guest to collaborate. And we let the guest know that the page it just tried to access is missing on the host. But we are not blocking it. So it can actually switch to some other process and do some other work while the page is brought back from swap. The other idea doesn't require the guest to collaborate. And the idea is called a synthetic APF halt. And it's the same as emulating a healthy instruction, which guests actually didn't execute, but we pretended the guest executed it. The difference between this and blocking the VCPU is that when we do the synthetic APF halt, we keep interrupt enabled. So we hope that there's going to be a rescheduling interrupt in the guest. And the guest will automatically switch to some other process. And at the same time, the memory which wasn't available before may actually become available. So when it switches back to the task, it may run normally. So today we are mostly going to talk about the first idea which is called asynchronous page fault. Initially it was implemented in 2010. The main concept is that there are two events. The first event is called page not present and the other is called page ready. To deliver these events to the guest, page fault exception is being used. With every page which was not available, there is a token associated. And this token gets passed through CR2 register. Also, there is a shared memory structure. So called asynchronous page fault reason, which indicates that the page fault which has been injected is an asynchronous page fault and not a normal page fault. And it also tells us which event has been delivered to us. Is it a page not present event or a page ready. So how does it all work? Imagine there is a user paid task and it's trying to access some memory which is not available on the host. So KBM injects this asynchronous page fault page not present event, which has been injected as a page fault exception. We get into this page fault handler in the guest kernel and the guest kernel analyzes this shared memory structure. It sees that the event is actually an asynchronous page fault event and not a normal page fault. It freezes the task which tried the access along with the token and switches to some other task which hopefully won't call any faults. So what happens when this page becomes available? KBM again injects page fault event to the guest and we get into the same page fault handler in the guest kernel. It reads the shared memory and now it sees that the event which has been delivered is a page ready event. It searches for the token in its internal structures, gets the task which got previously blocked. It unblocks it so this task can now continue. So a couple of extensions were developed to this. First is called a stand always mode and the idea behind it is that we can not only deliver asynchronous page fault events to user space memory access but also to kernel memory access when the kernel itself is preemptible and can handle this. Another exception extension is needed when you want to run nested guests in case this asynchronous page fault event is happening for an access while your CPU is actually in guest mode, your guest CPU is in guest mode. We cannot just inject a page fault event because it will get into your nested guest which you may not be prepared to handle this event. So we inject it as a pfpmxit and level one hypervisor, your guest should be prepared to handle it. So it does exactly the same as it would do for pfxception. So it all kind of worked for 10 years since 2010 before people actually started looking at it closer and the main assumption which was well documented when this was implemented is that the guest should actually read or the shared memory structure answer to register before any other page fault, even any other like real page fault can happen and they should be guaranteed but can it actually be guaranteed? There was a faulty scenario presented by Andy Lutomarski last year and the scenario is the following. Imagine where injecting an asynchronous page fault event and before we managed to read the CR2 and the epf reason from the shared memory structure and NMI happens. It is known that in Linux kernel NMI handlers can cause accesses to user space memory as these in its turn can cause real page fault events. So what's going to happen when this happens? Well, the CR2 register will definitely get clobbered because real page fault will override it and when we get back to the synchronous page fault handler we won't be able to handle this asynchronous page fault event. So what's going to happen? Well, nothing good. So we started working on it and it's currently work in progress but some things were already been done in the last year. So first it was decided that send always mode for asynchronous page fault is not really robust enough and also no existing well-known Linux distribution builds fully preemptible kernel. So the send always mode was deeper key. Second, we decided that the main problem is that the same page fault exception which has been used for normal page fault is used for asynchronous page fault. So we decided that it's not really a good idea and as a first step we switched from using this page fault exception to using normal interrupts to deliver page ready events because these events are by design asynchronous and KVM fully switched to this mode in Linux 5.8 and KVM guest fully switched to this mode in Linux 5.9. So now the old way to deliver page ready events is not supported anymore neither by KVM nor by Linux guest. We also have plans to do something about page not present events which is then for example to virtualization exception or tin check exception but there are kind of disadvantages both of them have some disadvantages like virtualization exception is only available on Intel. There were also ideas to use an interrupt to deliver page not ready exception but in this case we must be sure that it gets the higher priority and nothing else will get handled before it. So about this interrupt using interrupt for delivering asynchronous page fault page ready events. How does it work now? So again the task was previously frozen because it tried to access some memory which is not available on the host and this memory becomes available. So instead of injecting page fault exception KVM now injects an interrupt a normal epic interrupt to the guest. We get an interrupt handler in guest kernel eventually and guest kernel does the same it searches through internal structures searching for the task which was previously frozen with this token it finds it and unblocks it so this task can now run and also we've introduced an acknowledgement mechanism by which guest kernel tells KVM that it completed processing this asynchronous page fault event so the next one can get delivered either like immediately or in the meantime. So that was it and now Rebecca is going to talk more about new usages for asynchronous page fault. Okay so KVM page fault error handling so like one question is like yeah of course we all talked about page faults happen we can deliver them synchronous manner or asynchronous manner and the question is what happens we cannot resolve a page fault what's the behavior currently and how that behavior can be improved before we dive into it like I just want to address one exactly can that happen where I ran into the issues personally I ran into the issues when I was running what IFS with DAX enabled and that's where I started running a bunch of the issues before I go further like I just want to quickly mention what IFS is fairly new and in case you have not seen it yet it's a pass through file system something along the lines of what our 9p is that it's fuse based it allows to take one directory on the host and just export into the guest in this in this diagram the shared directory is let's say slash four which is being shared what IFST here is the demon running on the host which is the file server and uses the we host user protocol to communicate with the guest and recently we added DAX support to what IFS this is still in the use next tree and we are hoping that it will be merged in this merge cycle which is opening probably soon what does this do is like typically if you're accessing a file let's say food or tax you create another copy of the contents of the food or tax whenever somebody is reading the file we take it from the host create a copy in the guest space and that's how the guest process access the contents but with the DAX we wanted guest process to be able to directly map host space cache and bypass the guest space cache completely and this probably has two advantages that it reduces our memory footprint on top of that it probably is a faster access and it just allows a better sharing also down the line at least because there is a single copy between multiple clients so in this case guest sends a request to map certain portion of the file to what IFST and then QME maps that offset and that page in the file into the QME address space which can we show that the physical memory inside the guest and using DAX we can directly map into the address space the guest process. Now what happens if a guest process mapped a file let's say food or tax and then somebody else let's say on the host truncates that file and after that guest goes and does any load or a store operation to put that particular page so the current behavior depends so this is an error like guest try to access a page which is not present anymore or truncated and it cannot be faulted back in and the question is what do we do if the fault is synchronous space fault let's say a synchronous space faults are not enabled in that case currently we exit back to user space with an error say E fault but if the synchronous space faults are enabled we kind of loop infinitely and this is what happens we take a when guest accesses that page we take a VM exit and let's say we do a get user pages remote and it returns an error code let's say E fault but currently KVM doesn't pass that error code and upon the return it injects a page ready event into the guest guest things looks like pages ready let me try the instruction it retries again we take a VM exit and the same loop continues and it injects the page ready event and this loop just continues infinitely so basically if a synchronous space faults are enabled if the host cannot resolve the space fault because file got truncated we just get into a infinite loop so that's a problem I'm facing and I think this problem we can have any of the resources which can be file backed and guest can do directly load and store that memory location I think like for example and we didn't file back the VM device will face the similar issue so we need to do something about it so I think there are at least two problems to fix the one problem is we need to make the behavior uniform between synchronous faults and asynchronous space faults I posted a patch for that so that even for a synchronous space faults we exit to user space with E fault if the page fault cannot be resolved this patch has not been merged yet there are still some concerns on the patch I need to address the concerns raised by other developers the other bigger problem is can we do better instead of exiting to user space when KVM cannot resolve the fault can we let guest handle it we just need to inject error back into the guest saying this cannot be resolved and then guest can take it further for example if it was guest process which tries to access the space and send a sick bus to the process instead of killing the whole guest and if it was the guest kernel which was trying to access that base we can do some exception table fix up magic to come out of that loop and return to user space with appropriate error so that's the idea that would be nice if we can achieve that but how to do that that path is not clear last few months back we had discussion upstream and various people have different ideas so one of the proposals is that at least I did this proof of concept patch when the error happens instead of and we inject the page ready event into the guest we also send error back to the guest so guest knows whether page is really ready or not or it's an error then guest can do the error handling but this did not work for multiple reasons one thing is as Vitaly mentioned that now we have blocked a synchronous space fault if the guest is running at privileged level 0 so if kernel accesses a guest kernel accesses at memory location we will not even initiate the synchronous space fault protocol and that means that this method is not going to work for that particular use case and the other problem is that this particular patch that is too tightly coupled with the synchronous space fault mechanism and the problem exists even outside APF so design something more generic which works both for synchronous space faults as well as asynchronous space faults so this patch set will never merge and it's just a proof of concept thing another idea was I think Andy Lutomiski said like maybe it is a good idea to use machine check exceptions they do something similar already in the case of poison memory or something so why not use that path and inject an MC I think there are couple of issues or at least concerns there as well typically MCs are raised synchronously only in the case of load but stores often are silent failures and I think later when hardware detects synchronously that something has gone wrong with the memory we raise and MC so typically store path is a synchronous path but load path is synchronous path and we want this to be synchronous both in the case of load as well as store so maybe to solve this maybe because we are controlling everything maybe hypervisor can inject MC both and load and store like synchronously and even if the real hardware doesn't do it but I think rest of the MC code various copy to user and copy from user and all the code following helpers have been written with this assumption that one can get an exception on the load but not necessarily on the store so I think that particular code path and all the helpers will require a change as well and other concern was that MC is already pretty complicated and there was a resistance from few people that we don't want to be doing any special casing for this case in the MC handler and nobody has posted a patch so this still remains an option hopefully if somebody posts a good patch hopefully it will be more acceptable the next one as Vitaliy I think referred to it briefly is virtualization exception so there was another proposal platform has this exception can we make use of this to report the errors back and not just errors once we have a good race free way to report it we can even send the page not present events as well using this but the concern here is it is only available on Intel what about the other architectures AMD and ARM64 do we emulate there or like how do we find equivalent replacement there so this is an idea at this point of time we haven't posted the patches yet and the last one there was another idea can we handle the problem at what IFS level itself like don't even get into this situation let's say implement some sort of file leases and when one client decides to truncate the file take right lease on the file and that should ensure that all other clients if anybody has the file mapped they all unmap it before truncation happens then go ahead with the truncation and make sure that we don't run into this error situation maybe it will work first of all we don't have the concept of file leasing and fuse so somebody will have to introduce it and devilizing the details and hopefully we can make use of it but still there are some issues so one of the most prominent one even if we do it it will continue to be racy because for example if somebody truncates the file directly on the host it doesn't go through what IFS client that means the truncation is not going through what IFS and that means this particular user will not take the leases and not participate in the protocol and that will be racy I think past we can do it what IFS demon is watching for the events and gets notification and sends the notification back to the guest saying truncation just happened and unmap anything in this file you have but that is still racy because in time another user can just access the file while you are being notified so that's one concern and not only that I think it probably can be a stopgap solution but what IFS is only one use case which can run into this issue there are other use cases like NVIDIA was another example if I truncate the file which is backing the NVIDIA will run into the same thing so to me it would be nice to solve in the KVM instead and that will address the wide variety of use cases so which proposal probably is most likely I don't know like my hunch is probably at this point of time more inclined toward using the machine check exception and if it works reasonably well probably that might work I don't know at this point of time but that seems to be my preference so that's it from me everybody thank you for listening and if you have any questions I'm glad to take those questions thank you


You also spent some time at the golf course. This is a hole in one, huh? Yeah, this was at Atlantic City Country Club and that was on the 17th hole, which is ironic. My number was 17 with the Yankees and it was uphill over a bunker so you couldn't see the ball and as we drove up to the green, we didn't see a ball on the green. We walked over there, buddy of mine, picked out the stick and it was in there. So one of those once in a lifetime moments.


Dear students, in this module, we are going to discuss that how migration is having an effect or impact on people's life. The human migration affects the human life in several ways. Street crime is more likely in the diversified areas, for example, if you see that urban areas are heavily loaded with the street crimes only because we find a lot of population over there, a lot of population density over there. So it has a major impact on the morality of people as well, that they usually tend to confuse the definition of what is the right thing to do. And urban migration provides the relativist approach to the migrant only because the urban people are having more amenities of life as compared to the rural people. So urban areas contribute to the 80% of the total GDP of the national GDP. So it means that most of the economic activities are going to occur in the urban area and that's why it becomes one of the biggest determinants of migration from rural to urban areas. If you see its impact on the individual level, it produces the irrelevant skill sets. For example, people migrating from rural areas might not find their skills to be very much valuable as compared to the skills of people in urban areas. So it produces a lot of stress and depression, especially for the older people. For example, they have a lot of emotional bonding in the rural communities where they had already been spending their decades, almost decades of life over there. So when they go to the urban area, they usually get depressed and stressed because of the new environment and because of the different kind of solidarity in the urban life. And then they are uprooted from the family. Usually we see the trends of urban migration among the youth. But they migrate from their areas only to find better employment opportunities and that produces the nuclear family system as compared to the joint family system they had already been part of. So educated and skilled people leave first and skilled farmers end up being unskilled labor. So when unskilled farmers come to the urban areas, they usually become the part of the labor force that is needed in the urban areas. And we also find that urban areas possess the more probability or more possibility of being contaminated diseases because of having a lot of population density, unhygienic food as well as the very severe climatic conditions. As you see that in the urban areas, we do possess the problem of folk which is also very much unhealthy for the people. So English medium schooling and no space for the children to play are usually become other factors for the individual which are greatly affecting their lifestyle. As you see that people usually are forced to be part of the manual labor force as compared to the rural areas where perhaps they could have been producing food for themselves or they have been relying on themselves. And then the impacts on family level diminishing professions which are perhaps the family business and changes in the relationship. We find the more nuclear families as compared to the joint families and it is uprooted from the tribal culture and tribal systems when people come to the urban areas they usually find a lot of anonymity a lot of a lot less emotional social bonding and having more formal and professional relationships and hazardous urban slum places where the unhygienic conditions are much more prevalent and weak social networking means that they do not find much of the relationships to be interacting with and aging in the urban population becomes a more problematic as compared to the rural areas. As you see that in urban slums particularly this is one of the reflection of urban slums where people migrating from the rural areas become part of the urban life but with the very degrading conditions. The effects on the societal level are that industrially produced goods are abundantly available and goods are being produced not for the direct consumption of the people or the individual but these are being produced for the market. In other words these goods would directly go to the market where only it will be consumable for those who can afford these goods. And weakening of the feudal hold is also the direct consequence of urban migration changing changes in the rural infrastructure because more and more amenities of life are coming and there is a there becomes a pressure on the government to produce or to provide more facilities in the rural areas as well so social and ethnic tensions between the migrants and indigenous population also becomes a part of the problem because when people go to the urban areas perhaps those who are already settled over there they find those people and their culture as strange as compared to their own so these conflicts become part of the urban life as well and urban poverty is part of the modern migration trends as well where rural people who go to the urban areas find it very difficult to be adjusted over there and usually they end up with being poor and rationalization or the ruralization of the urban areas also becomes a problem where you find the dark ghettos and urban slums which are being part of the urban peripheral areas where a lot of poor people can coexist with the urban people as you see that the more and more urban problems emerge because of these migratory trends and traffic congestion and road accidents becomes one of the important reflections or important impacts of these migrations because the more the population density the more the complexity of urban life and more the problems there become and terrorism and crime increases gender-based violence increases the kachi about these and informal settlements also increase and we find the loss of cultural heritage as well as decline in fertility and mortality also part of the urban life because it becomes very difficult to afford a lot more children in the urban areas as compared to the rural parts you see that the urban communities usually find a lot of problems and one of the problems becomes the terrorism which sometimes is reflected in such glimpses in such pictures in the urban areas and then we have the economic effect uncertain income of the daily wage labor's become part and parcel of the urban life usually you find that a lot of people are sitting on the banks of the roads where they are waiting for someone to take them as their laborer and expenses on diseases are very high there there is costly social services of the slum developers and increase in the travel time because of the traffic congestion we find that the distance that you can usually you can usually commute maybe in 10 minutes can take hours because of the traffic congestion and transportation becomes very expensive and irrelevant rural skills in the urban areas also produces a lot more economic effect and social and political impacts if we talk about there is an unavailability of affordable housing as you know that in urban areas most of the people are living in the rental houses they cannot afford their own houses because the housing is pretty much expensive in the urban areas and changing in the electoral constituencies also becomes problematic when it comes to the political appropriation of the society and competition for power and resources becomes pretty much more aggressive in the urban areas as compared to rural areas where you find that a lot of violence occurs because of these political conflicts and emergence of new political players in the urban areas become the part of the life as well as the conversion of agricultural land in the housing colonies as you can observe in our mega cities in Pakistan that a lot of agricultural land is becoming part of the housing society because we are unable to cater to the needs of urban population on on the already available land so this becomes the part of the urban life where you find a lot of political movements which are focusing on these aspects of life