[prev in list] [next in list] [prev in thread] [next in thread]
List: freebsd-current
Subject: Re: r323412: Panic on boot (slab->us_keg == keg)
From: "Andrey V. Elsukov" <bu7cher () yandex ! ru>
Date: 2017-09-12 9:49:40
Message-ID: b9b7e891-ee4a-4fb0-4ffa-2a720f656278 () yandex ! ru
[Download RAW message or body]
[Attachment #2 (multipart/mixed)]
On 12.09.2017 06:35, Mark Johnston wrote:
>> [...]
>> FreeBSD/SMP: 2 package(s) x 14 core(s) x 2 hardware threads
>>
>> Also I determined that it can successfully boot with disabled
>> hyper-threading.
>
> After the change to CACHE_LINE_SIZE, we have
> sizeof(struct uma_zone) == 448 and sizeof(struct uma_cache) == 64. With
> 56 CPUs, we therefore need 4032 bytes per UMA zone, plus 80 bytes for
> the slab header - "internal" zones always keep the slab header in the
> slab itself. That's slightly larger than one page, but the UMA zone
> zone's keg will have uk_ppera == 1. So, when allocating slabzone,
> keg_alloc_slab() will call startup_alloc(uk_ppera * PAGE_SIZE), which
> will allocate 4096 bytes for a structure that is 4032 + 80 = 4112 bytes
> in size.
>
> I think the bug is that keg_large_init() doesn't take
> sizeof(struct uma_slab) into account when setting uk_ppera for the keg.
> In particular, the bug isn't specific to the bootup process; it only
> affects internal zones with an item size in the range [4016, 4096].
>
> The patch below should fix this - could you give it a try?
Hi Mark,
I can confirm that it fixes this panic. Thanks!
--
WBR, Andrey V. Elsukov
["signature.asc" (application/pgp-signature)]
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic