[OpenBIOS] [Qemu-ppc] [PATCH] ppc: Add MacOS VGA driver ROM

G 3 programmingkidx at gmail.com
Mon Aug 1 02:00:21 CEST 2016


On Jul 31, 2016, at 2:32 PM, Howard Spoelstra wrote:

>
>> On 30 Jul 2016, at 18:59, Programmingkid  
>> <programmingkidx at gmail.com> wrote:
>>
>> On Jul 27, 2016, at 6:10 AM, qemu-ppc-request at nongnu.org wrote:
>>
>>> Message: 1
>>> Date: Wed, 27 Jul 2016 18:27:33 +1000
>>> From: Benjamin Herrenschmidt <benh at kernel.crashing.org>
>>> To: qemu-ppc at nongnu.org, David Gibson <david at gibson.dropbear.id.au>
>>> Cc: qemu-devel at nongnu.org, Mark Cave-Ayland
>>> 	<mark.cave-ayland at ilande.co.uk>,	Alexander Graf <agraf at suse.de>
>>> Subject: [Qemu-ppc] [PATCH] ppc: Add MacOS VGA driver ROM
>>> Message-ID: <1469608053.5978.132.camel at kernel.crashing.org>
>>> Content-Type: text/plain; charset="UTF-8"
>>>
>>> The project is at https://github.com/ozbenh/QemuMacDrivers
>>>
>>> This adds a native MacOS driver in ROM (which can be picked up
>>> by MacOS once OpenBIOS has been updated if Mark accepts
>>> the patches I sent him) which allows MacOS classic
>>> (tested 9.2.1) and MacOS X (tested 10.1.4 and 10.4)
>>> to properly use QEMU std VGA (10.1.x doesn't work at all
>>> without it, the others get the ability to change resolution
>>> and color depth).
>>>
>>> Building the ROM is tricky and requires CodeWarrior for MacOS
>>> so I include a pre-built binary.
>>>
>>> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
>>> ---
>>> hw/ppc/mac_newworld.c |   8 ++++++++
>>> pc-bios/qemu_vga.ndrv | Bin 0 -> 12808 bytes
>>> 2 files changed, 8 insertions(+)
>>> create mode 100644 pc-bios/qemu_vga.ndrv
>>>
>>> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
>>> index 7d25106..5029345 100644
>>> --- a/hw/ppc/mac_newworld.c
>>> +++ b/hw/ppc/mac_newworld.c
>>> @@ -511,6 +511,13 @@ static int core99_kvm_type(const char *arg)
>>>    return 2;
>>> }
>>>
>>> +#define MAC_CORE99_COMPAT                               \
>>> +    {                                                   \
>>> +        .driver   = "pci-vga",                          \
>>> +        .property = "romfile",                          \
>>> +        .value    = "qemu_vga.ndrv",                    \
>>> +    },
>>> +
>>> static void core99_machine_class_init(ObjectClass *oc, void *data)
>>> {
>>>    MachineClass *mc = MACHINE_CLASS(oc);
>>> @@ -520,6 +527,7 @@ static void core99_machine_class_init 
>>> (ObjectClass *oc, void *data)
>>>    mc->max_cpus = MAX_CPUS;
>>>    mc->default_boot_order = "cd";
>>>    mc->kvm_type = core99_kvm_type;
>>> +    SET_MACHINE_COMPAT(mc, MAC_CORE99_COMPAT);
>>> }
>>>
>>> static const TypeInfo core99_machine_info = {
>>> diff --git a/pc-bios/qemu_vga.ndrv b/pc-bios/qemu_vga.ndrv
>>> new file mode 100644
>>> index  
>>> 0000000000000000000000000000000000000000..0b1549d1c5978f87aed2b6e496 
>>> a23fbaf18dbea4
>>> GIT binary patch
>>> literal 12808
>>> zcmcIq4RBl4mA;amWZ5{0p=Q^?KY3{!Mof&y6hj}_b>&0>89PD20;gS=wQRj4+L0xV
>>> zBqz%95<NR9O=j7tGYM^grZ^3-VJ6FXrqIG9-~>W<nW0&j9d^hpKcNAdodrr4*ph_g
>>> z?RW0GlAmOWm~N}lnRo8F=bn4+x#ym9-+lMC_~yk4b=|tero=E~%=Yhxe^QO-%+JB>
>>> zR50)}iOt&?%Yh at oB*{`&<z_4g9%i#y>vAIPp8(S(v=cuYx=rNd=boq|hHn5+&(H?K
>>> znEe$|<~jk-{m^gzcSRm!%n3YK_e~4k0eqe)UsFV{p)xwS8E^~WZvYX%7QlAELx4ko
>>> z!+?JSd;mCSXSVr(s{uCxdI2GT2H4F<0K<^n+pbuCtM0hPrvJoSrT@{pP+#C(=1WF4
>>> zs>yyexiK=Vrurg7Y;|Zvy+d6eNu`sUsT^3*Lyx;6VKr{$TM>#4tI=R&L`||lJRa?i
>>> zM&rYwG}@-X8cVbO&9UJP$#^XC_iE4WtmpO>@sW{GEZma<l8CBlmED=3=Bzs$_KhY(
>>> z=}0^ljCT*E;?Yr5_N(chSXxacM-%CpUVLgu^uuyWu8cv`9^Z<1VskOg7fB`JDYcl~
>>> z6N{wtv_LYRP?PD+x2h#+{ZOB+jD;hiSpTL_;<_7`qwUH}V%7TOig;{YWc?j#C_E5P
>>> zh6{)T$w*q|)VuoogckYH2rDvFtyVXcBKzXAsKE`YIafY4HJpqj$XdR*NrHK~$4Z#(
>>> z+UHKOs at E>qnC%Jpt<G%lg6DuG;1F*6<I`itClfa2-m}=4(zN=F_Om6KiTy00y>)#?
>>> zGdeQLkew;x_RIXt_B~G{tLh%JNubpYOxE124YO7);&^<uF3H(#r!)E(OMq{U7Ov0u
>>> z89SwisBC{<lwYN?qBG`ajw=Q2$V at x?DnUCqLv!sEv^}OQSEDFzC!Xx_Pczx~&u8>w
>>> z)Q`g^>NaFw1pPhG_Y+-m3VL968|SE~YcEmv15sCJ_U+8|?N)T-#K5VFd%feVr3E&|
>>> zvs%G=!kFu*Z*6-;yPqw&T<>PJ+F(VyCOI<Nwj~+e#?~r}SwM3;9zP7buhyA7F~%BT
>>> zZ+YSvYo2(Qd3M=Y%dW+&ZC5vIr+Pj|`;E`?bA<Wn_-*Bsm=|BKVH`Wy#Msm##z=>W
>>> zMa;8z5o-ptc1$xVd*Ht at 7xL?*i?Ws3vybxfTU2gA<mnz~Zs>i4+M<mDXn~Bjj(0E?
>>> zw8ebYWMBF;qa3C2HSM3sVoc%s%{1nYN#g|CCZNk&{dvZq%MEBJi*|LEb`i8|C~Bvm
>>> z-F;@eix*5i7rm@)soxBpYEkz~(zVyP_%8aW_Orj<i8}JfHw67<YExiS*r}w=(2o4t
>>> zVz*BqcW2ISI_#o1F&A`{Fm^Y}RVdF#xf<mf>W6#{ZAQ!WxBFe=%lsT=xt>@z4jbAm
>>> z&YnI`cC=v}jmjVrj>QkQp<PaA(f%mLNNsC-jSKJl*}?~uA<XwMlQ56h at _966_~A=l
>>> z@}*q+>0`zhc^%%qKC|ru)*xhgAnQSl_bLx#3%keIE6R|gGsp_purg@;9y&fHo`*<p
>>> zKdX5Tv`G_}BEa{Uxa$evJ50QS=$gQZKVjmP`+$c{TzVS#S|K}N(rPe1<}>lCn}91O
>>> zUQIGuOx*oCa9QA=1Ftpl%ZSHK@^XGmxYf3YVULowd45 at D+xvOjJlbn~xkcD!8RA<F
>>> zZ1YsHZOlIBUxz+FGjZoU;Ac#{VlnVHO?)2lyejA+;KxneeHQpLChjDkJ_LO~#`95=
>>> zHoph>UK6jn9QgevK5rFpUGO{xJZ<9D#J|DBYt{h2+r%#?I|}<cNiShvXE$(RU#_pP
>>> zZ^dswmnm)`c9XuszEvlIlYKw7*!Sad_AT^XDcozEzef1_EI%#cP4^n-E})+ikbNoM
>>> zaqzxYj at P;dXV$v33vKr4S?2K|-tkyHXuOB9)wMeegW at G<h=Er^?p)WVGzpnK%6R3J
>>> z9%dfJ!E6%}<Rh(`vT8pnH+HLz8jlmwlghaCEcE$^V(bLsCvQ8=8ankvN|8nr8g`C|
>>> ziHE#8^LFZym?EXu37QUCU8f#a6=`Ey(C&t;9i4hKp-7vOg0=y)bf>-%e94rcHKXld
>>> zr=HrZNU>o-qg>EOI^gM7#%;QealuAZRyy at HD-~(goucf4e#43skwv*qw5t(M?mJe0
>>> z$;G-k<-DSO$w9=w;Fbj!<wgV=W~<S%EOW4dxw7xrkt?JVup#;Db(F_xk3su_?5{t~
>>> z4E&R;3-tX~J-$}%y_6nXg&r64dLXwLPY6A1lmoLLoX_d8u#_G=$A^p$#k!c(?nS;j
>>> zvMfV;u;4{k7sdY_4yJfm-hU}hXLJYig64*ARAWsLEv(lwR>T*`K60A&W1ZTOF9HKc
>>> zUEihrs^804aI#L(hV4(H&aE9-meC&;wCxznc4qgpZ#>&!V4t|?jMqD69Or&%V;hin
>>> z2KgQaI_KkSk^X$XG|X3nWxnb$U(-1|Ip-laj%6=Wj)88|p9BW<uch10j<=y((^u=3
>>> zvz-jvX at iLE%=o?LsLSN^o{2@|L(XR8NvvIi;@nrnBF at _d-ecu>XRq^Fb4alt`I*bQ
>>> z2eL-R{*4Jc=l6=abwhqK2f5 at 2%|dPxavKjWVlK=0Phk9t)eo)m3-%CO>-nB(2lj=Y
>>> zLf^~j{X^u==XPNKiGAa>#d=%w?;P~D+T&r!Rbda?6m&0^`!)5o%AJDTc^J>Nd!ci&
>>> z+&@9zoSly&-#snnkMAK76KBb{>Rse_zeD>`TEmz2JC_r at J#*xRKcB~*v$Q|YVNS at G
>>> zT1;PZ^-}JI?O2QO1wUKRh<fCV1*?i}X&q}RpAs^$PdK-w$iHa5>OgDJ7;6u*lUu+3
>>> zT+y0xZGr5?x%FS<zdzlPWj5LmV9qKK58c{eeI_Wmx`M1CYwi*F`&=4)EU3G>v_Ym|
>>> z+;;G`BX8D{4S?4HZ-BmSD3ct at lg+S&Lp*JGHlU1Hig%hpE|X&Q36$$}yDh3AhEx9&
>>> zL$>Hw*>DbXMRwaG?20|l*`+jB9vqipJcxU&0&5iSa4ZTM?St;7{>7LS%a{nKG5Js@
>>> z0q-Qg7H!*r+XUVW+%E7si~QX9kpIi?r)H0b&)H+W#up=H=ByoiIEFcMc*l6YBOA)x
>>> zhM0!D4WTR6p7ba5J>6^k at ed{X=Ke_i at HIUL`GsrSbrNzP%*mC}-kOJs*L!f#)djmR
>>> zfZc2Gq}*Oh;{<*=Xm!A0U#3(3!gEYK$LT5Bj-gEhc&QET4{1+FzULOa3&c~VC*ONm
>>> z-y22D7k*^)8vpxNiS?=Ii<mFya3Kd8YpCBT#8b?VpYMg6n4NqEG#B`4Cz|LzqR<zt
>>> zv9^4Cs91{r?<vuLGv3!+7$2>{oWIq~rLWR{SK;k7KL0#7M;^#EV*r0Y^I$Ah$U{7y
>>> z at 6E#Jv&;e7Ao&^22xg6KZn3Z8`{;A5#MoLe4zFq33!mp~`)9Ie41H4mv*vU1Z<^0s
>>> zpJTZ`F`s>Z=K0*&Ykc;PCHnW_%!Ssrts8z1T>=yrE$f_OO$Gd at rgISQI*#Ee_bJAH
>>> zj3=#!f-{vl`qlyHVk^>x@?B>M-|~RQ%sKgTUoh<IBHQ>`<?D0txoPY99nPZ6cT<XY
>>> z6~F2=J}u6Fq(gMFk-5kZE&jb$-@@!2FB%5wa=Kj3by>vvv?kaKah~Q;lXy;PFyHAb
>>> zuM_X at v`$F2xlS5q`|aV<=Vz02?nXLqdl8Pp_p22rdX4{ismONZM+aM)jEl5(I*#&O
>>> zQ_}*wq3quF4(rn&VF8>$+7z6b^7*B6K4x5)Xf)$B+HZia<O9{3L$=O;fX1SXF|V?p
>>> z`TWd1&oU;;18qtZ-oYV9w=plCZajT>(z$FWo|ON_ry9*1jJlb3m~vyLIQa9*sg6_m
>>> zF at M-={Nc47jm2xn_DX^8HWvG??T|8T7&E$8tSQvpc0Y8p!H=sZoA8dyW9qq^f-2to
>>> zF#nM4n!rAVo>LCQQ}an at lvJKCo;CCY-xZxY^K*O~`z!IhO4MDA^LbiluBmM}--Im%
>>> zUQM{7vWnpFnTy)?h5sSwQj3%4oCZ8856PI9H-J-ag733efXkrkz>h-zoGwkuBtJuS
>>> zO&vgv((%#3?DL!ad4M(36S`iFcK2iL+9$TM`QYPYfNo8KpV~TdZGk%lZf)OJsy%q+
>>> zGBQlNZ7a~h-Eqn|L1$;>{34&v;SahK=h%Z+)$ZNKyna at 7C!NQl-K=*-Yo6ifM3UL=
>>> zA5Qajjnq!`dCB)Yh5CJrH3SFUo!R&8we&3kvF8}cn94e_r>p#p(Bsmw#vyCFDN766
>>> zYbS?!`%!97=TVR~b}8MaE${jrKX<!%JR9Wa{|{(bH<*(u><e}V at 70@>A-8|vxYRYE
>>> zs&o$X(ZGw+jh*mk51Tp)-@)09dkFN`MQnNo at vBa&=ds_d)jKk~v)F$Q;v=SE+!VZ5
>>> z>Z17uer-_WxC8j&;8x&6?sPW%pPB3r at LdS!K9D)K`yJ*3c;Sz*5%xOuh$-k(+hVW9
>>> z*@>hz at HkngJjQInNu0UtW33*E;+64+`9$0pa{mZzZy*`LNvR7t-w)`++N{7c0DUO;
>>> z%)}FMCNh^ZF5y>`N{9sz(;{Sd;C}e;xA5&MfbUwt939`F{OG4|B82#c*akkYK5pY<
>>> zQ(nOLfnPIxb8?ReKgjEo+v8dNk<S-m4)*TN$YX8v9)!8z?_3^c<{ZeXBw4WU_b3i=
>>> z-ZI}UX2~9M{{ro7Xh(f0z^~K>>0R#a at 1ooaXhDA-Wtz2NzT2oz%uAhu?=Lu`98$JN
>>> zWk0KUmikAIX%#xrT)coYBl_-84g3`FeZu~i^m{($p~@PxiHPwikn at 0L{P at P?dYaDx
>>> z^ugS=eU<E7Ou*P46nwK{K#qs at mE0B%*0RHqACDVnGZ#w54$*E(v}1b<+tupBtex_S
>>> zpE*Ag^PL}msrjaNTkVl0SeK4}rFUGM3E-^8@$w}0w3>8F!aO73WxFWP6ZMi=rt|s2
>>> zJyyXU*Sf!<zV`9H{>AL;9L~rbFXLVOqu^HLG!uU}n9bv_4;=NjW{)~D$j at xx6!23V
>>> zw+9D(tpR$s5c>nzDnHKLUPbw>+fDwjyUe^xdk1>ICOgm?hM(002XW3>!CG-f&pb{}
>>> ztL3!yW*nFRjmDR=oi)DE-bec>#xsOChk3;LYCvm5+z|c1hYk%)!gWvMTllcO7JDRo
>>> zAFo_O-=F!}?|rB7-SGV9kS}3f;~VL at rNA8n+a=7yxrM-O1MhJhHfMH<m7v>zJ5Bzx
>>> z)YfJ4oc%B06(-Nww}9hYG|4<m-!3Wz{t|HND+KzpyAQLz-47!Mn)8>B3x};|w?${%
>>> zG=JLj%lJ25YKJl6`+=S3o0+`}rw5Q{@$x{pov&Bq5No?O{#_m4adYSK;Cq66wn&b<
>>> zI2Y#5=;{45w~j=d!aB8Y5q>{w%}sY3X9WKQ&0X*zoZTG8S^AsTXF5(n*YV14V-Jb<
>>> zJ);u2%A%`{zVmyrPHQ!X<HwNU<=?T#D{rGcC*sCQ$fIx5Z^93KLH5b>;PHvva-_kD
>>> zc0WUIZema33~3sCkM0O#p1tUw-etzw9(*gRrZE6-&?Q#mVH`(Xs~muh{~4f at Y<!C$
>>> z{~|i>FR%vy8^qX&_7KWrfS{+|jMXG-0=TDvm*pMs^Pr>Rd5SscJD~A%w70wVqCSXw
>>> z8`%r2742&&@1Z}h*`ML1JvPR<i^h%TPBAALocAaAc|UARYh*6D&5{!)`FAcIJ_);{
>>> z-;*?V+Hl1Uuo0b2G*3c at K_|0Mp`Q9wzzh1zg0CGq=KVGocgB!ECLl+zhSB<v%PY-$
>>> zD4@$_=xt at _QW<(n8G1t*x>APTS%%(ThVCvyXJzQ#GW6y$^qMmC+A?&18G2nAx~~kq
>>> zx)dEt;4k#6oPzu7j7gJ#U4U^w8W3j8 at f6@uKqtThs0G*<qx*pNHvqo`+y__- at B!)o
>>> zmjR%w^eo^>Z2vw4oB;d^Z~(9q5CeQ4-~}vY%w+&h0;U0v0icI#3jjK}dI8M<C$0wm
>>> z4saX*ot+N at eh5ec?g4ZGz~{srK?(XvkSC$v$|Zmr#@wd>F93dl at n-P+5x@<=SlvSa
>>> zETzha013bV;5NXwF%U$e+^_x&VIyhv at 90^*MjaWwYki1c at gqXf&jw53H-BF1B^Zm^
>>> zl_=U`;pE1Rk#L+u29u#-^=5f#s)|`}vQe|WfI|R`--Z>>jsV^Oj=5uffI+}^Ktf!A
>>> z!-c*`D2l6kD at MX>C>~0NZ&{9Og-JD)l9#qA(Y3N5t_md*YM3tdne-}?8+Qpyu!B0A
>>> ze`PE*6jgC6a+Nv~Pj2o{U=VUrO^+sHYFJ(x#$foJN;v|hP>~vqrZLDo{SGw|MH5og
>>> zWV{88dEHG?|0u2`rqr++o?*jn!*ntpB?A9R at C6BeD#?HrfCBIV0)V>#8vx}08ej+D
>>> zcoFO=D(C7aL5J-*|1(0LbSOQVGP~wJ+zkIjpHB4YM4wLd=|rDS^yx&OP91<go#?{}
>>> zc}~d7w|fR<^yPfjq&eRNeg^Ov%1rQKTsi*#*R$Hxzc&(%;sR>k<aB3qro=C6&J<Tf
>>> zab<L-czZ&PQOWA9e1dOPQ|VAN?Z=(gDDJ>o>TgYk5*s4JxagWxagCKOs7BNjvyy$0
>>> zq&l1~Q;DmnrP|yY!Ufu%*t&QhF6S0VyF;ZOHmaN>Nd8$+4SBq#keCc at 4usYhazY_!
>>> zxw(*0O%q?C{v@)P5nh{!C(|iEmfxmOQe82cOvRH0vLOE}YJJJjrmv_*pM|x=-w)TE
>>> zHHQ4{*@Di|zH|k&qRYy~%(H0V3&c0!y7a6*A-YTrwMnY$aE}>_nO_(dSDlM{n;X~i
>>> zP)Ze%s#pM|$KX at A7hGJkDjqI05!A)xBymf-R29*1<2n*sUmyr0nZ at 0|DUu%EFpCWN
>>> ztJO>zSHbBncL|MnstJUWp^+4pJhSVF?Wd5UWZ-KNdqAUfg;dFLmlw||<X9a~#2o%a
>>> z+5Gu>`U5?G+vEGr(zf=DeAlX#tG=@|EUy}>Vt2+;rcWX=_xR++RZI+9PO0fM21tQ9
>>> z!~a!mbv!Mvi;u>_h}?1%OH5uYkEXyRht+i<MDf-tCK8~$@w(QwHpu7IX}SY1r{i)e
>>> zGBO&4JIZ%0?*sGdxNKIX%<J{C=k|Vit^D0<T8Kf8p}!=*Xs^OIz)yjPx-(-|Yb!{w
>>> zxlGoz>KRI<BI}WBt__(94lA>}JJ8o6ifnoJ9ms9p%J2?y%ry3V#YhAq(2=#7oDlcm
>>> S3pms9xI7eDPqe?>@BaW(s=rMD
>>>
>>> literal 0
>>> HcmV?d00001
>>
>> Your patch does successfully work with Mac OS 10.4.0, Mac OS  
>> 9.2.1, and Mac OS 9.0.4. Great job :)
>>
>> Reviewed-by: John Arbuckle <programmingkidx at gmail.com>
>> -- 
>> OpenBIOS                 http://openbios.org/
>> Mailinglist:  http://lists.openbios.org/mailman/listinfo
>> Free your System - May the Forth be with you
>
> Hi, I noticed one small regression using this patch and the rom:  
> OSX 10.5 no longer gets to the desktop. Not that it matters much,  
> mouse and keyboard weren’t working anyway.

I'm glad to hear that Mac OS 10.5 boots to the desktop. If this  
driver does cause problems it could be a problem with Mac OS 10.5, or  
the driver. Either way, a command-line option for disabling or  
altering this driver might be the solution.

The mouse and keyboard drivers for ADB were removed from the Mac OS  
in Mac OS 10.5 I think. Could you try the USB keyboard and mouse?

Do you think you could post a picture of Mac OS 10.5 running in QEMU?

Thanks.


More information about the OpenBIOS mailing list