All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 7/7] libxfs: remove crc32 functions
From: Eric Sandeen @ 2018-07-23 22:55 UTC (permalink / raw)
  To: Darrick J. Wong, sandeen; +Cc: linux-xfs
In-Reply-To: <152728634020.22515.16684194597988861920.stgit@magnolia>

On 5/25/18 3:12 PM, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> XFS uses crc32c, not crc32.  Remove the unnecessary crc32 code, which
> decreases binary size by the 8K crc32 table.

Getting back to this ...

The files have diverged a bit since the initial lift from the kernel.
Commenting out to keep things diffable is a bit pointless now, due
to that divergence (for example, the crc32test stuff has been moved
out to its own file, a big swath of code.)

So, I think we should make a decision about whether we want to try
to keep this in sync with the kernel, or just let it drift.

If the former, I'd go with an #if 0 but only after syncing things
up again.

If the latter, just nuke the unused code, if we ever need the crc32c
variants we can re-lift them from the kernel.  I'd still take a brief
look at whether there's anything that needs to be synced in an ad-hoc
fashion.

I guess right now I'm feeling inclined to go with the former, and
even add the crc32 file(s) to the libxfs-diff and/or libxfs-apply
scripts, if we plan to keep them more in sync.

I'd accept either plan, really - but there's no reason to comment
out or #ifdef code to keep it around if it doesn't even necessarily
match kernelspace anymore.

-Eric

> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/libxfs.h        |    3 ---
>  libxfs/crc32.c          |   16 ++++++++++------
>  libxfs/gen_crc32table.c |    8 +++++++-
>  libxfs/libxfs_priv.h    |    3 ---
>  4 files changed, 17 insertions(+), 13 deletions(-)
> 
> 
> diff --git a/include/libxfs.h b/include/libxfs.h
> index fbaae089..109866de 100644
> --- a/include/libxfs.h
> +++ b/include/libxfs.h
> @@ -43,10 +43,7 @@
>  
>  
>  /* CRC stuff, buffer API dependent on it */
> -extern uint32_t crc32_le(uint32_t crc, unsigned char const *p, size_t len);
>  extern uint32_t crc32c_le(uint32_t crc, unsigned char const *p, size_t len);
> -
> -#define crc32(c,p,l)	crc32_le((c),(unsigned char const *)(p),(l))
>  #define crc32c(c,p,l)	crc32c_le((c),(unsigned char const *)(p),(l))
>  
>  #include "xfs_cksum.h"
> diff --git a/libxfs/crc32.c b/libxfs/crc32.c
> index 783d62e9..8fe5c42c 100644
> --- a/libxfs/crc32.c
> +++ b/libxfs/crc32.c
> @@ -176,20 +176,26 @@ static inline u32 __pure crc32_le_generic(u32 crc, unsigned char const *p,
>  }
>  
>  #if CRC_LE_BITS == 1
> +/*
> + * not used by xfs.
>  u32 __pure crc32_le(u32 crc, unsigned char const *p, size_t len)
>  {
>  	return crc32_le_generic(crc, p, len, NULL, CRCPOLY_LE);
>  }
> + */

...

^ permalink raw reply

* Re: [PATCH v5] PCI: Check for PCIe downtraining conditions
From: Alex G. @ 2018-07-23 23:59 UTC (permalink / raw)
  To: Jakub Kicinski, Tal Gilboa
  Cc: linux-pci@vger.kernel.org, bhelgaas@google.com,
	keith.busch@intel.com, alex_gagniuc@dellteam.com,
	austin_bolen@dell.com, shyam_iyer@dell.com,
	jeffrey.t.kirsher@intel.com, ariel.elior@cavium.com,
	michael.chan@broadcom.com, ganeshgr@chelsio.com, Tariq Toukan,
	airlied@gmail.com, alexander.deucher@amd.com,
	mike.marciniszyn@intel.com, linux-kernel@vger.kernel.org
In-Reply-To: <20180723151439.50524a2a@cakuba.netronome.com>



On 07/23/2018 05:14 PM, Jakub Kicinski wrote:
> On Tue, 24 Jul 2018 00:52:22 +0300, Tal Gilboa wrote:
>> On 7/24/2018 12:01 AM, Jakub Kicinski wrote:
>>> On Mon, 23 Jul 2018 15:03:38 -0500, Alexandru Gagniuc wrote:
>>>> PCIe downtraining happens when both the device and PCIe port are
>>>> capable of a larger bus width or higher speed than negotiated.
>>>> Downtraining might be indicative of other problems in the system, and
>>>> identifying this from userspace is neither intuitive, nor
>>>> straightforward.
>>>>
>>>> The easiest way to detect this is with pcie_print_link_status(),
>>>> since the bottleneck is usually the link that is downtrained. It's not
>>>> a perfect solution, but it works extremely well in most cases.
>>>>
>>>> Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
>>>> ---
>>>>
>>>> For the sake of review, I've created a __pcie_print_link_status() which
>>>> takes a 'verbose' argument. If we agree want to go this route, and update
>>>> the users of pcie_print_link_status(), I can split this up in two patches.
>>>> I prefer just printing this information in the core functions, and letting
>>>> drivers not have to worry about this. Though there seems to be strong for
>>>> not going that route, so here it goes:
>>>
>>> FWIW the networking drivers print PCIe BW because sometimes the network
>>> bandwidth is simply over-provisioned on multi port cards, e.g. 80Gbps
>>> card on a x8 link.
>>>
>>> Sorry to bike shed, but currently the networking cards print the info
>>> during probe.  Would it make sense to move your message closer to probe
>>> time?  Rather than when device is added.  If driver structure is
>>> available, we could also consider adding a boolean to struct pci_driver
>>> to indicate if driver wants the verbose message?  This way we avoid
>>> duplicated prints.
>>>
>>> I have no objection to current patch, it LGTM.  Just a thought.
>>
>> I don't see the reason for having two functions. What's the problem with
>> adding the verbose argument to the original function?
> 
> IMHO it's reasonable to keep the default parameter to what 90% of users
> want by a means on a wrapper.  The non-verbose output is provided by
> the core already for all devices.
> 
> What do you think of my proposal above Tal?  That would make the extra
> wrapper unnecessary since the verbose parameter would be part of the
> driver structure, and it would avoid the duplicated output.

I see how it might make sense to add another member to the driver 
struct, but is it worth the extra learning curve? It seems to be 
something with the potential to confuse new driver developers, and 
having a very marginal benefit.
Although, if that's what people want...

Alex

^ permalink raw reply

* [U-Boot] [PATCH 11/17] fs: add mkdir interface
From: Tom Rini @ 2018-07-23 23:56 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <CAPnjgZ3T8ta2F6+QVAym-ZmbVUZne9kg93rC-J++XzyeEfcoOw@mail.gmail.com>

On Mon, Jul 23, 2018 at 05:48:13PM -0600, Simon Glass wrote:
> Hi,
> 
> On 20 July 2018 at 11:35, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > On 07/20/2018 04:57 AM, AKASHI Takahiro wrote:
> >> "mkdir" interface is added to file operations.
> >> This is a preparatory change as mkdir support for FAT file system
> >> will be added in next patch.
> >>
> >> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> >> ---
> >>  fs/fs.c      | 45 +++++++++++++++++++++++++++++++++++++++++++++
> >>  include/fs.h | 10 ++++++++++
> >>  2 files changed, 55 insertions(+)
> >>
> 
> We need to get a proper fs test in place before we add any more stuff.

Agreed that we need more tests as part of this series.

> Does someone waent to try converting fs-test.sh to pytest in test/py/tests ?

I thought there was at least a first pass at that?

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180723/4918f93a/attachment.sig>

^ permalink raw reply

* Re: [Qemu-devel] [PATCH v2 1/2] ppc/pnv: Add model for Power8 PHB3 PCIe Host bridge
From: Benjamin Herrenschmidt @ 2018-07-23 23:55 UTC (permalink / raw)
  To: David Gibson
  Cc: Cédric Le Goater, qemu-ppc, qemu-devel, Marcel Apfelbaum,
	Andrea Bolognani, Michael S. Tsirkin
In-Reply-To: <20180723041614.GD6830@umbus.fritz.box>

On Mon, 2018-07-23 at 14:16 +1000, David Gibson wrote:
> > 
> > Now, this is an ICS subclass, so why shouldn't it directly poke at the
> > target ICP ?
> 
> That's ok in theory, but causing it to expose the icp interface to a
> new module isn't great.
> 
> > It's an alternate to the normal ICS since it behaves a bit
> > differently (PQ bits & all).
> 
> AFAICT the PQ bits are effectively another filtering layer on top of
> the same ICS logic as elsewhere.  I think it's better if we can share
> that shared logic, rather than replicating it.

I don't know, is there much shared logic ? And the shared bits are the
subclassing, that's handled that way...

This is really a different piece of HW, a separate ICS implementation,
that has its own quirks, is configured via different registers, does
EOI differently etc...

Even the resend stuff is done differently, the resend bitmap is
actually SW visible via an IODA table.

I mean, we could (maybe we do these days not sure) have an ICS
superclass wrapper on the actual icp_irq() but that's really all there
is to it I think.

Cheers,
Ben.

^ permalink raw reply

* Re: Error in do_image_wic in Docker container
From: Frazer, Will @ 2018-07-23 13:21 UTC (permalink / raw)
  To: Tim Orling, Darcy Watkins; +Cc: yocto@yoctoproject.org
In-Reply-To: <CANx9H-Aybhrz9En8Q-4qY6onwkQE7cKYbpPB=rUABhvy7TJK3g@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 37457 bytes --]

Hi Darcy,

Thanks for your reply.

I wanted to respond so that others know what I believe the cause of my issue is/was:

Basically, in my Docker setup the storage driver is reporting as AUFS. My host is Ubuntu 14.04.x (so not MacOS or Windows, but thanks for the reply Tom). I  used the defaults when I configured Docker originally so perhaps this is actually OverlayFS. Even if it is not overlayfs, my concern is that it may suffer similar to aufs.

The yocto ‘do_wic_image’ task calls the poky wic scripts to attempt to get capability information from the filesystem using ‘filemap.py’ etc.  For me, this generates a ZeroDivisionError failure when get_block_size() is called.

I attempted to resolve this issue using os.stat as suggested [1] however the error just moved elsewhere. I’m not sure how far I would need to chase this in poky so I’m considering some other options. Currently, these are:


  *   Adjust the container volume mounts to provide an ext4 filesystem to keep WIC happy. In hindsight, not dissimilar to your arrangement.
  *   Switch the docker storage driver [2] to use devicemapper with direct-lvm.

I don’t really want to put the build folder outside of the container (I have many containers with similar and dissimilar build objectives) so I’m thinking the latter for me may be a better long term solution.

Anyway, thought I would share.

Thanks again,
Will

Will Frazer | EUROTECH | direct  +44 (0) 1223 403431 | mobile: +44 (0) 7736 198115

[1] https://github.com/intel/bmap-tools/issues/15
[2] https://docs.docker.com/storage/storagedriver/select-storage-driver/



From: Darcy Watkins [mailto:dwatkins@sierrawireless.com]
Sent: 18 July 2018 17:10
To: Frazer, Will <Will.Frazer@eurotech.com>; yocto@yoctoproject.org
Subject: RE: Error in do_image_wic in Docker container

Hi Will,

I managed to get a docker Yocto build under Linux working, but using a simplified volume mounting scheme.  I ran into an issue building with CentOS 7.5 so I used CentOS 7.4 in a container (since the build used to always work before the CentOS update).  I haven’t gotten back to trying it under MacOS.


Regards,

Darcy

Darcy Watkins ::  Senior Staff Engineer, Firmware

SIERRA WIRELESS
Direct  +1 604 233 7989   ::  Fax  +1 604 231 1109  ::  Main  +1 604 231 1100
13811 Wireless Way  :: Richmond, BC Canada V6V 3A4
[P2]
dwatkins@sierrawireless.com<mailto:dwatkins@sierrawireless.com> :: www.sierrawireless.com<http://www.sierrawireless.com/>

From: Frazer, Will <Will.Frazer@eurotech.com<mailto:Will.Frazer@eurotech.com>>
Sent: July-17-18 9:32 AM
To: Darcy Watkins <dwatkins@sierrawireless.com<mailto:dwatkins@sierrawireless.com>>; yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
Subject: RE: Error in do_image_wic in Docker container

Hi Darcy,

Don’t suppose you solved this?

I have a yocto 2.3 build that works OK in a virtual machine but seems to throw a v.similar error to what you have reported below.

Similarly I have various mounts outside of the container to inject pre-build components & pick up build artifacts.

Thanks,
Will

Will Frazer | EUROTECH | direct  +44 (0) 1223 403431 | mobile: +44 (0) 7736 198115




From: yocto-bounces@yoctoproject.org<mailto:yocto-bounces@yoctoproject.org> [mailto:yocto-bounces@yoctoproject.org] On Behalf Of Darcy Watkins
Sent: 25 March 2018 17:41
To: yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
Subject: [yocto] Error in do_image_wic in Docker container

Hi,

This is near end of a build based on rocko branch plus a custom BSP layer, etc.  I have had it build OK previously under Linux (CentOS 7).  This run is inside a Docker container running on my MacBook.  From what I gather from google search results, is the underlying OS filesystem doesn’t support an operation.

I use a volume mount scheme as follows…

docker run -it \
    --volume=${PWD}:/home/build:cached \
    --volume=${HOME}/.ssh:/home/build/.ssh \
    --volume=${PWD}/downloads:/home/build/downloads:delegated \
    --rm --volume=${WS_NAME}_build_vol:/home/build/build \
    --volume=${PWD}/build/conf:/home/build/build/conf:cached \
    --volume=${PWD}/build/deploy:/home/build/build/tmp/deploy:delegated \
    --volume=${TARPIT}:/home/public/tarballs:cached \
    $DIMG bash

The checkout is mounted from MacOS at /home/build to keep source meta-data accessible by MacOS text editors.

The build directory is inside a docker volume so that it doesn’t have case insensitivity issues.

The deploy dir and the conf dir are mounted inside this volume so that when docker exits I still have MacOS access to the conf and the deployed content.

The TARPIT is a premirror implementation and DIMG is the docker container used.

Does WIC do weird filesystem stuff (obviously ‘yes’), but does it do this in the deploy dir rather than in one of the work dirs?

I think I missed something (almost like a “fool’s mate” in Chess, LOL).  Any insight on this appreciated.

Does deploy dir have to be entirely inside the volume, or is this a limitation of Docker implementation itself?

Thanks!

---


ERROR: core-image-minimal-1.0-r0 do_image_wic: Function failed: do_image_wic (log file is located at /home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/log.do_image_wic.15406)

ERROR: Logfile of failure stored in: /home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/log.do_image_wic.15406

Log data follows:

| DEBUG: Executing python function set_image_size

| DEBUG: Python function set_image_size finished

| DEBUG: Executing python function extend_recipe_sysroot

| NOTE: Direct dependencies are ['/home/build/upstream/yocto/poky/meta/recipes-devtools/python/python-native_2.7.13.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.3.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/opkg/opkg_0.3.5.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/tcltk/tcl_8.6.7.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.43.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-kernel/kmod/kmod-native_git.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-extended/bc/bc_1.06.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-devtools/binutils/binutils-cross_2.29.1.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/createrepo-c/createrepo-c_git.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/rpm/rpm_git.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-core/glibc/glibc_2.26.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-connectivity/openssl/openssl_1.0.2n.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/subversion/subversion_1.9.6.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.5.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-bsp/u-boot/u-boot-mkimage_2017.09.bb:do_populate_sysroot', '/home/build/upstream/linaro/meta-linaro/meta-linaro-toolchain/recipes-devtools/gcc/libgcc_linaro-7.1.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-kernel/dtc/dtc_1.4.4.bb:do_populate_sysroot', '/home/build/upstream/linaro/meta-linaro/meta-linaro-toolchain/recipes-devtools/gcc/gcc-runtime_linaro-7.1.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/mtools/mtools_4.0.18.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/openembedded/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.12.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/dnf/dnf_2.6.3.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-extended/pigz/pigz_2.3.4.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-support/lzop/lzop_1.03.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-extended/parted/parted_3.2.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-devtools/quilt/quilt-native_0.65.bb:do_populate_sysroot', '/home/build/upstream/yocto/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2017.09.bb:do_populate_sysroot', '/home/build/upstream/yocto/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb:do_populate_sysroot', '/home/build/upstream/linaro/meta-linaro/meta-linaro-toolchain/recipes-devtools/gcc/gcc-cross_linaro-7.1.bb:do_populate_sysroot', '/home/build/meta-MG-os-bsp/recipes-bsp/fec/fec_3.0.1.bb:do_populate_sysroot', '/home/build/upstream/yocto/meta-freescale/recipes-kernel/linux/linux-qoriq_4.9.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.5.bb:do_populate_sysroot', '/home/build/meta-MG-os-bsp/recipes-bsp/omg-hardware/omg-hardware_svn.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-support/bmap-tools/bmap-tools_3.4.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/pseudo/pseudo_1.8.2.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/prelink/prelink_git.bb:do_populate_sysroot']

| NOTE: Installed into sysroot: ['python-native', 'gptfdisk-native', 'tcl-native', 'dosfstools-native', 'bc-native', 'binutils-cross-arm', 'change-file-endianess-native', 'subversion-native', 'mtools-native', 'python-pyyaml-native', 'lzop-native', 'parted-native', 'gcc-cross-arm', 'linux-qoriq', 'apr-util-native', 'serf-native', 'python-setuptools-native', 'python-cython-native', 'libyaml-native', 'mpfr-native', 'libmpc-native', 'gmp-native', 'apr-native', 'gdbm-native', 'python-scons-native']

| NOTE: Skipping as already exists in sysroot: ['opkg-native', 'qemuwrapper-cross', 'mklibs-native', 'makedevs-native', 'kmod-native', 'update-rc.d-native', 'createrepo-c-native', 'rpm-native', 'glibc', 'openssl-native', 'e2fsprogs-native', 'u-boot-mkimage-native', 'libgcc', 'depmodwrapper-cross', 'dtc-native', 'gcc-runtime', 'dnf-native', 'ldconfig-native', 'pigz-native', 'quilt-native', 'u-boot-qoriq', 'qe-ucode', 'fec', 'opkg-utils-native', 'omg-hardware', 'bmap-tools-native', 'pseudo-native', 'prelink-native', 'sqlite3-native', 'libtool-native', 'bzip2-native', 'autoconf-native', 'expat-native', 'xz-native', 'gnu-config-native', 'readline-native', 'pkgconfig-native', 'zlib-native', 'automake-native', 'qemu-native', 'util-linux-native', 'popt-native', 'ncurses-native', 'libarchive-native', 'libsolv-native', 'gettext-minimal-native', 'gtk-doc-native', 'texinfo-dummy-native', 'flex-native', 'bison-native', 'glib-2.0-native', 'cmake-native', 'python3-native', 'libxml2-native', 'file-native', 'curl-native', 'dbus-native', 'nss-native', 'elfutils-native', 'db-native', 'linux-libc-headers', 'cryptodev-linux-native', 'makedepend-native', 'attr-native', 'shadow-native', 'librepo-native', 'python3-iniparse-native', 'libdnf-native', 'libcomps-native', 'lzo-native', 'omg-mcu', 'python3-setuptools-native', 'binutils-native', 'm4-native', 'alsa-lib-native', 'libsdl-native', 'pixman-native', 'libffi-native', 'libpcre-native', 'gettext-native', 'nspr-native', 'xproto-native', 'util-macros-native', 'unzip-native', 'libcheck-native', 'gpgme-native', 'python3-six-native', 'gobject-introspection-native', 'libxrender-native', 'libxrandr-native', 'libxext-native', 'libx11-native', 'libpng-native', 'swig-native', 'libassuan-native', 'libgpg-error-native', 'renderproto-native', 'randrproto-native', 'xextproto-native', 'libxcb-native', 'inputproto-native', 'xtrans-native', 'kbproto-native', 'libxau-native', 'libxdmcp-native', 'libpthread-stubs-native', 'xcb-proto-native']

| DEBUG: sed -e 's:^[^/]*/:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/recipe-sysroot-native/:g' /home/build/build/tmp/sysroots-components/x86_64/python-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/tcl-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/gcc-cross-arm/fixmepath /home/build/build/tmp/sysroots-components/x86_64/apr-util-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/python-setuptools-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/gmp-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/apr-native/fixmepath | xargs sed -i -e 's:FIXMESTAGINGDIRTARGET:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/recipe-sysroot:g; s:FIXMESTAGINGDIRHOST:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/recipe-sysroot-native:g' -e 's:FIXME_COMPONENTS_DIR:/home/build/build/tmp/sysroots-components:g' -e 's:FIXME_HOSTTOOLS_DIR:/home/build/build/tmp/hosttools:g' -e 's:FIXME_PKGDATA_DIR:/home/build/build/tmp/pkgdata/mg90:g' -e 's:FIXME_PSEUDO_LOCALSTATEDIR:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/pseudo/:g' -e 's:FIXME_LOGFIFO:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/fifo.15406:g'

| DEBUG: Python function extend_recipe_sysroot finished

| DEBUG: Executing shell function do_image_wic

| INFO: Creating image(s)...

|

| Traceback (most recent call last):

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 385, in _invoke_fiemap

|     fcntl.ioctl(self._f_image, _FIEMAP_IOCTL, self._buf, 1)

| OSError: [Errno 95] Operation not supported

|

| During handling of the above exception, another exception occurred:

|

| Traceback (most recent call last):

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 525, in filemap

|     return FilemapFiemap(image, log)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 359, in __init__

|     self.block_is_mapped(0)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 406, in block_is_mapped

|     struct_fiemap = self._invoke_fiemap(block, 1)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 393, in _invoke_fiemap

|     raise ErrorNotSupp(errstr)

| wic.filemap.ErrorNotSupp: FilemapFiemap: the FIEMAP ioctl is not supported by the file-system

|

| During handling of the above exception, another exception occurred:

|

| Traceback (most recent call last):

|   File "/home/build/upstream/yocto/poky/scripts/wic", line 525, in <module>

|     sys.exit(main(sys.argv[1:]))

|   File "/home/build/upstream/yocto/poky/scripts/wic", line 520, in main

|     return hlp.invoke_subcommand(args, parser, hlp.wic_help_usage, subcommands)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/help.py", line 98, in invoke_subcommand

|     subcmd[0](args, usage)

|   File "/home/build/upstream/yocto/poky/scripts/wic", line 227, in wic_create_subcommand

|     native_sysroot, options)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/engine.py", line 202, in wic_create

|     plugin.do_create()

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/plugins/imager/direct.py", line 99, in do_create

|     self.create()

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/plugins/imager/direct.py", line 194, in create

|     self._image.prepare(self)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/plugins/imager/direct.py", line 352, in prepare

|     imager.kernel_dir, imager.native_sysroot)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/partition.py", line 185, in prepare

|     kernel_dir, rootfs_dir, native_sysroot)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/plugins/source/rawcopy.py", line 78, in do_prepare_partition

|     sparse_copy(src, dst)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 543, in sparse_copy

|     fmap = api(src_fname)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 527, in filemap

|     return FilemapSeek(image, log)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 206, in __init__

|     self._probe_seek_hole()

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 241, in _probe_seek_hole

|     raise ErrorNotSupp("the file-system does not support "

| wic.filemap.ErrorNotSupp: the file-system does not support "SEEK_HOLE" and "SEEK_DATA" but only provides a stub implementation

| WARNING: /home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/run.do_image_wic.15406:1 exit 1 from 'BUILDDIR="/home/build/build" wic create "$wks" --vars "/home/build/build/tmp/sysroots/mg90/imgdata/" -e "core-image-minimal" -o "$out/"'

| ERROR: Function failed: do_image_wic (log file is located at /home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/log.do_image_wic.15406)

ERROR: Task (/home/build/upstream/yocto/poky/meta/recipes-core/images/core-image-minimal.bb:do_image_wic) failed with exit code '1'

NOTE: Tasks Summary: Attempted 3411 tasks of which 2614 didn't need to be rerun and 1 failed.



Summary: 1 task failed:

  /home/build/upstream/yocto/poky/meta/recipes-core/images/core-image-minimal.bb:do_image_wic

Summary: There were 13 WARNING messages shown.

Summary: There was 1 ERROR message shown, returning a non-zero exit code.




Regards,

Darcy

Darcy Watkins ::  Senior Staff Engineer, Firmware

SIERRA WIRELESS
Direct  +1 604 233 7989   ::  Fax  +1 604 231 1109  ::  Main  +1 604 231 1100
13811 Wireless Way  :: Richmond, BC Canada V6V 3A4
[M4]
dwatkins@sierrawireless.com<mailto:dwatkins@sierrawireless.com> :: www.sierrawireless.com<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.sierrawireless.com%2F&data=02%7C01%7Cdwatkins%40sierrawireless.com%7C9c74be6213f14e8d315308d5ec02e29c%7C08059a4c248643dd89e33a747e0dcbe8%7C1%7C0%7C636674419524916074&sdata=UFp9oHJq%2FWno%2FSvypBUhCFkrVPhHbY82BUls%2FnU0L3M%3D&reserved=0>


From: Tim Orling [mailto:ticotimo@gmail.com]
Sent: 18 July 2018 20:19
To: Darcy Watkins <dwatkins@sierrawireless.com>
Cc: Frazer, Will <Will.Frazer@eurotech.com>; yocto@yoctoproject.org
Subject: Re: [yocto] Error in do_image_wic in Docker container


On Mac and Windows you need a samba volume.
See:
https://github.com/crops/docker-win-mac-docs/wiki


On Wed, Jul 18, 2018 at 11:44 AM Darcy Watkins <dwatkins@sierrawireless.com<mailto:dwatkins@sierrawireless.com>> wrote:
Hi Will,

I managed to get a docker Yocto build under Linux working, but using a simplified volume mounting scheme.  I ran into an issue building with CentOS 7.5 so I used CentOS 7.4 in a container (since the build used to always work before the CentOS update).  I haven’t gotten back to trying it under MacOS.


Regards,

Darcy

Darcy Watkins ::  Senior Staff Engineer, Firmware

SIERRA WIRELESS
Direct  +1 604 233 7989   ::  Fax  +1 604 231 1109  ::  Main  +1 604 231 1100
13811 Wireless Way  :: Richmond, BC Canada V6V 3A4
[P2]
dwatkins@sierrawireless.com<mailto:dwatkins@sierrawireless.com> :: www.sierrawireless.com<http://www.sierrawireless.com/>

From: Frazer, Will <Will.Frazer@eurotech.com<mailto:Will.Frazer@eurotech.com>>
Sent: July-17-18 9:32 AM
To: Darcy Watkins <dwatkins@sierrawireless.com<mailto:dwatkins@sierrawireless.com>>; yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
Subject: RE: Error in do_image_wic in Docker container

Hi Darcy,

Don’t suppose you solved this?

I have a yocto 2.3 build that works OK in a virtual machine but seems to throw a v.similar error to what you have reported below.

Similarly I have various mounts outside of the container to inject pre-build components & pick up build artifacts.

Thanks,
Will

Will Frazer | EUROTECH | direct  +44 (0) 1223 403431 | mobile: +44 (0) 7736 198115




From: yocto-bounces@yoctoproject.org<mailto:yocto-bounces@yoctoproject.org> [mailto:yocto-bounces@yoctoproject.org] On Behalf Of Darcy Watkins
Sent: 25 March 2018 17:41
To: yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
Subject: [yocto] Error in do_image_wic in Docker container

Hi,

This is near end of a build based on rocko branch plus a custom BSP layer, etc.  I have had it build OK previously under Linux (CentOS 7).  This run is inside a Docker container running on my MacBook.  From what I gather from google search results, is the underlying OS filesystem doesn’t support an operation.

I use a volume mount scheme as follows…

docker run -it \
    --volume=${PWD}:/home/build:cached \
    --volume=${HOME}/.ssh:/home/build/.ssh \
    --volume=${PWD}/downloads:/home/build/downloads:delegated \
    --rm --volume=${WS_NAME}_build_vol:/home/build/build \
    --volume=${PWD}/build/conf:/home/build/build/conf:cached \
    --volume=${PWD}/build/deploy:/home/build/build/tmp/deploy:delegated \
    --volume=${TARPIT}:/home/public/tarballs:cached \
    $DIMG bash

The checkout is mounted from MacOS at /home/build to keep source meta-data accessible by MacOS text editors.

The build directory is inside a docker volume so that it doesn’t have case insensitivity issues.

The deploy dir and the conf dir are mounted inside this volume so that when docker exits I still have MacOS access to the conf and the deployed content.

The TARPIT is a premirror implementation and DIMG is the docker container used.

Does WIC do weird filesystem stuff (obviously ‘yes’), but does it do this in the deploy dir rather than in one of the work dirs?

I think I missed something (almost like a “fool’s mate” in Chess, LOL).  Any insight on this appreciated.

Does deploy dir have to be entirely inside the volume, or is this a limitation of Docker implementation itself?

Thanks!

---


ERROR: core-image-minimal-1.0-r0 do_image_wic: Function failed: do_image_wic (log file is located at /home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/log.do_image_wic.15406)

ERROR: Logfile of failure stored in: /home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/log.do_image_wic.15406

Log data follows:

| DEBUG: Executing python function set_image_size

| DEBUG: Python function set_image_size finished

| DEBUG: Executing python function extend_recipe_sysroot

| NOTE: Direct dependencies are ['/home/build/upstream/yocto/poky/meta/recipes-devtools/python/python-native_2.7.13.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.3.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/opkg/opkg_0.3.5.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/tcltk/tcl_8.6.7.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-devtools/mklibs/mklibs-native_0.1.43.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-kernel/kmod/kmod-native_git.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-extended/bc/bc_1.06.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-devtools/binutils/binutils-cross_2.29.1.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/createrepo-c/createrepo-c_git.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/rpm/rpm_git.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-core/glibc/glibc_2.26.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-connectivity/openssl/openssl_1.0.2n.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/subversion/subversion_1.9.6.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.5.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-bsp/u-boot/u-boot-mkimage_2017.09.bb:do_populate_sysroot', '/home/build/upstream/linaro/meta-linaro/meta-linaro-toolchain/recipes-devtools/gcc/libgcc_linaro-7.1.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-kernel/dtc/dtc_1.4.4.bb:do_populate_sysroot', '/home/build/upstream/linaro/meta-linaro/meta-linaro-toolchain/recipes-devtools/gcc/gcc-runtime_linaro-7.1.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/mtools/mtools_4.0.18.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/openembedded/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.12.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/dnf/dnf_2.6.3.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-extended/pigz/pigz_2.3.4.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-support/lzop/lzop_1.03.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-extended/parted/parted_3.2.bb:do_populate_sysroot', '/home/build/upstream/yocto/poky/meta/recipes-devtools/quilt/quilt-native_0.65.bb:do_populate_sysroot', '/home/build/upstream/yocto/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2017.09.bb:do_populate_sysroot', '/home/build/upstream/yocto/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb:do_populate_sysroot', '/home/build/upstream/linaro/meta-linaro/meta-linaro-toolchain/recipes-devtools/gcc/gcc-cross_linaro-7.1.bb:do_populate_sysroot', '/home/build/meta-MG-os-bsp/recipes-bsp/fec/fec_3.0.1.bb:do_populate_sysroot', '/home/build/upstream/yocto/meta-freescale/recipes-kernel/linux/linux-qoriq_4.9.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/opkg-utils/opkg-utils_0.3.5.bb:do_populate_sysroot', '/home/build/meta-MG-os-bsp/recipes-bsp/omg-hardware/omg-hardware_svn.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-support/bmap-tools/bmap-tools_3.4.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/pseudo/pseudo_1.8.2.bb:do_populate_sysroot', 'virtual:native:/home/build/upstream/yocto/poky/meta/recipes-devtools/prelink/prelink_git.bb:do_populate_sysroot']

| NOTE: Installed into sysroot: ['python-native', 'gptfdisk-native', 'tcl-native', 'dosfstools-native', 'bc-native', 'binutils-cross-arm', 'change-file-endianess-native', 'subversion-native', 'mtools-native', 'python-pyyaml-native', 'lzop-native', 'parted-native', 'gcc-cross-arm', 'linux-qoriq', 'apr-util-native', 'serf-native', 'python-setuptools-native', 'python-cython-native', 'libyaml-native', 'mpfr-native', 'libmpc-native', 'gmp-native', 'apr-native', 'gdbm-native', 'python-scons-native']

| NOTE: Skipping as already exists in sysroot: ['opkg-native', 'qemuwrapper-cross', 'mklibs-native', 'makedevs-native', 'kmod-native', 'update-rc.d-native', 'createrepo-c-native', 'rpm-native', 'glibc', 'openssl-native', 'e2fsprogs-native', 'u-boot-mkimage-native', 'libgcc', 'depmodwrapper-cross', 'dtc-native', 'gcc-runtime', 'dnf-native', 'ldconfig-native', 'pigz-native', 'quilt-native', 'u-boot-qoriq', 'qe-ucode', 'fec', 'opkg-utils-native', 'omg-hardware', 'bmap-tools-native', 'pseudo-native', 'prelink-native', 'sqlite3-native', 'libtool-native', 'bzip2-native', 'autoconf-native', 'expat-native', 'xz-native', 'gnu-config-native', 'readline-native', 'pkgconfig-native', 'zlib-native', 'automake-native', 'qemu-native', 'util-linux-native', 'popt-native', 'ncurses-native', 'libarchive-native', 'libsolv-native', 'gettext-minimal-native', 'gtk-doc-native', 'texinfo-dummy-native', 'flex-native', 'bison-native', 'glib-2.0-native', 'cmake-native', 'python3-native', 'libxml2-native', 'file-native', 'curl-native', 'dbus-native', 'nss-native', 'elfutils-native', 'db-native', 'linux-libc-headers', 'cryptodev-linux-native', 'makedepend-native', 'attr-native', 'shadow-native', 'librepo-native', 'python3-iniparse-native', 'libdnf-native', 'libcomps-native', 'lzo-native', 'omg-mcu', 'python3-setuptools-native', 'binutils-native', 'm4-native', 'alsa-lib-native', 'libsdl-native', 'pixman-native', 'libffi-native', 'libpcre-native', 'gettext-native', 'nspr-native', 'xproto-native', 'util-macros-native', 'unzip-native', 'libcheck-native', 'gpgme-native', 'python3-six-native', 'gobject-introspection-native', 'libxrender-native', 'libxrandr-native', 'libxext-native', 'libx11-native', 'libpng-native', 'swig-native', 'libassuan-native', 'libgpg-error-native', 'renderproto-native', 'randrproto-native', 'xextproto-native', 'libxcb-native', 'inputproto-native', 'xtrans-native', 'kbproto-native', 'libxau-native', 'libxdmcp-native', 'libpthread-stubs-native', 'xcb-proto-native']

| DEBUG: sed -e 's:^[^/]*/:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/recipe-sysroot-native/:g' /home/build/build/tmp/sysroots-components/x86_64/python-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/tcl-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/gcc-cross-arm/fixmepath /home/build/build/tmp/sysroots-components/x86_64/apr-util-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/python-setuptools-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/gmp-native/fixmepath /home/build/build/tmp/sysroots-components/x86_64/apr-native/fixmepath | xargs sed -i -e 's:FIXMESTAGINGDIRTARGET:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/recipe-sysroot:g; s:FIXMESTAGINGDIRHOST:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/recipe-sysroot-native:g' -e 's:FIXME_COMPONENTS_DIR:/home/build/build/tmp/sysroots-components:g' -e 's:FIXME_HOSTTOOLS_DIR:/home/build/build/tmp/hosttools:g' -e 's:FIXME_PKGDATA_DIR:/home/build/build/tmp/pkgdata/mg90:g' -e 's:FIXME_PSEUDO_LOCALSTATEDIR:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/pseudo/:g' -e 's:FIXME_LOGFIFO:/home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/fifo.15406:g'

| DEBUG: Python function extend_recipe_sysroot finished

| DEBUG: Executing shell function do_image_wic

| INFO: Creating image(s)...

|

| Traceback (most recent call last):

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 385, in _invoke_fiemap

|     fcntl.ioctl(self._f_image, _FIEMAP_IOCTL, self._buf, 1)

| OSError: [Errno 95] Operation not supported

|

| During handling of the above exception, another exception occurred:

|

| Traceback (most recent call last):

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 525, in filemap

|     return FilemapFiemap(image, log)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 359, in __init__

|     self.block_is_mapped(0)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 406, in block_is_mapped

|     struct_fiemap = self._invoke_fiemap(block, 1)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 393, in _invoke_fiemap

|     raise ErrorNotSupp(errstr)

| wic.filemap.ErrorNotSupp: FilemapFiemap: the FIEMAP ioctl is not supported by the file-system

|

| During handling of the above exception, another exception occurred:

|

| Traceback (most recent call last):

|   File "/home/build/upstream/yocto/poky/scripts/wic", line 525, in <module>

|     sys.exit(main(sys.argv[1:]))

|   File "/home/build/upstream/yocto/poky/scripts/wic", line 520, in main

|     return hlp.invoke_subcommand(args, parser, hlp.wic_help_usage, subcommands)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/help.py", line 98, in invoke_subcommand

|     subcmd[0](args, usage)

|   File "/home/build/upstream/yocto/poky/scripts/wic", line 227, in wic_create_subcommand

|     native_sysroot, options)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/engine.py", line 202, in wic_create

|     plugin.do_create()

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/plugins/imager/direct.py", line 99, in do_create

|     self.create()

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/plugins/imager/direct.py", line 194, in create

|     self._image.prepare(self)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/plugins/imager/direct.py", line 352, in prepare

|     imager.kernel_dir, imager.native_sysroot)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/partition.py", line 185, in prepare

|     kernel_dir, rootfs_dir, native_sysroot)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/plugins/source/rawcopy.py", line 78, in do_prepare_partition

|     sparse_copy(src, dst)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 543, in sparse_copy

|     fmap = api(src_fname)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 527, in filemap

|     return FilemapSeek(image, log)

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 206, in __init__

|     self._probe_seek_hole()

|   File "/home/build/upstream/yocto/poky/scripts/lib/wic/filemap.py", line 241, in _probe_seek_hole

