patch regarding 'RTEMS not booting with Qemu PREP larger than 256Mb'

Joel Sherrill joel at rtems.org
Tue Mar 6 17:34:52 UTC 2018


On Tue, Mar 6, 2018 at 11:02 AM, Gedare Bloom <gedare at rtems.org> wrote:

> On Mon, Mar 5, 2018 at 5:37 PM, Joel Sherrill <joel at rtems.org> wrote:
> > Can you file a ticket with the patch attached? We don't change things on
> a
> > release
> > branch without a ticket? devel.rtems.org
> >
> +1
>
> > Are you able to test this on real hardware? It touches files in shared
> which
> > will
> > be used by multiple powerpc BSPs so it would be good to have feedback on
> > real HW.
> >
> +2
>
> This should be verified on hw before applying especially to a release.
>
> If it affects hw, also change the comments to just say "greater than
> 256 MiB" without specifying qemu -m option.
>

I would add that it would be nice to capture his invocation of qemu
in both rtems-testing (https://git.rtems.org/rtems-testing/tree/sim-scripts)
and the rtems-tools (https://git.rtems.org/rtems-tools/tree/tester/rtems).

The second is critical for automated testing.

The first is old but still useful for running singleton tests.

Eric .. Please don't think we are discouraging you. We just are trying to
make sure your patch is merged and we cover all the bases. We have
to depend on users when it comes to specific BSPs and hardware
configurations, so we are careful.


>
> > FWIW we are trying to wrap up a set of patches for a 4.11 release and it
> > would
> > be good to have this in the ticket queue for consideration.
> >
> > Thanks.
> >
> > --joel
> >
> >
> > On Mon, Mar 5, 2018 at 2:31 PM, Éric Tremblay <
> e.tremblay at axis-canada.com>
> > wrote:
> >>
> >> Hi,
> >> I posted a question last week about a strange behavior I was getting
> using
> >> RTEMS with qemu-system-ppc.  Anytime I was specifying more than 256Mb of
> >> memory using the -m option the RTEMS kernel was not booting.  Here is an
> >> example of command line I was using:
> >>
> >> qemu-system-ppc  -M prep -kernel ./hello.ralf  -bios
> >> /home/qemu_fakerom/qemu_fakerom.bin -cpu 750cxe -nographic -no-reboot
> -m 384
> >>
> >> Model:
> >> Serial:
> >> Processor/Bus frequencies (Hz): 300000000/100000000
> >> Time Base Divisor: 1000
> >> Memory Size: 18000000
> >> Residual: 102afd4 (length 27148)
> >>
> >> PCI: Probing PCI hardware
> >>
> >> RTEMS 4.x/PPC load:
> >> Uncompressing the kernel...
> >> Kernel at 0x00000000, size=0x495b0
> >> Initrd at 0x00000000, size=0x0
> >> Residual data at 0x0004a000
> >> Command line at 0x00051000
> >> done
> >> Now booting...                                 <<<<<<<<<<<<<<<<
> execution
> >> stuck here
> >>
> >>
> >> I have spent quite some time debugging this issue and I traced it back
> to
> >> two issues for which I am submitting a patch.  Please understand this
> is my
> >> first time using RTEMS and debugging a bootloader so my patch might not
> be
> >> accurate but it does fix the behavior I mentioned above.  With this
> patch I
> >> can successfully launch a "Hello World" and specify more memory (-m 512
> for
> >> example).
> >>
> >> My patch is quite simple since it simply allows the system to access
> >> section of memory.  Please let me know if this is a suitable
> correction, if
> >> this is totally wrong I would like to know how this could be fixed
> since our
> >> application will use around 512Mb of memory and the current state of
> things
> >> won't work.
> >>
> >> Thank you for your cooperation,
> >> Eric
> >>
> >> PS: I am using RTEMS release 4.11.3.
> >>        I am using Qemu v 2.5.0
> >>        I am running in a Linux Ubuntu VM (intel 64 bits)
> >>
> >>
> >>
> >>
> >>  c/src/lib/libbsp/powerpc/shared/start/start.S      | 18
> >> ++++++++++++++++++
> >>  c/src/lib/libbsp/powerpc/shared/startup/bspstart.c | 18
> >> ++++++++++++++++++
> >>  2 files changed, 36 insertions(+)
> >>
> >> diff --git a/c/src/lib/libbsp/powerpc/shared/start/start.S
> >> b/c/src/lib/libbsp/powerpc/shared/start/start.S
> >> index 729c89c40b..532c1f9ee4 100644
> >> --- a/c/src/lib/libbsp/powerpc/shared/start/start.S
> >> +++ b/c/src/lib/libbsp/powerpc/shared/start/start.S
> >> @@ -93,6 +93,24 @@ __rtems_entry_point:
> >>   mtspr IBAT0L,r8
> >>   mtspr IBAT0U,r11
> >>   isync
> >> +/*   Map section where residual is located if outside
> >> + *   the first 256Mb of RAM.  This is to support cases
> >> + *   where the user supplies the -m option with Qemu
> >> + *   in order to have more memory available to the system.
> >> + */
> >> + mr r9, r1    /* Get where residual was mapped */
> >> + lis r12,0xf0000000 at h
> >> + and r9,r9,r12
> >> + cmpi 0,1,r9, 0
> >> + beq skip_BAT1_config
> >> + isync
> >> + ori r11,r9,0x1ffe
> >> + mtspr DBAT1L,r8 /* N.B. 6xx (not 601) have valid */
> >> + mtspr DBAT1U,r11 /* bit in upper BAT register */
> >> + mtspr IBAT1L,r8
> >> + mtspr IBAT1U,r11
> >> + isync
> >> +skip_BAT1_config:
> >>
> >>  /*
> >>   * we now have the 1st 256M of ram mapped with the bats. We are still
> >> diff --git a/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
> >> b/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
> >> index 5a97cc8531..f80835b117 100644
> >> --- a/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
> >> +++ b/c/src/lib/libbsp/powerpc/shared/startup/bspstart.c
> >> @@ -300,6 +300,24 @@ void bsp_start( void )
> >>     */
> >>    _BSP_clear_hostbridge_errors(0 /* enableMCP */, 0/*quiet*/);
> >>
> >> +   if (BSP_mem_size > 0x10000000)
> >> +   {
> >> +   /* Support cases with qemu supplied -m option and mem size larger
> than
> >> 256Mb.
> >> +    *
> >> +    * We use BAT3 in order to obtain access to the top section of the
> >> RAM.
> >> +    * We also need to do this just before setting up the page table
> >> because
> >> +    * this is where the page table will be located.
> >> +    */
> >> +   const unsigned int mem256Count = (BSP_mem_size / 0x10000000);
> >> +   const unsigned int BAT3Addr    = ((BSP_mem_size % 0x10000000)    ?
> >> + (mem256Count     * 0x10000000) :
> >> + ((mem256Count-1) * 0x10000000));
> >> +      setdbat(3, BAT3Addr, BAT3Addr, 0x10000000, IO_PAGE);
> >> +#ifdef SHOW_MORE_INIT_SETTINGS
> >> +      printk("Setting up BAT3 for large memory support. (BAT3 -->
> >> 0x%x)\n", BAT3Addr);
> >> +#endif
> >> +   }
> >> +
> >>    /* Allocate and set up the page table mappings
> >>     * This is only available on >604 CPUs.
> >>     *
> >>
> >>
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> devel mailing list
> >> devel at rtems.org
> >> http://lists.rtems.org/mailman/listinfo/devel
> >
> >
> >
> > _______________________________________________
> > devel mailing list
> > devel at rtems.org
> > http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20180306/15f0c41a/attachment.html>


More information about the devel mailing list