Message ID | 1469608053.5978.132.camel@kernel.crashing.org |
---|---|
State | New |
Headers | show |
On Wed, Jul 27, 2016 at 06:27:33PM +1000, Benjamin Herrenschmidt wrote: > 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. So, I believe qemu convention is to include the ROM source via a submodule - even though it won't typically be built from there and the prebuilt blob will be used instead. Not sure who the right person to talk to about that would be. > > Signed-off-by: Benjamin Herrenschmidt <benh@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..0b1549d1c5978f87aed2b6e496a23fbaf18dbea4 > GIT binary patch > literal 12808 > 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 > S3pms9xI7eDPqe?>@BaW(s=rMD > > literal 0 > HcmV?d00001 > >
On 07/28/2016 07:51 AM, David Gibson wrote: > On Wed, Jul 27, 2016 at 06:27:33PM +1000, Benjamin Herrenschmidt wrote: >> 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. > So, I believe qemu convention is to include the ROM source via a > submodule - even though it won't typically be built from there and the > prebuilt blob will be used instead. > > Not sure who the right person to talk to about that would be. I think Stefan handles the logistics there now. CC'ed him. The reason for the submodule is so that on tar releases, the source gets included automatically. That way we can ensure that we always include all GPL sources that we deliver binaries for. Alex
On Thu, Jul 28, 2016 at 09:04:25AM +0200, Alexander Graf wrote: > On 07/28/2016 07:51 AM, David Gibson wrote: > > On Wed, Jul 27, 2016 at 06:27:33PM +1000, Benjamin Herrenschmidt wrote: > > > 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. > > So, I believe qemu convention is to include the ROM source via a > > submodule - even though it won't typically be built from there and the > > prebuilt blob will be used instead. > > > > Not sure who the right person to talk to about that would be. > > I think Stefan handles the logistics there now. CC'ed him. > > > The reason for the submodule is so that on tar releases, the source gets > included automatically. That way we can ensure that we always include all > GPL sources that we deliver binaries for. Jeff Cody now admins the qemu-project.org server, including the git repos. Jeff, please create a mirror git repo for https://github.com/ozbenh/QemuMacDrivers at git://git.qemu-project.org/QemuMacDrivers.git with nightly mirroring. Once Jeff has set up the mirror repo, please send a new revision of this patch that makes roms/QemuMacDrivers a git-submodule(1) pointing to git://git.qemu-project.org/QemuMacDrivers.git. Please double-check that the binary ROM included in the patch corresponds to the QemuMacDrivers commit referenced by the git-submodule(1) before sending the patch. Thanks, Stefan
On Thu, 2016-07-28 at 15:51 +1000, David Gibson wrote: > So, I believe qemu convention is to include the ROM source via a > submodule - even though it won't typically be built from there and the > prebuilt blob will be used instead. > > Not sure who the right person to talk to about that would be. Probably Peter, and that git repo will eventually grow more ROMs as I add virtio drivers for MacOS :-) But for now, let's first agree (or not) with Mark how we deal with this on the openbios side. My preference is to rework the PCI stack there and add proper f-code support, so I can package the drivers using f-code. But that will probably take a while, in the meantime, the raw PEF which is what I added here is I think a reasonable compromise. In fact I wouldn't be completely against doing the virtio driers in forth ;-) But he might have other ideas. Cheers ,Ben.
On Thu, 2016-07-28 at 09:28 +0100, Stefan Hajnoczi wrote: > > Jeff, please create a mirror git repo for > https://github.com/ozbenh/QemuMacDrivers at > git://git.qemu-project.org/QemuMacDrivers.git with nightly mirroring. > > Once Jeff has set up the mirror repo, please send a new revision of > this > patch that makes roms/QemuMacDrivers a git-submodule(1) pointing to > git://git.qemu-project.org/QemuMacDrivers.git. > > Please double-check that the binary ROM included in the patch > corresponds to the QemuMacDrivers commit referenced by the > git-submodule(1) before sending the patch. Ok, we don't yet need to do all of this though as there are still some open questions about how we expose the ROM to MacOS via OpenBIOS as a consequence the format of the ROM file. You can still mirror the git repo, any change will be done there, but let's not include the submodule and/or apply the patch before Mark and I have sorted the OpenBIOS side. Cheers, Ben.
On Di, 2016-08-02 at 07:24 +1000, Benjamin Herrenschmidt wrote: > On Mon, 2016-08-01 at 21:38 +0200, Gerd Hoffmann wrote: > > Hi, > > > > > So, I believe qemu convention is to include the ROM source via a > > > submodule - even though it won't typically be built from there and > > the > > > prebuilt blob will be used instead. > > > > Correct. Also rules in roms/Makefile to build the thing, to document > > the build process and to simplify the maintainer's job on updates. > > That's the part we cannot provide unfortunately. There is sadly no > toolchain that can produce a MacOS PEF binary other than hosted in > MacOS itself. In fact I don't think Apple XCode can either, which > leaves us with CodeWarrior (commercial) or MPW (which I think at some > point became free but I didn't find it and it doesn't work on OS X > afaik). Firmware builds often have specific requirements, such as only working on $arch due to firmware not being cross-buildable (thats why there are the prebuilt binaries in the first place). So if those makefile rules work only on macos with CodeWarrior installed that is perfectly fine. cheers, Gerd
On Tue, 2016-08-02 at 07:25 +0200, Gerd Hoffmann wrote: > > That's the part we cannot provide unfortunately. There is sadly no > > toolchain that can produce a MacOS PEF binary other than hosted in > > MacOS itself. In fact I don't think Apple XCode can either, which > > leaves us with CodeWarrior (commercial) or MPW (which I think at some > > point became free but I didn't find it and it doesn't work on OS X > > afaik). > > Firmware builds often have specific requirements, such as only working > on $arch due to firmware not being cross-buildable (thats why there are > the prebuilt binaries in the first place). So if those makefile rules > work only on macos with CodeWarrior installed that is perfectly fine. Right though in that case it's not a Makefile, it's a CodeWarrior project in .xml form ;-) It is included in the git repo. CodeWarrior for MacOS X does come with command line versions of the tools, I plan to look into doing a Makefile once I've sorted out the various arguments for these things at least. Cheers, Ben.
On Di, 2016-08-02 at 15:35 +1000, Benjamin Herrenschmidt wrote: > On Tue, 2016-08-02 at 07:25 +0200, Gerd Hoffmann wrote: > > > That's the part we cannot provide unfortunately. There is sadly no > > > toolchain that can produce a MacOS PEF binary other than hosted in > > > MacOS itself. In fact I don't think Apple XCode can either, which > > > leaves us with CodeWarrior (commercial) or MPW (which I think at some > > > point became free but I didn't find it and it doesn't work on OS X > > > afaik). > > > > Firmware builds often have specific requirements, such as only working > > on $arch due to firmware not being cross-buildable (thats why there are > > the prebuilt binaries in the first place). So if those makefile rules > > work only on macos with CodeWarrior installed that is perfectly fine. > > Right though in that case it's not a Makefile, it's a CodeWarrior > project in .xml form ;-) It is included in the git repo. Good, that simplifies the makesfile rules to something like: macosdrivers: (cd $submodule: cw-build-tool $args $project.xml) cp -v $submodule/$binary ../pc-bios > CodeWarrior for MacOS X does come with command line versions of the > tools, I plan to look into doing a Makefile once I've sorted out the > various arguments for these things at least. Yes, you do that once, put it into roms/Makefile, and the next time you just do "make -C roms macosdrivers" instead of sorting out the various arguments *again*. Bonus: Any possible contributers will have an easier start too. cheers, Gerd
On Tue, 2016-08-02 at 10:55 +0200, Gerd Hoffmann wrote: > > CodeWarrior for MacOS X does come with command line versions of the > > tools, I plan to look into doing a Makefile once I've sorted out the > > various arguments for these things at least. > > Yes, you do that once, put it into roms/Makefile, and the next time you > just do "make -C roms macosdrivers" instead of sorting out the various > arguments *again*. > > Bonus: Any possible contributers will have an easier start too. I did notice that having Makefiles in the roms directory make git submodule barf ... I had to remove them for it to be able to clone the submodules. Cheers, Ben.
On Di, 2016-08-02 at 19:17 +1000, Benjamin Herrenschmidt wrote: > On Tue, 2016-08-02 at 10:55 +0200, Gerd Hoffmann wrote: > > > CodeWarrior for MacOS X does come with command line versions of the > > > tools, I plan to look into doing a Makefile once I've sorted out the > > > various arguments for these things at least. > > > > Yes, you do that once, put it into roms/Makefile, and the next time you > > just do "make -C roms macosdrivers" instead of sorting out the various > > arguments *again*. > > > > Bonus: Any possible contributers will have an easier start too. > > I did notice that having Makefiles in the roms directory make > git submodule barf ... I had to remove them for it to be able > to clone the submodules. I mean roms/Makefile, not roms/$submodule/Makefile cheers, Gerd
On Tue, 2016-08-02 at 12:53 +0200, Gerd Hoffmann wrote: > > I did notice that having Makefiles in the roms directory make > > git submodule barf ... I had to remove them for it to be able > > to clone the submodules. > > I mean roms/Makefile, not roms/$submodule/Makefile I see, ok well, we'll see when I get a chance to look at doing Makefiles for OS X... right now I build this using an IDE so it won't do that much good. Anyway, not terribly urgent. I'm reworking a whole pile of the Mac emulation, trying to bring it to a more decent state, so that's only part of the picture. Cheers, Ben.
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 = {
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@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/pc-bios/qemu_vga.ndrv b/pc-bios/qemu_vga.ndrv new file mode 100644 index 0000000000000000000000000000000000000000..0b1549d1c5978f87aed2b6e496a23fbaf18dbea4 GIT binary patch literal 12808 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 S3pms9xI7eDPqe?>@BaW(s=rMD literal 0 HcmV?d00001