diff mbox

[v4,03/19] arm64: asm-offsets: Remove potential circular dependency

Message ID 20180104184334.16571-4-marc.zyngier@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Marc Zyngier Jan. 4, 2018, 6:43 p.m. UTC
So far, we've been lucky enough that none of the include files
that asm-offsets.c requires include asm-offsets.h. This is
about to change, and would introduce a nasty circular dependency...

Let's now guard the inclusion of asm-offsets.h so that it never
gets pulled from asm-offsets.c. The same issue exists between
bounce.c and include/generated/bounds.h, and is worked around
by using the existing guard symbol.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm64/include/asm/asm-offsets.h | 2 ++
 arch/arm64/kernel/asm-offsets.c      | 2 ++
 2 files changed, 4 insertions(+)

Comments

Christoffer Dall Jan. 15, 2018, 8:34 a.m. UTC | #1
On Thu, Jan 04, 2018 at 06:43:18PM +0000, Marc Zyngier wrote:
> So far, we've been lucky enough that none of the include files
> that asm-offsets.c requires include asm-offsets.h. This is
> about to change, and would introduce a nasty circular dependency...
> 
> Let's now guard the inclusion of asm-offsets.h so that it never
> gets pulled from asm-offsets.c. The same issue exists between
> bounce.c and include/generated/bounds.h, and is worked around
> by using the existing guard symbol.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
>  arch/arm64/include/asm/asm-offsets.h | 2 ++
>  arch/arm64/kernel/asm-offsets.c      | 2 ++
>  2 files changed, 4 insertions(+)
> 
> diff --git a/arch/arm64/include/asm/asm-offsets.h b/arch/arm64/include/asm/asm-offsets.h
> index d370ee36a182..7d6531a81eb3 100644
> --- a/arch/arm64/include/asm/asm-offsets.h
> +++ b/arch/arm64/include/asm/asm-offsets.h
> @@ -1 +1,3 @@
> +#if !defined(__GENERATING_ASM_OFFSETS_H) && !defined(__GENERATING_BOUNDS_H)

I don't understand why we need to check __GENERATING_BOUNDS_H here?
What is the interaction between asm-offsets and bounds?

Thanks,
-Christoffer
Marc Zyngier Jan. 15, 2018, 8:42 a.m. UTC | #2
On 15/01/18 08:34, Christoffer Dall wrote:
> On Thu, Jan 04, 2018 at 06:43:18PM +0000, Marc Zyngier wrote:
>> So far, we've been lucky enough that none of the include files
>> that asm-offsets.c requires include asm-offsets.h. This is
>> about to change, and would introduce a nasty circular dependency...
>>
>> Let's now guard the inclusion of asm-offsets.h so that it never
>> gets pulled from asm-offsets.c. The same issue exists between
>> bounce.c and include/generated/bounds.h, and is worked around
>> by using the existing guard symbol.
>>
>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>> ---
>>  arch/arm64/include/asm/asm-offsets.h | 2 ++
>>  arch/arm64/kernel/asm-offsets.c      | 2 ++
>>  2 files changed, 4 insertions(+)
>>
>> diff --git a/arch/arm64/include/asm/asm-offsets.h b/arch/arm64/include/asm/asm-offsets.h
>> index d370ee36a182..7d6531a81eb3 100644
>> --- a/arch/arm64/include/asm/asm-offsets.h
>> +++ b/arch/arm64/include/asm/asm-offsets.h
>> @@ -1 +1,3 @@
>> +#if !defined(__GENERATING_ASM_OFFSETS_H) && !defined(__GENERATING_BOUNDS_H)
> 
> I don't understand why we need to check __GENERATING_BOUNDS_H here?
> What is the interaction between asm-offsets and bounds?

bound.c ends up including asm-offsets.h as well once you start adding
the dependency between it and alternatives.h. See the report there:

https://www.spinics.net/lists/arm-kernel/msg623723.html

which this check addresses.

Thanks,

	M.
Christoffer Dall Jan. 15, 2018, 9:46 a.m. UTC | #3
On Mon, Jan 15, 2018 at 9:42 AM, Marc Zyngier <marc.zyngier@arm.com> wrote:
> On 15/01/18 08:34, Christoffer Dall wrote:
>> On Thu, Jan 04, 2018 at 06:43:18PM +0000, Marc Zyngier wrote:
>>> So far, we've been lucky enough that none of the include files
>>> that asm-offsets.c requires include asm-offsets.h. This is
>>> about to change, and would introduce a nasty circular dependency...
>>>
>>> Let's now guard the inclusion of asm-offsets.h so that it never
>>> gets pulled from asm-offsets.c. The same issue exists between
>>> bounce.c and include/generated/bounds.h, and is worked around
>>> by using the existing guard symbol.
>>>
>>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>>> ---
>>>  arch/arm64/include/asm/asm-offsets.h | 2 ++
>>>  arch/arm64/kernel/asm-offsets.c      | 2 ++
>>>  2 files changed, 4 insertions(+)
>>>
>>> diff --git a/arch/arm64/include/asm/asm-offsets.h b/arch/arm64/include/asm/asm-offsets.h
>>> index d370ee36a182..7d6531a81eb3 100644
>>> --- a/arch/arm64/include/asm/asm-offsets.h
>>> +++ b/arch/arm64/include/asm/asm-offsets.h
>>> @@ -1 +1,3 @@
>>> +#if !defined(__GENERATING_ASM_OFFSETS_H) && !defined(__GENERATING_BOUNDS_H)
>>
>> I don't understand why we need to check __GENERATING_BOUNDS_H here?
>> What is the interaction between asm-offsets and bounds?
>
> bound.c ends up including asm-offsets.h as well once you start adding
> the dependency between it and alternatives.h. See the report there:
>
> https://www.spinics.net/lists/arm-kernel/msg623723.html
>
> which this check addresses.
>
Ah, I see.

Thanks,
-Christoffer
diff mbox

Patch

diff --git a/arch/arm64/include/asm/asm-offsets.h b/arch/arm64/include/asm/asm-offsets.h
index d370ee36a182..7d6531a81eb3 100644
--- a/arch/arm64/include/asm/asm-offsets.h
+++ b/arch/arm64/include/asm/asm-offsets.h
@@ -1 +1,3 @@ 
+#if !defined(__GENERATING_ASM_OFFSETS_H) && !defined(__GENERATING_BOUNDS_H)
 #include <generated/asm-offsets.h>
+#endif
diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c
index 742887330101..5ab8841af382 100644
--- a/arch/arm64/kernel/asm-offsets.c
+++ b/arch/arm64/kernel/asm-offsets.c
@@ -18,6 +18,8 @@ 
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#define __GENERATING_ASM_OFFSETS_H	1
+
 #include <linux/sched.h>
 #include <linux/mm.h>
 #include <linux/dma-mapping.h>