2018-07-03 07:25:47

by Niklas Cassel

[permalink] [raw]
Subject: [PATCH v3 0/6] soc: qcom: Allow COMPILE_TEST of qcom SoC Kconfigs

Since commit cab673583d96 ("soc: Unconditionally include qcom Makefile"),
we unconditionally include the soc/qcom/Makefile.

This opens up the possibility to compile test the code even when
building for other architectures.

This patch series prepares and enables all but two Kconfigs to be
compile tested even when building for other architectures.


Changes since v2:
-The qdsp6 fixes are now solved in another way, and those patches are
already applied in the ASoC-next tree.
-Dropped rpmsg fix, as it has been applied in the remoteproc-next tree.
-Added a new patch to add sizes.h for the new driver llcc-slice.
-Added COMPILE_TEST to each Kconfig instead of the menu entry,
in order to allow more complex expressions.
E.g. RPMh has depends on x && y && z || COMPILE_TEST.
This way, if COMPILE_TEST is set, it will be able to ignore multiple
dependencies. This is not be possible if we refactor out
ARCH_QCOM || COMPILE_TEST to the top menu entry.

Niklas Cassel (6):
soc: qcom: smem: Add missing include of sizes.h
soc: qcom: llcc-slice: Add missing include of sizes.h
soc: qcom: smp2p: Add select IRQ_DOMAIN
soc: qcom: smsm: Add select IRQ_DOMAIN
soc: qcom: Remove bogus depends on OF from QCOM_SMD_RPM
soc: qcom: Allow COMPILE_TEST of qcom SoC Kconfigs

drivers/soc/qcom/Kconfig | 19 +++++++++++--------
drivers/soc/qcom/llcc-slice.c | 1 +
drivers/soc/qcom/smem.c | 1 +
3 files changed, 13 insertions(+), 8 deletions(-)

--
2.17.1



2018-07-03 07:22:00

by Niklas Cassel

[permalink] [raw]
Subject: [PATCH v3 2/6] soc: qcom: llcc-slice: Add missing include of sizes.h

Add missing include of sizes.h.

drivers/soc/qcom/llcc-slice.c: In function ‘llcc_update_act_ctrl’:
drivers/soc/qcom/llcc-slice.c:41:44: error: ‘SZ_4K’ undeclared
#define LLCC_TRP_ACT_CTRLn(n) (n * SZ_4K)
^~~~~

Signed-off-by: Niklas Cassel <[email protected]>
---
drivers/soc/qcom/llcc-slice.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/soc/qcom/llcc-slice.c b/drivers/soc/qcom/llcc-slice.c
index 54063a31132f..344dc2daf431 100644
--- a/drivers/soc/qcom/llcc-slice.c
+++ b/drivers/soc/qcom/llcc-slice.c
@@ -13,6 +13,7 @@
#include <linux/mutex.h>
#include <linux/of_device.h>
#include <linux/regmap.h>
+#include <linux/sizes.h>
#include <linux/slab.h>
#include <linux/soc/qcom/llcc-qcom.h>

--
2.17.1


2018-07-03 07:22:25

by Niklas Cassel

[permalink] [raw]
Subject: [PATCH v3 4/6] soc: qcom: smsm: Add select IRQ_DOMAIN

Since we are using irq_domain_add_linear(), add a select on IRQ_DOMAIN.
This is needed in order to be able to remove the depends on ARCH_QCOM.

drivers/soc/qcom/smsm.c: In function ‘smsm_inbound_entry’:
drivers/soc/qcom/smsm.c:411:18: error: implicit declaration of function
‘irq_domain_add_linear’
entry->domain = irq_domain_add_linear(node, 32, &smsm_irq_ops, entry);
^~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Niklas Cassel <[email protected]>
---
drivers/soc/qcom/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
index 6e063202ad0b..7da6e67c7ea1 100644
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
@@ -143,6 +143,7 @@ config QCOM_SMSM
tristate "Qualcomm Shared Memory State Machine"
depends on QCOM_SMEM
select QCOM_SMEM_STATE
+ select IRQ_DOMAIN
help
Say yes here to support the Qualcomm Shared Memory State Machine.
The state machine is represented by bits in shared memory.
--
2.17.1


2018-07-03 07:22:38

by Niklas Cassel

[permalink] [raw]
Subject: [PATCH v3 6/6] soc: qcom: Allow COMPILE_TEST of qcom SoC Kconfigs

