[CentOS] swiotlb causing panics on 8gig ia32e systems running Centos 3.4 x86_64

Wed Apr 13 23:26:27 UTC 2005
James Olin Oden <james.oden at gmail.com>

Hi All,

I have several ia32e systems with 8 gig that panic on install and first boot.
The panic is arch/x86_64/swiotlb.c (working from memory so I might be
a bit off) and its in the routine that I think is trying to allocate
another chunk of memory for
the "Software I/O Translation Buffer".  I am guessing it needs to
allocate contiguous chunks of memory and that is why it fails on the

Anyway, on install the only way I can get the install to work is to
set "mem=512" or something way below 8Gig.  Whereas once the machine
is loaded I can get it to boot by without a panic by passing the
kernel arg swiotlb set to some rather larger value like 16384.  Doing
this with varying values during install yields either the same panic
or causes a failure of the kernel to detect the cdrom device due to
some "resource conflict", which why on a hunch a fellow engineer tried
the mem option.

Anyway, we can live with this work around if we have to, but I was
wondering a couple of things:

   - Is there any metric to choose a proper value for ioswtbl?
   - Since its failing to do the re-alloc in the boot kernel am I
likely to see this
     occur on the installed kernel at some inopportune moment?
   - If there is such a metric does anyone have any ideas on how it
might could be
     grafted into the kernel itself in such a way that all interested
parties would be
     OK with such a patch?

And of course if anyone else has seen this, I would be interested in
their knowledge on the issue.

Just so you know I familiar with this enough to know that ia32e
(nocona/lindhurst 64 bit one off copy of AMD 64 bit processors) does
not contain an IOMMU (unlike the AMD processor) and thus the kernel
developers had to do a serious hack creating this bounce buffer like
thing.  Which is all to say I understand why its there, and that on
the ia32e systems I have to live with it, I just want it to be stable
or find some way to make it so.