[Crash-utility] x86_64 limit of 454 cpu's?
Dave Anderson
anderson at redhat.com
Fri Apr 15 13:04:29 UTC 2011
----- Original Message -----
> Hi Dave, and company,
>
> I get this error trying to open a dump of a large system:
>
> crash: compressed kdump: invalid nr_cpus value: 640
> crash: vmcore: not a supported file format
>
> The message is from diskdump.c:
> if (sizeof(*header) + sizeof(void *) * header->nr_cpus > block_size ||
> header->nr_cpus <= 0) {
> error(INFO, "%s: invalid nr_cpus value: %d\n",
>
> block_size is the page size of 4096
> struct disk_dump_header looks like 464 bytes
> void * is 8
> So it looks like 454 is the maximum number of cpus.
> 464 + 454*8 -> 4096
>
> Is this intentional?
> It looks like a restriction that no one ever complained about. But there
> are systems (Altix UV) with 2048 cpu's.
>
> Is there an easy fix?
>
> -Cliff
To be honest, I don't know, I didn't design or write that code.
And you're right, although dumpfiles with that many cpus are highly
unusual, but looking at the code, it certainly does appear that the
disk_dump_header plus the task pointers for each cpu must fit in a
"block_size", or page size, and that the sub_header is the first item
following the contents of the first page:
---
^ disk_dump_header
| task on cpu 0
page ...
| task on cpu x-1
V task on cpu x
---
sub_header
bitmap
remaining stuff...
Since your dump is presumably a compressed kdump, I'm wondering
what the makedumpfile code did in your case? Did it round up the
location of the sub_header to a page boundary?
I've cc'd this to Ken'ichi Ohmichi (makedumpfile), and to Takao Indoh
(original compressed diskdump) for their input.
Thanks,
Dave
More information about the Crash-utility
mailing list