Since commit cab673583d96 ("soc: Unconditionally include qcom Makefile"),
we unconditionally include the soc/qcom/Makefile.

This opens up the possibility to compile test the code even when building
for other architectures.

Allow COMPILE_TEST for all qcom SoC Kconfigs, except for two Kconfigs
that depend on QCOM_SCM, since that triggers lots of build errors in
qcom_scm.

Signed-off-by: Niklas Cassel <[email protected]>
---
drivers/soc/qcom/Kconfig | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
index ac657164a136..fd09b95be0ba 100644
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
@@ -33,7 +33,7 @@ config QCOM_GLINK_SSR

config QCOM_GSBI
tristate "QCOM General Serial Bus Interface"
- depends on ARCH_QCOM
+ depends on ARCH_QCOM || COMPILE_TEST
select MFD_SYSCON
help
Say y here to enable GSBI support. The GSBI provides control
@@ -42,7 +42,7 @@ config QCOM_GSBI

config QCOM_LLCC
tristate "Qualcomm Technologies, Inc. LLCC driver"
- depends on ARCH_QCOM
+ depends on ARCH_QCOM || COMPILE_TEST
help
Qualcomm Technologies, Inc. platform specific
Last Level Cache Controller(LLCC) driver. This provides interfaces
@@ -73,7 +73,8 @@ config QCOM_PM

config QCOM_QMI_HELPERS
tristate
- depends on ARCH_QCOM && NET
+ depends on ARCH_QCOM || COMPILE_TEST
+ depends on NET
help
Helper library for handling QMI encoded messages. QMI encoded
messages are used in communication between the majority of QRTR
@@ -104,7 +105,7 @@ config QCOM_RPMH

config QCOM_SMEM
tristate "Qualcomm Shared Memory Manager (SMEM)"
- depends on ARCH_QCOM
+ depends on ARCH_QCOM || COMPILE_TEST
depends on HWSPINLOCK
help
Say y here to enable support for the Qualcomm Shared Memory Manager.
@@ -113,7 +114,7 @@ config QCOM_SMEM

config QCOM_SMD_RPM
tristate "Qualcomm Resource Power Manager (RPM) over SMD"
- depends on ARCH_QCOM
+ depends on ARCH_QCOM || COMPILE_TEST
depends on RPMSG
help
If you say yes to this option, support will be included for the
@@ -150,7 +151,7 @@ config QCOM_SMSM

config QCOM_WCNSS_CTRL
tristate "Qualcomm WCNSS control driver"
- depends on ARCH_QCOM
+ depends on ARCH_QCOM || COMPILE_TEST
depends on RPMSG
help
Client driver for the WCNSS_CTRL SMD channel, used to download nv
@@ -158,7 +159,7 @@ config QCOM_WCNSS_CTRL

config QCOM_APR
tristate "Qualcomm APR Bus (Asynchronous Packet Router)"
- depends on ARCH_QCOM
+ depends on ARCH_QCOM || COMPILE_TEST
depends on RPMSG
help
Enable APR IPC protocol support between
--
2.17.1


2018-07-03 07:24:16

by Niklas Cassel

[permalink] [raw]
Subject: [PATCH v3 5/6] soc: qcom: Remove bogus depends on OF from QCOM_SMD_RPM

QCOM_SMD_RPM builds perfectly fine without CONFIG_OF set.
Remove the bogus depends of OF.

Signed-off-by: Niklas Cassel <[email protected]>
---
drivers/soc/qcom/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
index 7da6e67c7ea1..ac657164a136 100644
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
@@ -114,7 +114,7 @@ config QCOM_SMEM
config QCOM_SMD_RPM
tristate "Qualcomm Resource Power Manager (RPM) over SMD"
depends on ARCH_QCOM
- depends on RPMSG && OF
+ depends on RPMSG
help
If you say yes to this option, support will be included for the
Resource Power Manager system found in the Qualcomm 8974 based
--
2.17.1


2018-07-03 07:24:45

by Niklas Cassel

[permalink] [raw]
Subject: [PATCH v3 3/6] soc: qcom: smp2p: Add select IRQ_DOMAIN

Since we are using irq_domain_add_linear(), add a select on IRQ_DOMAIN.
This is needed in order to be able to remove the depends on ARCH_QCOM.

