diff --git a/en_US.ISO8859-1/captions/2009/asiabsdcon/losh-mips.sbv b/en_US.ISO8859-1/captions/2009/asiabsdcon/losh-mips.sbv index 866e1f9479..e84ddb3e64 100644 --- a/en_US.ISO8859-1/captions/2009/asiabsdcon/losh-mips.sbv +++ b/en_US.ISO8859-1/captions/2009/asiabsdcon/losh-mips.sbv @@ -1,2362 +1,2364 @@ 0:00:00.410,0:00:02.190 overruled 0:00:02.190,0:00:07.550 a couple of small little mistakes in there has been corrected as well 0:00:07.550,0:00:10.869 and that's at this location on the web 0:00:10.869,0:00:17.869 I also have this URL at the end of my talk 0:00:24.699,0:00:30.339 I'm going to start with a brief history -of the MIPS platform +of the MIPS platform 0:00:30.339,0:00:32.640 I go into this in a lot of detail in my paper 0:00:32.640,0:00:34.960 so I'm going to just hit 0:00:34.960,0:00:41.960 some of the highlights here. 0:00:43.620,0:00:46.300 interesting parts here are that there are 0:00:46.300,0:00:47.560 two implementations of MIPS 0:00:47.560,0:00:52.680 one's a thirty-two bit implementation -one's a sixty-two bit implementation +one's a sixty-four bit implementation 0:00:52.680,0:00:55.920 that evolved over time 0:00:55.920,0:01:01.240 initially each of the implementations was cumulative 0:01:01.240,0:01:06.580 with a prior implementation -so a MIPS VI or V processor +so a MIPS VI or MIPS V processor 0:01:06.580,0:01:12.860 will implement anything MIPS IV implemented and 0:01:12.860,0:01:15.170 over time this was decided 0:01:15.170,0:01:22.170 that not to be such a good idea so the way this MIPS 0:01:22.490,0:01:27.060 ISA's that are available are MIPS 32 and MIPS 64 0:01:27.060,0:01:27.590 and those define 0:01:27.590,0:01:30.410 a base set in the number of options 0:01:30.410,0:01:34.640 that can be added 0:01:34.640,0:01:42.640 options for DSD processing, options for multiple instruction execution at the same time, SIMV sorts of things 0:01:44.580,0:01:51.580 -and so that’s kind of the history on MIPS in a nutshell +and so that's kind of the history on MIPS in a nutshell 0:01:52.470,0:01:56.189 the other interesting piece was that happened with MIPS 0:01:56.189,0:01:58.490 is the original 0:01:58.490,0:02:00.180 MIPS ISA didn't define the TLBs 0:02:00.180,0:02:04.030 and all that and how that was interacting with the CPUs 0:02:04.030,0:02:05.060 there were a number of variations 0:02:05.060,0:02:10.569 over time and when the never embedded MIPS 0:02:10.569,0:02:14.539 ISA's were created 0:02:14.539,0:02:17.999 that information was specified as well 0:02:17.999,0:02:23.449 so that it's easier to write one kernel that will run on each of the processors 0:02:23.449,0:02:27.139 after they got some experience with the different processors 0:02:27.139,0:02:30.409 they updated the spec to come up with 0:02:30.409,0:02:34.480 MIPS32r2 and MIPS64r2 0:02:34.480,0:02:41.029 these are enhancements for viewing with primarily with multiple issue 0:02:41.029,0:02:44.109 highly parallel processors 0:02:44.109,0:02:47.189 one the things you would have to do prior to that changing 0:02:47.189,0:02:49.419 the CLB you would execute 0:02:49.419,0:02:53.249 a number of no ops so that 0:02:53.249,0:02:56.879 the processor pipeline would flush 0:02:56.879,0:03:03.879 -and on MIPS R4000 you would either have to say send them on -and on MIPS R10000 +and on MIPS R4000 you need there was six +and on MIPS R10000 you need there was twelve 0:03:04.409,0:03:06.359 -some of the newer processors you don’t know +some of the newer processors you are going to know 0:03:06.359,0:03:07.060 how many you had 0:03:07.060,0:03:13.549 to execute because so many things were executing in parallel so they created some new instructions to 0:03:13.549,0:03:16.139 help you out with that 0:03:16.139,0:03:23.139 plus a couple of other things for making embedding easier and those are the two 0:03:25.469,0:03:26.809 core ISA's that FreeBSD 0:03:26.809,0:03:28.749 primarily targets 0:03:28.749,0:03:29.689 are the embedded 0:03:29.689,0:03:31.899 -MIPS APIs +MIPS ABIs 0:03:31.899,0:03:34.069 -the APIs sorry the ISAs +the ABIs sorry the ISAs 0:03:34.069,0:03:36.589 for prior MIPS chips 0:03:36.589,0:03:39.969 probably would work with FreeBSD MIPS 0:03:39.969,0:03:43.459 nobody has taken the time to make them work 0:03:43.459,0:03:45.419 the other interesting thing 0:03:45.419,0:03:47.239 back in MIPS history is 0:03:47.239,0:03:48.799 there are a number of different 0:03:48.799,0:03:51.949 ABIs 0:03:51.949,0:03:57.259 the original 32 bit ABI which was later remained to o32 which was 0:03:57.259,0:03:58.750 for the R2000 and 3000 0:03:58.750,0:04:00.489 specified 32 bit registers 0:04:00.489,0:04:03.909 and a MIPS 2 0:04:03.909,0:04:10.909 ISA those replaced when SGI introduced 4000 based 0:04:12.879,0:04:18.109 machines with n32 and n64 0:04:18.109,0:04:19.049 n64 is 0:04:19.049,0:04:21.349 a fairly straight forward 0:04:21.349,0:04:25.629 64 bit ABI there's 0:04:25.629,0:04:27.929 nothing really all that weird about it 0:04:27.929,0:04:32.490 except the one weird thing for all MIPS ABIs is that 0:04:32.490,0:04:33.660 it's specified all the library code 0:04:33.660,0:04:35.889 has to be picked code even for static linking 0:04:35.889,0:04:38.999 0:04:38.999,0:04:42.520 n32 is a weird hybrid 0:04:42.520,0:04:47.669 and I'll get into that a little bit later but it's 0:04:47.669,0:04:48.650 -an ABI that’s designed +an ABI that's designed 0:04:48.650,0:04:54.179 to allow transition from old code to new code 0:04:54.179,0:05:00.930 here in this context old code to new code was code written before 1995 or so 0:05:00.930,0:05:06.630 to new code which was being written since then with 64 bit 0:05:06.630,0:05:10.829 it has a number of interesting 0:05:10.829,0:05:16.639 idiosyncrasies 0:05:16.639,0:05:19.500 that happened when you tried to squeeze 0:05:19.500,0:05:20.719 when you tried to 0:05:20.719,0:05:24.410 -fit a 32 bit ABI on a 64 bit resident +fit 32 bit ABI to 64 bit registers and now 0:05:24.410,0:05:31.410 come later for some of the work that has done 0:05:35.090,0:05:37.529 So FreeBSD MIPS is been 0:05:37.529,0:05:40.680 around for a very long time -it's not just been around in the previous +it's not just been around in the FreeBSD tree 0:05:40.680,0:05:43.449 for along time initial ports 0:05:43.449,0:05:46.339 for FreeBSD MIPS 0:05:46.339,0:05:50.249 was in the 3.x time frame due to persistence 0:05:50.249,0:05:52.940 did a FreeBSD port to a 0:05:52.940,0:05:56.879 custom piece of 0:05:56.879,0:06:02.160 silicon that they had which had a MIPS core embedded in it and 0:06:02.160,0:06:09.160 and excuse me 0:06:11.009,0:06:16.749 and at the time they were looking for people in the FreeBSD community to commit this port back to the FreeBSD tree 0:06:16.749,0:06:18.539 there were a number of problems though 0:06:18.539,0:06:20.300 you couldn't just run this port 0:06:20.300,0:06:21.770 on a 0:06:21.770,0:06:24.280 particular on any given MIPS platform 0:06:24.280,0:06:29.289 you couldn't run it on a SGI MIPS you couldn't run it on an old deck station 0:06:29.289,0:06:30.960 it had a 0:06:30.960,0:06:32.999 high number of 0:06:32.999,0:06:38.689 tweaks in it for the custom silicon that they ran it 0:06:38.689,0:06:39.889 so interested the developer community was 0:06:39.889,0:06:42.289 ya we like a MIPS port but 0:06:42.289,0:06:49.289 we don't have any hardware to run it against and it would be a big effort to take the code that you have done and do it to 0:06:51.279,0:06:54.610 the platforms that we have access to 0:06:54.610,0:06:57.369 so 0:06:57.369,0:06:59.169 there were a lot of talks back and forth in this time frame 0:06:59.169,0:07:01.239 between members of the 0:07:01.239,0:07:03.629 -free BSD community +FreeBSD community 0:07:03.629,0:07:05.899 and Juniper networks 0:07:05.899,0:07:08.729 and 0:07:08.729,0:07:11.669 they basically went nowhere 0:07:11.669,0:07:13.030 the fist internet bubble crashed 0:07:13.030,0:07:15.429 0:07:15.429,0:07:18.809 so it languished 0:07:18.809,0:07:19.829 everywhere except 0:07:19.829,0:07:20.930 inside of juniper 0:07:20.930,0:07:27.179 where they kept developing it and improving it over the years so 0:07:27.179,0:07:27.870 about the same time 0:07:27.870,0:07:30.500 I became interested in getting 0:07:30.500,0:07:32.300 FreeBSD up and running on the MIPS 0:07:32.300,0:07:33.979 so I got 0:07:33.979,0:07:34.539 the basic LibC support 0:07:34.539,0:07:37.429 going and the basic tool chains going in the tree 0:07:40.219,0:07:42.550 -with some help from David O’Brian +with some help from David O'Brien 0:07:42.550,0:07:44.859 and 0:07:44.859,0:07:47.159 kept trying to talk up different 0:07:47.159,0:07:53.499 people to try their for people who had more time than I had to get interested in it to pick up the banner 0:07:53.499,0:07:55.809 and this was 0:07:55.809,0:07:57.339 right after the internet 0:07:57.339,0:07:58.090 bubble burst 0:07:58.090,0:08:00.020 -people didn’t have a lot of spare time +people didn't have a lot of spare time they were too busy 0:08:00.020,0:08:04.449 just surviving to do a MIPS port 0:08:04.449,0:08:06.520 so consequently the initial 0:08:06.520,0:08:08.819 work that I had done in 1999 was removed 0:08:08.819,0:08:15.819 three years later in 2002 when no progress had been made 0:08:18.910,0:08:21.229 a few years later 0:08:21.229,0:08:26.489 Julie Mallett started putting FreeBSD 0:08:26.489,0:08:32.990 to the SGI platform and he 0:08:32.990,0:08:34.520 got his SGI box booting into single user mode 0:08:34.520,0:08:37.550 0:08:37.550,0:08:39.380 but his situation 0:08:39.380,0:08:41.270 changed he didn't have 0:08:41.270,0:08:44.229 the time to 0:08:44.229,0:08:49.040 take it from single use mode to multi user mode to make it stable 0:08:49.040,0:08:51.720 he did this work in the Perforce repository 0:08:51.720,0:08:53.800 with one of the early examples of a 0:08:53.800,0:08:56.570 large body of work that was done 0:08:56.570,0:08:57.270 outside 0:08:57.270,0:08:58.620 FreeBSD 0:08:58.620,0:09:00.890 CVS tree 0:09:00.890,0:09:06.710 but inside of Perforce so that interested parties can look at it and work on it 0:09:06.710,0:09:07.920 since it was 0:09:07.920,0:09:13.890 SGI boxes and at the time 0:09:13.890,0:09:15.790 people call it the SGI boxes it was targeting 0:09:15.790,0:09:17.420 more obsolete 0:09:17.420,0:09:21.160 part of the developers in the community 0:09:21.160,0:09:26.310 really supported this also as 0:09:26.310,0:09:28.430 Julie would admit 0:09:28.430,0:09:30.700 she took a lot of shortcuts 0:09:30.700,0:09:34.670 to get the pot up and running 0:09:34.670,0:09:35.870 that were the basis of 0:09:35.870,0:09:42.870 a lot of the stability problems that she found out wound out having when she tried to go from single user to multi user 0:09:45.120,0:09:46.739 so the important thing here though 0:09:46.739,0:09:49.940 is that all of this code existed 0:09:49.940,0:09:51.320 Perforce repository 0:09:51.320,0:09:56.530 and just kept existing out in the Perforce repository 0:09:56.530,0:10:01.120 Julie took a lot of that code from that BSD and 0:10:01.120,0:10:04.020 in an effort to make it simpler I think wrote portions of it 0:10:04.020,0:10:06.970 0:10:06.970,0:10:11.480 but it also was simpler so there was 0:10:11.480,0:10:14.210 carefully selected pieces of code wound up in 0:10:14.210,0:10:17.010 later projects 0:10:17.010,0:10:24.010 and that was one of the value of this effort 0:10:24.440,0:10:28.940 once Julie lost interest in this she announced it publicly: I don't have time to do this 0:10:28.940,0:10:32.050 this is going nowhere 0:10:32.050,0:10:34.490 BSDcan 0:10:34.490,0:10:35.920 three years ago now 0:10:35.920,0:10:36.940 myself and 0:10:36.940,0:10:38.130 Peter Wemm 0:10:38.130,0:10:39.280 John Baldwin and 0:10:39.280,0:10:42.580 a few other people 0:10:42.580,0:10:44.400 Sat down and realized hey 0:10:44.400,0:10:46.600 there's a lot of people 0:10:46.600,0:10:47.910 who want FreeBSD 0:10:47.910,0:10:51.710 and FreeBSD's features to run 0:10:51.710,0:10:56.660 in embedded platform to run on 0:10:56.660,0:10:57.820 very cheap MIPS routers that 0:10:57.820,0:11:02.970 were becoming available at the time 0:11:02.970,0:11:04.680 and we decided hey 0:11:04.680,0:11:06.290 let's see if we can get 0:11:06.290,0:11:10.290 a jump start on this MIPS project 0:11:10.290,0:11:11.770 if the going generates 0:11:11.770,0:11:13.210 some excitement 0:11:13.210,0:11:16.310 may be we'll hit critical mass 0:11:16.310,0:11:17.060 and we did 0:11:17.060,0:11:19.340 a number of things 0:11:19.340,0:11:21.950 well we got the tool chain 0:11:21.950,0:11:25.280 up and running we got the kernel building 0:11:25.280,0:11:27.120 the MI portions 0:11:27.120,0:11:29.860 not the MD portions 0:11:29.860,0:11:32.000 unfortunately 0:11:32.000,0:11:37.000 we made a mistake on how we were doing this 0:11:37.000,0:11:41.950 we included a secret part of the Perforce repository 0:11:41.950,0:11:44.260 so there was no commit mails nobody saw what was going on 0:11:44.260,0:11:48.730 nobody knew what was happening 0:11:48.730,0:11:51.060 and the thinking at the time was well we'll 0:11:51.060,0:11:56.690 get it to a certain point and then announce it we don't want to have a public failure on our hands 0:11:56.690,0:11:59.310 so instead we had a private failure on our hands because 0:11:59.310,0:12:01.010 nobody knew it was there 0:12:01.010,0:12:07.640 nobody was excited about it we could access the code 0:12:07.640,0:12:08.540 so that was 0:12:08.540,0:12:10.020 not a good idea 0:12:10.020,0:12:12.260 you're an 0:12:12.260,0:12:13.770 open source project 0:12:13.770,0:12:20.770 you should learn from this mistake to make sure you do things in an open manner 0:12:22.140,0:12:23.480 so about six months after 0:12:23.480,0:12:25.170 we started this project 0:12:25.170,0:12:28.100 it was clear that it was going nowhere 0:12:28.100,0:12:31.110 about this time there were two individuals 0:12:31.110,0:12:33.690 Wojciech Koszek and 0:12:33.690,0:12:33.960 Oleksandr Tymoshenko 0:12:33.960,0:12:37.570 0:12:37.570,0:12:38.760 -approach different members of the +approached different members of the 0:12:38.760,0:12:43.050 had approached Julie and said hey I want to take your old port and make it better 0:12:43.050,0:12:44.100 0:12:44.100,0:12:46.500 0:12:46.500,0:12:49.560 and they talked to Julie about 0:12:49.560,0:12:50.550 our new port and 0:12:50.550,0:12:51.570 she says well 0:12:51.570,0:12:52.910 there's this new port 0:12:52.910,0:12:53.889 so these two took 0:12:53.889,0:12:56.100 the best pieces of 0:12:56.100,0:13:00.140 both of these efforts 0:13:00.140,0:13:02.910 and got FreeBSD MIPS booting on 0:13:02.910,0:13:04.250 emulated hardware 0:13:04.250,0:13:05.410 at the end of 2006 0:13:05.410,0:13:06.320 0:13:06.320,0:13:13.320 and then on real hardware in 2007 -on a couple of different MIPS processes +on a couple of different MIPS processors 0:13:15.920,0:13:18.290 and then 0:13:18.290,0:13:20.340 things started to 0:13:20.340,0:13:21.790 languish a little bit 0:13:21.790,0:13:24.190 except for one piece 0:13:24.190,0:13:25.990 Cavium Networks 0:13:25.990,0:13:28.380 saw this work and took one of the 0:13:28.380,0:13:30.360 MIPS 2 snapshots 0:13:30.360,0:13:31.639 and ported it to their 0:13:31.639,0:13:35.450 Octeon series of processors 0:13:35.450,0:13:39.860 The Octeon is a multicore MIPS processor 0:13:39.860,0:13:41.160 that has a 0:13:41.160,0:13:45.970 the number of additional units in it 0:13:45.970,0:13:49.370 for dealing with networking efficiently 0:13:49.370,0:13:50.970 dealing with moving packets 0:13:50.970,0:13:53.270 scheduling work 0:13:53.270,0:13:55.200 among the multiple CPUs 0:13:55.200,0:13:58.960 it's a fairly interesting platform 0:13:58.960,0:14:00.390 also 0:14:00.390,0:14:02.520 Bruce Sampson 0:14:02.520,0:14:03.600 got it running on the 0:14:03.600,0:14:05.960 the Sentry-5 0:14:05.960,0:14:06.730 series Broadcom 0:14:06.730,0:14:09.990 parts 0:14:09.990,0:14:11.860 the Sentry-5 series 0:14:11.860,0:14:15.490 which I'll get to in a little bit is different than 0:14:15.490,0:14:17.500 the Linksys WRTs 0:14:17.500,0:14:22.510 It's a higher quality implementation of MIPS so he was able to do that 0:14:22.510,0:14:25.850 so 0:14:25.850,0:14:28.460 we were seeing some small incremental steps 0:14:28.460,0:14:29.830 this little thing is added 0:14:29.830,0:14:32.930 that little thing is added 0:14:32.930,0:14:36.830 -it was still moving very slowly +but it was still moving very slowly 0:14:36.830,0:14:42.550 it took a year and a half to get to this point 0:14:42.550,0:14:44.690 Juniper work up again 0:14:44.690,0:14:47.010 or at least decided 0:14:47.010,0:14:48.470 we need to upgrade from 0:14:48.470,0:14:51.490 our FreeBSD 4.x 0:14:51.490,0:14:57.340 to FreeBSD 6.1 to remain competitive there's a number of features 0:14:57.340,0:15:02.930 in FreeBSD as it happens we need to have those in our product 0:15:02.930,0:15:04.890 so they upgraded 0:15:04.890,0:15:05.810 their version of FreeBSD 0:15:05.810,0:15:07.400 called JunOS 0:15:07.400,0:15:09.220 to 6.1 0:15:09.220,0:15:10.680 as part 0:15:10.680,0:15:17.680 of this effort they upgraded all of their MIPS ports they had several different ones 0:15:18.060,0:15:20.410 unfortunately 0:15:20.410,0:15:22.180 they weren't able just to release these ports because they had been written with 0:15:22.180,0:15:24.630 material that came under NDA 0:15:24.630,0:15:29.580 they weren't allowed to disclose some of the 0:15:29.580,0:15:33.060 intellectual property for the specific MIPS chips 0:15:33.060,0:15:37.920 but they recognized the value of having a good FreeBSD MIPS support 0:15:37.920,0:15:38.929 so they 0:15:38.929,0:15:40.450 approached me with a 0:15:40.450,0:15:47.450 sanitized port that they had done they ported their code to an idealized MIPS machine one of the ones that conformed with the 0:15:52.300,0:15:56.770 -MIPS 64 MIPS 32 ISA +MIPS 64 MIPS 32 ISA 0:15:56.770,0:16:01.020 they gave this code to me in September of 2007 0:16:01.020,0:16:03.360 and I started reviewing it 0:16:03.360,0:16:07.780 but the review was very slow it was a busy time for me 0:16:07.780,0:16:09.550 I was in the process 0:16:09.550,0:16:12.270 of changing jobs 0:16:12.270,0:16:15.520 so in 0:16:15.520,0:16:16.970 November of 2007 0:16:16.970,0:16:19.370 I started working for CISCO systems 0:16:19.370,0:16:22.310 CISCO systems had spearheaded an effort 0:16:22.310,0:16:24.450 to put FreeBSD as a part of the next 0:16:24.450,0:16:26.550 generation of routers they were producing 0:16:26.550,0:16:31.270 or at least for a couple of business units 0:16:31.270,0:16:34.130 and ultimately that project was abandoned 0:16:34.130,0:16:36.240 but before it was abandoned 0:16:36.240,0:16:40.330 we got FreeBSD MIPS up and going we merged 0:16:40.330,0:16:44.840 MIPS 2 code with the Juniper code the Juniper code was very good 0:16:44.840,0:16:48.580 for things like PMAP and VM system 0:16:48.580,0:16:55.580 the basic nuts and bolts of the system from a memory process point of view very stable 0:16:58.170,0:17:02.230 it had one driver in it SIO 0:17:02.230,0:17:03.259 one driver 0:17:03.259,0:17:04.960 wasn't really enough to produce a viable system 0:17:04.960,0:17:06.940 so we took 0:17:06.940,0:17:11.700 all the drivers and startup code from the MIPS 2 effort 0:17:11.700,0:17:13.920 that had been going on 0:17:13.920,0:17:20.010 so drivers for particular SOC mix drivers for 0:17:20.010,0:17:27.010 switches that were in these devices and so forth we ported those over and 0:17:27.130,0:17:33.400 got everything booting and just before 0:17:33.400,0:17:36.760 BSDcan 2008 0:17:36.760,0:17:38.130 we committed all this to the 0:17:38.130,0:17:38.590 tree except 0:17:38.590,0:17:44.360 for the Cavium port it had similar 0:17:44.360,0:17:50.510 IP issues that we needed to resolve before we committed it 0:17:50.510,0:17:54.410 so today we target MIPS 32 MIPS 64 we run 0:17:54.410,0:17:59.310 only o32 binaries we've not added the 0:17:59.310,0:17:59.730 n32 and n64 support 0:17:59.730,0:18:02.220 it runs on 0:18:02.220,0:18:04.380 about six different 0:18:04.380,0:18:11.380 SOCs different cores I'll get into those in a few minutes 0:18:13.620,0:18:14.840 there are some SMP support 0:18:14.840,0:18:17.240 for the different multicore chips 0:18:17.240,0:18:19.740 but its not 0:18:19.740,0:18:25.990 well tested we did not enable it because we could not test it to see if it works 0:18:25.990,0:18:31.809 beyond one early experiment we did 0:18:31.809,0:18:33.519 we've fixed a lot of stability 0:18:33.519,0:18:40.519 bugs since then we don't know if you turn it back on whether it'll work or not 0:18:42.020,0:18:42.529 -so here’s the different +so here's the different 0:18:42.529,0:18:43.890 SOCs that FreeBSD MIPS 0:18:43.890,0:18:49.880 runs on today it runs on the 0:18:49.880,0:18:51.420 ADM5120 in 0:18:51.420,0:18:56.720 united states anyway there are number of 0:18:56.720,0:19:02.670 small routers or -servers +tunnel servers 0:19:02.670,0:19:04.750 wireless devices as well 0:19:04.750,0:19:08.450 that have this chip in them it's 0:19:08.450,0:19:11.000 20 or 30 or 40 dollars to purchase 0:19:11.000,0:19:18.000 a high end development board is about -80 to 85 dollars +80 to 85 dollars that with a little +more memory and a little more flash 0:19:19.860,0:19:25.320 we also do support one of the IDT network processors 0:19:25.320,0:19:28.620 as well as the 0:19:28.620,0:19:30.530 Broadcom 0:19:30.530,0:19:35.010 5000 6000 cores the Broadcom 4000 cores has a 0:19:35.010,0:19:37.930 number of bugs in its 0:19:37.930,0:19:40.710 pipelining so it requires 0:19:40.710,0:19:41.370 changes to 0:19:41.370,0:19:44.280 -GCC and BIN utils to schedule +GCC and Binutils to schedule 0:19:44.280,0:19:51.280 instructions correctly and appropriately unfortunately these compilers changes whenever 0:19:53.250,0:19:59.440 donated back to the SFS or the FSF for inclusion 0:19:59.440,0:20:01.300 in these projects 0:20:01.300,0:20:03.890 in a timely fashion so they are not in 0:20:03.890,0:20:10.150 the base and the patches don't exist for the versions of the compilers that are in FreeBSD 0:20:10.150,0:20:14.600 so if we are to support this kernel 0:20:14.600,0:20:15.909 we would need some kind of 0:20:15.909,0:20:20.810 out of tree tools 0:20:20.810,0:20:25.620 and general the project tries not to do that although as we move in 0:20:25.620,0:20:32.620 to the embedded environment we may be forced to do that more and more 0:20:32.790,0:20:39.790 so here is a rundown of the different pieces of the ADM5120 that supports the basics 0:20:46.919,0:20:51.200 the only thing that these boards have is that is significant that 0:20:51.200,0:20:55.050 isn't supported right now is USB nobody who has done 0:20:55.050,0:20:56.390 development has had a board 0:20:56.390,0:21:03.390 with USB on it so we don't support USB 0:21:04.660,0:21:07.620 on the IDT the NIC 0:21:07.620,0:21:14.620 -and the serial console are working there’s +and the serial console are working there's 0:21:15.700,0:21:17.450 support for adding devices 0:21:17.450,0:21:22.100 on the PCI bus 0:21:22.100,0:21:23.860 the router board 0:21:23.860,0:21:25.090 the RB532 0:21:25.090,0:21:30.090 is one of the commercially available boards that has 0:21:30.090,0:21:31.470 this chip on it 0:21:31.470,0:21:34.130 it's not a particularly common chip 0:21:34.130,0:21:35.670 but Wojciech Koszek 0:21:35.670,0:21:37.590 had one of these laying around 0:21:37.590,0:21:39.160 and decided hey 0:21:39.160,0:21:40.960 I'll get FreeBSD working on that it's 0:21:40.960,0:21:46.340 well documented and he was able to do this 0:21:46.340,0:21:51.770 again some more details on the Broadcom platform 0:21:51.770,0:21:56.760 interesting things to note here is that 0:21:56.760,0:22:03.440 Broadcom MIPS have a relatively unique they have a way you could actually 0:22:03.440,0:22:07.160 enumerate all the devices that are into the system object 0:22:07.160,0:22:11.770 and most of the other systems that are available 0:22:11.770,0:22:13.120 you'll have 0:22:13.120,0:22:16.990 to know oh I'm on MPC8548 0:22:16.990,0:22:22.190 our PC I have this device at this address this device at this address and whatever 0:22:22.190,0:22:23.780 you have to compile in tables 0:22:23.780,0:22:25.370 but Broadcom products 0:22:25.370,0:22:28.289 you can go and ask 0:22:28.289,0:22:35.210 what devices are out there? and enumerate through them 0:22:35.210,0:22:37.950 and we support doing that 0:22:37.950,0:22:41.020 in a lot of ways it's like PCI where you can ask each individual device 0:22:41.020,0:22:44.620 -what’s your ID and it comes back with an ID +what's your ID and it comes back with an ID 0:22:44.620,0:22:51.620 you can use that to select the proper driver for each of the devices 0:22:53.429,0:22:55.560 so work is currently underway 0:22:55.560,0:22:59.890 and this is in various degrees of completion 0:22:59.890,0:23:01.870 there's some work being done to get the Broadcom 0:23:01.870,0:23:04.309 6000 series working well 0:23:04.309,0:23:08.020 0:23:08.020,0:23:08.580 Cavium networks 0:23:08.580,0:23:09.249 has a full 0:23:09.249,0:23:11.380 Octeon port that supports 0:23:11.380,0:23:12.510 all the 0:23:12.510,0:23:14.710 members of the Octeon family 0:23:14.710,0:23:15.809 supports all the auxiliary 0:23:15.809,0:23:17.250 hardware that is on that 0:23:17.250,0:23:19.610 all the network packet 0:23:19.610,0:23:26.610 engine technology all the crypto technology that the MIPS 0:23:26.640,0:23:28.990 -multi core MIPS products have +multi-core MIPS products have 0:23:28.990,0:23:31.820 one problem though is 0:23:31.820,0:23:34.320 that it was taken with the old MIPS 2 snapshot 0:23:34.320,0:23:40.770 -and it is against FreeBSD that’s about +and it is against FreeBSD that's about 22 months old at this point 0:23:40.770,0:23:44.590 so even though the port itself is fairly good but it's a fairly old version of 0:23:44.590,0:23:48.880 FreeBSD so 0:23:48.880,0:23:51.840 it's a lot of work to bring it forward I'm working on the Audigy 0:23:51.840,0:23:54.950 Au 1xxx port 0:23:54.950,0:24:00.830 which is languishing for a lack lo time 0:24:00.830,0:24:07.380 Oleksandr Tymoshenko has gone to work with a couple of other people 0:24:07.380,0:24:14.380 whose name are escaping me Dan White 0:24:18.880,0:24:19.410 um-hum 0:24:19.410,0:24:21.730 yeah just look Dan on the new Atheros 0:24:21.730,0:24:22.880 AR7000 and 0:24:22.880,0:24:28.530 AR9000 parts so this is just a 0:24:28.530,0:24:30.300 wondering list of what I'm working on 0:24:30.300,0:24:37.300 you can read it or I can read it so I'll just go to the next slide 0:24:44.260,0:24:46.660 we have a pseudo console working 0:24:46.660,0:24:49.040 we have the NIC working 0:24:49.040,0:24:51.920 there's some stability issues 0:24:51.920,0:24:52.769 that Oleksandr is 0:24:52.769,0:24:58.990 looking into he's trying to figure out 0:24:58.990,0:25:01.530 what's causing the underling 0:25:01.530,0:25:03.910 stability issues 0:25:03.910,0:25:07.299 this work is being done in the 0:25:07.299,0:25:10.890 -FreeBSD SV repository +FreeBSD SVN repository 0:25:10.890,0:25:14.460 although not in the naming tree one of the things that 0:25:14.460,0:25:21.460 the project has done is it's transition of most of the use of Perforce into subversion -so there’s a project MIPS tree that this work +so there's a project MIPS tree that this work is being done in if you want to 0:25:26.770,0:25:31.490 check it out and look at it for yourself 0:25:31.490,0:25:34.470 the Cavium port I talked about a little bit 0:25:34.470,0:25:35.470 it supports all 3 ABIs 0:25:35.470,0:25:39.450 but its either or it doesn't support 0:25:39.450,0:25:41.429 all 3 at the same time 0:25:41.429,0:25:43.700 you can either have an o32 system 0:25:43.700,0:25:48.770 or a n32 system or a n64 system 0:25:48.770,0:25:50.410 so that portion of the 0:25:50.410,0:25:52.250 port needs some additional work 0:25:52.250,0:25:58.340 before we can roll it into the system 0:25:58.340,0:26:01.940 one of the other interesting things is 0:26:01.940,0:26:06.740 that this port you can build entirely on a Linux system you don't need a FreeBSD system to host it 0:26:06.740,0:26:08.830 normally with FreeBSD 0:26:08.830,0:26:10.230 you have to build FreeBSD on FreeBSD 0:26:10.230,0:26:12.620 people have either 0:26:12.620,0:26:14.520 FreeBSD boxes or virtual machines 0:26:14.520,0:26:19.670 around to build it 0:26:19.670,0:26:21.990 and ported in network tools 0:26:21.990,0:26:23.210 like NetBSD has done 0:26:23.210,0:26:30.210 -so that you can build an environment that’s +so that you can build an environment that's more foreign than just FreeBSD 0:26:33.410,0:26:34.980 and the last item 0:26:34.980,0:26:38.650 Cavium has Cavium MIPS isn't like other MIPS 0:26:38.650,0:26:42.330 in some ways there are a number of extensions to the MIPS 0:26:42.330,0:26:46.350 ISAs that Cavium has done to improve performance 0:26:46.350,0:26:49.610 to get better 0:26:49.610,0:26:56.520 validation semantics than you can have from normal MIPS instructions so 0:26:56.520,0:26:58.690 this port also makes use of those 0:26:58.690,0:27:01.980 so that needs the special tools from Cavium 0:27:01.980,0:27:04.140 fortunately Cavium is giving 0:27:04.140,0:27:07.110 their technology pushed back into 0:27:07.110,0:27:10.550 the FSF releases 0:27:10.550,0:27:11.210 unfortunately it's being 0:27:11.210,0:27:12.160 pushed back to GPLP 3 versions 0:27:12.160,0:27:14.940 so 0:27:14.940,0:27:20.480 I'm not sure exactly how the project would deal with that the patches they have 0:27:20.480,0:27:27.480 will use GPLP 2 code, so those can potentially can come into the project 0:27:34.440,0:27:36.710 RMI has a 0:27:36.710,0:27:43.710 FreeBSD 6.1 port they are trying to work with the project to get into the tree 0:27:44.900,0:28:01.900 to put hardware into the project cluster so that they can be well supported by the project that code is not yet available even to the internal developers who are still talking and trying to make it all happen 0:28:08.350,0:28:15.350 I talked about that -there’s a number of items that needs to be done for +there's a number of items that needs to be done for 0:28:17.549,0:28:19.830 the next port as it exists in Perforce sorry 0:28:19.830,0:28:21.909 as it exists in the 0:28:21.909,0:28:28.909 FreeBSD subversion tree 0:28:29.460,0:28:30.680 the first one is that we need to 0:28:30.680,0:28:34.820 get a n32 and n64 support working 0:28:34.820,0:28:38.870 along with Multilib support in the tool chain so that 0:28:38.870,0:28:45.870 -we can have the ABIs co exist on the platform +we can have the different ABIs coexist on the platform 0:28:46.890,0:28:53.890 we have a emulation working configuration with FreeBSD MIPS you can run FreeBSD MIPS emulation if you want to try it out or 0:28:57.530,0:29:02.870 your developing the code QEMU 0:29:02.870,0:29:05.130 is a little bit more widely deployed 0:29:05.130,0:29:07.850 and we'll like to have a configuration that works with that 0:29:07.850,0:29:10.850 right now there's a number of 0:29:10.850,0:29:15.030 problems relating to interrupts that need to be solved and looked at 0:29:15.030,0:29:19.030 we also need to have 64-bit PMAP support with some 0:29:19.030,0:29:25.540 rudiments of that in code right now but it's not enough to bring up 0:29:25.540,0:29:32.540 -64-bit kernel 64-bit +64-bit kernel 64-bit user space and 0:29:35.630,0:29:36.260 we need to take 0:29:36.260,0:29:43.260 the SMP code either from the Cavium port and make it work so that we can take advantage of the multicore processors 0:29:45.950,0:29:48.040 one of the nice things about the FreeBSD project 0:29:48.040,0:29:49.470 is that we've got 0:29:49.470,0:29:52.750 good scalability on Intel 0:29:52.750,0:29:59.750 and we would presume that scalability would translate to multicore systems in the embedded world and we would like to 0:30:00.010,0:30:02.279 -take advantage of all the work that’s being done +take advantage of all the work that's being done 0:30:02.279,0:30:06.120 on Intel servers or the embedded space try to capture some of the 0:30:06.120,0:30:10.130 embedded market, finally 0:30:10.130,0:30:11.110 we need more 0:30:11.110,0:30:13.640 we need more support from system on chips 0:30:13.640,0:30:15.900 that's going to be a 0:30:15.900,0:30:19.950 a continuing battle 0:30:19.950,0:30:22.480 new parts are released all the time 0:30:22.480,0:30:28.610 FreeBSD needs to be ported to those 0:30:28.610,0:30:32.230 and in the embedded world it's a bit different than on Intel 0:30:32.230,0:30:36.010 where everything has a standard address you have standard devices 0:30:36.010,0:30:39.780 -in the embedded world what ever is +in the embedded world is not very convenient to the embedded designer 0:30:39.780,0:30:46.780 if they can save a little bit of money by putting something in a different location they will so each new 0:30:47.500,0:30:54.500 -processors main chip comes out we need to take the time +processors each new chip comes out we need to take the time to sit down and get 0:31:08.580,0:31:09.930 FreeBSD working on that so that wraps up some of the general MIPS history and that kind of occurred status support 0:31:09.930,0:31:10.850 we are going to talk a little bit about some 0:31:10.850,0:31:13.090 of the items that are relatively new to 0:31:13.090,0:31:20.090 FreeBSD that would make it attractive for embedding or running in an embedded environment 0:31:22.400,0:31:29.400 the PowerPC and ARM architecture have a number of things that have been added lately 0:31:30.350,0:31:37.350 Rahul was talking about some of the prescale improvements for multicore -chips and +high-end powerful chips and 0:31:39.350,0:31:40.750 in an earlier talk 0:31:40.750,0:31:44.410 there's some other things I'll talk about here in a second 0:31:44.410,0:31:45.640 one of the things that I just 0:31:45.640,0:31:48.910 committed to the tree is the ability to build 0:31:48.910,0:31:51.970 the system compilers 0:31:51.970,0:31:56.090 for other architectures so you can use them as a cross compiler 0:31:56.090,0:31:58.060 natively rather than carry inside 0:31:58.060,0:31:59.230 the FreeBSD 0:31:59.230,0:32:03.820 build system again this is similar to 0:32:03.820,0:32:05.930 a lot of the build technology that 0:32:05.930,0:32:12.930 NetBSD has done for sometime 0:32:13.570,0:32:17.049 and that is the first step towards making 0:32:17.049,0:32:19.720 ports cross buildable 0:32:19.720,0:32:20.850 right now there are 0:32:20.850,0:32:27.850 three basic classes of ports there are the ports that have, are really stupid 0:32:27.990,0:32:31.230 -that just compiled a lot of .C programmers +that just compiled a lot of .C programs 0:32:31.230,0:32:32.260 those are very easy to point 0:32:32.260,0:32:33.460 and let the cross compiler 0:32:33.460,0:32:38.080 those just work 0:32:38.080,0:32:40.100 -there’s a class of ports that have been written +there's a class of ports that have been written 0:32:40.100,0:32:41.030 specifically 0:32:41.030,0:32:42.150 to understand 0:32:42.150,0:32:43.970 the new naming conventions 0:32:43.970,0:32:45.099 and you tell it 0:32:45.099,0:32:46.880 I want to compile 0:32:46.880,0:32:49.280 for an ARM 0:32:49.280,0:32:51.090 FreeBSD and it knows how to find 0:32:51.090,0:32:58.090 that compiler and build for it some of those ports work if you pass 0:33:00.020,0:33:07.020 the right configure arguments on the command-line -and then there’s a class of ports in the middle that +and then there's a class of ports in the middle that they build tools to build the rest of the port and these tools need to run natively 0:33:15.760,0:33:18.160 but they don't have any support for cross building so 0:33:18.160,0:33:20.610 it uses the target compiler 0:33:20.610,0:33:23.010 the try to build the .h files 0:33:23.010,0:33:24.170 or 0:33:24.170,0:33:25.080 whatever for the program to build 0:33:25.080,0:33:28.440 the .h files or whatever they are using but when 0:33:28.440,0:33:29.330 that program goes to run you get an error 0:33:29.330,0:33:30.770 because you can't run 0:33:30.770,0:33:37.010 it on binary on an x86 machine also in the third class of ports are 0:33:37.010,0:33:39.070 -there’s a number of ports that try to do +there's a number of ports that try to do cross-compilation 0:33:39.070,0:33:41.050 and got it wrong 0:33:41.050,0:33:48.050 -so that +so that it just don't work 0:33:49.549,0:33:55.200 so some of the other things in FreeBSD that are interesting to the embedded world are 0:33:55.200,0:33:56.260 we're starting to get a number of support for 0:33:56.260,0:34:01.750 a number of different devices and technologies I went into some of these in my paper 0:34:01.750,0:34:05.310 I'll highlight a few of them here one of the 0:34:05.310,0:34:09.649 -most important is NOR flash support in a +most important is the NOR flash support in 0:34:09.649,0:34:14.149 a lot of the low end routers switches that are 0:34:14.149,0:34:17.709 wireless access points that are available 0:34:17.709,0:34:21.219 they load off of NOR flash so having new drivers for that allows us 0:34:21.219,0:34:28.219 to get into that market and we can boot off of them we can manipulate the underlying flash 0:34:31.819,0:34:35.899 we do not yet have a flash file system, we really need one talk 0:34:35.899,0:34:38.159 about that a little bit more 0:34:38.159,0:34:40.119 in the embedded world pin count really really matters so 0:34:40.119,0:34:45.449 a lot of the devices are serial devices 0:34:45.449,0:34:48.329 and FreeBSD has got better 0:34:48.329,0:34:52.749 -support for serial protocols +support for different serial protocols 0:34:52.749,0:34:54.229 that has recently had a new 0:34:54.229,0:35:00.650 -USB sack integrated into the tree -we've had improvements to the I2c +USB stack integrated into the tree +we've had improvements to the I2C 0:35:00.650,0:35:07.650 support we've got rudiment we've got new support 0:35:07.699,0:35:14.089 -for I2s for the sound devices on both embedded systems +for I2S for the sound devices on both embedded systems and coincidentally on old 0:35:14.089,0:35:19.299 Macintosh laptops 0:35:19.299,0:35:20.650 we've got support for 0:35:20.650,0:35:27.149 the SPI bus which is a synchronous bus we've permanently 0:35:27.149,0:35:32.839 flashed a couple of other specialized devices 0:35:32.839,0:35:35.309 for years FreeBSD has also booted well 0:35:35.309,0:35:38.869 -with a compact flash on a x86 machine +with a Compact Flash on a x86 machine 0:35:38.869,0:35:40.839 while in the embedded space 0:35:40.839,0:35:47.449 -compact flash isn’t very well favored +Compact Flash isn't very well favored because it's a 50 pin interface 0:35:47.449,0:35:52.069 but the SD cards that you find in your cameras are very well favored because it's a 0:35:52.069,0:35:59.069 very small footprint and also it has 9 pins you can implement it in I think 4 or 5 pins 0:36:01.439,0:36:05.449 which makes it fairly attractive and low cost high 0:36:05.449,0:36:07.569 storage medium and FreeBSD 0:36:07.569,0:36:09.829 has a good SD stack 0:36:09.829,0:36:12.819 we recently added support 0:36:12.819,0:36:14.269 for the high-capacity 0:36:14.269,0:36:16.569 SD cards and for MMC cards 0:36:16.569,0:36:19.889 finally a lot of the 0:36:19.889,0:36:20.999 embedded systems 0:36:20.999,0:36:21.989 are wireless 0:36:21.989,0:36:27.459 have some kind of wireless technology 0:36:27.459,0:36:29.039 and FreeBSD has a fairly good 0:36:29.039,0:36:30.730 wireless access stack 0:36:30.730,0:36:35.519 access point stack written by Sam Leffler 0:36:35.519,0:36:39.889 so I'm mentioning it here as well 0:36:39.889,0:36:46.779 -there’s a number of features that +there's a number of features that are private or in another stacks 0:36:46.779,0:36:53.779 -on PowerPC there’s a number of additional cores +on PowerPC there's a number of additional cores that are supported 0:36:54.329,0:37:01.329 in addition to the free scale parts which are the top portion the E500 is a it's called a core 0:37:05.219,0:37:12.219 presented this in a lot of detail so I'll just skim over it these are all the ones that are listed 0:37:13.989,0:37:16.019 also been instrumental in driving 0:37:16.019,0:37:18.749 some of the other 0:37:18.749,0:37:21.299 PowerPC chip-sets 0:37:21.299,0:37:24.559 the AMCC 440 0:37:24.559,0:37:30.489 support he's been working on has -it booting single user multiuser ? +it booting single user or multiuser? 0:37:30.489,0:37:33.299 has it booting multiuser off of a USB 0:37:33.299,0:37:40.299 -flash , last summer he sponsored a student +flash, last summer he sponsored a student on the E300 yeah it's the E300 and the MPC5200 +that is 0:37:47.489,0:37:49.239 to bring up the FreeBSD on 0:37:49.239,0:37:54.889 the MPC5200 which is an E300 core it has an 0:37:54.889,0:37:58.669 number of differences between the 500 core 0:37:58.669,0:38:00.330 like -explained there’s a +explained there's a 0:38:00.330,0:38:07.330 number of things that are optional or different in the specification you need to code for 0:38:08.910,0:38:14.179 -there’s been some additional floating point support -that’s gone in and there’s some work underway for +there's been some additional floating point support +that's gone in and there's some work underway for the G5 Mac not embedded power platform 0:38:14.179,0:38:16.939 but some additional PowerPC 0:38:16.939,0:38:23.939 -infrastructure that’s going well +infrastructure that's going well 0:38:25.379,0:38:26.599 FreeBSD ARM 0:38:26.599,0:38:33.599 has recently gotten Marvel support for the 0:38:35.599,0:38:39.140 different members of the Orion family 0:38:39.140,0:38:46.140 -there’s three families of processors Orion, +there's three families of processors Orion, Kirkwood, and Discovery 0:38:46.400,0:38:53.400 that are supported 0:38:55.209,0:38:57.459 managed to get into the tree 0:38:57.459,0:38:59.679 0:38:59.679,0:39:00.539 so 0:39:00.539,0:39:07.539 -this company does really work +this company does really good work 0:39:08.629,0:39:15.219 -there’s also support for Samsung devices that are in the -open +there's also support for Samsung devices that are in the +Openmoko 0:39:15.219,0:39:17.029 and a couple of other boards 0:39:17.029,0:39:21.279 Sam Leffler recently added support 0:39:21.279,0:39:28.279 to the IXP 435 on Xscale boards chips 0:39:30.229,0:39:31.219 and there's some more 0:39:31.219,0:39:37.929 underway to get the Cirrus Logic family of ARM 9 parts to get into the tree 0:39:37.929,0:39:44.929 although that work is stalled the team working on it ran out of time 0:39:49.660,0:39:52.629 got interested in other things -so there’s a number of things +so there's a number of things 0:39:52.629,0:39:56.029 that the embedded world will be 0:39:56.029,0:40:00.299 very happy if FreeBSD did and 0:40:00.299,0:40:02.759 the biggest one is probably the 0:40:02.759,0:40:04.479 flash file system support 0:40:04.479,0:40:05.840 FreeBSD needs to have a flash 0:40:05.840,0:40:07.380 file system 0:40:07.380,0:40:10.049 with the number of 0:40:10.049,0:40:13.919 people talking about porting one from Linux or 0:40:13.919,0:40:20.919 -using the same ARM disc structure as +using the same understructure as one of the Linux file systems no need to completely reinvent the wheel here 0:40:28.069,0:40:29.819 in addition to some of the technical challenges that we have we need 0:40:29.819,0:40:36.819 greater marketing and out reach and documentation to show people that this is possible and a reasonable thing to do 0:40:42.199,0:40:45.199 so that's the end of my talk 0:40:45.199,0:40:46.560 I guess it's now the time for 0:40:46.560,0:40:47.629 questions 0:40:47.629,0:40:51.169 and here are the links again 0:40:51.169,0:40:52.359 to the paper and the slides 0:40:52.359,0:40:59.359 0:40:59.779,0:41:01.520 because that was what I put on the slides 0:41:01.520,0:41:02.370 0:41:02.370,0:41:04.469 will also work equally well 0:41:04.469,0:41:07.249 -there’s no slide intended +there's no slide intended 0:41:07.249,0:41:09.700 0:41:09.700,0:41:16.700 there was talk for a while of using DesktopBSD to do the packeting for the embedded to add some nice attributes 0:41:18.219,0:41:19.530 so any 0:41:19.530,0:41:26.530 of those technologies that would enable that anything that works will be a reasonable thing -are there any difficulties in +are there any difficulties in common with 0:41:39.599,0:41:41.829 bringing up an embedded system 0:41:41.829,0:41:45.259 from one SSC to another to a third or is every effort 0:41:45.259,0:41:46.719 -different +completely different from 0:41:46.719,0:41:52.579 in terms of implementation and the problems you run into 0:41:52.579,0:41:55.509 I can answer that question yes 0:41:55.509,0:41:59.569 there are a number of things unique to each individual 0:41:59.569,0:42:00.449 SSC there are 0:42:00.449,0:42:03.979 quarks in the silica there are quarks in the 0:42:03.979,0:42:05.089 cores implementation of the architecture you're trying 0:42:05.089,0:42:08.989 to do 0:42:08.989,0:42:11.190 those are almost never uncommon 0:42:11.190,0:42:14.299 writing crazy things 0:42:14.299,0:42:18.409 one of the problems that we have with FreeBSD 0:42:18.409,0:42:19.589 is adding additional 0:42:19.589,0:42:22.159 buses is a big 0:42:22.159,0:42:28.139 copy and paste operation now takes about 200 lines to implement a new bus which should take about 10 0:42:28.139,0:42:33.150 so that's one thing that's in common with those 0:42:33.150,0:42:36.399 between bringing up different processes 0:42:36.399,0:42:37.049 also you tend to use the same kind of tools 0:42:37.049,0:42:39.329 the Jtag Reader 0:42:39.329,0:42:40.400 the Jtag Debugger typically 0:42:40.400,0:42:43.809 on a well resourced operation 0:42:43.809,0:42:50.809 to bring up the different processes the different cores when you are doing the initial core 0:42:54.869,0:43:00.380 the answer varies and people have written entire books on how to do that 0:43:00.380,0:43:05.709 some in common some very unique and will like to make the things 0:43:05.709,0:43:12.709 that are incommon and hard easier to the extent that we can 0:43:13.259,0:43:20.019 one of the things is that it takes a lot of work to bring them up 0:43:20.019,0:43:23.079 are there other questions 0:43:23.079,0:43:26.130 how about the 0:43:26.130,0:43:27.169 multicore scalability 0:43:27.169,0:43:30.339 of FreeBSD 0:43:30.339,0:43:32.219 right now we don't know 0:43:32.219,0:43:36.239 how well FreeBSD MIPS will scale we don't know whether 0:43:36.239,0:43:43.239 there are bottle necks in 0:43:43.939,0:43:50.939 the PMAP for example we think it would be fairly well once we've carried on and get to the start that isn't working now debugged 0:43:55.599,0:43:59.929 It'll be comparable to x86 there may need to be a period of tuning 0:43:59.929,0:44:06.929 because the minute we implement one of the atomic primitives effecting performance of the other potential problem is cache coherency some 0:44:28.900,0:44:32.659 MIPS processors have really good cache coherency for 0:44:32.659,0:44:34.929 multi-processing others push 0:44:34.929,0:44:39.649 a lot of the burden of that on to the implement Cavium will probably scale really 0:44:39.649,0:44:46.649 well because it is fairly coherent the MIPS with a fairly coherent cache policy and architecture 0:44:52.439,0:44:59.439 it's really the only MIPS one multi-core MIPS that I'm really familiar with I don't know how the others will work 0:45:08.429,0:45:09.209 any other questions ? OK thank you very much diff --git a/en_US.ISO8859-1/captions/2009/dcbsdcon/dixon-bsdisstilldying.sbv b/en_US.ISO8859-1/captions/2009/dcbsdcon/dixon-bsdisstilldying.sbv index baf87e0de7..710812cc54 100644 --- a/en_US.ISO8859-1/captions/2009/dcbsdcon/dixon-bsdisstilldying.sbv +++ b/en_US.ISO8859-1/captions/2009/dcbsdcon/dixon-bsdisstilldying.sbv @@ -1,1484 +1,1381 @@ 0:00:00.460,0:00:04.370 -BSD is Still Dying +BSD is still dying. 0:00:04.370,0:00:06.220 -Welcome to BSD is still Dying +Welcome to ""BSD is Still Dying."" 0:00:06.220,0:00:07.790 -It’s not quite dead yet +It’s not quite dead yet, 0:00:07.790,0:00:09.409 -but we're getting there - -0:00:09.409,0:00:09.980 -and %uh +but we're getting there. 0:00:09.980,0:00:16.980 Well, welcome to the closing of the DCBSDCon -2009 +2009. 0:00:17.240,0:00:19.330 So, what is BSD? 0:00:19.330,0:00:22.299 -Well, BSD is the derivative of UNIX +Well, BSD is a derivative of UNIX. 0:00:22.299,0:00:23.879 Okay, so what is UNIX? 0:00:23.879,0:00:26.749 -UNIX is an operating system +UNIX is an operating system. 0:00:26.749,0:00:29.259 What’s an operating system? 0:00:29.259,0:00:32.560 -Operating system is the soul of the computer +An operating system is the soul of a computer. 0:00:32.560,0:00:34.000 But, what’s a computer? 0:00:34.000,0:00:37.469 A computer is a tool, it’s basically a glorified calculator 0:00:37.469,0:00:42.160 -that enables users to accomplish tasks better +that enables users to accomplish tasks better. 0:00:42.160,0:00:44.060 So, what is a user? 0:00:44.060,0:00:46.190 -A user is someone who operates a computer +A user is someone who operates the computer. 0:00:46.190,0:00:49.580 -It tends to stand up right sort of like me +It tends to stand upright, sort of like me 0:00:49.580,0:00:51.940 -and Bob(?) +and Bob. 0:00:51.940,0:00:52.840 So, who am I? 0:00:52.840,0:00:54.610 -My name is Jason Dixon +My name is Jason Dixon. 0:00:54.610,0:00:57.080 -First and foremost, I’m a SysAdmin +First and foremost, I’m a Sysadmin. 0:00:57.080,0:00:59.500 -I like to work on networks and firewalls +I like to work on networks and firewalls. + +0:00:59.500,0:01:01.270 +I like to tweak; -0:00:59.500,0:01:02.870 -I like to tweak +0:01:01.270,0:01:01.130 +no... -0:01:02.870,0:01:03.630 -no, yes +0:01:01.130,0:01:03.630 +yes. 0:01:03.630,0:01:05.650 -I'm a programmer, sort of +I'm a programmer, sort of. -0:01:05.650,0:01:07.190 -I enjoy programming with Perl +0:01:05.650,0:01:08.450 +I enjoy programming with Perl, PostgreSQL, 0:01:08.450,0:01:10.340 -and Apache Web servers +and Apache Web servers. 0:01:10.340,0:01:12.229 -I'm a consultant here +I'm a consultant here. 0:01:12.229,0:01:15.159 -I'm an employee +I'm an employee-- 0:01:15.159,0:01:16.840 -there - -0:01:16.840,0:01:18.880 -.. +damn, not there! -0:01:18.880,0:01:19.819 -I'm sorry, [xx] meets the eye - -0:01:19.819,0:01:25.430 -I +0:01:16.840,0:01:19.819 +Missed that slide, sorry, er, I'm sorry, OmniTI. 0:01:25.430,0:01:30.229 -[xx] - -0:01:30.229,0:01:32.909 -[xx] +You can tell I switch jobs entirely too often. 0:01:32.909,0:01:33.870 And I'm a lover 0:01:33.870,0:01:36.240 -of BSD +of BSD. 0:01:36.240,0:01:38.360 Okay, but why am I here? 0:01:38.360,0:01:39.880 To talk about why 0:01:39.880,0:01:43.830 -BSD is dying +BSD is dying. 0:01:43.830,0:01:45.270 -sex +Sex... 0:01:45.270,0:01:47.710 -and greed +and greed. 0:01:47.710,0:01:50.210 -It really has nothing to do with either of this +Ok, it really has nothing to do with either of these. -0:01:50.210,0:01:53.170 -But if I told you licensing is a +0:01:50.210,0:01:52.000 +But if I told you licensing of blobs, -0:01:53.170,0:01:55.750 -[xx] +0:01:52.000,0:01:54.400 +would you have shown up? Not that you had a choice. 0:01:55.750,0:01:58.160 To quickly summarize, what is BSD? 0:01:58.160,0:01:59.290 What is UNIX? 0:01:59.290,0:02:00.800 What is an operating system? 0:02:00.800,0:02:02.310 What is a computer? 0:02:02.310,0:02:04.929 -A computer is a device that computes +A computer: A computer is a device that computes 0:02:04.929,0:02:08.429 especially, a programmable electronic machine that performs high speed mathematical 0:02:08.429,0:02:10.180 -or logical operations +or logical operations, 0:02:10.180,0:02:13.869 or that assembles, stores, correlates, or otherwise processes -information +information. 0:02:13.869,0:02:15.189 -This is a computer +This is a computer. 0:02:15.189,0:02:17.029 -This is a small computer +This is a small computer. 0:02:17.029,0:02:18.899 This is a big computer 0:02:18.899,0:02:20.169 -This is a big +This is a big, 0:02:20.169,0:02:23.479 -fake(?) computer +fake computer. 0:02:23.479,0:02:26.889 -And this is a really old computer +And this is a really old computer. 0:02:26.889,0:02:28.909 Well, what does a computer really do? 0:02:28.909,0:02:30.670 -It helps us write documents +It helps us write documents. 0:02:30.670,0:02:32.509 -For example, [xx] fun pages +For example, Linux man pages. -0:02:32.509,0:02:33.859 -I +0:02:32.509,0:02:36.159 +We can compose shopping lists. -0:02:33.859,0:02:36.159 -[xx] shopping lists - -0:02:36.159,0:02:38.569 -Computers can even delete documents on the - -0:02:38.569,0:02:41.459 -fly +0:02:36.159,0:02:41.459 +Computers can even delete documents on the fly. 0:02:41.459,0:02:43.340 -We can write emails +We can write emails, 0:02:43.340,0:02:44.370 -surf the Web +surf the Web, 0:02:44.370,0:02:46.539 -watch movies +watch movies, uhh... 0:02:46.539,0:02:48.889 -movies +movies, 0:02:48.889,0:02:50.489 -listen to our favorite music +listen to our favorite music, 0:02:50.489,0:02:54.279 -and even play games +and even play games. 0:02:54.279,0:02:56.839 -But how does the computer do all these things? +But how does the computer let us do these things? 0:02:56.839,0:02:59.609 -Let's start by taking text [xx] source code +It starts by taking text known as source code, 0:02:59.609,0:03:03.439 -and using the [xx] to translate it into binary -machine language +and using the compiler can translate it into binary +machine language. 0:03:03.439,0:03:05.119 That’s the foundation 0:03:05.119,0:03:06.310 -for the kernel +for the kernel, 0:03:06.310,0:03:06.910 -libraries +libraries, 0:03:06.910,0:03:09.100 -and userland application, otherwise known as +and userland applications, otherwise known as 0:03:09.100,0:03:14.609 -an operating system +an operating system. 0:03:14.609,0:03:15.709 -like BSD. So you ask +Like, BSD. So you ask: 0:03:15.709,0:03:17.649 What is a kernel? 0:03:17.649,0:03:19.549 -It's a wonderful thing +It's a wonderful thing. 0:03:19.549,0:03:21.209 -[xx] for the management +It allows for the management 0:03:21.209,0:03:23.219 -or processes memory +of processes, memory, 0:03:23.219,0:03:28.009 -and peripheral devices +and peripheral devices. 0:03:28.009,0:03:30.730 -and by extension, allows us to do [xx] stuff -like +And by extension, it allows us to do cool stuff like 0:03:30.730,0:03:31.620 -networking +networking, 0:03:31.620,0:03:33.319 -provide better security +provide better security, 0:03:33.319,0:03:36.930 -work with disks and file systems, create user interfaces +work with disks and file systems, create user interfaces, 0:03:36.930,0:03:39.900 -interactive userland applications, allow us -to do things like +interact with userland applications that let us +do things like 0:03:39.900,0:03:43.249 -write documents, read emails, surf the Web, -watch movies +write documents, read email, surf the Web, +watch movies, 0:03:43.249,0:03:44.639 -listen to music +listen to music, 0:03:44.639,0:03:45.219 -play games +play games, 0:03:45.219,0:03:51.879 -and much, much more +and much, much more. 0:03:51.879,0:03:54.619 -In summary +In summary, 0:03:54.619,0:03:58.359 BSD is a UNIX-derived operating system that enables users to harness the power of 0:03:58.359,0:04:01.049 -the computer and process information better +a computer and process information better. 0:04:01.049,0:04:05.239 -It uses a combination of processes, memories, +It uses a kernel to manage processes, memory, and peripheral devices, and by extension 0:04:05.239,0:04:09.379 We can perform networking, enforce security, read from and write to storage devices and interface visually to applications 0:04:09.379,0:04:10.329 like text editors 0:04:10.329,0:04:17.329 -mail clients, Web browsers, multimedia players, and games +mail clients, Web browsers, multimedia players, and games. 0:04:18.239,0:04:19.560 -I'd like to look back +For a second, I'd like to look back 0:04:19.560,0:04:22.350 -on the history of UNIX for a few minutes +on the history of UNIX for a few minutes. 0:04:22.350,0:04:24.039 -Now, to be honest +Now, to be honest, 0:04:24.039,0:04:27.460 Kirk McKusick just trumped everything I had -from my talk +from my talk. 0:04:27.460,0:04:32.620 -But, this can be a repeat, but it's still pretty good(?) +So, a lot of this is gonna be a repeat, +but it's still pretty good. 0:04:32.620,0:04:34.770 -So, in the beginning +So, in the beginning, 0:04:34.770,0:04:37.439 -And yes, there was life before UNIX +and yes, there was life before UNIX. 0:04:37.439,0:04:39.559 -We got the Holy Trinity +We had the Holy Trinity: 0:04:39.559,0:04:43.439 MIT, Bell Labs and GE teamed to create -a system called Multics +a system called Multics, 0:04:43.439,0:04:46.999 -the Multiplexed Information and Computing Service +the Multiplexed Information and Computing Service. 0:04:46.999,0:04:50.709 -We have a huge GE650 mainframe Multics +We have a huge GE650 mainframe running Multics. 0:04:50.709,0:04:56.550 -You can tell the engineers from the [xx] bosses +You can tell the engineers from the pointy-haired bosses. 0:04:56.550,0:04:58.800 -and so, it was a huge success +And so, it was a huge success. 0:04:58.800,0:05:01.399 -We don’t run Multics on a laptop, mainframes, of course +We all run Multics on a laptop, mainframes, of course. 0:05:01.399,0:05:04.959 -I should know, it was a commercial failure +Actually, no, it was a commercial failure. 0:05:04.959,0:05:08.749 -[xx] is a computer scientist at Bell Labs -named Ken Thompson +Fortunately there was a computer scientist at Bell Labs +named Ken Thompson. 0:05:08.749,0:05:12.110 He’d worked on the Multics project and was inspired -by interactive computing +by the interactive computing 0:05:12.110,0:05:13.239 -It provided +it provided. 0:05:13.239,0:05:15.500 Unfortunately, scrapping the Multics project 0:05:15.500,0:05:19.240 -(but they no longer have a system that question -for serious work life) -[xx] known they had a system of which to perform -serious work like +meant that he no longer had a system with which +to perform serious work like 0:05:19.240,0:05:21.220 -Space Travel +Space Travel, 0:05:21.220,0:05:23.329 -a space simulation game +A space simulation game 0:05:23.329,0:05:25.319 -[xx] from Multics GE +He had written for Multics on the 0:05:25.319,0:05:27.590 -650 mainframe +GE 650 mainframe. 0:05:27.590,0:05:29.260 With Dennis Ritchie’s assistance 0:05:29.260,0:05:30.960 -[xx] experience with the Multics project +and his experience from the Multics project, 0:05:30.960,0:05:34.439 -they all craft(?) together an operating system -[xx] language +they were able to craft together an operating system +of assembly language 0:05:34.439,0:05:36.569 -[xx] PDP-7 +running on a PDP-7. 0:05:36.569,0:05:40.059 -This is capable of interactive -computing with the terminal +It was capable of interactive +computing with a terminal 0:05:40.059,0:05:43.979 -rather than just being punched -keycards +rather than just feeding in +punched keycards. 0:05:43.979,0:05:45.909 -They termed that the UNIX systems +They termed it the UNIX systems. 0:05:45.909,0:05:49.630 UNIX system, short for Uniplexed Information -and Computing System - -0:05:49.630,0:05:50.609 -a play +and Computing System, -0:05:50.609,0:05:53.409 -on the Multics name +0:05:49.630,0:05:53.409 +A play on the Multics name. 0:05:53.409,0:05:59.169 -it's [xx] a number of users +It's supported a number of users... 0:05:59.169,0:06:06.050 Did I miss something? 0:06:06.050,0:06:13.050 -it's for a number of users +It supported a number of users... 0:06:15.020,0:06:19.879 -talk about anticlimactic files +Talk about your anticlimactic slides. 0:06:19.879,0:06:21.120 -By 1970 +By 1970, 0:06:21.120,0:06:23.680 it officially became known as U-N-I-X 0:06:23.680,0:06:27.800 -probably [xx] +probably to save a byte of memory. 0:06:27.800,0:06:31.020 -it would be really good [xx] +They would have made really good +OpenBSD programmers back then. 0:06:31.020,0:06:34.409 By 1971, the UNIX System was officially -put into production use +put into production use. 0:06:34.409,0:06:36.330 -and imported to the PDP-11 +It had been ported to the PDP-11. 0:06:36.330,0:06:37.989 It was capable of text processing 0:06:37.989,0:06:42.240 -for the purpose of filing patents +for the purpose of filing patents. 0:06:42.240,0:06:44.789 I was trying to visualize software patents 0:06:44.789,0:06:51.789 -and tack it [xx] and probably the closest thing to [xx] +and a cat kicking a dog is probably +the closest thing to it in real life. 0:06:52.729,0:06:56.669 -By 1973 +By 1973, 0:06:56.669,0:06:59.929 they rewrote UNIX 0:06:59.929,0:07:01.950 -in a programming language created by Dennis Ritchie +in a portable language created by Dennis Ritchie. 0:07:01.950,0:07:04.569 The C programming language evolved from the B language 0:07:04.569,0:07:07.759 -adding data type [xx] structures +adding data types and structures. 0:07:07.759,0:07:10.680 -Based in a 1958 antitrust -Case, AT&T had been +Thanks to a 1958 antitrust case, AT&T had been 0:07:10.680,0:07:12.520 -forbidden to enter the computer business +forbidden to enter the computer business. 0:07:12.520,0:07:14.799 -UNIX could not be turned into a product +This meant UNIX could not be turned into a product, 0:07:14.799,0:07:16.529 -so they shift [xx] +so they would ship tapes 0:07:16.529,0:07:20.489 -and just pass the source code to anyone who ask +and disk packs of the source code +to anyone who asked. 0:07:20.489,0:07:22.789 -Since the source code is readily available +Since the source code was freely available 0:07:22.789,0:07:25.490 and ran in a portable computer language 0:07:25.490,0:07:29.349 universities and research labs worldwide were able to run -UNIX on their own systems +UNIX on their own systems. 0:07:29.349,0:07:31.049 -By 1974 +By 1974, 0:07:31.049,0:07:32.740 Professor Bob Fabry 0:07:32.740,0:07:34.750 at the University of Cal Berkeley 0:07:34.750,0:07:36.859 purchased a copy of UNIX for $99 0:07:36.859,0:07:38.990 for their own PDP-11 0:07:38.990,0:07:40.659 -By 1977 +By 1977, 0:07:40.659,0:07:43.579 -Bill Jolitz, a graduate student of Cal Berkeley) +Bill Jolitz, a graduate student of Cal Berkeley, 0:07:43.579,0:07:46.330 -distributed(?) the Berkeley Software Distribution +distributed the Berkeley Software Distribution 0:07:46.330,0:07:47.259 otherwise known as 0:07:47.259,0:07:49.029 -1BSD +1BSD. 0:07:49.029,0:07:50.759 -It included a Pascal compiler +It included a Pascal compiler, 0:07:50.759,0:07:52.460 -the ex Editor +the ex editor, 0:07:52.460,0:07:53.619 -vi ex Editor +and the ex editor. 0:07:53.619,0:07:54.900 -By 1978 +By 1978, 0:07:54.900,0:07:57.159 2BSD had been released 0:07:57.159,0:07:59.139 which added the vi editor 0:07:59.139,0:08:03.149 -and the C shell +and a C shell. 0:08:03.149,0:08:05.459 -I'm definitely not old school [xx] editor +I'm definitely not old school when it comes to editors. 0:08:05.459,0:08:08.419 -[xx] for the win +Corn Shell for the win. 0:08:08.419,0:08:09.789 -1979 +1979, 0:08:09.789,0:08:12.110 -3BSD was released +3BSD was released, 0:08:12.110,0:08:13.879 -a support for the VAX platform +adding support for the VAX platform. 0:08:13.879,0:08:16.599 -it was coined as Virtual VAX for VMUNIX +It was coined as Virtual VAX or VMUNIX 0:08:16.599,0:08:20.349 -based on the new virtual memory implementation -specifically for the VAX,UNIX/32V +thanks to the new virtual memory implementation +written specifically for the VAX UNIX/32V 0:08:20.349,0:08:23.059 -Computer Berkeley +computer at Berkeley. 0:08:23.059,0:08:24.830 -Based on the success of 3BSD +Thanks to the success of 3BSD 0:08:24.830,0:08:28.769 the Defense Advanced Research Project Agency (DARPA) 0:08:28.769,0:08:33.080 -[xx] Berkeley CSRG with the contract enhanced UNIX +ordered Berkeley CSRG with a contract to enhance UNIX 0:08:33.080,0:08:35.810 -for VLSI the project +for the VLSI project. 0:08:35.810,0:08:37.550 -these enhancements were +These enhancements were 0:08:37.550,0:08:38.570 eventually released 0:08:38.570,0:08:40.080 -as 4BSD +as 4BSD. 0:08:40.080,0:08:42.300 -which [xx] job control for the C shell +Which added job control for the C shell 0:08:42.300,0:08:45.580 -delivermail, the predecessor to sendmail +delivermail, the predecessor to sendmail, 0:08:45.580,0:08:48.140 -the curses [xx] +the curses programming library, 0:08:48.140,0:08:51.240 -and reliable signals +and reliable signals. 0:08:51.240,0:08:55.960 Unfortunately, 4BSD was criticized for bad -performance on the VAX platform +performance on the VAX platform, 0:08:55.960,0:08:59.950 -so [xx] went back to work [xx] kernel -to outperform [xx] VAX +so Bill Jolitz went back to work tuning the kernel +to outperform VMS on the VAX -0:08:59.950,0:09:02.900 -eventually releasing 4.1BSD for these performance - -0:09:02.900,0:09:04.030 -fixes +0:08:59.950,0:09:04.030 +eventually releasing 4.1BSD for these performance fixes. 0:09:04.030,0:09:05.410 -Two years later +Two years later, 0:09:05.410,0:09:07.940 -4.2BSD was released +4.2 was released 0:09:07.940,0:09:10.650 -incorporating a TCP/IP stack BBN Technologies +incorporating a TCP/IP stack from BBN Technologies, 0:09:10.650,0:09:13.360 -also, a contractor for DARPA +also a contractor for DARPA, 0:09:13.360,0:09:17.090 -as well as the Berkeley Fast File System +as well as the Berkeley Fast File System, 0:09:17.090,0:09:21.510 -written by a dapper young man by the name of Kirk McKusick +written by a dapper young man by the name of Kirk McKusick, 0:09:21.510,0:09:24.500 -He's also kind enough to give us the original BSD mascot +who was also kind enough to give us the original BSD mascot. 0:09:24.500,0:09:25.940 -In 1986 +In 1986, 0:09:25.940,0:09:28.410 4.3BSD was unleashed 0:09:28.410,0:09:31.300 -incorporating numerous performance improvements - -0:09:31.300,0:09:34.870 -including a non-BBN version of the BSD TCP/IP stack, -which is found to be superior by +incorporating numerous performance improvements, -0:09:34.870,0:09:36.370 -DARPA +0:09:31.300,0:09:36.370 +including a non-BBN version of the TCP/IP stack, +which was found to be superior by DARPA. 0:09:36.370,0:09:37.290 -1998 +1998, 0:09:37.290,0:09:40.030 -the next version of BSD was released +the next version of BSD was released. 0:09:40.030,0:09:45.460 4.3BSD-Tahoe, so named for the short-lived -Power 6/32 “Tahoe” platform +Power 6/32 “Tahoe” platform. 0:09:45.460,0:09:49.960 This was an initial attempt of moving away -from the VAX platform +from the VAX platform. 0:09:49.960,0:09:53.800 -Although the Tahoe was unsuccessful, it helped introduce machine -in a [xx] that will improve +Although the Tahoe was unsuccessful, it helped introduce +machine-independent code that would improve 0:09:53.800,0:10:00.720 -[xx] BSD future credibility +BSD's future portability. 0:10:00.720,0:10:04.670 Up to this point, all versions of BSD -included proprietary AT&T code +included proprietary AT&T code . 0:10:04.670,0:10:07.550 -[xx] require license for AT&T for their use +It required licenses from AT&T for their use. 0:10:07.550,0:10:10.190 -These licenses have become prohibitively expensive +These licenses have become prohibitively expensive, 0:10:10.190,0:10:13.260 -[xx] the demand for AT&T free version of UNIX +driving demand for an AT&T-free version of UNIX. 0:10:13.260,0:10:15.130 This led to the release of Net/1 -0:10:15.130,0:10:17.740 -a BSD license distribution of the FreeBSD - -0:10:17.740,0:10:18.440 -The free - -0:10:18.440,0:10:20.230 -FreeBSD networking code +0:10:15.130,0:10:20.230 +a BSD license distribution of the FreeBSD networking code, 0:10:20.230,0:10:23.340 -and uncovered by any AT&T [xx] licenses +unencumbered by any AT&T code or licenses. 0:10:23.340,0:10:24.319 -The next year +The next year, 0:10:24.319,0:10:25.810 4.3BSD-Reno 0:10:25.810,0:10:26.930 -was released +was released. 0:10:26.930,0:10:28.610 The name suggesting 0:10:28.610,0:10:32.360 -a gamble [xx] production use +a gamble when used production use. 0:10:32.360,0:10:35.560 -regardless, it included the MACH virtual memory -system +Regardless, it included the MACH virtual memory +system, 0:10:35.560,0:10:37.030 -Sun-compatible NFS +Sun-compatible NFS, 0:10:37.030,0:10:40.280 -and continued the movement towards a POSIX compliance +and continued the movement toward POSIX compliance. 0:10:40.280,0:10:44.980 It became apparent that the AT&T code was a -Hassle [xx] CSRG +hassle, so Keith Bostic at the CSRG 0:10:44.980,0:10:48.060 -virtually all of the utilities and code that was -stolen from AT&T +re-wrote virtually all of the utilities and code that was +still from AT&T. 0:10:48.060,0:10:49.720 -Then, in the middle of 1991 +In the middle of 1991 0:10:49.720,0:10:51.459 -Net/2 was released +Net/2 was released, 0:10:51.459,0:10:56.480 -A nearly complete BSD UNIX system that was freely -distributable under the BSD license +a nearly complete BSD UNIX system that was freely +distributable under the BSD license. -0:10:56.480,0:11:00.320 -Net/2 was the basis for two separate parts -of BSD to the Intel +0:10:56.480,0:11:02.100 +Net/2 was the basis for two separate ports +of BSD to the Intel 80386 architecture. -0:11:00.320,0:11:02.100 -8386 architecture 0:11:02.100,0:11:05.670 -Bill Jolitz started the 386BSD -distribution - -0:11:05.670,0:11:06.590 -[xx] +Bill Jolitz started the 386BSD distribution, -0:11:06.590,0:11:11.000 -became the basis for 3BSD and NetBSD -projects +0:11:05.670,0:11:11.000 +which became the basis for the 3BSD and +NetBSD projects. 0:11:11.000,0:11:13.430 -Berkeley Software Design BSDI +Berkeley Software Design (BSDI) 0:11:13.430,0:11:15.199 -came out with BSD/386 +came out with BSD/386, 0:11:15.199,0:11:22.199 -A proprietary version later renamed as BSD -OS +a proprietary version later renamed as BSD/OS. 0:11:22.560,0:11:23.520 -In 1992 +In 1992, 0:11:23.520,0:11:25.970 -a wholly-owned subsidiary of AT&T +a wholly-owned subsidiary of AT&T, 0:11:25.970,0:11:27.800 -UNIX System Laboratories +UNIX System Laboratories, 0:11:27.800,0:11:30.310 -also known as USL +also known as USL, 0:11:30.310,0:11:34.860 -filed a suit against BSDI claiming that AT&T’s -proprietary code which included +filed suit against BSDI claiming that AT&T’s +proprietary code was included in 0:11:34.860,0:11:37.420 -the BSDI UNIX products +the BSD UNIX product. 0:11:37.420,0:11:41.640 -The injunction was filed asking for BSDI +An injunction was filed asking for BSDI to discontinue their use of advertising 0:11:41.640,0:11:43.380 -[xx] use of the UNIX name +which alluded to the UNIX name 0:11:43.380,0:11:45.780 -own by AT&T and supposedly aimed +own by AT&T, and supposedly aimed -0:11:45.780,0:11:47.510 -to confuse unsuspecting - -0:11:47.510,0:11:47.880 -users +0:11:45.780,0:11:47.880 +to confuse unsuspecting users 0:11:47.880,0:11:49.860 -for virus +or buyers 0:11:49.860,0:11:53.620 -Also for the fact that the BSD OS sold -for $995 +regardless of the fact that the BSD sold +for $995, 0:11:53.620,0:11:57.090 -a 99% discount of AT&T UNIX +a 99% discount over AT&T's System V UNIX 0:11:57.090,0:12:00.400 -which [xx] out for $100 to -$2,000 +which retailed for one hundred to +two hundred thousand dollars. 0:12:00.400,0:12:07.140 You can see why the average consumer might -get confused +get confused. 0:12:07.140,0:12:10.720 -After extensive analysis, it was -determined that the BSD OS +After an extensive analysis, it was +determined that the BSD/OS 0:12:10.720,0:12:14.960 -was little more than Net/2, probably six files from Bill -Jolitz’s 386BSD +was little more than Net/2, peppered with six files from Bill +Jolitz’s 386BSD. 0:12:14.960,0:12:17.000 The judge presiding over the case 0:12:17.000,0:12:18.430 denied the injunction 0:12:18.430,0:12:20.750 -forcing USL [xx] complaint +forcing USL to narrow their complaint 0:12:20.750,0:12:22.280 to recent copyrights 0:12:22.280,0:12:24.920 -and a possibility of the loss of trade secrets +and a possibility of the loss of trade secrets. -0:12:24.920,0:12:28.580 +0:12:24.920,0:12:29.450 The judge also recommended that the case be -heard at a state court before filing in a federal - -0:12:28.580,0:12:29.450 -court +heard at a state court before filing in a federal court. 0:12:29.450,0:12:31.460 So, taking this hint from the judge 0:12:31.460,0:12:33.430 -they ran out to California +they ran out to California, -0:12:33.430,0:12:34.110 -refiled - -0:12:34.110,0:12:38.260 -as quickly as possible the University of Cal Berkeley +0:12:33.430,0:12:38.260 +refiled as quickly as possible (the University of Cal Berkeley) 0:12:38.260,0:12:40.800 -take action to prevent +to take any action-- to prevent-- 0:12:40.800,0:12:44.260 -resulted if USL wanted to take any action against +it resulted that if USL wanted to take any action +against university and state courts, 0:12:44.260,0:12:45.940 -[xx] will be forced to do so in California +it would be forced to do so in California 0:12:45.940,0:12:49.860 -rather than their home state of New Jersey +rather than their home state of New Jersey. 0:12:49.860,0:12:51.720 -Soon after the filing in a state court +Soon after the filing in state court, 0:12:51.720,0:12:55.380 -USL has bought(?) from AT&T by Novell +USL was bought from AT&T by Novell. 0:12:55.380,0:12:58.760 -By 1994, a settlement had been reached in private +By 1994, a settlement had been reached in private. 0:12:58.760,0:13:01.100 -[xx] details of the settlement were not known +The exact details of the settlement were unknown 0:13:01.100,0:13:03.920 -until 2004 when a California +until in 2004 when a California public records law 0:13:03.920,0:13:06.570 -allow the details to be released +allowed the details to be released 0:13:06.570,0:13:10.070 -[xx] published on the Groklaw site +where they were published on the Groklaw site. 0:13:10.070,0:13:11.810 Details of the settlement included 0:13:11.810,0:13:13.870 -I think we've covered this on +these, and I think we've covered this in 0:13:13.870,0:13:16.640 -Chri’s talk +Kirk’s talk, so we won't need to 0:13:16.640,0:13:17.580 -there were those -[xx] +iterate over those. 0:13:17.580,0:13:23.740 In hindsight, this confirmed our suspicions -Of USL’s fate +of USL’s fate. 0:13:23.740,0:13:25.800 -In June of 1994 +In June of 1994, 0:13:25.800,0:13:27.930 -the 2BSD distributions were released +two BSD distributions were released 0:13:27.930,0:13:29.509 4.4BSD-Encumbered 0:13:29.509,0:13:31.650 -was a version of BSD with AT&T code +was a version of BSD with AT&T code. 0:13:31.650,0:13:34.800 -It was only available to AT&T licensees +It was only available to AT&T licensees. 0:13:34.800,0:13:38.510 4.4BSD-Lite was also released which -now contained AT&T code - -0:13:38.510,0:13:42.120 -They become a new basis for the [xx] for the -previously [xx] +contained no AT&T code. -0:13:42.120,0:13:46.890 -Trees -[xx] +0:13:38.510,0:13:46.890 +It would become the new basis for a re-sync of the +FreeBSD and NetBSD source code trees. 0:13:46.890,0:13:49.430 -As I mentioned. 4.4BSD-Lite +As I mentioned, 4.4BSD-Lite 0:13:49.430,0:13:53.530 became the new baseline from which all the BSD -distributions will be based +distributions would be based. 0:13:53.530,0:13:56.150 -FreeBSD, one of the first +FreeBSD, one of the first, 0:13:56.150,0:14:03.110 and probably the most popular of the modern BSD -distributions +distributions (bite my tongue), 0:14:03.110,0:14:07.130 -has a story [xx] focused on the Intel -8386 platform +has a historically been focused on the Intel +x86 platform 0:14:07.130,0:14:12.370 -and [xx] Windows markets +and Linux and Windows markets. 0:14:12.370,0:14:13.570 -Nevertheless +Nevertheless, 0:14:13.570,0:14:18.020 -FreeBSD has been [xx] platforms including -Intel x86, Itanium - - -0:14:18.020,0:14:18.680 -AMD64 +FreeBSD has been been ported to other platforms, +including Intel x86, Itanium, -0:14:18.680,0:14:20.360 -DEC Alpha +0:14:18.020,0:14:20.360 +AMD64, DEC Alpha 0:14:20.360,0:14:23.130 -PowerPC, and Sun UltraSPARC +PowerPC, and Sun UltraSPARC. 0:14:23.130,0:14:27.420 -So, the more popular features include -application jails, access controls +Some of the more popular features include +application jails, access controls, 0:14:27.420,0:14:30.340 -excellent networking, SMP performance +excellent networking, SMP performance, 0:14:30.340,0:14:35.330 -and more recently, [xx] Solaris ZFS and dtrace +and more recently, ports of Solaris features +like ZFS and dtrace. 0:14:35.330,0:14:36.190 -NetBSD +NetBSD, 0:14:36.190,0:14:40.200 -which was also richly derived from Jolitz’s [xx] -BSD +which was also originally derived +from Jolitz’s 386BSD, 0:14:40.200,0:14:44.710 -is typically known for portability through a wide range of -[xx] platforms +is typically known for portability to a wide range of +hardware platforms. 0:14:44.710,0:14:51.060 -NetBSD has been [xx] to over 50 hardware platforms +NetBSD has been ported to over 50 hardware platforms, 0:14:51.060,0:14:58.060 -and kitchen appliances +and kitchen appliances. 0:15:00.110,0:15:04.020 -OpenBSD +OpenBSD! 0:15:04.020,0:15:08.070 -no bias at all +(No bias at all.) 0:15:08.070,0:15:10.840 -OpenBSD is yet another modern BSD derivative +OpenBSD is yet another modern BSD derivative, 0:15:10.840,0:15:13.140 -originally [xx] from NetBSD 1.0 +originally forked from NetBSD 1.0. 0:15:13.140,0:15:14.769 -for being highly secure +It's known for being highly secure 0:15:14.769,0:15:16.910 with an emphasis on code correctness 0:15:16.910,0:15:21.160 -proper documentation and truly open in free source +proper documentation and truly open +and free source code. 0:15:21.160,0:15:23.600 -the mantra is secure by default +Their mantra is ""secure by default."" 0:15:23.600,0:15:28.220 -This philosophy is influenced in countless other free -proprietary operating systems which now +This philosophy has influenced in countless other free +and proprietary operating systems which now follow 0:15:28.220,0:15:29.950 -the example +their example. 0:15:29.950,0:15:34.220 Here are some of the more popular platforms -[xx] BSD has been imported to +that OpenBSD has been ported to. 0:15:34.220,0:15:37.380 -And although you may see numerous security enhancements +And although OpenBSD has numerous security enhancements, 0:15:37.380,0:15:41.790 -to make efforts to integrate these changes into the [xx] system -[xx] transfer of technologies +we make efforts to integrate these changes into the +base system as native, transparent technologies. 0:15:41.790,0:15:46.470 -The philosophy has been proven less effective -[xx] technology such as SELinux +The philosophy has proven much more effective +than ""bolt-on"" technology such as SELinux, 0:15:46.470,0:15:50.290 -[xx] is placed on the Systems Administrator +where the onus is placed on the Systems Administrator 0:15:50.290,0:15:53.590 -and is quite often disabled +and is quite often disabled. 0:15:53.590,0:15:55.680 -Be generous +I'm being generous. 0:15:55.680,0:15:57.710 -You see - -0:15:57.710,0:15:58.940 -You see +You see, here are 0:15:58.940,0:16:05.940 -some of the features of OpenBSD - -0:16:08.460,0:16:09.710 -[xx] - -0:16:09.710,0:16:14.760 -[xx] - -0:16:14.760,0:16:20.720 -[xx] +some of the features in OpenBSD. 0:16:20.720,0:16:26.450 -They have consistent release schedule of new releases -available around the first of May and November - -0:16:26.450,0:16:27.510 -DragonFly +They have a consistent release schedule with new releases +available around the first of May and November. -0:16:27.510,0:16:31.850 -another BSD, started by Matt Dillon in 2003 +0:16:26.450,0:16:31.850 +DragonFly, another BSD, +started by Matt Dillon in 2003. 0:16:31.850,0:16:34.500 -It's a logical continuation of FreeBSD -4.8 +It's a logical continuation of FreeBSD 4.8. 0:16:34.500,0:16:38.780 -He started the foot-dragging 5BSD project -when his vision for threading an SMP conflicted +He started the DragonFly BSD project +when his vision for threading in SMP conflicted 0:16:38.780,0:16:41.610 -(with the other developers working on FreeBSD -file +with the other developers working on FreeBSD 5. 0:16:41.610,0:16:45.540 -They continue work on SMP revamp -which, I think, is probably complete by now +They continued work on their SMP revamp +(which, I think, is probably complete by now), 0:16:45.540,0:16:47.369 as well as the other lightweight 0:16:47.369,0:16:49.100 -kernel threads implementation +kernel threads implementation. 0:16:49.100,0:16:53.550 -(well Martin balsam focused on spring jenner -jericho street supportive of the coral and) -[xx] focused on generating -[xx] support the kernel +More modern goals are focused on supporting +generic clustering support natively in the kernel, 0:16:53.550,0:16:56.700 -and features like the [xx] +and features like the HammerFS. 0:16:56.700,0:16:58.599 MAC OS X is an operating system 0:16:58.599,0:16:59.459 sold by Apple 0:16:59.459,0:17:06.010 -which runs on both PowerPC and Intel platforms) +which runs on both PowerPC and Intel platforms. 0:17:06.010,0:17:08.210 -hecklers +Alright, hecklers. 0:17:08.210,0:17:12.709 -BSD is the heart of MacOS X, -a full capable BSD UNIX derivative +Darwin is the heart of OS X, +a full capable BSD UNIX derivative, 0:17:12.709,0:17:16.510 -the enhancement was [xx] to make OS X - -0:17:16.510,0:17:19.270 -MAC OS +with enhancements brought in to make OS X 0:17:20.890,0:17:23.150 -a consumer-friendly operating system +a true consumer-friendly operating system. 0:17:23.150,0:17:25.540 -Unfortunately, it's still somewhat of a hybrid - -0:17:25.540,0:17:30.320 -I - -0:17:30.320,0:17:32.630 -yeah +Unfortunately, it's still somewhat of a hybrid, 0:17:32.630,0:17:34.530 -Merging the MAC kernel with NeXTSTEP +merging the Mach kernel from NeXTSTEP 0:17:34.530,0:17:41.350 -while it's very useful in -FreeBSD +along with various userland pieces +from FreeBSD. 0:17:41.350,0:17:43.740 -It's about the BSD distributions including +Some other BSD distributions including 0:17:43.740,0:17:45.780 -364 units from DEC +Tru64 UNIX from DEC 0:17:45.780,0:17:52.780 -then Compaq, then HP +then Compaq, then HP. 0:17:54.710,0:17:58.490 -Now, we've covered some of the history behind BSD. +Now we've covered some of the history behind BSD, I like to address the real shortcomings 0:17:58.490,0:18:00.960 -of modern day BSD +of modern day BSD. 0:18:00.960,0:18:3.980 So, why is BSD dying? 0:18:03.980,0:18:05.890 -That's why we're here to uncover +That's what we're here to uncover. 0:18:05.890,0:18:08.650 -First and foremost +First and foremost, 0:18:08.650,0:18:13.570 -because IDC says so +because IDC says so. 0:18:13.570,0:18:15.290 -Market share is an all-time low +Market share is at an all-time low, 0:18:15.290,0:18:17.830 -under 1% +under 1%. 0:18:17.830,0:18:18.970 -And of course - -0:18:18.970,0:18:20.010 -Netcraft +And of course, -0:18:20.010,0:18:24.170 -confirms these findings +0:18:18.970,0:18:24.170 +Netcraft confirms these findings. 0:18:24.170,0:18:26.309 BSD came in last place 0:18:26.309,0:18:28.240 -in a SysAdmin networking test +in a SysAdmin networking test. 0:18:28.240,0:18:35.240 -I don’t recall which of the BSDs were tested, -but it's probably safe to assume they all finished [xx] last +I don’t recall which of the BSDs were tested, but it's +probably safe to assume they all finished dead last. 0:18:37.570,0:18:41.190 Market leaders and pundits have predicted that -open-source software can't make money +open-source software can't make money. 0:18:41.190,0:18:45.320 If we continue to give away free software, how -are we finance our developers? +will we finance our developers? 0:18:45.320,0:18:51.290 -[xx] the forecasting [xx] the spiraling into bankruptcy - -0:18:51.290,0:18:52.669 -I - -0:18:52.669,0:18:53.690 -yeah +Analysts are forecasting a slow spiral into bankruptcy. 0:18:53.690,0:19:00.690 -It's a little dated, but man, you just got to love this guy +It's a little dated, but man, you just got to love this guy. 0:19:00.700,0:19:05.470 -BSD +BSD... Bad! 0:19:05.470,0:19:06.520 -As a community +As a community, 0:19:06.520,0:19:10.500 BSD has had a surprising inability to -adapt +adapt. 0:19:10.500,0:19:12.140 -As we can see by this graph - -0:19:12.140,0:19:14.930 -I - -0:19:14.930,0:19:19.630 -I +As we can see by this graph... 0:19:19.630,0:19:24.940 As we can see by this graph, the number of -pages served per hour +ASP pages served per hour 0:19:24.940,0:19:27.030 -[xx] far outnumber those +on Windows servers far outnumber those 0:19:27.030,0:19:29.640 -on Linux and all the BSDs +on Linux and all the BSDs. 0:19:29.640,0:19:34.750 -Linux actually degenerates some [xx] we -have to presume because of [xx] +Linux actually did generate some. +We have to presume it's because of obfuscation. 0:19:34.750,0:19:40.520 -renaming their files ASP +Renaming their files ASP. 0:19:40.520,0:19:43.560 -Of course, a significant loss of talent +Of course, a significant loss of talent. 0:19:43.560,0:19:46.310 FreeBSD has lost 93% of their core -developers +developers. 0:19:46.310,0:19:50.370 -This is certainly the [xx] to jump ship [xx] +It's assumed that most of these have jumped ship +to DragonFly BSD. 0:19:50.370,0:19:54.850 -Unfortunately, since none of the BSDs [xx] code, +Unfortunately, since none of the BSDs share code, they usually have to start from scratch all over again -0:19:54.850,0:19:55.970 -Tracing the project’s roots - -0:19:55.970,0:19:59.880 -from 4.5BSD-lite +0:19:54.850,0:19:59.880 +tracing the project’s roots from 4.5BSD-lite. 0:19:59.880,0:20:04.890 -Fortunately, not all is lost +Fortunately, not all is lost. 0:20:04.890,0:20:11.890 -There's still a handful of very small companies still using -BSD today +There's still a handful of very small companies +still using BSD today. 0:20:17.140,0:20:23.559 -And you probably haven’t heard most of these +I know you probably haven’t heard of most of these. 0:20:23.559,0:20:28.480 -This is my employer +This is my employer! 0:20:28.480,0:20:31.510 +Yay, OmniTI. 0:20:31.510,0:20:32.990 -Hopefully, the success +Hopefully, the successes seen at-- 0:20:32.990,0:20:37.230 -yes, the [xx] had told me -I had to put that on there +yes, the lawers actually told me +I had to put that on there-- 0:20:37.230,0:20:44.230 -[xx] the success as seen [xx] seen in the industry’s -Will [xx] open in the mainstream +hopefully the successes seen in these isolated industries +will bubble up into the mainstream. 0:20:45.050,0:20:47.230 -Looking forward, there's a number of challenges ahead +Looking forward, there's a number of challenges 0:20:47.230,0:20:50.960 ahead of us to ensure the BSD survives -generations of future geeks +generations of future geeks. 0:20:50.960,0:20:53.540 The challenges aren’t simply of the technological -nature +nature, 0:20:53.540,0:20:57.750 -but included a number of political and legal -obstacles as well +but includ a number of political and legal +obstacles as well. 0:20:57.750,0:21:03.240 First and foremost, virtualization is on everybody’s -radar +radar. 0:21:03.240,0:21:04.400 -[xx] +Products like Xen, QEMU, VMware, and Parallels 0:21:04.400,0:21:09.650 -[xx] to optimize our resource running BSD +allow us to optimize our resources running BSD. -0:21:09.650,0:21:13.820 -All this means I can run over 100,000 [xx] of NetBSD -on a server four gigs of - -0:21:13.820,0:21:14.690 -memory +0:21:09.650,0:21:14.690 +All this means I can run over 100,000 instances of NetBSD +on a server with four gigs of memory/ 0:21:14.690,0:21:18.520 It also means I have to hire 1,000 NetBSD systems administrators 0:21:18.520,0:21:20.360 +to manage that one server. 0:21:20.360,0:21:23.940 -Not only is this a miserable return of investment -I don’t think there are over a thousand NetBSD users out there - -0:21:23.940,0:21:30.280 +Not only is this a miserable return of investment, +I don’t think there are over a thousand NetBSD users out there. 0:21:30.280,0:21:33.350 We're looking for more advanced file systems 0:21:33.350,0:21:38.970 to handle the current performance limits -associated with high capacity multi-tier +associated with high capacity multi-tier byte arrays. -0:21:38.970,0:21:43.850 -[xx] Solaris CFS have already been completed -[xx] previous BSD-7 and MAC) - -0:21:43.850,0:21:46.460 -OS X +0:21:38.970,0:21:46.460 +Ports of Solaris ZFS have already been completed +in part to FreeBSD 7 and MAC OS X 0:21:46.460,0:21:48.799 -They have blobs, NDA’s +They have blobs, NDA’s, 0:21:48.799,0:21:51.100 -Closed documentation can now go hand in hand +and closed documentation all go hand in hand. 0:21:51.100,0:21:55.550 -It's a clerical challenge that threatens -[xx] hardware availability to BSD developers +These are political challenges that threaten +to limit hardware availability to BSD developers 0:21:55.550,0:21:56.809 -and endusers +and end users. 0:21:56.809,0:21:59.370 Projects like Linux, and even FreeBSD 0:21:59.370,0:22:00.830 had casually signed 0:22:00.830,0:22:04.770 -agreements and NDA’s to accept none free binary -drivers into the source stream +agreements and NDA’s to accept non-free binary +drivers into the source tree. 0:22:04.770,0:22:07.320 -These arrangements worked against the spirit -of free software - -0:22:07.320,0:22:08.920 -and open-source +These arrangements work against the spirit +of free software, -0:22:08.920,0:22:10.940 -software, all for the purposes of short-term gains +0:22:07.320,0:22:10.940 +and open-source software, all for the purposes +of short-term gains 0:22:10.940,0:22:13.690 -by 3D [xx] and rotating desktops) +like 3D eye-candy and rotating desktops. 0:22:13.690,0:22:18.510 -That’s coming the guys [xx] serving in the next room +This coming the guy who set up a +game server in the next room. 0:22:18.510,0:22:21.220 -Within the last year or so, legal challenges have surfaced +Within the last year or so, legal challenges have surfaced. 0:22:21.220,0:22:24.720 -Linux developers have blatantly stolen BSD license code +Linux developers have blatantly stolen BSD licensed code, 0:22:24.720,0:22:27.270 replacing the license notification with GPL 0:22:27.270,0:22:29.700 -and any of their copyrights when no work was done +and any of their copyrights where no work was done. 0:22:29.700,0:22:33.419 Beyond the legal ramifications of these actions, this demonstrate a lack of respect 0:22:33.419,0:22:38.050 -in cooperation for their free -software peers +and cooperation for their free +software peers. 0:22:38.050,0:22:39.649 -diversity in the BSD is a healthy trend +Diversity in the BSD is a healthy trend. 0:22:39.649,0:22:41.620 -it promotes new features and competition +It promotes new features and competition 0:22:41.620,0:22:43.220 in the intellectual market 0:22:43.220,0:22:47.169 -resulting in better systems for all of us +resulting in better systems for all of us. 0:22:47.169,0:22:49.740 -In the end, diversity can bring unity throughout our community +In the end, diversity can bring unity throughout our community. 0:22:49.740,0:22:50.519 -and with unity +And with unity, 0:22:50.519,0:22:53.020 -a common goal +a common goal. 0:22:53.020,0:22:54.290 -The end +The end.