xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Elliott Mitchell <ehem+xen@m5p.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Julien Grall <julien@xen.org>,
	roman@zededa.com, xen-devel@lists.xenproject.org
Subject: Re: Xen on RP4
Date: Fri, 23 Oct 2020 18:56:38 -0700	[thread overview]
Message-ID: <20201024015638.GC90171@mattapan.m5p.com> (raw)
In-Reply-To: <alpine.DEB.2.21.2010231647290.12247@sstabellini-ThinkPad-T480s>

On Fri, Oct 23, 2020 at 04:59:30PM -0700, Stefano Stabellini wrote:
> This is what is going on. kernel/dma/swiotlb.c:swiotlb_init gets called
> and tries to allocate a buffer for the swiotlb. It does so by calling
> 
>   memblock_alloc_low(PAGE_ALIGN(bytes), PAGE_SIZE);
> 
> In your case, the allocation must fail, no_iotlb_memory is set, and I
> expect you see this warning among the boot messages:
> 
>   Cannot allocate buffer
> 
> Later during initialization swiotlb-xen comes in
> (drivers/xen/swiotlb-xen.c:xen_swiotlb_init) and given that io_tlb_start
> is != 0 it thinks the memory is ready to use when actually it is not.
> 
> When the swiotlb is actually needed, swiotlb_tbl_map_single gets called
> and since no_iotlb_memory is set the kernel panics.
> 
> 
> The reason why you are only seeing it with a 2G dom0 is because
> swiotlb_init is only called when:
> 
>   max_pfn > PFN_DOWN(arm64_dma_phys_limit ? : arm64_dma32_phys_limit))
> 
> see arch/arm64/mm/init.c:mem_init. So when dom0 is 512MB swiotlb_init is
> not called at all. swiotlb-xen does the allocation itself with
> memblock_alloc and it succeeds.
> 
> Note that I tried to repro the issue here at my end but it works for me
> with device tree. So the swiotlb_init memory allocation failure probably
> only shows on ACPI, maybe because ACPI is reserving too much low memory.
> 
> In any case, I think the issue might be "fixed" by this patch:
> 
> 
> 
> diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c
> index c19379fabd20..84e15e7d3929 100644
> --- a/kernel/dma/swiotlb.c
> +++ b/kernel/dma/swiotlb.c
> @@ -231,6 +231,7 @@ int __init swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose)
>  		io_tlb_orig_addr[i] = INVALID_PHYS_ADDR;
>  	}
>  	io_tlb_index = 0;
> +	no_iotlb_memory = false;
>  
>  	if (verbose)
>  		swiotlb_print_info();
> @@ -263,8 +264,11 @@ swiotlb_init(int verbose)
>  		return;
>  
>  	if (io_tlb_start)
> +	{
>  		memblock_free_early(io_tlb_start,
>  				    PAGE_ALIGN(io_tlb_nslabs << IO_TLB_SHIFT));
> +		io_tlb_start = 0;
> +	}
>  	pr_warn("Cannot allocate buffer");
>  	no_iotlb_memory = true;
>  }
> @@ -362,6 +366,7 @@ swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs)
>  		io_tlb_orig_addr[i] = INVALID_PHYS_ADDR;
>  	}
>  	io_tlb_index = 0;
> +	no_iotlb_memory = false;
>  
>  	swiotlb_print_info();

This does indeed appear to take care of the domain 0 panic.

Last issue is the framebuffer and this project has reached usability.
My impression was framebuffer was an issue for device-tree as well.


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




  reply	other threads:[~2020-10-24  1:57 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20201011051933.GA77136@mattapan.m5p.com>
     [not found] ` <alpine.DEB.2.21.2010121138480.10386@sstabellini-ThinkPad-T480s>
     [not found]   ` <20201012215751.GB89158@mattapan.m5p.com>
     [not found]     ` <c38d78bd-c011-404b-5f59-d10cd7d7f006@xen.org>
     [not found]       ` <20201016003024.GA13290@mattapan.m5p.com>
     [not found]         ` <23885c28-dee5-4e9a-dc43-6ccf19a94df6@xen.org>
     [not found]           ` <20201022021655.GA74011@mattapan.m5p.com>
     [not found]             ` <alpine.DEB.2.21.2010221620230.12247@sstabellini-ThinkPad-T480s>
     [not found]               ` <20201023005629.GA83870@mattapan.m5p.com>
     [not found]                 ` <alpine.DEB.2.21.2010221801490.12247@sstabellini-ThinkPad-T480s>
     [not found]                   ` <20201023211941.GA90171@mattapan.m5p.com>
2020-10-23 23:59                     ` Xen on RP4 Stefano Stabellini
2020-10-24  1:56                       ` Elliott Mitchell [this message]
2020-10-24  3:13                       ` Elliott Mitchell
2020-10-24  4:34                       ` Elliott Mitchell
2020-10-24  5:35                       ` Elliott Mitchell
2020-10-26 13:31                         ` Julien Grall
2020-10-26 16:03                           ` Elliott Mitchell
2020-10-26 18:44                             ` Julien Grall
2020-10-26 21:32                               ` Elliott Mitchell
2020-10-28  1:54                               ` Elliott Mitchell
2020-10-29  0:37                                 ` Stefano Stabellini
2020-10-29  5:20                                   ` Jürgen Groß
2020-10-29 19:57                                     ` Stefano Stabellini
2020-11-10 23:25                                       ` Elliott Mitchell
2020-11-11  2:59                                       ` Christopher Clark
2020-10-29 21:29                                   ` Elliott Mitchell
2020-10-30 20:10                                     ` Stefano Stabellini
2020-11-01 17:26                                       ` Ash Wilding
2020-11-02 21:22                                         ` Stefano Stabellini
2020-11-25  3:37 Elliott Mitchell
2020-11-25  4:01 ` Roman Shaposhnik
2020-11-25  4:41   ` Elliott Mitchell
2020-11-25  4:45     ` Roman Shaposhnik
2020-11-25  5:16       ` Elliott Mitchell
2020-11-25 18:57         ` Stefano Stabellini
2020-11-26  3:36           ` Elliott Mitchell
2020-11-28  7:59             ` Roman Shaposhnik
2020-11-28 18:15               ` Elliott Mitchell
2020-11-28  4:56           ` Elliott Mitchell
2020-11-25 19:45         ` Roman Shaposhnik

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=20201024015638.GC90171@mattapan.m5p.com \
    --to=ehem+xen@m5p.com \
    --cc=julien@xen.org \
    --cc=roman@zededa.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /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).