drivers/soc/qcom/smp2p.c: In function ‘qcom_smp2p_inbound_entry’:
drivers/soc/qcom/smp2p.c:317:18: error: implicit declaration of function
‘irq_domain_add_linear’
entry->domain = irq_domain_add_linear(node, 32, &smp2p_irq_ops, entry);
^~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Niklas Cassel <[email protected]>
---
drivers/soc/qcom/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
index ba79b609aca2..6e063202ad0b 100644
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
@@ -134,6 +134,7 @@ config QCOM_SMP2P
depends on MAILBOX
depends on QCOM_SMEM
select QCOM_SMEM_STATE
+ select IRQ_DOMAIN
help
Say yes here to support the Qualcomm Shared Memory Point to Point
protocol.
--
2.17.1


2018-07-03 07:26:04

by Niklas Cassel

[permalink] [raw]
Subject: [PATCH v3 1/6] soc: qcom: smem: Add missing include of sizes.h

Add missing include of sizes.h.

drivers/soc/qcom/smem.c: In function ‘qcom_smem_get_ptable’:
drivers/soc/qcom/smem.c:666:64: error: ‘SZ_4K’ undeclared
ptable = smem->regions[0].virt_base + smem->regions[0].size - SZ_4K;
^~~~~

Signed-off-by: Niklas Cassel <[email protected]>
---
drivers/soc/qcom/smem.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/soc/qcom/smem.c b/drivers/soc/qcom/smem.c
index bf4bd71ab53f..b77573eed596 100644
--- a/drivers/soc/qcom/smem.c
+++ b/drivers/soc/qcom/smem.c
@@ -18,6 +18,7 @@
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
+#include <linux/sizes.h>
#include <linux/slab.h>
#include <linux/soc/qcom/smem.h>

--
2.17.1


2018-07-03 15:13:59

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH v3 6/6] soc: qcom: Allow COMPILE_TEST of qcom SoC Kconfigs

Hi Niklas,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on agross/for-next]
[also build test ERROR on next-20180702]
[cannot apply to v4.18-rc3]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Niklas-Cassel/soc-qcom-Allow-COMPILE_TEST-of-qcom-SoC-Kconfigs/20180703-173055
base: https://git.kernel.org/pub/scm/linux/kernel/git/agross/linux.git for-next
config: parisc-allmodconfig (attached as .config)
compiler: hppa-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.2.0 make.cross ARCH=parisc

All error/warnings (new ones prefixed by >>):

