[OpenBIOS] [PATCH RFC] openbios-devel/arch/ppc/qemu/init.c

Alexander Graf agraf at suse.de
Mon Apr 14 11:51:45 CEST 2014


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 the
>> changes.
> Here are my proposed changes to qemu/init.c. This is all in one patch
> currently 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 are
> needed. 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't
> know 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.

> +    }
> +
>       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.

> +
>       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?


Alex




More information about the OpenBIOS mailing list