qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: LEROY Christophe <christophe.leroy@csgroup.eu>
To: "Cédric Le Goater" <clg@kaod.org>, "BALATON Zoltan" <balaton@eik.bme.hu>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>,
	"dbarboza@redhat.com" <dbarboza@redhat.com>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
	"Greg Kurz" <groug@kaod.org>, "Alexander Graf" <agraf@csgraf.de>,
	qemu-ppc <qemu-ppc@nongnu.org>, "Cleber Rosa" <crosa@redhat.com>,
	"Hervé Poussineau" <hpoussin@reactos.org>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"David Gibson" <david@gibson.dropbear.id.au>
Subject: Re: Deprecate the ppc405 boards in QEMU?
Date: Wed, 20 Oct 2021 13:27:23 +0000	[thread overview]
Message-ID: <e63df215-aacc-b57b-6ed2-d63927060eb7@csgroup.eu> (raw)
In-Reply-To: <38de2462-17ea-0264-5606-6e07b129920d@kaod.org>



Le 20/10/2021 à 12:10, Cédric Le Goater a écrit :
> On 10/20/21 11:02, Christophe Leroy wrote:
>>
>>
>> Le 19/10/2021 à 23:30, Cédric Le Goater a écrit :
>>> On 10/19/21 18:12, Christophe Leroy wrote:
>>>>
>>>>
>>>> Le 19/10/2021 à 16:56, BALATON Zoltan a écrit :
>>>>> On Tue, 19 Oct 2021, Christophe Leroy wrote:
>>>>>> Le 19/10/2021 à 15:44, Christophe Leroy a écrit :
>>>>>>> There is something:
>>>>>>>
>>>>>>> => bootm 0
>>>>>>> Wrong Image Format for bootm command
>>>>>>> ERROR: can't get kernel image!
>>>>>>>
>>>>>>> => md 0
>>>>>>> 00000000: 00000000 b497aae1 616e9207 003227a4    '..V....an...2'.
>>>>>>> 00000010: 00000000 00000000 ee36255f 05070201    .........6%_....
>>>>>>> 00000020: 4c696e75 782d352e 31352e30 2d726335    Linux-5.15.0-rc5
>>>>>>> 00000030: 2d303232 32342d67 61336330 30376164    -02224-ga3c007ad
>>>>>>> 00000040: 1f8b0800 00000000 0203ec5c 0f7013e7    ...........\.p..
>>>>>>>
>>>>>>> => mw.l 0 0x27051956
>>>>>>>
>>>>>>> => bootm 0
>>>>>>> ## Booting kernel from Legacy Image at 00000000 ...
>>>>>>>     Image Name:   Linux-5.15.0-rc5-02224-ga3c007ad
>>>>>>>     Image Type:   PowerPC Linux Kernel Image (gzip compressed)
>>>>>>>     Data Size:    3286948 Bytes = 3.1 MiB
>>>>>>>     Load Address: 00000000
>>>>>>>     Entry Point:  00000000
>>>>>>>     Verifying Checksum ... Bad Data CRC
>>>>>>> ERROR: can't get kernel image!
>>>>>>>
>>>>>>>
>>>>>>> So we have something but it seems it gets overwritten by stuff.
>>>>>>>
>>>>>>> Anyway loading a uImage at 0 is just bad because it is a gzipped 
>>>>>>> image that should get gunzipped at address 0.
>>>>>>>
>>>>>>> Or should we just copy the raw kernel at 0 and jump to the entry 
>>>>>>> point ? But then we also need a device tree somewhere.
>>>>>>>
>>>>>>
>>>>>> If I change KERNEL_LOAD_ADDR to 0x1000000, I can bootm at that 
>>>>>> address, and it seems it properly decompress the kernel:
>>>>>>
>>>>>> => bootm 0x1000000
>>>>>> ## Booting kernel from Legacy Image at 01000000 ...
>>>>>>   Image Name:   Linux-5.15.0-rc5-02224-ga3c007ad
>>>>>>   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
>>>>>>   Data Size:    3296789 Bytes = 3.1 MiB
>>>>>>   Load Address: 00000000
>>>>>>   Entry Point:  00000000
>>>>>>   Verifying Checksum ... OK
>>>>>>   Uncompressing Kernel Image ... OK
>>>>>>
>>>>>>
>>>>>> And it initialises the MMU properly.
>>>>>>
>>>>>> Then it gets stuck because there is no devicetree.
>>>>>>
>>>>>> (gdb) bt
>>>>>> #0  0xc00094cc in udelay ()
>>>>>> #1  0xc0025d34 in panic ()
>>>>>> #2  0xc06415a0 in early_init_devtree ()
>>>>>> #3  0xc0641da8 in machine_init ()
>>>>>> #4  0xc0002200 in start_here ()
>>>>>
>>>>> Maybe you need to embed a dtb in your kernel if that's possible 
>>>>> somehow? Or QEMU has a -dtb option that sets machine->dtb but you 
>>>>> need board code to do something with it. See how it's done in other 
>>>>> boards like virtex_ml507 and sam460ex. But maybe you'd be better 
>>>>> off not using -kernel option as it seems to not really working for 
>>>>> these 405 boards but load and start the kernel from u-boot. Not 
>>>>> sure what device does u-boot support but QEMU can emulate 
>>>>> usb-storage, network, different disks so something might work with 
>>>>> u-boot if this board has any peripherals. If it doesn't emulate any 
>>>>> peripherals what do you expect to do with the kernel once it boots?
>>>>>
>>>>
>>>> I should be able to build a multi-FIT image that embeds the kernel 
>>>> and the device tree.
>>>>
>>>> I don't know about the peripherals, what I need it a kernel that is 
>>>> able to boot and run some user exe. I'm working on low level 
>>>> functionnalities like VMAP_STACK, STRICT_KERNEL_RWX, Userspace 
>>>> protection, etc ... I want to be able to check that after some 
>>>> modifications the kernel can still boot on every CPU sub-family, and 
>>>> I need to run LKDTM tests.
>>>>
>>>> For this a kernel + initrd is enough.
>>>
>>> hotfoot.dts is the only DT with a CPU model "PowerPC,405EP".
>>>
>>> With cuImage.hotfoot,
>>>
>>> U-Boot 2015.10-00236-g677f970bc6-dirty (Oct 06 2021 - 08:59:53 +0200)
>>>
>>> CPU:   AMCC PowerPC 405EP Rev. B at 770 MHz (PLB=256 OPB=128 EBC=128)
>>>         I2C boot EEPROM disabled
>>>         Internal PCI arbiter enabled
>>>         16 KiB I-Cache 16 KiB D-Cache
>>> Board: Taihu - AMCC PPC405EP Evaluation Board
>>> I2C:   ready
>>> DRAM:  128 MiB
>>> Flash: ## Unknown FLASH on Bank 0 - Size = 0x00000000 = 0 MB
>>> ## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
>>> 0 Bytes
>>> *** Warning - bad CRC, using default environment
>>>
>>> PCI:   Bus Dev VenId DevId Class Int
>>> PCI:
>>> Net:   No ethernet found.
>>>
>>> Type run flash_nfs to mount root filesystem over NFS
>>>
>>> Hit any key to stop autoboot:  0
>>> => bootm 01000000
>>> ## Booting kernel from Legacy Image at 01000000 ...
>>>     Image Name:   Linux-5.15.0-rc6-dirty
>>>     Image Type:   PowerPC Linux Kernel Image (gzip compressed)
>>>     Data Size:    3326878 Bytes = 3.2 MiB
>>>     Load Address: 00700000
>>>     Entry Point:  00701aa8
>>>     Verifying Checksum ... OK
>>>     Uncompressing Kernel Image ... OK
>>> Memory <- <0x0 0x8000000> (128MB)
>>> CPU clock-frequency <- 0x0 (0MHz)
>>> CPU timebase-frequency <- 0x0 (0MHz)
>>> /plb: clock-frequency <- 0 (0MHz)
>>> /plb/opb: clock-frequency <- 0 (0MHz)
>>> /plb/ebc: clock-frequency <- 0 (0MHz)
>>> /plb/opb/serial@ef600300: clock-frequency <- 0 (0MHz)
>>> /plb/opb/serial@ef600400: clock-frequency <- 0 (0MHz)
>>> ethernet0: local-mac-address <- 00:00:00:00:00:00
>>> ethernet1: local-mac-address <- 00:00:2d:e5:44:80
>>> Fixing devtree for 4M Flash
>>>
>>> zImage starting: loaded at 0x00700000 (sp: 0x07eaabb0)
>>> Decompression error: 'Not a gzip file'
>>> No valid compressed data found, assume uncompressed data
>>> Allocating 0x6c128c bytes for kernel...
>>> 0x69e1ec bytes of uncompressed data copied
>>>
>>> Linux/PowerPC load:
>>> Finalizing device tree... flat tree at 0xdc5960
>>> Linux version 5.15.0-rc6-dirty (legoater@yukon) 
>>> (powerpc64-linux-gnu-gcc (GCC) 11.2.1 20210728 (Red Hat Cross 
>>> 11.2.1-1), GNU ld version 2.35.2-1.fc34) #1 Tue Oct 19 15:15:21 CEST 
>>> 2021
>>> Using PowerPC 40x Platform machine description
>>> printk: bootconsole [udbg0] enabled
>>> -----------------------------------------------------
>>> phys_mem_size     = 0x8000000
>>> dcache_bsize      = 0x20
>>> icache_bsize      = 0x20
>>> cpu_features      = 0x0000000000000100
>>>    possible        = 0x0000000000000100
>>>    always          = 0x0000000000000100
>>> cpu_user_features = 0x86000000 0x00000000
>>> mmu_features      = 0x00000004
>>> -----------------------------------------------------
>>> Zone ranges:
>>>    Normal   [mem 0x0000000000000000-0x0000000007ffffff]
>>> Movable zone start for each node
>>> Early memory node ranges
>>>    node   0: [mem 0x0000000000000000-0x0000000007ffffff]
>>> Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
>>> MMU: Allocated 1088 bytes of context maps for 255 contexts
>>> Built 1 zonelists, mobility grouping on.  Total pages: 32512
>>> Kernel command line:
>>> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
>>> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
>>> mem auto-init: stack:off, heap alloc:off, heap free:off
>>> Kernel virtual memory layout:
>>>    * 0xffbdf000..0xfffff000  : fixmap
>>>    * 0xc9000000..0xffbdf000  : vmalloc & ioremap
>>> Memory: 122948K/131072K available (5040K kernel code, 220K rwdata, 
>>> 1320K rodata, 200K init, 136K bss, 8124K reserved, 0K cma-reserved)
>>> SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
>>> NR_IRQS: 512, nr_irqs: 512, preallocated irqs: 16
>>> UIC0 (32 IRQ sources) at DCR 0xc0
>>> random: get_random_u32 called from start_kernel+0x498/0x5f8 with 
>>> crng_init=0
>>>
>>
>> Great.
>>
>> (gdb) bt
>> #0  __div64_32 () at arch/powerpc/lib/div64.S:29
>> #1  0xc00099bc in div128_by_32 (dividend_high=<optimized out>, 
>> dividend_low=<optimized out>, divisor=<optimized out>, 
>> dr=dr@entry=0xc0693f78) at arch/powerpc/kernel/time.c:1038
>> #2  0xc0641060 in time_init () at arch/powerpc/kernel/time.c:978
>> #3  0xc063dc48 in start_kernel () at init/main.c:1055
>> #4  0xc0002204 in start_here () at arch/powerpc/kernel/head_40x.S:617
>>
>>
>> Looping forever in __div64_32() due to:
>>
>>  > CPU clock-frequency <- 0x0 (0MHz)
>>  > CPU timebase-frequency <- 0x0 (0MHz)
>>  > /plb: clock-frequency <- 0 (0MHz)
>>  > /plb/opb: clock-frequency <- 0 (0MHz)
>>  > /plb/ebc: clock-frequency <- 0 (0MHz)
>>  > /plb/opb/serial@ef600300: clock-frequency <- 0 (0MHz)
>>  > /plb/opb/serial@ef600400: clock-frequency <- 0 (0MHz)
> 
> 
> I dont understand how
> 
>    static bd_t bd;
> 
> can be updated in the kernel.
> 