In file included from include/linux/interrupt.h:6:0,
from drivers//rpmsg/qcom_smd.c:7:
drivers//rpmsg/qcom_smd.c: In function 'qcom_smd_channel_open':
>> drivers//rpmsg/qcom_smd.c:817:36: error: 'SZ_4K' undeclared (first use in this function)
bb_size = min(channel->fifo_size, SZ_4K);
^
include/linux/kernel.h:812:40: note: in definition of macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
include/linux/kernel.h:836:24: note: in expansion of macro '__safe_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~
include/linux/kernel.h:845:19: note: in expansion of macro '__careful_cmp'
#define min(x, y) __careful_cmp(x, y, <)
^~~~~~~~~~~~~
>> drivers//rpmsg/qcom_smd.c:817:12: note: in expansion of macro 'min'
bb_size = min(channel->fifo_size, SZ_4K);
^~~
drivers//rpmsg/qcom_smd.c:817:36: note: each undeclared identifier is reported only once for each function it appears in
bb_size = min(channel->fifo_size, SZ_4K);
^
include/linux/kernel.h:812:40: note: in definition of macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
include/linux/kernel.h:836:24: note: in expansion of macro '__safe_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~
include/linux/kernel.h:845:19: note: in expansion of macro '__careful_cmp'
#define min(x, y) __careful_cmp(x, y, <)
^~~~~~~~~~~~~
>> drivers//rpmsg/qcom_smd.c:817:12: note: in expansion of macro 'min'
bb_size = min(channel->fifo_size, SZ_4K);
^~~
include/linux/kernel.h:836:2: error: first argument to '__builtin_choose_expr' not a constant
__builtin_choose_expr(__safe_cmp(x, y), \
^
include/linux/kernel.h:845:19: note: in expansion of macro '__careful_cmp'
#define min(x, y) __careful_cmp(x, y, <)
^~~~~~~~~~~~~
>> drivers//rpmsg/qcom_smd.c:817:12: note: in expansion of macro 'min'
bb_size = min(channel->fifo_size, SZ_4K);
^~~

vim +/SZ_4K +817 drivers//rpmsg/qcom_smd.c

53e2822e Bjorn Andersson 2016-09-01 803
53e2822e Bjorn Andersson 2016-09-01 804 /*
53e2822e Bjorn Andersson 2016-09-01 805 * Helper for opening a channel
53e2822e Bjorn Andersson 2016-09-01 806 */
53e2822e Bjorn Andersson 2016-09-01 807 static int qcom_smd_channel_open(struct qcom_smd_channel *channel,
53e2822e Bjorn Andersson 2016-09-01 808 rpmsg_rx_cb_t cb)
53e2822e Bjorn Andersson 2016-09-01 809 {
268105fb Bjorn Andersson 2017-12-12 810 struct qcom_smd_edge *edge = channel->edge;
53e2822e Bjorn Andersson 2016-09-01 811 size_t bb_size;
268105fb Bjorn Andersson 2017-12-12 812 int ret;
53e2822e Bjorn Andersson 2016-09-01 813
53e2822e Bjorn Andersson 2016-09-01 814 /*
53e2822e Bjorn Andersson 2016-09-01 815 * Packets are maximum 4k, but reduce if the fifo is smaller
53e2822e Bjorn Andersson 2016-09-01 816 */
53e2822e Bjorn Andersson 2016-09-01 @817 bb_size = min(channel->fifo_size, SZ_4K);
53e2822e Bjorn Andersson 2016-09-01 818 channel->bounce_buffer = kmalloc(bb_size, GFP_KERNEL);
53e2822e Bjorn Andersson 2016-09-01 819 if (!channel->bounce_buffer)
53e2822e Bjorn Andersson 2016-09-01 820 return -ENOMEM;
53e2822e Bjorn Andersson 2016-09-01 821
53e2822e Bjorn Andersson 2016-09-01 822 qcom_smd_channel_set_callback(channel, cb);
53e2822e Bjorn Andersson 2016-09-01 823 qcom_smd_channel_set_state(channel, SMD_CHANNEL_OPENING);
268105fb Bjorn Andersson 2017-12-12 824
268105fb Bjorn Andersson 2017-12-12 825 /* Wait for remote to enter opening or opened */
268105fb Bjorn Andersson 2017-12-12 826 ret = wait_event_interruptible_timeout(channel->state_change_event,
268105fb Bjorn Andersson 2017-12-12 827 channel->remote_state == SMD_CHANNEL_OPENING ||
268105fb Bjorn Andersson 2017-12-12 828 channel->remote_state == SMD_CHANNEL_OPENED,
268105fb Bjorn Andersson 2017-12-12 829 HZ);
268105fb Bjorn Andersson 2017-12-12 830 if (!ret) {
268105fb Bjorn Andersson 2017-12-12 831 dev_err(&edge->dev, "remote side did not enter opening state\n");
268105fb Bjorn Andersson 2017-12-12 832 goto out_close_timeout;
268105fb Bjorn Andersson 2017-12-12 833 }
268105fb Bjorn Andersson 2017-12-12 834
53e2822e Bjorn Andersson 2016-09-01 835 qcom_smd_channel_set_state(channel, SMD_CHANNEL_OPENED);
53e2822e Bjorn Andersson 2016-09-01 836
268105fb Bjorn Andersson 2017-12-12 837 /* Wait for remote to enter opened */
268105fb Bjorn Andersson 2017-12-12 838 ret = wait_event_interruptible_timeout(channel->state_change_event,
268105fb Bjorn Andersson 2017-12-12 839 channel->remote_state == SMD_CHANNEL_OPENED,
268105fb Bjorn Andersson 2017-12-12 840 HZ);
268105fb Bjorn Andersson 2017-12-12 841 if (!ret) {
268105fb Bjorn Andersson 2017-12-12 842 dev_err(&edge->dev, "remote side did not enter open state\n");
268105fb Bjorn Andersson 2017-12-12 843 goto out_close_timeout;
268105fb Bjorn Andersson 2017-12-12 844 }
268105fb Bjorn Andersson 2017-12-12 845
53e2822e Bjorn Andersson 2016-09-01 846 return 0;
268105fb Bjorn Andersson 2017-12-12 847
268105fb Bjorn Andersson 2017-12-12 848 out_close_timeout:
268105fb Bjorn Andersson 2017-12-12 849 qcom_smd_channel_set_state(channel, SMD_CHANNEL_CLOSED);
268105fb Bjorn Andersson 2017-12-12 850 return -ETIMEDOUT;
53e2822e Bjorn Andersson 2016-09-01 851 }
53e2822e Bjorn Andersson 2016-09-01 852

:::::: The code at line 817 was first introduced by commit
:::::: 53e2822e56c7bc67e5dc19acb1e5fbb8ebff8614 rpmsg: Introduce Qualcomm SMD backend

:::::: TO: Bjorn Andersson <[email protected]>
:::::: CC: Bjorn Andersson <[email protected]>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation


Attachments:
(No filename) (7.00 kB)
.config.gz (52.30 kB)
Download all attachments

2018-07-03 16:17:36

by Niklas Cassel

[permalink] [raw]
Subject: Re: [PATCH v3 6/6] soc: qcom: Allow COMPILE_TEST of qcom SoC Kconfigs

On Tue, Jul 03, 2018 at 11:10:53PM +0800, kbuild test robot wrote:
> Hi Niklas,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on agross/for-next]
> [also build test ERROR on next-20180702]
> [cannot apply to v4.18-rc3]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Niklas-Cassel/soc-qcom-Allow-COMPILE_TEST-of-qcom-SoC-Kconfigs/20180703-173055
> base: https://git.kernel.org/pub/scm/linux/kernel/git/agross/linux.git for-next
> config: parisc-allmodconfig (attached as .config)
> compiler: hppa-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
> reproduce:
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # save the attached .config to linux build tree
> GCC_VERSION=7.2.0 make.cross ARCH=parisc
>
> All error/warnings (new ones prefixed by >>):
>
> In file included from include/linux/interrupt.h:6:0,
> from drivers//rpmsg/qcom_smd.c:7:
> drivers//rpmsg/qcom_smd.c: In function 'qcom_smd_channel_open':
> >> drivers//rpmsg/qcom_smd.c:817:36: error: 'SZ_4K' undeclared (first use in this function)
> bb_size = min(channel->fifo_size, SZ_4K);
> ^

