On Thu, Nov 16, 2017 at 05:43:52PM +0100, Thomas Huth wrote: > On 16.11.2017 17:15, Peter Maydell wrote: > > On 16 November 2017 at 16:13, Daniel P. Berrange <[email protected]> > > wrote: > >> On Thu, Nov 16, 2017 at 04:10:22PM +0000, Peter Maydell wrote: > >>> If there are known-buggy iasl versions in the wild we could > >>> consider a configure test and treat buggy-iasl like no-iasl. > >> > >> iasl has long been broken on big-endian, but it has also long contained > >> code that simply makes it exit immediately in that case, and qemu copes > >> with that. So if there's buggy iasl it would be a distro which removed > >> this big-endian check and tried to make it work on big-endian but failed. > >> Fedora tried the latter, but at least in rawhide it works properly now. > >> I'm unclear if we shipped broken iasl with the BE check removed in stable > >> versions though > > > > In this case this is Ubuntu 16.04.2 LTS (xenial) on s390x, with > > > > linux1@lxub05:~$ iasl -v > > > > Intel ACPI Component Architecture > > ASL+ Optimizing Compiler version 20160108-64 > > Copyright (c) 2000 - 2016 Intel Corporation > > That's likely a broken version, indeed. I've noticed that the iasl that > ships with the acpica-tools in RHEL7 is broken, too - it does not > contain the big-endian check (yet?), and fails to byte-swap on big > endian hosts. > > If you compile the latest version from upstream, you get this instead: > > $ iasl -v > iASL is not currently supported on big-endian machines. > > But as Daniel already wrote: The version from Fedora contains some > patches that fix the endianess issue, so that iasl with these patches > also works fine on big endian hosts: > > > https://src.fedoraproject.org/rpms/acpica-tools/blob/master/f/big-endian.patch > > https://src.fedoraproject.org/rpms/acpica-tools/blob/master/f/big-endian-v2.patch > > Thomas
For the record, I think we should remove the dependency on iasl for tests too. It is still a handy tool for debugging, so the following would be a good plan IMHO: - compare binary actual to expected in memory - on match pass and skip iasl - on mismatch, generate aml, run iasl, show output in existing format. then fail - when generating expected files, print diff and make it easy to append to commit log -- MST
