[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v8 1/6] tools/libxl: Check if fdt_{first, next}_subnode are present in libfdt

Hi Ian,

On 13/05/15 15:07, Ian Campbell wrote:
> On Tue, 2015-05-12 at 15:33 +0100, Julien Grall wrote:
>> From: Julien Grall <julien.grall@xxxxxxxxxx>
>> The functions fdt_{fisrt,next}_subnode may not be available because:
> "first"
>>     * It has been introduced in 2013 => Doesn't work on Wheezy
>>     * The prototype exists but the functions are not exposed. Don't ask
>>     why...
>> The later has been fixed recently in the dtc repo [1]
>> When the functions are not available, implement our own in order to use
>> them in a following patch.
>> [1] git://git.kernel.org/pub/scm/utils/dtc/dtc.git
>>     commit a4b093f7366fdb429ca1781144d3985fa50d0fbb
>> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
>> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
>> Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
> I'm afraid this failed to build again this time with:
> tools/libxl/libxenlight.so: undefined reference to `fdt_first_property_offset'
> tools/libxl/libxenlight.so: undefined reference to 
> `fdt_get_property_by_offset'
> tools/libxl/libxenlight.so: undefined reference to `fdt_next_property_offset'
> That's with arm32 == Debian Wheezy and arm64 == Ubuntu Saucy.

:(. Both the distribution are using an old version of libfdt where the 3
prototypes are defined but the implementation is not exposed in the
library (this is because they use a whitelist for building it)

I gave look to see if we can import them from libfdt. It will require to
import few others in order to make them work:
        - _fdt_check_node_offset
        - _fdt_offset_ptr
        - _nextprop

I think we can skip the first one because it's only a validity check.
FWIW, we declared the the partial device tree should be trusted so valid.

Nonetheless we would add 5 more functions (+ the actual 2) in libxl
which represents ~50 lines of codes.

The 3 offending function have been correctly exposed since the version
v1.4.0 released in June 2013.

I gave a look to major distribution to see which version is using an old
version of libfdt (i.e < 1.4.0:
        - Centos: < Centos 6
        - Debian: < Jessie => Wheezy using an old version
        - Fedora: < Fedora 20
        - openSuse: < opensuse 13.1
        - ubuntu: < Ubuntu 14.04 => The LTS (14.04) is using a new version
        - RedHat: < Redhat 6

AFAICT, all major distributions except debian (for wheezy) are using a
libfdt > v1.4. So I would suggest to disable the partial device tree
support on distribution using older version.

If the user want to use platform device passthrough it would have either
to build a newer version of libfdt or append a device tree to the guest

Note: IIRC osstest is using wheezy. If so, we won't be able to test
platform device passthrough until the distribution version is upgraded.

Although, we don't currently have a platform supporting non-PCI
passthrough in osstest.


Julien Grall

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.