|
From: | Alexander Graf |
Subject: | Re: [Qemu-ppc] [PATCH RFC] openbios-devel/arch/ppc/qemu/init.c |
Date: | Wed, 16 Apr 2014 13:40:35 +0200 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 |
On 14.04.14 22:20, BALATON Zoltan wrote:
On Mon, 14 Apr 2014, Alexander Graf wrote:On 09.03.14 01:13, BALATON Zoltan wrote:On Sat, 8 Mar 2014, Mark Cave-Ayland wrote:I would say do a separate patchset with patches 1 and 4 with CC to the PPC maintainers (Alex and Andreas) and make sure that they are happy with thechanges.Here are my proposed changes to qemu/init.c. This is all in one patchcurrently that I can split into 3 or 4 separate patches if that preferred but before doing that I'd like to get your comments if other changes areneeded. The patch contains the following changes: - Remove unused clock_frequency from CPU info (these are now get via FW_CFG for a while)- Add tlb-sets and tlb-size instead (only for G4 for now because I don'tknow the correct values for other CPUs) - Add bus-frequency property to CPU - Rename the root node on Apple machines to match their conventions Regards, BALATON Zoltan Index: openbios-devel/arch/ppc/qemu/init.c =================================================================== --- openbios-devel/arch/ppc/qemu/init.c (revision 1277) +++ openbios-devel/arch/ppc/qemu/init.c (working copy) @@ -44,7 +44,7 @@ int icache_size, dcache_size; int icache_sets, dcache_sets; int icache_block_size, dcache_block_size; - int clock_frequency; + int tlb_sets, tlb_size; void (*initfn)(const struct cpudef *cpu); }; @@ -269,6 +269,18 @@ push_str("i-cache-block-size"); fword("property"); + if(cpu->tlb_size) { + PUSH(cpu->tlb_sets); + fword("encode-int"); + push_str("tlb-sets"); + fword("property"); + + PUSH(cpu->tlb_size); + fword("encode-int"); + push_str("tlb-size"); + fword("property");Please just find the correct values and add the properties to the cpu nodes always.Where can I find the correct values? Maybe QEMU should send it via FW_CFG because OpenBIOS only seems to have data for a few CPUs and most of them have a comment saying that the values are not correct anyway. But I could not find where is this data available in QEMU.
That'd work for me. I also wouldn't be opposed to move OpenBIOS to a scheme similar to SLOF and u-boot where we pass the device tree to firmware and use that instead of fw_cfg to enumerate devices in our system.
+ } + PUSH(fw_cfg_read_i32(FW_CFG_PPC_TBFREQ)); fword("encode-int"); push_str("timebase-frequency"); @@ -279,6 +291,11 @@ push_str("clock-frequency"); fword("property"); + PUSH(100 * 1000 * 1000); + fword("encode-int"); + push_str("bus-frequency"); + fword("property");I'm fairly sure this is wrong.What is the good value then? (Some other data e.g. the clock frequency is also a made up value to make the clients happy.)
Don't we send the bus frequency via fw_cfg? I remember we had a pretty long thread about bus frequency and how it kept breaking Mac OS X.
+ push_str("running"); fword("encode-string"); push_str("state"); @@ -391,7 +408,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x07de2900, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_604_init, }, { // XXX find out real values @@ -403,7 +421,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x07de2900, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_604_init, }, { // XXX find out real values @@ -415,7 +434,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x07de2900, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_604_init, }, { // XXX find out real values @@ -427,7 +447,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x14dc9380, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_750_init, }, { @@ -439,7 +460,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x14dc9380, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_750_init, }, { // XXX find out real values @@ -451,7 +473,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x14dc9380, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_750_init, }, { // XXX find out real values @@ -463,7 +486,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x14dc9380, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_750_init, }, { // XXX find out real values @@ -475,7 +499,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x14dc9380, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_750_init, }, { // XXX find out real values @@ -487,7 +512,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x14dc9380, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_750_init, }, { @@ -499,7 +525,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20, - .clock_frequency = 0x1dcd6500, + .tlb_sets = 0x40, + .tlb_size = 0x80, .initfn = cpu_g4_init, }, { @@ -511,7 +538,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x80, .dcache_block_size = 0x80, - .clock_frequency = 0x5f5e1000, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_970_init, }, { // XXX find out real values @@ -523,7 +551,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x80, .dcache_block_size = 0x80, - .clock_frequency = 0x1dcd6500, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_970_init, }, { @@ -535,7 +564,8 @@ .dcache_sets = 0x40, .icache_block_size = 0x80, .dcache_block_size = 0x80, - .clock_frequency = 0x629b4940, + .tlb_sets = 0x00, + .tlb_size = 0x00, .initfn = cpu_970_init, }, }; @@ -702,6 +732,12 @@ push_str("/"); fword("find-device"); + /* Apple calls the root node device-tree */ + if (is_apple()) { + push_str("device-tree"); + fword("device-name"); + }Always? No difference between oldworld and newworld?As far as I can tell looking at these device tree dumps:http://web.archive.org/web/20081120133742/http://penguinppc.org/historical/dev-trees-html/it seems to be always called like that also on old world machines.
Ok :). Alex
[Prev in Thread] | Current Thread | [Next in Thread] |