Hi kbuild test robot,

Thank you for your suggestion! Yet something to improve:

This is already fixed in commit
67cd0eec5b62 ("rpmsg: smd: Add missing include of sizes.h")

which is part of the latest linux-next tag.

$ git tag --contains 67cd0eec5b62
next-20180703

This tag already existed before I sent my patch series.

A suggestion is that you use the latest linux-next tag when building.

Best regards,
Niklas

2018-07-23 06:20:21

by Vivek Gautam

[permalink] [raw]
Subject: Re: [PATCH v3 0/6] soc: qcom: Allow COMPILE_TEST of qcom SoC Kconfigs

Hi Niklas,


On Tue, Jul 3, 2018 at 12:50 PM, Niklas Cassel <[email protected]> wrote:
> Since commit cab673583d96 ("soc: Unconditionally include qcom Makefile"),
> we unconditionally include the soc/qcom/Makefile.
>
> This opens up the possibility to compile test the code even when
> building for other architectures.
>
> This patch series prepares and enables all but two Kconfigs to be
> compile tested even when building for other architectures.

For the entire series.
Reviewed-by: Vivek Gautam <[email protected]>

Best regards
Vivek

>
>
> Changes since v2:
> -The qdsp6 fixes are now solved in another way, and those patches are
> already applied in the ASoC-next tree.
> -Dropped rpmsg fix, as it has been applied in the remoteproc-next tree.
> -Added a new patch to add sizes.h for the new driver llcc-slice.
> -Added COMPILE_TEST to each Kconfig instead of the menu entry,
> in order to allow more complex expressions.
> E.g. RPMh has depends on x && y && z || COMPILE_TEST.
> This way, if COMPILE_TEST is set, it will be able to ignore multiple
> dependencies. This is not be possible if we refactor out
> ARCH_QCOM || COMPILE_TEST to the top menu entry.
>
> Niklas Cassel (6):
> soc: qcom: smem: Add missing include of sizes.h
> soc: qcom: llcc-slice: Add missing include of sizes.h
> soc: qcom: smp2p: Add select IRQ_DOMAIN
> soc: qcom: smsm: Add select IRQ_DOMAIN
> soc: qcom: Remove bogus depends on OF from QCOM_SMD_RPM
> soc: qcom: Allow COMPILE_TEST of qcom SoC Kconfigs
>
> drivers/soc/qcom/Kconfig | 19 +++++++++++--------
> drivers/soc/qcom/llcc-slice.c | 1 +
> drivers/soc/qcom/smem.c | 1 +
> 3 files changed, 13 insertions(+), 8 deletions(-)
>
> --
> 2.17.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html



--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation