|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] xen on beagleboard-x15: fails to access PRCM MPU register
Stefano, Denis,
I achieved that with patch
patches/xen/0003-add-PRCM_MPU-to-memory-translation-for-AM572x.patch.
This just adds
.specific_mapping=omap5_specific_mapping
to DRA7 platform.
Iain
On Fri, 28 Jun 2019 at 01:33, Stefano Stabellini <sstabellini@xxxxxxxxxx> wrote:
>
> Writing here a summary of the follow-up discussion on IRC.
>
> This is due to a magic memory region, not described in the device tree,
> being accessed by Linux. The memory region is 0x48243400 - 0x48243400+512.
>
> To fix problems like this one, we have the platform specific files in
> xen: see the files under xen/arch/arm/platforms/. Specifically, omap5.c
> might be a good model for what we need. Look at the
> omap5_specific_mapping function, which does exactly what the name
> suggests: it maps special MMIO regions into the guest.
>
> /* Additional mappings for dom0 (not in the DTS) */
> static int omap5_specific_mapping(struct domain *d)
> {
> /* Map the PRM module */
> map_mmio_regions(d, gaddr_to_gfn(OMAP5_PRM_BASE), 2,
> maddr_to_mfn(OMAP5_PRM_BASE));
>
> /* Map the PRM_MPU */
> map_mmio_regions(d, gaddr_to_gfn(OMAP5_PRCM_MPU_BASE), 1,
> maddr_to_mfn(OMAP5_PRCM_MPU_BASE));
>
> /* Map the Wakeup Gen */
> map_mmio_regions(d, gaddr_to_gfn(OMAP5_WKUPGEN_BASE), 1,
> maddr_to_mfn(OMAP5_WKUPGEN_BASE));
>
> /* Map the on-chip SRAM */
> map_mmio_regions(d, gaddr_to_gfn(OMAP5_SRAM_PA), 32,
> maddr_to_mfn(OMAP5_SRAM_PA));
>
> return 0;
> }
>
> We need something similar for 0x48243400 - 0x48243400+512 on
> Beagleboard.
>
>
> On Thu, 27 Jun 2019, Denis Obrezkov wrote:
> > CC'ed other GSoC mentors
> >
> > On 6/27/19 9:52 PM, Denis Obrezkov wrote:
> > > Hello all,
> > >
> > > I have a failure when I am trying to boot Linux with Xen on bb-x15, here
> > > is the log:
> > > https://pastebin.com/BBAFPkVU
> > >
> > > and, as Julien (cc'ed) suggested here is the DT debug information for xen:
> > > https://drive.google.com/open?id=15YTsCKYUTbG2i-siWezJXKWuG0H1VfQz
> > >
> > > So, what I was able to figure out:
> > > In omap4_prminst_read_inst_reg it tries to read from _prm_bases[part].va
> > > (arch/arm/mach-omap2/prminst44xx.c).
> > > _prm_bases[part].va has a value of prm_base or prcm_mpu_base depending
> > > on part value(arch/arm/mach-omap2/prminst44xx.c:44)
> > > Failure happens when _prm_bases[OMAP4430_PRCM_MPU_PARTITION] is read.
> > > It's value set up in arch/arm/mach-omap2/prcm_mpu44xx.c:54.
> > > The installed value is obtained with OMAP_L4_IO_ADDRESS macro
> > > (mach_omap2/io.c:667). Here is its definition
> > > (arch/arm/mach_omap2/iomap.h):
> > > #define OMAP2_L4_IO_OFFSET 0xb2000000
> > > #define OMAP2_L4_IO_ADDRESS(pa) IOMEM((pa) + OMAP2_L4_IO_OFFSET) /* L4 */
> > >
> > > and IOMEM (arch/arm/include/asm/io.h):
> > > #define IOMEM(x) ((void __force __iomem *)(x))
> > >
> > > I don't understand what is happening and how to overcome it.
> > >
> >
> > --
> > Regards, Denis Obrezkov
> >
> >
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |