Hi Nicolin, On 2/16/23 00:48, Nicolin Chen wrote: > Hi Eric, > > On Tue, Jan 31, 2023 at 09:53:01PM +0100, Eric Auger wrote: > >> diff --git a/include/sysemu/iommufd.h b/include/sysemu/iommufd.h >> new file mode 100644 >> index 0000000000..06a866d1bd >> --- /dev/null >> +++ b/include/sysemu/iommufd.h >> @@ -0,0 +1,47 @@ >> +#ifndef SYSEMU_IOMMUFD_H >> +#define SYSEMU_IOMMUFD_H >> + >> +#include "qom/object.h" >> +#include "qemu/thread.h" >> +#include "exec/hwaddr.h" >> +#include "exec/ram_addr.h" > After rebasing nesting patches on top of this, I see a build error: > > ==================================================================== > [47/876] Compiling C object libcommon.fa.p/hw_arm_smmu-common.c.o > FAILED: libcommon.fa.p/hw_arm_smmu-common.c.o > cc -Ilibcommon.fa.p -I../src/3rdparty/qemu/dtc/libfdt -I/usr/include/pixman-1 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -I/usr/include/gio-unix-2.0 -fdiagnostics-color=auto -Wall -Winvalid-pch -std=gnu11 -O2 -g -isystem /src/3rdparty/qemu/linux-headers -isystem linux-headers -iquote . -iquote /src/3rdparty/qemu -iquote /src/3rdparty/qemu/include -iquote /src/3rdparty/qemu/tcg/aarch64 -pthread -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fno-common -fwrapv -Wundef -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wold-style-declaration -Wold-style-definition -Wtype-limits -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wempty-body -Wnested-externs -Wendif-labels -Wexpansion-to-defined -Wimplicit-fallthrough=2 -Wmissing-format-attribute -Wno-missing-include-dirs -Wno-shift-negative-value -Wno-psabi -fstack-protector-strong -fPIE -MD -MQ libcommon.fa.p/hw_arm_smmu-common.c.o -MF libcommon.fa.p/hw_arm_smmu-common.c.o.d -o libcommon.fa.p/hw_arm_smmu-common.c.o -c ../src/3rdparty/qemu/hw/arm/smmu-common.c > In file included from /src/3rdparty/qemu/include/sysemu/iommufd.h:7, > from ../src/3rdparty/qemu/hw/arm/smmu-common.c:29: > /src/3rdparty/qemu/include/exec/ram_addr.h:23:10: fatal error: cpu.h: No such file or directory > 23 | #include "cpu.h" > | ^~~~~~~ > compilation terminated. > ==================================================================== > > I guess it's resulted from the module inter-dependency. Though our > nesting patches aren't finalized yet, the possibility of including > iommufd.h is still there. Meanwhile, the ram_addr.h here is added > for "ram_addr_t" type, I think. So, could we include "cpu-common.h" > instead, where the "ram_addr_t" type is actually defined? Sure. We will fix that on the next iteration Eric > > The build error is gone after this replacement: > ==================================================================== > diff --git a/include/sysemu/iommufd.h b/include/sysemu/iommufd.h > index 45540de63986..86d370c221b3 100644 > --- a/include/sysemu/iommufd.h > +++ b/include/sysemu/iommufd.h > @@ -4,7 +4,7 @@ > #include "qom/object.h" > #include "qemu/thread.h" > #include "exec/hwaddr.h" > -#include "exec/ram_addr.h" > +#include "exec/cpu-common.h" > #include <linux/iommufd.h> > > #define TYPE_IOMMUFD_BACKEND "iommufd" > ==================================================================== > > Thanks > Nic >