|     raise ErrorNotSupp("the file-system does not support "

| wic.filemap.ErrorNotSupp: the file-system does not support "SEEK_HOLE" and "SEEK_DATA" but only provides a stub implementation

| WARNING: /home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/run.do_image_wic.15406:1 exit 1 from 'BUILDDIR="/home/build/build" wic create "$wks" --vars "/home/build/build/tmp/sysroots/mg90/imgdata/" -e "core-image-minimal" -o "$out/"'

| ERROR: Function failed: do_image_wic (log file is located at /home/build/build/tmp/work/mg90-poky-linux-gnueabi/core-image-minimal/1.0-r0/temp/log.do_image_wic.15406)

ERROR: Task (/home/build/upstream/yocto/poky/meta/recipes-core/images/core-image-minimal.bb:do_image_wic) failed with exit code '1'

NOTE: Tasks Summary: Attempted 3411 tasks of which 2614 didn't need to be rerun and 1 failed.



Summary: 1 task failed:

  /home/build/upstream/yocto/poky/meta/recipes-core/images/core-image-minimal.bb:do_image_wic

Summary: There were 13 WARNING messages shown.

Summary: There was 1 ERROR message shown, returning a non-zero exit code.




Regards,

Darcy

Darcy Watkins ::  Senior Staff Engineer, Firmware

SIERRA WIRELESS
Direct  +1 604 233 7989   ::  Fax  +1 604 231 1109  ::  Main  +1 604 231 1100
13811 Wireless Way  :: Richmond, BC Canada V6V 3A4
[M4]
dwatkins@sierrawireless.com<mailto:dwatkins@sierrawireless.com> :: www.sierrawireless.com<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.sierrawireless.com%2F&data=02%7C01%7Cdwatkins%40sierrawireless.com%7C9c74be6213f14e8d315308d5ec02e29c%7C08059a4c248643dd89e33a747e0dcbe8%7C1%7C0%7C636674419524916074&sdata=UFp9oHJq%2FWno%2FSvypBUhCFkrVPhHbY82BUls%2FnU0L3M%3D&reserved=0>
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org<mailto:yocto@yoctoproject.org>
https://lists.yoctoproject.org/listinfo/yocto

[-- Attachment #2: Type: text/html, Size: 108562 bytes --]

^ permalink raw reply

* [meta-processor-sdk][PATCH] tiovx-app-host: patch for makefiles is pushed to sources
From: Djordje Senicic @ 2018-07-23 23:52 UTC (permalink / raw)
  To: meta-arago; +Cc: d-senicic1, Djordje Senicic

* Add /lib to library search path

Signed-off-by: Djordje Senicic <x0157990@ti.com>
---
 recipes-ti/tiovx/files/hack-to-add-lib-path.patch | 28 -----------------------
 recipes-ti/tiovx/tiovx-app-host.bb                |  1 -
 recipes-ti/tiovx/tiovx-sys.inc                    |  2 +-
 3 files changed, 1 insertion(+), 30 deletions(-)
 delete mode 100644 recipes-ti/tiovx/files/hack-to-add-lib-path.patch

diff --git a/recipes-ti/tiovx/files/hack-to-add-lib-path.patch b/recipes-ti/tiovx/files/hack-to-add-lib-path.patch
deleted file mode 100644
index 8223a11..0000000
--- a/recipes-ti/tiovx/files/hack-to-add-lib-path.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/host/makefile b/host/makefile
-index 469aeb0..295deda 100644
---- a/host/makefile
-+++ b/host/makefile
-@@ -102,7 +102,8 @@ CPPFLAGS =
- LDFLAGS = -L$(IPC_INSTALL_DIR)/linux/src/api/.libs/ \
-     -L$(IPC_INSTALL_DIR)/linux/src/utils/.libs \
-     -L$(IPC_INSTALL_DIR)/linux/src/transport/.libs \
--    -L$(TARGET_INSTALL_DIR)/usr/lib
-+    -L$(TARGET_INSTALL_DIR)/usr/lib \
-+    -L$(TARGET_INSTALL_DIR)/lib
- 
- else
- LD = $(CC)
-diff --git a/khronos_example/makefile b/khronos_example/makefile
-index a54aa33..1e9a75f 100644
---- a/khronos_example/makefile
-+++ b/khronos_example/makefile
-@@ -101,7 +101,8 @@ CPPFLAGS =
- LDFLAGS = -L$(IPC_INSTALL_DIR)/linux/src/api/.libs/ \
-     -L$(IPC_INSTALL_DIR)/linux/src/utils/.libs \
-     -L$(IPC_INSTALL_DIR)/linux/src/transport/.libs \
--    -L$(TARGET_INSTALL_DIR)/usr/lib
-+    -L$(TARGET_INSTALL_DIR)/usr/lib \
-+    -L$(TARGET_INSTALL_DIR)/lib
- 
- else
- LD = $(CC)
diff --git a/recipes-ti/tiovx/tiovx-app-host.bb b/recipes-ti/tiovx/tiovx-app-host.bb
index a5c29ab..097f045 100644
--- a/recipes-ti/tiovx/tiovx-app-host.bb
+++ b/recipes-ti/tiovx/tiovx-app-host.bb
@@ -8,7 +8,6 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
 
 SRC_URI_append += "\
      file://setenv.sh \
-     file://hack-to-add-lib-path.patch \
 "
 
 require recipes-ti/includes/tisdk-paths.inc
diff --git a/recipes-ti/tiovx/tiovx-sys.inc b/recipes-ti/tiovx/tiovx-sys.inc
index e45f130..56b4385 100644
--- a/recipes-ti/tiovx/tiovx-sys.inc
+++ b/recipes-ti/tiovx/tiovx-sys.inc
@@ -1,5 +1,5 @@
 PV = "01.00.01.00"
 
 BRANCH="master"
-SRCREV = "dc60c253a218fb3ec92fdeeaa454fce047f8964a"
+SRCREV = "b44eece0a22b97de59c964acb2a910fc56cdf3ac"
 SRC_URI = "git://git.ti.com/processor-sdk/tiovx-app.git;protocol=git;branch=${BRANCH}"
-- 
1.9.1



^ permalink raw reply related

* [Intel-wired-lan] [PATCH 13/13] ice: Introduce SERVICE_DIS flag and service routine functions
From: Abodunrin, Akeem G @ 2018-07-23 23:51 UTC (permalink / raw)
  To: intel-wired-lan
In-Reply-To: <20180723231348.14838-14-anirudh.venkataramanan@intel.com>

ACK

> -----Original Message-----
> From: Venkataramanan, Anirudh
> Sent: Monday, July 23, 2018 4:14 PM
> To: intel-wired-lan at lists.osuosl.org
> Cc: Abodunrin, Akeem G <akeem.g.abodunrin@intel.com>
> Subject: [PATCH 13/13] ice: Introduce SERVICE_DIS flag and service routine
> functions
> 
> From: Akeem G Abodunrin <akeem.g.abodunrin@intel.com>
> 
> This patch introduces SERVICE_DIS flag to use for stopping service task.
> This flag will be checked before scheduling new tasks. Also add new functions
> ice_service_task_stop to stop service task.
> 
> Signed-off-by: Akeem G Abodunrin <akeem.g.abodunrin@intel.com>
> Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice.h      |  1 +
>  drivers/net/ethernet/intel/ice/ice_main.c | 34 ++++++++++++++++++++++++----
> ---
>  2 files changed, 28 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice.h
> b/drivers/net/ethernet/intel/ice/ice.h
> index 6f44a850c4b2..9cf233d085d8 100644
> --- a/drivers/net/ethernet/intel/ice/ice.h
> +++ b/drivers/net/ethernet/intel/ice/ice.h
> @@ -138,6 +138,7 @@ enum ice_state {
>  	__ICE_FLTR_OVERFLOW_PROMISC,
>  	__ICE_CFG_BUSY,
>  	__ICE_SERVICE_SCHED,
> +	__ICE_SERVICE_DIS,
>  	__ICE_STATE_NBITS		/* must be last */
>  };
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c
> b/drivers/net/ethernet/intel/ice/ice_main.c
> index cb1145515f98..3a77812e4be7 100644
> --- a/drivers/net/ethernet/intel/ice/ice_main.c
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -1107,7 +1107,7 @@ static void ice_clean_adminq_subtask(struct ice_pf
> *pf)
>   */
>  static void ice_service_task_schedule(struct ice_pf *pf)  {
> -	if (!test_bit(__ICE_DOWN, pf->state) &&
> +	if (!test_bit(__ICE_SERVICE_DIS, pf->state) &&
>  	    !test_and_set_bit(__ICE_SERVICE_SCHED, pf->state) &&
>  	    !test_bit(__ICE_NEEDS_RESTART, pf->state))
>  		queue_work(ice_wq, &pf->serv_task);
> @@ -1126,6 +1126,22 @@ static void ice_service_task_complete(struct ice_pf
> *pf)
>  	clear_bit(__ICE_SERVICE_SCHED, pf->state);  }
> 
> +/**
> + * ice_service_task_stop - stop service task and cancel works
> + * @pf: board private structure
> + */
> +static void ice_service_task_stop(struct ice_pf *pf) {
> +	set_bit(__ICE_SERVICE_DIS, pf->state);
> +
> +	if (pf->serv_tmr.function)
> +		del_timer_sync(&pf->serv_tmr);
> +	if (pf->serv_task.func)
> +		cancel_work_sync(&pf->serv_task);
> +
> +	clear_bit(__ICE_SERVICE_SCHED, pf->state); }
> +
>  /**
>   * ice_service_timer - timer callback to schedule service task
>   * @t: pointer to timer_list
> @@ -3391,10 +3407,7 @@ static void ice_determine_q_usage(struct ice_pf *pf)
>   */
>  static void ice_deinit_pf(struct ice_pf *pf)  {
> -	if (pf->serv_tmr.function)
> -		del_timer_sync(&pf->serv_tmr);
> -	if (pf->serv_task.func)
> -		cancel_work_sync(&pf->serv_task);
> +	ice_service_task_stop(pf);
>  	mutex_destroy(&pf->sw_mutex);
>  	mutex_destroy(&pf->avail_q_mutex);
>  }
> @@ -3601,6 +3614,8 @@ static int ice_probe(struct pci_dev *pdev,
>  	pf->pdev = pdev;
>  	pci_set_drvdata(pdev, pf);
>  	set_bit(__ICE_DOWN, pf->state);
> +	/* Disable service task until DOWN bit is cleared */
> +	set_bit(__ICE_SERVICE_DIS, pf->state);
> 
>  	hw = &pf->hw;
>  	hw->hw_addr = pcim_iomap_table(pdev)[ICE_BAR0]; @@ -3658,6
> +3673,9 @@ static int ice_probe(struct pci_dev *pdev,
>  		goto err_init_interrupt_unroll;
>  	}
> 
> +	/* Driver is mostly up */
> +	clear_bit(__ICE_DOWN, pf->state);
> +
>  	/* In case of MSIX we are going to setup the misc vector right here
>  	 * to handle admin queue events etc. In case of legacy and MSI
>  	 * the misc functionality and queue processing is combined in @@ -
> 3697,8 +3715,7 @@ static int ice_probe(struct pci_dev *pdev,
>  		goto err_alloc_sw_unroll;
>  	}
> 
> -	/* Driver is mostly up */
> -	clear_bit(__ICE_DOWN, pf->state);
> +	clear_bit(__ICE_SERVICE_DIS, pf->state);
> 
>  	/* since everything is good, start the service timer */
>  	mod_timer(&pf->serv_tmr, round_jiffies(jiffies + pf->serv_tmr_period));
> @@ -3712,6 +3729,7 @@ static int ice_probe(struct pci_dev *pdev,
>  	return 0;
> 
>  err_alloc_sw_unroll:
> +	set_bit(__ICE_SERVICE_DIS, pf->state);
>  	set_bit(__ICE_DOWN, pf->state);
>  	devm_kfree(&pf->pdev->dev, pf->first_sw);
>  err_msix_misc_unroll:
> @@ -3739,6 +3757,7 @@ static void ice_remove(struct pci_dev *pdev)
>  		return;
> 
>  	set_bit(__ICE_DOWN, pf->state);
> +	ice_service_task_stop(pf);
> 
>  	ice_vsi_release_all(pf);
>  	ice_free_irq_msix_misc(pf);
> @@ -6003,6 +6022,7 @@ static void ice_tx_timeout(struct net_device *netdev)
>  		netdev_err(netdev, "tx_timeout recovery unsuccessful, device is
> in unrecoverable state.\n");
>  		set_bit(__ICE_DOWN, pf->state);
>  		set_bit(__ICE_NEEDS_RESTART, vsi->state);
> +		set_bit(__ICE_SERVICE_DIS, pf->state);
>  		break;
>  	}
> 
> --
> 2.14.3


^ permalink raw reply

* [U-Boot] [PATCH v1 6/6] mmc: arm_pl180_mmci: Add "cd_inverted" DT property read
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532072657-2541-7-git-send-email-patrice.chotard@st.com>

On 20 July 2018 at 01:44, Patrice Chotard <patrice.chotard@st.com> wrote:
> Add missing read of "cd_inverted" property in DT.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>
>  drivers/mmc/arm_pl180_mmci.c | 1 +
>  1 file changed, 1 insertion(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [PATCH v1 5/6] mmc: arm_pl180_mmci: Add missing clk_free
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532072657-2541-6-git-send-email-patrice.chotard@st.com>

On 20 July 2018 at 01:44, Patrice Chotard <patrice.chotard@st.com> wrote:
> Add missing clk_free() call in case of failure
> when enabling the clock.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>
>  drivers/mmc/arm_pl180_mmci.c | 1 +
>  1 file changed, 1 insertion(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [PATCH v1 4/6] mmc: arm_pl180_mmci: Update to support CONFIG_BLK
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532072657-2541-5-git-send-email-patrice.chotard@st.com>

Hi Patrice,

On 20 July 2018 at 01:44, Patrice Chotard <patrice.chotard@st.com> wrote:
> Config flag CONFIG_BLK becomes mandatory, update arm_pl180_mmci
> to support this config.
>
> This driver is used by STM32Fx and by Vexpress platforms.
> Only STM32Fx are DM ready. No DM code is isolated and will be
> removed easily when wexpress will be converted to DM.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>
>  drivers/mmc/arm_pl180_mmci.c | 85 +++++++++++++++++++++++---------------------
>  1 file changed, 45 insertions(+), 40 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

But please see below.

>
> diff --git a/drivers/mmc/arm_pl180_mmci.c b/drivers/mmc/arm_pl180_mmci.c
> index e267cd782e8b..e988bac62298 100644
> --- a/drivers/mmc/arm_pl180_mmci.c
> +++ b/drivers/mmc/arm_pl180_mmci.c
> @@ -357,13 +357,13 @@ static const struct mmc_ops arm_pl180_mmci_ops = {
>         .set_ios = host_set_ios,
>         .init = mmc_host_reset,
>  };
> -#endif
>
>  /*
>   * mmc_host_init - initialize the mmc controller.
>   * Set initial clock and power for mmc slot.
>   * Initialize mmc struct and register with mmc framework.
>   */
> +
>  int arm_pl180_mmci_init(struct pl180_mmc_host *host, struct mmc **mmc)
>  {
>         u32 sdi_u32;
> @@ -377,9 +377,8 @@ int arm_pl180_mmci_init(struct pl180_mmc_host *host, struct mmc **mmc)
>         writel(sdi_u32, &host->base->mask0);
>
>         host->cfg.name = host->name;
> -#ifndef CONFIG_DM_MMC
>         host->cfg.ops = &arm_pl180_mmci_ops;
> -#endif
> +
>         /* TODO remove the duplicates */
>         host->cfg.host_caps = host->caps;
>         host->cfg.voltages = host->voltages;
> @@ -393,23 +392,44 @@ int arm_pl180_mmci_init(struct pl180_mmc_host *host, struct mmc **mmc)
>         *mmc = mmc_create(&host->cfg, host);
>         if (!*mmc)
>                 return -1;
> -
>         debug("registered mmc interface number is:%d\n",
>               (*mmc)->block_dev.devnum);
>
>         return 0;
>  }
> +#endif
>
>  #ifdef CONFIG_DM_MMC

Can you drop this?

> +static void arm_pl180_mmc_init(struct pl180_mmc_host *host)
> +{
> +       u32 sdi_u32;
> +
> +       writel(host->pwr_init, &host->base->power);
> +       writel(host->clkdiv_init, &host->base->clock);
> +       udelay(CLK_CHANGE_DELAY);
> +
> +       /* Disable mmc interrupts */
> +       sdi_u32 = readl(&host->base->mask0) & ~SDI_MASK0_MASK;
> +       writel(sdi_u32, &host->base->mask0);
> +}
> +
>  static int arm_pl180_mmc_probe(struct udevice *dev)
>  {
>         struct arm_pl180_mmc_plat *pdata = dev_get_platdata(dev);
>         struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
>         struct mmc *mmc = &pdata->mmc;
> -       struct pl180_mmc_host *host = mmc->priv;
> +       struct pl180_mmc_host *host = dev->priv;
> +       struct mmc_config *cfg = &pdata->cfg;
>         struct clk clk;
>         u32 bus_width;
>         int ret;
> +       fdt_addr_t addr;
> +
> +       addr = devfdt_get_addr(dev);

dev_read_addr()

It is somewhat more correct to read from the DT in
ofdata_to_platdata() if you can.

> +       if (addr == FDT_ADDR_T_NONE)
> +               return -EINVAL;
> +
> +       host->base = (void *)addr;
>
>         ret = clk_get_by_index(dev, 0, &clk);
>         if (ret < 0)
> @@ -421,27 +441,28 @@ static int arm_pl180_mmc_probe(struct udevice *dev)
>                 return ret;
>         }
>
> -       strcpy(host->name, "MMC");
>         host->pwr_init = INIT_PWR;
>         host->clkdiv_init = SDI_CLKCR_CLKDIV_INIT_V1 | SDI_CLKCR_CLKEN |
>                             SDI_CLKCR_HWFC_EN;
> -       host->voltages = VOLTAGE_WINDOW_SD;
> -       host->caps = 0;
>         host->clock_in = clk_get_rate(&clk);
> -       host->clock_min = host->clock_in / (2 * (SDI_CLKCR_CLKDIV_INIT_V1 + 1));
> -       host->clock_max = dev_read_u32_default(dev, "max-frequency",
> -                                              MMC_CLOCK_MAX);
>         host->version2 = dev_get_driver_data(dev);
>
> +       cfg->name = dev->name;
> +       cfg->voltages = VOLTAGE_WINDOW_SD;
> +       cfg->host_caps = 0;
> +       cfg->f_min = host->clock_in / (2 * (SDI_CLKCR_CLKDIV_INIT_V1 + 1));
> +       cfg->f_max = dev_read_u32_default(dev, "max-frequency", MMC_CLOCK_MAX);
> +       cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
> +
>         gpio_request_by_name(dev, "cd-gpios", 0, &host->cd_gpio, GPIOD_IS_IN);
>
>         bus_width = dev_read_u32_default(dev, "bus-width", 1);
>         switch (bus_width) {
>         case 8:
> -               host->caps |= MMC_MODE_8BIT;
> +               cfg->host_caps |= MMC_MODE_8BIT;
>                 /* Hosts capable of 8-bit transfers can also do 4 bits */
>         case 4:
> -               host->caps |= MMC_MODE_4BIT;
> +               cfg->host_caps |= MMC_MODE_4BIT;
>                 break;
>         case 1:
>                 break;
> @@ -449,19 +470,21 @@ static int arm_pl180_mmc_probe(struct udevice *dev)
>                 dev_err(dev, "Invalid bus-width value %u\n", bus_width);
>         }
>
> -       ret = arm_pl180_mmci_init(host, &mmc);
> -       if (ret) {
> -               dev_err(dev, "arm_pl180_mmci init failed\n");
> -               return ret;
> -       }
> -
> +       arm_pl180_mmc_init(host);
> +       mmc->priv = host;
>         mmc->dev = dev;
> -       dev->priv = host;
>         upriv->mmc = mmc;
>
>         return 0;
>  }
>
> +int arm_pl180_mmc_bind(struct udevice *dev)
> +{
> +       struct arm_pl180_mmc_plat *plat = dev_get_platdata(dev);
> +
> +       return mmc_bind(dev, &plat->mmc, &plat->cfg);
> +}
> +
>  static int dm_host_request(struct udevice *dev, struct mmc_cmd *cmd,
>                            struct mmc_data *data)
>  {
> @@ -479,9 +502,7 @@ static int dm_host_set_ios(struct udevice *dev)
>
>  static int dm_mmc_getcd(struct udevice *dev)
>  {
> -       struct arm_pl180_mmc_plat *pdata = dev_get_platdata(dev);
> -       struct mmc *mmc = &pdata->mmc;
> -       struct pl180_mmc_host *host = mmc->priv;
> +       struct pl180_mmc_host *host = dev->priv;
>         int value = 1;
>
>         if (dm_gpio_is_valid(&host->cd_gpio)) {
> @@ -499,22 +520,6 @@ static const struct dm_mmc_ops arm_pl180_dm_mmc_ops = {
>         .get_cd = dm_mmc_getcd,
>  };
>
> -static int arm_pl180_mmc_ofdata_to_platdata(struct udevice *dev)
> -{
> -       struct arm_pl180_mmc_plat *pdata = dev_get_platdata(dev);
> -       struct mmc *mmc = &pdata->mmc;
> -       struct pl180_mmc_host *host = mmc->priv;
> -       fdt_addr_t addr;
> -
> -       addr = devfdt_get_addr(dev);
> -       if (addr == FDT_ADDR_T_NONE)
> -               return -EINVAL;
> -
> -       host->base = (void *)addr;
> -
> -       return 0;
> -}
> -
>  static const struct udevice_id arm_pl180_mmc_match[] = {
>         { .compatible = "st,stm32f4xx-sdio", .data = VERSION1 },
>         { /* sentinel */ }
> @@ -526,7 +531,7 @@ U_BOOT_DRIVER(arm_pl180_mmc) = {
>         .of_match = arm_pl180_mmc_match,
>         .ops = &arm_pl180_dm_mmc_ops,
>         .probe = arm_pl180_mmc_probe,
> -       .ofdata_to_platdata = arm_pl180_mmc_ofdata_to_platdata,
> +       .bind = arm_pl180_mmc_bind,
>         .priv_auto_alloc_size = sizeof(struct pl180_mmc_host),
>         .platdata_auto_alloc_size = sizeof(struct arm_pl180_mmc_plat),
>  };
> --
> 1.9.1
>

Regards,
Simon

^ permalink raw reply

* [U-Boot] [PATCH v1 3/6] configs: stm32f769-disco: Enable CONFIG_BLK
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532072657-2541-4-git-send-email-patrice.chotard@st.com>

On 20 July 2018 at 01:44, Patrice Chotard <patrice.chotard@st.com> wrote:
> CONFIG_BLK config flag becomes mandatory, enable it.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>
>  configs/stm32f469-discovery_defconfig | 1 -
>  1 file changed, 1 deletion(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [PATCH v1 2/6] configs: stm32f746-disco: Enable CONFIG_BLK
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532072657-2541-3-git-send-email-patrice.chotard@st.com>

On 20 July 2018 at 01:44, Patrice Chotard <patrice.chotard@st.com> wrote:
> CONFIG_BLK config flag becomes mandatory, enable it.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>
>  configs/stm32f746-disco_defconfig | 1 -
>  1 file changed, 1 deletion(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [PATCH v1 1/6] configs: stm32f429-evaluation: Enable CONFIG_BLK
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532072657-2541-2-git-send-email-patrice.chotard@st.com>

On 20 July 2018 at 01:44, Patrice Chotard <patrice.chotard@st.com> wrote:
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>
>  configs/stm32f429-evaluation_defconfig | 1 -
>  1 file changed, 1 deletion(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [RFC PATCH v2 3/6] dm: usb: Add UCLASS_USB_DEV_GENERIC shutdown
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <20180720071401.12952-4-jagan@amarulasolutions.com>

Hi Jagan,

On 20 July 2018 at 01:13, Jagan Teki <jagan@amarulasolutions.com> wrote:
> Some OTG controllers which operates on Peripheral
> mode are registered as UCLASS_USB_DEV_GENERIC.
>
> So add support to shutdown them as well. shutdown
> happened during 'usb reset' and U-Boot handoff code
> for Linux boot.
>
> controller restarting in 'usb reset' like probing
> again is still missing for this type of UCLASS.
>
> Cc: Simon Glass <sjg@chromium.org>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
> ---
> Note:
> I tried of traversing for multiple UCLASS in removal
> code in usb_stop, but couldn't come with proper solutions.
> I don't think any other area of code need a requirement like
> this, or may be I'm missing. any help would appreciate.
>
> Changes for v2:
> - none
>
>  drivers/usb/host/usb-uclass.c | 43 +++++++++++++++++++++++++++++++++++
>  1 file changed, 43 insertions(+)
>
> diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
> index 611ea97a72..99cf3d2b49 100644
> --- a/drivers/usb/host/usb-uclass.c
> +++ b/drivers/usb/host/usb-uclass.c
> @@ -158,6 +158,45 @@ int usb_get_max_xfer_size(struct usb_device *udev, size_t *size)
>         return ops->get_max_xfer_size(bus, size);
>  }
>
> +int __usb_stop(void)

Why the __ ? I think it should be something like usb_remove_and_unbind_all()

> +{
> +       struct udevice *bus;
> +       struct udevice *rh;
> +       struct uclass *uc;
> +       struct usb_uclass_priv *uc_priv;
> +       int err = 0, ret;
> +
> +       /* De-activate any devices that have been activated */
> +       ret = uclass_get(UCLASS_USB_DEV_GENERIC, &uc);
> +       if (ret)
> +               return ret;
> +
> +       uc_priv = uc->priv;
> +
> +       uclass_foreach_dev(bus, uc) {
> +               ret = device_remove(bus, DM_REMOVE_NORMAL);
> +               if (ret && !err)
> +                       err = ret;
> +
> +               /* Locate root hub device */
> +               device_find_first_child(bus, &rh);
> +               if (rh) {
> +                       /*
> +                        * All USB devices are children of root hub.
> +                        * Unbinding root hub will unbind all of its children.
> +                        */
> +                       ret = device_unbind(rh);
> +                       if (ret && !err)
> +                               err = ret;
> +               }
> +       }
> +
> +       uc_priv->companion_device_count = 0;
> +       usb_started = 0;
> +
> +       return err;
> +}
> +
>  int usb_stop(void)
>  {
>         struct udevice *bus;
> @@ -166,6 +205,10 @@ int usb_stop(void)
>         struct usb_uclass_priv *uc_priv;
>         int err = 0, ret;
>
> +       ret = __usb_stop();
> +       if (ret)
> +               return ret;
> +

This looks like the same code that appears below here, or very
similar. Why is this needed?

>         /* De-activate any devices that have been activated */
>         ret = uclass_get(UCLASS_USB, &uc);
>         if (ret)
> --
> 2.17.1
>

Regards,
Simon

^ permalink raw reply

* [U-Boot] [PATCH 11/20] w1: enumerate sandbox driver if configured
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <20180720160153.18c85f96@jawa>

Hi,

On 20 July 2018 at 08:01, Lukasz Majewski <lukma@denx.de> wrote:
> Hi Eugen,
>
> Thanks for (re-)bringing the One wire support to u-boot.
>
>> Add a sandbox eeprom on the bus as a device, if sandbox driver is
>> configured.
>>
>> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
>> ---
>>  drivers/w1/w1-uclass.c | 5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/w1/w1-uclass.c b/drivers/w1/w1-uclass.c
>> index cfddda3..e58c1ca 100644
>> --- a/drivers/w1/w1-uclass.c
>> +++ b/drivers/w1/w1-uclass.c
>> @@ -142,6 +142,11 @@ static int w1_enumerate(struct udevice *bus)
>>               }
>>       }
>>
>> +#ifdef CONFIG_W1_EEPROM_SANDBOX
>> +     /* before we are finished, add a sandbox device if we can */
>> +     w1_new_device(bus, W1_FAMILY_EEP_SANDBOX);
>> +#endif
>
> IMHO we shouldn't mix the sandbox code with production (on boards) code.
>
> Maybe Simon (+CCed) could provide some more input here?

I have not seen this series. But new devices should be created
automatically based on them being in the device tree. So you should
just be able to add them there.

I don't understand what w1_new_device() does. Also, it should return an error.

Regards,
Simon

^ permalink raw reply

* [U-Boot] [PATCH] mkimage: fit_image: Use macros from image.h
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <8047e2ecc83d516b32dd9e6c6ea8a05e64f15500.1532082660.git.michal.simek@xilinx.com>

On 20 July 2018 at 04:31, Michal Simek <michal.simek@xilinx.com> wrote:
> There is no reason not to use macros which are already defined.
> It is also much easier for grepping.
>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
>
>  tools/fit_image.c | 53 +++++++++++++++++++++++++++++------------------------
>  1 file changed, 29 insertions(+), 24 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [UBOOT PATCH] gpio: zynq: Used platdata structure for storing static data instead of priv
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532077609-20619-1-git-send-email-vipul.kumar@xilinx.com>

On 20 July 2018 at 03:06, Vipul Kumar <vipul.kumar@xilinx.com> wrote:
> This patch used platdata structure instead of priv for storing static
> information read from DT.
>
> Signed-off-by: Vipul Kumar <vipul.kumar@xilinx.com>
> ---
>  drivers/gpio/zynq_gpio.c | 67 ++++++++++++++++++++++++------------------------
>  1 file changed, 34 insertions(+), 33 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [PATCH v2 2/2] disk: part: Don't show redundant error message
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <20180720151856.23458-3-semen.protsenko@linaro.org>

On 20 July 2018 at 09:18, Sam Protsenko <semen.protsenko@linaro.org> wrote:
> Underlying API should already print some meaningful error message, so
> this one is just brings more noise. E.g. we can see log like this:
>
>     MMC: no card present
>     ** Bad device mmc 0 **
>
> Obviously, second error message is unwanted. Let's only print it in case
> when DEBUG is defined to keep log short and clear.
>
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> ---
> Changes in v2:
>   - Instead of removing error message, print it with debug()
>
>  disk/part.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [PATCH 11/17] fs: add mkdir interface
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <ad5d0bb1-1d01-a29d-c37f-79459aa10ad9@gmx.de>

Hi,

On 20 July 2018 at 11:35, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> On 07/20/2018 04:57 AM, AKASHI Takahiro wrote:
>> "mkdir" interface is added to file operations.
>> This is a preparatory change as mkdir support for FAT file system
>> will be added in next patch.
>>
>> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
>> ---
>>  fs/fs.c      | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>  include/fs.h | 10 ++++++++++
>>  2 files changed, 55 insertions(+)
>>

We need to get a proper fs test in place before we add any more stuff.

Does someone waent to try converting fs-test.sh to pytest in test/py/tests ?

Regards,
Simon

^ permalink raw reply

* [U-Boot] [PATCH 5/6] configs: stm32mp15: enable ADC
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532349355-32671-5-git-send-email-fabrice.gasnier@st.com>

On 23 July 2018 at 06:35, Fabrice Gasnier <fabrice.gasnier@st.com> wrote:
> Enable ADC on stm32mp15.
> - CONFIG_CMD_ADC
> - CONFIG_STM32_ADC
>
> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
> ---
>
>  configs/stm32mp15_basic_defconfig | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [PATCH 4/6] adc: Add driver for STM32 ADC
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532349355-32671-4-git-send-email-fabrice.gasnier@st.com>

Hi Fabrice,

On 23 July 2018 at 06:35, Fabrice Gasnier <fabrice.gasnier@st.com> wrote:
> This patch adds support for STMicroelectronics STM32 ADC (analog to
> digital converter). It's originally based on Linux kernel v4.18-rcs
> drivers/iio/adc/stm32-adc*. It's composed of:
> - core driver (UCLASS_SIMPLE_BUS) manages common resources (clk, regu).
> - child drivers (UCLASS_ADC) declare each ADC, channels and handle
>   conversions.
> This driver currently supports STM32H7 and STM32MP1 ADC.
>
> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
> ---
>
>  drivers/adc/Kconfig          |  16 +++
>  drivers/adc/Makefile         |   1 +
>  drivers/adc/stm32-adc-core.c | 209 +++++++++++++++++++++++++++++++++++
>  drivers/adc/stm32-adc-core.h |  51 +++++++++
>  drivers/adc/stm32-adc.c      | 257 +++++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 534 insertions(+)
>  create mode 100644 drivers/adc/stm32-adc-core.c
>  create mode 100644 drivers/adc/stm32-adc-core.h
>  create mode 100644 drivers/adc/stm32-adc.c

Reviewed-by: Simon Glass <sjg@chromium.org>

I do worry a bit about the code bloat caused by the dev_err() calls.
Don't you want to use debug() instead? Or perhaps log() and
log_msg_ret()?

Regards,
Simon

^ permalink raw reply

* [U-Boot] [PATCH 3/6] dt-bindings: Document STM32 ADC DT bindings
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532349355-32671-3-git-send-email-fabrice.gasnier@st.com>

On 23 July 2018 at 06:35, Fabrice Gasnier <fabrice.gasnier@st.com> wrote:
> This patch adds documentation of device tree bindings for the STM32 ADC.
> It's based on linux-v4.18-rc* dt-bindings, at the time of writing:
> - Documentation/devicetree/bindings/iio/adc/st,stm32-adc.txt
>
> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
> ---
>
>  doc/device-tree-bindings/adc/st,stm32-adc.txt | 141 ++++++++++++++++++++++++++
>  1 file changed, 141 insertions(+)
>  create mode 100644 doc/device-tree-bindings/adc/st,stm32-adc.txt

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply

* [U-Boot] [PATCH 2/6] dm: adc: uclass: get reference regulator once
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532349355-32671-2-git-send-email-fabrice.gasnier@st.com>

Hi Fabrice,

On 23 July 2018 at 06:35, Fabrice Gasnier <fabrice.gasnier@st.com> wrote:
> device_get_supply_regulator() only needs to be called once.
> But each time there's call to adc_vxx_value() for instance, it calls
> adc_vxx_platdata_update() -> device_get_supply_regulator().
>
> This also allows vdd_supply/vss_supply to be provided directly from
> uc_pdata, e.g dt-binding variant like stm32-adc provide its own
> 'vref-supply'.
>
> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
> ---
>
>  drivers/adc/adc-uclass.c | 21 +++++++++++++--------
>  1 file changed, 13 insertions(+), 8 deletions(-)

The original code doesn't look right to me.

Reading from the DT should happen in the ofdata_to_platdata() method,
except (as here) where we need to probe another device, iwc we can use
the probe() method.

So can you move this code into a new probe() method, so it just
happens once, when the device is probed?

>
> diff --git a/drivers/adc/adc-uclass.c b/drivers/adc/adc-uclass.c
> index 17c1a4e..70f4cde 100644
> --- a/drivers/adc/adc-uclass.c
> +++ b/drivers/adc/adc-uclass.c
> @@ -264,10 +264,13 @@ static int adc_vdd_platdata_update(struct udevice *dev)
>          * will bind before its supply regulator device, then the below 'get'
>          * will return an error.
>          */
> -       ret = device_get_supply_regulator(dev, "vdd-supply",
> -                                         &uc_pdata->vdd_supply);
> -       if (ret)
> -               return ret;
> +       if (!uc_pdata->vdd_supply) {
> +               /* Only get vdd_supply once */
> +               ret = device_get_supply_regulator(dev, "vdd-supply",
> +                                                 &uc_pdata->vdd_supply);
> +               if (ret)
> +                       return ret;
> +       }
>
>         ret = regulator_get_value(uc_pdata->vdd_supply);
>         if (ret < 0)
> @@ -283,10 +286,12 @@ static int adc_vss_platdata_update(struct udevice *dev)
>         struct adc_uclass_platdata *uc_pdata = dev_get_uclass_platdata(dev);
>         int ret;
>
> -       ret = device_get_supply_regulator(dev, "vss-supply",
> -                                         &uc_pdata->vss_supply);
> -       if (ret)
> -               return ret;
> +       if (!uc_pdata->vss_supply) {
> +               ret = device_get_supply_regulator(dev, "vss-supply",
> +                                                 &uc_pdata->vss_supply);
> +               if (ret)
> +                       return ret;
> +       }
>
>         ret = regulator_get_value(uc_pdata->vss_supply);
>         if (ret < 0)
> --
> 1.9.1
>

Regards,
Simon

^ permalink raw reply

* [U-Boot] [PATCH 1/6] clk: add clk_valid()
From: Simon Glass @ 2018-07-23 23:48 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532349355-32671-1-git-send-email-fabrice.gasnier@st.com>

Hi Fabrice,

On 23 July 2018 at 06:35, Fabrice Gasnier <fabrice.gasnier@st.com> wrote:
>
> add clk_valid() to check for optional clocks are valid.
>
> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
> ---
>
>  include/clk.h | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/include/clk.h b/include/clk.h
> index 9a35764..71679a9 100644
> --- a/include/clk.h
> +++ b/include/clk.h
> @@ -294,4 +294,14 @@ int clk_disable_bulk(struct clk_bulk *bulk);
>
>  int soc_clk_dump(void);
>
> +/**
> + * clk_valid() - check if clk is valid
> + *
> + * @clk:       the clock to check
> + * @return TRUE if valid, or FALSE

true / false

> + */
> +static inline bool clk_valid(struct clk *clk)
> +{
> +       return !!clk->dev;
> +}
>  #endif
> --
> 1.9.1
>

Please can you add a call to this from test/dm/clk.c ?

Regards,
Simon

^ permalink raw reply

* [U-Boot] [PATCH v2 5/5] sandbox: led: use new function to configure default state
From: Simon Glass @ 2018-07-23 23:47 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <1532338891-6848-6-git-send-email-patrick.delaunay@st.com>

Hi Patrick,

On 23 July 2018 at 03:41, Patrick Delaunay <patrick.delaunay@st.com> wrote:
> Initialize the led with the default state defined in device tree
> in board_init and solve issue with test for led default state.
>
> Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
> ---
> Led default-state is correctly handle in Sandbox, tested with:
>   ./u-boot -d ./arch/sandbox/dts/test.dtb
>   => led list
>   sandbox:red     <inactive>
>   sandbox:green   <inactive>
>   sandbox:default_on on
>   sandbox:default_off off
>
> This patch solve "make tests" issue introduced by
> http://patchwork.ozlabs.org/patch/943651/
>
> Changes in v2:
>   - add sandbox impact and test update
>
>  board/sandbox/sandbox.c | 9 +++++++++
>  common/board_r.c        | 3 ++-
>  test/dm/led.c           | 3 +++
>  3 files changed, 14 insertions(+), 1 deletion(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

Please see below.

>
> diff --git a/board/sandbox/sandbox.c b/board/sandbox/sandbox.c
> index 195f620..66b5f24 100644
> --- a/board/sandbox/sandbox.c
> +++ b/board/sandbox/sandbox.c
> @@ -6,6 +6,7 @@
>  #include <common.h>
>  #include <cros_ec.h>
>  #include <dm.h>
> +#include <led.h>
>  #include <os.h>
>  #include <asm/test.h>
>  #include <asm/u-boot-sandbox.h>
> @@ -47,6 +48,14 @@ int dram_init(void)
>         return 0;
>  }
>
> +int board_init(void)
> +{
> +#ifdef CONFIG_LED
> +       led_default_state();

if (IS_ENABLED(CONFIG_LED))
   led_default_state();

> +#endif /* CONFIG_LED */

blank line here

> +       return 0;
> +}
> +
>  #ifdef CONFIG_BOARD_LATE_INIT
>  int board_late_init(void)
>  {
> diff --git a/common/board_r.c b/common/board_r.c
> index 64f2574..9402c0e 100644
> --- a/common/board_r.c
> +++ b/common/board_r.c
> @@ -690,7 +690,8 @@ static init_fnc_t init_sequence_r[] = {
>  #ifdef CONFIG_DM
>         initr_dm,
>  #endif
> -#if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV)
> +#if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \
> +       defined(CONFIG_SANDBOX)
>         board_init,     /* Setup chipselects */
>  #endif
>         /*
> diff --git a/test/dm/led.c b/test/dm/led.c
> index 0071f21..00de7b3 100644
> --- a/test/dm/led.c
> +++ b/test/dm/led.c
> @@ -32,6 +32,9 @@ static int dm_test_led_default_state(struct unit_test_state *uts)
>  {
>         struct udevice *dev;
>
> +       /* configure the default state (auto-probe) */
> +       led_default_state();
> +
>         /* Check that we handle the default-state property correctly. */
>         ut_assertok(led_get_by_label("sandbox:default_on", &dev));
>         ut_asserteq(LEDST_ON, led_get_state(dev));
> --
> 2.7.4
>

^ permalink raw reply


This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.