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
next prev parent 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).