It's not updated in the kernel.

It is supposed to be provided by UBoot to Linux Kernel. But modern 
kernels don't take that anymore, they take a device tree. For this 
reason cuboot takes the content of bd to build/update the device tree.

Looks like QEMU also provides the bd, see ref405ep_init()

I managed to get a kernel booting with the following change (and with 
CONFIG_ETHERNET removed)

diff --git a/arch/powerpc/boot/cuboot-hotfoot.c 
b/arch/powerpc/boot/cuboot-hotfoot.c
index 888a6b9bfead..63a9545ff55d 100644
--- a/arch/powerpc/boot/cuboot-hotfoot.c
+++ b/arch/powerpc/boot/cuboot-hotfoot.c
@@ -132,6 +132,12 @@ void platform_init(unsigned long r3, unsigned long 
r4, unsigned long r5,
                    unsigned long r6, unsigned long r7)
  {
         CUBOOT_INIT();
+        bd.bi_intfreq = 133333333;
+        bd.bi_busfreq = 33333333;
+        bd.bi_procfreq = 133333333;
+        bd.bi_plb_busfreq = 33333333;
+        bd.bi_pci_busfreq = 33333333;
+        bd.bi_opbfreq = 33333333;
         platform_ops.fixups = hotfoot_fixups;
          platform_ops.exit = ibm40x_dbcr_reset;
         fdt_init(_dtb_start);


Christophe


  reply	other threads:[~2021-10-20 13:31 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-27  4:48 [PATCH v3 0/7] Reduce load on ppc target maintainers David Gibson
2021-09-27  4:48 ` [PATCH v3 1/7] qemu: Split machine_ppc.py acceptance tests David Gibson
2021-09-27  4:50   ` Philippe Mathieu-Daudé
2021-09-27 16:44   ` Philippe Mathieu-Daudé
2021-09-27 16:53     ` Cédric Le Goater
2021-09-27 17:18       ` Philippe Mathieu-Daudé
2021-09-27  4:48 ` [PATCH v3 2/7] MAINTAINERS: Remove machine specific files from ppc TCG CPUs entry David Gibson
2021-09-27  4:48 ` [PATCH v3 3/7] MAINTAINERS: Remove David & Greg as reviewers for a number of boards David Gibson
2021-09-27  4:48 ` [PATCH v3 4/7] MAINTAINERS: Orphan obscure ppc platforms David Gibson
2021-10-01  8:35   ` Deprecate the ppc405 boards in QEMU? (was: [PATCH v3 4/7] MAINTAINERS: Orphan obscure ppc platforms) Thomas Huth
2021-10-01  9:14     ` Christophe Leroy
2021-10-01  9:43       ` Thomas Huth
2021-10-01 11:12         ` Peter Maydell
2021-10-01 12:04           ` Thomas Huth
2021-10-01 13:04             ` Christophe Leroy
2021-10-01 13:14               ` Cédric Le Goater
2021-10-01 13:24               ` Peter Maydell
2021-10-01 14:18               ` Thomas Huth
2021-10-05  0:48                 ` David Gibson
2021-10-05  4:44                   ` Christophe Leroy
2021-10-05  6:18                     ` Alexey Kardashevskiy
2021-10-05  6:42                       ` Thomas Huth
2021-10-05  8:05                         ` Alexey Kardashevskiy
2021-10-05  8:07                           ` Thomas Huth
2021-10-05  8:51                             ` Deprecate the ppc405 boards in QEMU? Thomas Huth
2021-10-05 12:17                               ` BALATON Zoltan
2021-10-05 12:35                                 ` Thomas Huth
2021-10-05 21:53                                   ` BALATON Zoltan
2021-10-06  6:39                                     ` Thomas Huth
2021-10-06  7:25                                     ` Thomas Huth
2021-10-11  8:10                                       ` Thomas Huth
2021-10-11  9:20                                         ` David Gibson
2021-10-11 13:24                                           ` Thomas Huth
2021-10-19  9:31                                             ` Christophe Leroy
2021-10-19  9:39                                               ` Thomas Huth
2021-10-19  9:48                                                 ` Christophe Leroy
2021-10-19 10:07                                                   ` BALATON Zoltan
2021-10-19 11:11                                                     ` Thomas Huth
2021-10-19 11:51                                                       ` Christophe Leroy
2021-10-19 12:38                                                         ` BALATON Zoltan
2021-10-19 13:44                                                           ` Christophe Leroy
2021-10-19 14:24                                                             ` Christophe Leroy
2021-10-19 14:56                                                               ` BALATON Zoltan
2021-10-19 16:12                                                                 ` Christophe Leroy
2021-10-19 20:55                                                                   ` Cédric Le Goater
2021-10-19 21:30                                                                   ` Cédric Le Goater
2021-10-20  9:02                                                                     ` Christophe Leroy
2021-10-20 10:10                                                                       ` Cédric Le Goater
2021-10-20 13:27                                                                         ` LEROY Christophe [this message]
2021-10-20 14:31                                                                           ` BALATON Zoltan
2021-10-20 14:34                                                                             ` Thomas Huth
2021-10-20 14:41                                                                               ` Cédric Le Goater
2021-10-20 15:03                                                                                 ` LEROY Christophe
2021-10-20 14:39                                                                           ` Cédric Le Goater
2021-10-20 15:28                                                                             ` LEROY Christophe
2021-10-20 10:21                                                       ` Philippe Mathieu-Daudé
2021-10-20 11:40                                                         ` BALATON Zoltan
2021-10-20 10:12                                                     ` CLI: Using -bios AND -kernel Philippe Mathieu-Daudé
2021-10-20 10:54                                                       ` Thomas Huth
2021-10-20 11:35                                                         ` BALATON Zoltan
2021-10-19  9:41                                               ` Deprecate the ppc405 boards in QEMU? Greg Kurz
2021-10-05  8:14                       ` Deprecate the ppc405 boards in QEMU? (was: [PATCH v3 4/7] MAINTAINERS: Orphan obscure ppc platforms) Cédric Le Goater
2021-10-05 12:20                         ` BALATON Zoltan
2021-10-05 12:29                           ` Thomas Huth
2021-10-20 10:26                             ` Philippe Mathieu-Daudé
2021-10-20 11:42                               ` BALATON Zoltan
2021-10-20 12:43                                 ` Cédric Le Goater
2021-10-20 13:16                                   ` LEROY Christophe
2021-10-20 15:04                                     ` Simon Marchi
2021-10-21  6:48                                     ` Christophe Leroy
2021-10-21  7:25                                       ` Deprecate the ppc405 boards in QEMU? Thomas Huth
2021-10-21  8:01                                         ` Christophe Leroy
2021-10-28 12:24                                     ` Deprecate the ppc405 boards in QEMU? (was: [PATCH v3 4/7] MAINTAINERS: Orphan obscure ppc platforms) Luis Machado
2021-10-28 17:27                                       ` Christophe Leroy
2021-10-20 13:35                                   ` Deprecate the ppc405 boards in QEMU? Thomas Huth
2021-10-20 14:55                                     ` BALATON Zoltan
2021-10-20 15:04                                       ` Thomas Huth
2021-10-20 14:16                                   ` Deprecate the ppc405 boards in QEMU? (was: [PATCH v3 4/7] MAINTAINERS: Orphan obscure ppc platforms) BALATON Zoltan
2021-10-05  8:49                     ` Daniel P. Berrangé
2021-10-05 16:15                       ` Philippe Mathieu-Daudé
2021-10-05 16:20                         ` Daniel P. Berrangé
2021-10-27  4:06                           ` Philippe Mathieu-Daudé
2021-10-27  8:40                             ` Cédric Le Goater
2021-10-27 10:42                               ` Christophe Leroy
2021-10-27 10:48                                 ` Philippe Mathieu-Daudé
2021-10-27 17:03                                 ` Cédric Le Goater
2021-09-27  4:48 ` [PATCH v3 5/7] MAINTAINERS: Remove David & Greg as reviewers/co-maintainers of powernv David Gibson
2021-09-27  4:48 ` [PATCH v3 6/7] MAINTAINERS: Add information for OpenPIC David Gibson
2021-09-29  7:08   ` Mark Cave-Ayland
2021-09-27  4:48 ` [PATCH v3 7/7] MAINTAINERS: Demote sPAPR from "Supported" to "Maintained" David Gibson
2021-09-30  1:15 ` [PATCH v3 0/7] Reduce load on ppc target maintainers David Gibson
2021-10-06  9:52   ` Alexey Kardashevskiy
2021-10-06 11:03     ` Greg Kurz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e63df215-aacc-b57b-6ed2-d63927060eb7@csgroup.eu \
    --to=christophe.leroy@csgroup.eu \
    --cc=agraf@csgraf.de \
    --cc=balaton@eik.bme.hu \
    --cc=clg@kaod.org \
    --cc=crosa@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=dbarboza@redhat.com \
    --cc=groug@kaod.org \
    --cc=hpoussin@reactos.org \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=wainersm@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).