Message ID | 1261175847-16915-2-git-send-email-agraf@suse.de |
---|---|
State | New |
Headers | show |
Am 18.12.2009 um 23:37 schrieb Alexander Graf: > When using the escc with Linux, we need interrupts. So instead of > creating > a dummy device, let's just map them to the openpic we have anyways. > > This makes Linux on PPC64 with console=ttyPZ0 work. With these patches and OpenBIOS r646, booting 'install64' on the following Debian CDs worked for me: debian-40r4a-powerpc-netinst.iso debian-503-powerpc-netinst.iso By default however you get the following error: invalid/unsupported opcode: 1e - 12 - 1b (782106e4) 00000000014080e4 1 invalid/unsupported opcode: 00 - 00 - 00 (00000000) 0000000000008734 0 which translates to: qemu-system-ppc64 is using a 32-bit CPU by default. '-cpu ppc64' (970FX according to OpenBIOS) worked, while '-cpu 970' was not recognized by OpenBIOS. If you change only the CPU to 'ppc64', it will be rejected: qemu: hardware error: Bus model not supported on OldWorld Mac machine That's why Alex mentioned '-M mac99' elsewhere, I guess. Can't we change the defaults? I believe the G5 was the first 64-bit Mac and is considered New World, so Old World shouldn't even be selectable IMO. `install64 console=ttyPZ0` only gets me to the penguin and appears to hang... `install64` gets me through to the installer screen on Linux/amd64 host. There are merely some FATALs visible while trying to load drivers for therm_* and windfarm_* devices ("No such device"). Andreas > Obviously, this change needs to be reflected in openbios. Patch for > that > follows this one. Please update the binary then. > > Signed-off-by: Alexander Graf <agraf@suse.de> > --- > hw/ppc_newworld.c | 6 +----- > 1 files changed, 1 insertions(+), 5 deletions(-) > > diff --git a/hw/ppc_newworld.c b/hw/ppc_newworld.c > index b29a7bc..a09f096 100644 > --- a/hw/ppc_newworld.c > +++ b/hw/ppc_newworld.c > @@ -108,7 +108,6 @@ static void ppc_core99_init (ram_addr_t ram_size, > MacIONVRAMState *nvr; > int nvram_mem_index; > int vga_bios_size, bios_size; > - qemu_irq *dummy_irq; > int pic_mem_index, dbdma_mem_index, cuda_mem_index, > escc_mem_index; > int ppc_boot_device; > DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; > @@ -318,10 +317,7 @@ static void ppc_core99_init (ram_addr_t ram_size, > /* init basic PC hardware */ > pci_vga_init(pci_bus, vga_bios_offset, vga_bios_size); > > - /* XXX: suppress that */ > - dummy_irq = i8259_init(NULL); > - > - escc_mem_index = escc_init(0x80013000, dummy_irq[4], > dummy_irq[5], > + escc_mem_index = escc_init(0x80013000, pic[0x25], pic[0x24], > serial_hds[0], serial_hds[1], > ESCC_CLOCK, 4); > > for(i = 0; i < nb_nics; i++) > -- > 1.6.0.2 > > >
Am 19.12.2009 um 22:58 schrieb Andreas Färber <andreas.faerber@web.de>: > Am 18.12.2009 um 23:37 schrieb Alexander Graf: > >> When using the escc with Linux, we need interrupts. So instead of >> creating >> a dummy device, let's just map them to the openpic we have anyways. >> >> This makes Linux on PPC64 with console=ttyPZ0 work. > > With these patches and OpenBIOS r646, booting 'install64' on the > following Debian CDs worked for me: > > debian-40r4a-powerpc-netinst.iso > debian-503-powerpc-netinst.iso Nice, interesting! > > By default however you get the following error: > > invalid/unsupported opcode: 1e - 12 - 1b (782106e4) 00000000014080e4 1 > invalid/unsupported opcode: 00 - 00 - 00 (00000000) 0000000000008734 0 > > which translates to: qemu-system-ppc64 is using a 32-bit CPU by > default. > '-cpu ppc64' (970FX according to OpenBIOS) worked, while '-cpu 970' > was not recognized by OpenBIOS. Yes, I only test whatever I do with -cpu 970fx. > > If you change only the CPU to 'ppc64', it will be rejected: > qemu: hardware error: Bus model not supported on OldWorld Mac machine > > That's why Alex mentioned '-M mac99' elsewhere, I guess. Can't we > change the defaults? I believe the G5 was the first 64-bit Mac and > is considered New World, so Old World shouldn't even be selectable > IMO. I agree. Please send a patch, CC me and I'll ack it. > > `install64 console=ttyPZ0` only gets me to the penguin and appears > to hang... Well, on older kernels this was console=ttyS0. > `install64` gets me through to the installer screen on Linux/amd64 > host. There are merely some FATALs visible while trying to load > drivers for therm_* and windfarm_* devices ("No such device"). Yesh, ADB shouldn't work either so you don't get input devices :-(. Alex > > Andreas > >> Obviously, this change needs to be reflected in openbios. Patch for >> that >> follows this one. Please update the binary then. >> >> Signed-off-by: Alexander Graf <agraf@suse.de> >> --- >> hw/ppc_newworld.c | 6 +----- >> 1 files changed, 1 insertions(+), 5 deletions(-) >> >> diff --git a/hw/ppc_newworld.c b/hw/ppc_newworld.c >> index b29a7bc..a09f096 100644 >> --- a/hw/ppc_newworld.c >> +++ b/hw/ppc_newworld.c >> @@ -108,7 +108,6 @@ static void ppc_core99_init (ram_addr_t ram_size, >> MacIONVRAMState *nvr; >> int nvram_mem_index; >> int vga_bios_size, bios_size; >> - qemu_irq *dummy_irq; >> int pic_mem_index, dbdma_mem_index, cuda_mem_index, >> escc_mem_index; >> int ppc_boot_device; >> DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; >> @@ -318,10 +317,7 @@ static void ppc_core99_init (ram_addr_t >> ram_size, >> /* init basic PC hardware */ >> pci_vga_init(pci_bus, vga_bios_offset, vga_bios_size); >> >> - /* XXX: suppress that */ >> - dummy_irq = i8259_init(NULL); >> - >> - escc_mem_index = escc_init(0x80013000, dummy_irq[4], dummy_irq >> [5], >> + escc_mem_index = escc_init(0x80013000, pic[0x25], pic[0x24], >> serial_hds[0], serial_hds[1], >> ESCC_CLOCK, 4); >> >> for(i = 0; i < nb_nics; i++) >> -- >> 1.6.0.2 >> >> >> >
diff --git a/hw/ppc_newworld.c b/hw/ppc_newworld.c index b29a7bc..a09f096 100644 --- a/hw/ppc_newworld.c +++ b/hw/ppc_newworld.c @@ -108,7 +108,6 @@ static void ppc_core99_init (ram_addr_t ram_size, MacIONVRAMState *nvr; int nvram_mem_index; int vga_bios_size, bios_size; - qemu_irq *dummy_irq; int pic_mem_index, dbdma_mem_index, cuda_mem_index, escc_mem_index; int ppc_boot_device; DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; @@ -318,10 +317,7 @@ static void ppc_core99_init (ram_addr_t ram_size, /* init basic PC hardware */ pci_vga_init(pci_bus, vga_bios_offset, vga_bios_size); - /* XXX: suppress that */ - dummy_irq = i8259_init(NULL); - - escc_mem_index = escc_init(0x80013000, dummy_irq[4], dummy_irq[5], + escc_mem_index = escc_init(0x80013000, pic[0x25], pic[0x24], serial_hds[0], serial_hds[1], ESCC_CLOCK, 4); for(i = 0; i < nb_nics; i++)
When using the escc with Linux, we need interrupts. So instead of creating a dummy device, let's just map them to the openpic we have anyways. This makes Linux on PPC64 with console=ttyPZ0 work. Obviously, this change needs to be reflected in openbios. Patch for that follows this one. Please update the binary then. Signed-off-by: Alexander Graf <agraf@suse.de> --- hw/ppc_newworld.c | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-)