All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Joerg Roedel <joro@8bytes.org>, "H. Peter Anvin" <hpa@zytor.com>,
	linux-tip-commits@vger.kernel.org
Subject: Re: [tip:x86/timers] x86: Don't include asm/x86_init.h in asm/setup.h
Date: Fri, 20 Oct 2017 14:09:44 +0200	[thread overview]
Message-ID: <CAK8P3a1Eq86DNuqAhcU17JXG-s9VT=6ZSeyYrDOy6Qd_4WNcfg@mail.gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1710201347140.2908@nanos>

On Fri, Oct 20, 2017 at 1:48 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> On Fri, 20 Oct 2017, Arnd Bergmann wrote:
>> On Fri, Oct 20, 2017 at 1:11 PM, Ingo Molnar <mingo@kernel.org> wrote:
>> >>  #include <asm/iommu_table.h>
>> >> +#include <asm/x86_init.h>
>> >>
>> >>  #include "irq_remapping.h"
>> >
>> > This breaks the IA64 build:
>> >
>> >   drivers/iommu/dmar.c:44:26: fatal error: asm/x86_init.h: No such file or directory
>>
>> I've sent a fixup to add an #ifdef around it now. Alternatively, we
>> could include
>> it implicitly in asm/iommu_table.h, which would avoid the #ifdef but
>> seem a little
>> hacky.
>
> Hrm. Both solutions are ugly. Is there no other way to split stuff up in
> those headers (maybe create an extra one).

Hmm, looking at it again, I think we can get away without the explicit
include, and rely on asm/pci.h to include x86_init.h.

For some files I had build failures without the explicit include and for
others I added it for consistency. From looking at the source, this
file seems to belong in the second category. If you think that's ok,
I'll do some more build testing without the #include and send a new
version.

Another idea: add an abstraction for the init handler assignment,
see untested patch below.

      Arnd

---
diff --git a/arch/ia64/include/asm/iommu.h b/arch/ia64/include/asm/iommu.h
index 1d1212901ae7..f2ad4a39bafe 100644
--- a/arch/ia64/include/asm/iommu.h
+++ b/arch/ia64/include/asm/iommu.h
@@ -18,4 +18,8 @@ extern int iommu_detected;
 extern void iommu_dma_init(void);
 extern void machvec_init(const char *name);

+static inline void iommu_set_init_handler(int (*init_fn)(void))
+{
+}
+
 #endif
diff --git a/arch/x86/include/asm/iommu.h b/arch/x86/include/asm/iommu.h
index fca144a104e4..09cbbc6beaab 100644
--- a/arch/x86/include/asm/iommu.h
+++ b/arch/x86/include/asm/iommu.h
@@ -1,6 +1,8 @@
 #ifndef _ASM_X86_IOMMU_H
 #define _ASM_X86_IOMMU_H

+#include <asm/x86_init.h>
+
 extern const struct dma_map_ops nommu_dma_ops;
 extern int force_iommu, no_iommu;
 extern int iommu_detected;
@@ -8,6 +10,11 @@ extern int iommu_pass_through;

 int x86_dma_supported(struct device *dev, u64 mask);

+static inline void iommu_set_init_handler(int (*init_fn)(void))
+{
+       x86_init.iommu.iommu_init = init_fn;
+}
+
 /* 10 seconds */
 #define DMAR_OPERATION_TIMEOUT ((cycles_t) tsc_khz*10*1000)

diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 6fe2d0346073..f464aef16a02 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -2781,7 +2781,7 @@ int __init amd_iommu_detect(void)

        amd_iommu_detected = true;
        iommu_detected = 1;
-       x86_init.iommu.iommu_init = amd_iommu_init;
+       iomm_set_init_handler(amd_iommu_init);

        return 1;
 }
diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c
index 1ea7cd537873..b3bcbb07f789 100644
--- a/drivers/iommu/dmar.c
+++ b/drivers/iommu/dmar.c
@@ -905,10 +905,8 @@ int __init detect_intel_iommu(void)
                pci_request_acs();
        }

-#ifdef CONFIG_X86
        if (!ret)
-               x86_init.iommu.iommu_init = intel_iommu_init;
-#endif
+               iommu_set_init_handler(intel_iommu_init);

        if (dmar_tbl) {
                acpi_put_table(dmar_tbl);

  reply	other threads:[~2017-10-20 12:09 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-19 10:53 [PATCH 1/2] x86: don't include asm/x86_init.h in asm/setup.h Arnd Bergmann
2017-10-19 10:57 ` [PATCH v2 2/2] x86: convert x86_platform_ops to timespec64 Arnd Bergmann
2017-10-19 10:57   ` Arnd Bergmann
2017-10-19 11:46   ` Paolo Bonzini
2017-10-19 11:46   ` Paolo Bonzini
2017-10-19 13:46   ` [tip:x86/timers] x86: Convert " tip-bot for Arnd Bergmann
2017-10-19 13:45 ` [tip:x86/timers] x86: Don't include asm/x86_init.h in asm/setup.h tip-bot for Arnd Bergmann
2017-10-20 11:11   ` Ingo Molnar
2017-10-20 11:37     ` Arnd Bergmann
2017-10-20 11:48       ` Thomas Gleixner
2017-10-20 12:09         ` Arnd Bergmann [this message]
2017-10-20 11:41     ` Thomas Gleixner
2017-10-20 12:20       ` Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAK8P3a1Eq86DNuqAhcU17JXG-s9VT=6ZSeyYrDOy6Qd_4WNcfg@mail.gmail.com' \
    --to=arnd@arndb.de \
    --cc=hpa@zytor.com \
    --cc=joro@8bytes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.