diff mbox series

xen/x86: Move microcode into its own directory

Message ID 20200318210540.5602-1-andrew.cooper3@citrix.com (mailing list archive)
State New, archived
Headers show
Series xen/x86: Move microcode into its own directory | expand

Commit Message

Andrew Cooper March 18, 2020, 9:05 p.m. UTC
Split the existing asm/microcode.h in half, keeping the per-cpu cpu_sig
available to external users, and moving everything else into private.h

Take the opportunity to trim and clean up the include lists for all 3 source
files, all of which include rather more than necessary.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wl@xen.org>
CC: Roger Pau Monné <roger.pau@citrix.com>

Inclusion of asm/flushtlb.h in isolation was broken by c/s 80943aa40e, and the
commit message even states this breakage.  I'm surprised it got accepted.

Either this needs fixing, or the 23(!) other files including asm/flushtlb.h
should be adjusted.  Personally I don't think it is reasonable to require
including xen/mm.h just to get at tlb flushing functionality, but I also can't
spot an obvious way to untangle the dependencies (hence the TODO).
---
 xen/arch/x86/Makefile                              |  4 +--
 xen/arch/x86/microcode/Makefile                    |  3 ++
 xen/arch/x86/{microcode_amd.c => microcode/amd.c}  | 12 ++++----
 xen/arch/x86/{microcode.c => microcode/core.c}     | 15 +++-------
 .../x86/{microcode_intel.c => microcode/intel.c}   |  9 ++----
 .../microcode.h => arch/x86/microcode/private.h}   | 19 ++++---------
 xen/include/asm-x86/microcode.h                    | 32 ----------------------
 7 files changed, 22 insertions(+), 72 deletions(-)
 create mode 100644 xen/arch/x86/microcode/Makefile
 rename xen/arch/x86/{microcode_amd.c => microcode/amd.c} (99%)
 rename xen/arch/x86/{microcode.c => microcode/core.c} (99%)
 rename xen/arch/x86/{microcode_intel.c => microcode/intel.c} (98%)
 copy xen/{include/asm-x86/microcode.h => arch/x86/microcode/private.h} (79%)

Comments

Andrew Cooper March 18, 2020, 9:42 p.m. UTC | #1
On 18/03/2020 21:05, Andrew Cooper wrote:
> Split the existing asm/microcode.h in half, keeping the per-cpu cpu_sig
> available to external users, and moving everything else into private.h
>
> Take the opportunity to trim and clean up the include lists for all 3 source
> files, all of which include rather more than necessary.
>
> No functional change.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Wei Liu <wl@xen.org>
> CC: Roger Pau Monné <roger.pau@citrix.com>
>
> Inclusion of asm/flushtlb.h in isolation was broken by c/s 80943aa40e, and the
> commit message even states this breakage.  I'm surprised it got accepted.
>
> Either this needs fixing, or the 23(!) other files including asm/flushtlb.h
> should be adjusted.  Personally I don't think it is reasonable to require
> including xen/mm.h just to get at tlb flushing functionality, but I also can't
> spot an obvious way to untangle the dependencies (hence the TODO).

Actually, I've found that microcode_free_patch() has no external callers.

I've folded the following delta in, to avoid moving a useless function
declaration

diff --git a/xen/arch/x86/microcode/core.c b/xen/arch/x86/microcode/core.c
index e99f4ab06c..19e1d4b221 100644
--- a/xen/arch/x86/microcode/core.c
+++ b/xen/arch/x86/microcode/core.c
@@ -243,7 +243,7 @@ static struct microcode_patch *parse_blob(const char
*buf, size_t len)
     return NULL;
 }
 
-void microcode_free_patch(struct microcode_patch *microcode_patch)
+static void microcode_free_patch(struct microcode_patch *microcode_patch)
 {
     microcode_ops->free_patch(microcode_patch->mc);
     xfree(microcode_patch);
diff --git a/xen/arch/x86/microcode/private.h
b/xen/arch/x86/microcode/private.h
index 97c7405dad..2e3be79eaf 100644
--- a/xen/arch/x86/microcode/private.h
+++ b/xen/arch/x86/microcode/private.h
@@ -34,6 +34,4 @@ struct microcode_ops {
 
 extern const struct microcode_ops *microcode_ops;
 
-void microcode_free_patch(struct microcode_patch *patch);
-
 #endif /* ASM_X86_MICROCODE_PRIVATE_H */


Alternatively, I might consider pulling this and the similar change to
early_microcode_update_cpu() into an earlier patch, to separate the
static-ing of functions from the general moving of code/declarations.

Thoughts?

~Andrew
Jan Beulich March 19, 2020, 9:21 a.m. UTC | #2
On 18.03.2020 22:05, Andrew Cooper wrote:
> Split the existing asm/microcode.h in half, keeping the per-cpu cpu_sig
> available to external users, and moving everything else into private.h
> 
> Take the opportunity to trim and clean up the include lists for all 3 source
> files, all of which include rather more than necessary.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>
albeit preferably with ...

> ---
>  xen/arch/x86/Makefile                              |  4 +--
>  xen/arch/x86/microcode/Makefile                    |  3 ++
>  xen/arch/x86/{microcode_amd.c => microcode/amd.c}  | 12 ++++----
>  xen/arch/x86/{microcode.c => microcode/core.c}     | 15 +++-------
>  .../x86/{microcode_intel.c => microcode/intel.c}   |  9 ++----
>  .../microcode.h => arch/x86/microcode/private.h}   | 19 ++++---------

... these going into xen/arch/x86/cpu/microcode/. Thoughts?

Jan
Jan Beulich March 19, 2020, 9:21 a.m. UTC | #3
On 18.03.2020 22:42, Andrew Cooper wrote:
> On 18/03/2020 21:05, Andrew Cooper wrote:
>> Split the existing asm/microcode.h in half, keeping the per-cpu cpu_sig
>> available to external users, and moving everything else into private.h
>>
>> Take the opportunity to trim and clean up the include lists for all 3 source
>> files, all of which include rather more than necessary.
>>
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Wei Liu <wl@xen.org>
>> CC: Roger Pau Monné <roger.pau@citrix.com>
>>
>> Inclusion of asm/flushtlb.h in isolation was broken by c/s 80943aa40e, and the
>> commit message even states this breakage.  I'm surprised it got accepted.
>>
>> Either this needs fixing, or the 23(!) other files including asm/flushtlb.h
>> should be adjusted.  Personally I don't think it is reasonable to require
>> including xen/mm.h just to get at tlb flushing functionality, but I also can't
>> spot an obvious way to untangle the dependencies (hence the TODO).
> 
> Actually, I've found that microcode_free_patch() has no external callers.
> 
> I've folded the following delta in, to avoid moving a useless function
> declaration
> 
> diff --git a/xen/arch/x86/microcode/core.c b/xen/arch/x86/microcode/core.c
> index e99f4ab06c..19e1d4b221 100644
> --- a/xen/arch/x86/microcode/core.c
> +++ b/xen/arch/x86/microcode/core.c
> @@ -243,7 +243,7 @@ static struct microcode_patch *parse_blob(const char
> *buf, size_t len)
>      return NULL;
>  }
>  
> -void microcode_free_patch(struct microcode_patch *microcode_patch)
> +static void microcode_free_patch(struct microcode_patch *microcode_patch)
>  {
>      microcode_ops->free_patch(microcode_patch->mc);
>      xfree(microcode_patch);
> diff --git a/xen/arch/x86/microcode/private.h
> b/xen/arch/x86/microcode/private.h
> index 97c7405dad..2e3be79eaf 100644
> --- a/xen/arch/x86/microcode/private.h
> +++ b/xen/arch/x86/microcode/private.h
> @@ -34,6 +34,4 @@ struct microcode_ops {
>  
>  extern const struct microcode_ops *microcode_ops;
>  
> -void microcode_free_patch(struct microcode_patch *patch);
> -
>  #endif /* ASM_X86_MICROCODE_PRIVATE_H */
> 
> 
> Alternatively, I might consider pulling this and the similar change to
> early_microcode_update_cpu() into an earlier patch, to separate the
> static-ing of functions from the general moving of code/declarations.
> 
> Thoughts?

Either way is fine by me, and can have my ack right away.

Jan
Andrew Cooper March 19, 2020, 9:52 a.m. UTC | #4
On 19/03/2020 09:21, Jan Beulich wrote:
> On 18.03.2020 22:05, Andrew Cooper wrote:
>> Split the existing asm/microcode.h in half, keeping the per-cpu cpu_sig
>> available to external users, and moving everything else into private.h
>>
>> Take the opportunity to trim and clean up the include lists for all 3 source
>> files, all of which include rather more than necessary.
>>
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>
> albeit preferably with ...
>
>> ---
>>  xen/arch/x86/Makefile                              |  4 +--
>>  xen/arch/x86/microcode/Makefile                    |  3 ++
>>  xen/arch/x86/{microcode_amd.c => microcode/amd.c}  | 12 ++++----
>>  xen/arch/x86/{microcode.c => microcode/core.c}     | 15 +++-------
>>  .../x86/{microcode_intel.c => microcode/intel.c}   |  9 ++----
>>  .../microcode.h => arch/x86/microcode/private.h}   | 19 ++++---------
> ... these going into xen/arch/x86/cpu/microcode/. Thoughts?

TBH, I've always found the cpu/ directory redundant.  Everything in
arch/x86 is part of the CPU, and these days, even drivers/passthrough is
part of the CPU.

I'm happy to put it wherever makes sense, so long as there is a clear
understanding of why.

~Andrew
Jan Beulich March 19, 2020, 9:59 a.m. UTC | #5
On 19.03.2020 10:52, Andrew Cooper wrote:
> On 19/03/2020 09:21, Jan Beulich wrote:
>> On 18.03.2020 22:05, Andrew Cooper wrote:
>>> Split the existing asm/microcode.h in half, keeping the per-cpu cpu_sig
>>> available to external users, and moving everything else into private.h
>>>
>>> Take the opportunity to trim and clean up the include lists for all 3 source
>>> files, all of which include rather more than necessary.
>>>
>>> No functional change.
>>>
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> Acked-by: Jan Beulich <jbeulich@suse.com>
>> albeit preferably with ...
>>
>>> ---
>>>  xen/arch/x86/Makefile                              |  4 +--
>>>  xen/arch/x86/microcode/Makefile                    |  3 ++
>>>  xen/arch/x86/{microcode_amd.c => microcode/amd.c}  | 12 ++++----
>>>  xen/arch/x86/{microcode.c => microcode/core.c}     | 15 +++-------
>>>  .../x86/{microcode_intel.c => microcode/intel.c}   |  9 ++----
>>>  .../microcode.h => arch/x86/microcode/private.h}   | 19 ++++---------
>> ... these going into xen/arch/x86/cpu/microcode/. Thoughts?
> 
> TBH, I've always found the cpu/ directory redundant.  Everything in
> arch/x86 is part of the CPU, and these days, even drivers/passthrough is
> part of the CPU.

I'm surprised of you saying so - certainly e.g. memory management
stuff also interfaces with the CPU, but is imo still helpful to be
separated. Likewise while IOMMU stuff may today be part of the
CPU package, it's still not core CPU functionality imo.

> I'm happy to put it wherever makes sense, so long as there is a clear
> understanding of why.

The boundaries are always going to be fuzzy, I think. As said, I'd
prefer the alternative place, but I'm not going to insist.

Jan
Andrew Cooper March 19, 2020, 10:41 a.m. UTC | #6
On 19/03/2020 09:59, Jan Beulich wrote:
> On 19.03.2020 10:52, Andrew Cooper wrote:
>> On 19/03/2020 09:21, Jan Beulich wrote:
>>> On 18.03.2020 22:05, Andrew Cooper wrote:
>>>> Split the existing asm/microcode.h in half, keeping the per-cpu cpu_sig
>>>> available to external users, and moving everything else into private.h
>>>>
>>>> Take the opportunity to trim and clean up the include lists for all 3 source
>>>> files, all of which include rather more than necessary.
>>>>
>>>> No functional change.
>>>>
>>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> Acked-by: Jan Beulich <jbeulich@suse.com>
>>> albeit preferably with ...
>>>
>>>> ---
>>>>  xen/arch/x86/Makefile                              |  4 +--
>>>>  xen/arch/x86/microcode/Makefile                    |  3 ++
>>>>  xen/arch/x86/{microcode_amd.c => microcode/amd.c}  | 12 ++++----
>>>>  xen/arch/x86/{microcode.c => microcode/core.c}     | 15 +++-------
>>>>  .../x86/{microcode_intel.c => microcode/intel.c}   |  9 ++----
>>>>  .../microcode.h => arch/x86/microcode/private.h}   | 19 ++++---------
>>> ... these going into xen/arch/x86/cpu/microcode/. Thoughts?
>> TBH, I've always found the cpu/ directory redundant.  Everything in
>> arch/x86 is part of the CPU, and these days, even drivers/passthrough is
>> part of the CPU.
> I'm surprised of you saying so - certainly e.g. memory management
> stuff also interfaces with the CPU, but is imo still helpful to be
> separated.

I can see an argument for things like domain.c not living in cpu/, but
where do we draw the line?

Should traps.c be considered cpu/ or not?  What about FPU handling?

> Likewise while IOMMU stuff may today be part of the
> CPU package, it's still not core CPU functionality imo.

Sure, for small systems, but considering it is effectively mandatory for
a >255 cpu system, I'd no longer agree.

After all, we know its not safe running an Intel system until you've
turned on every thread's CR4.MCE, even if you don't actually want to use
the thread.

>
>> I'm happy to put it wherever makes sense, so long as there is a clear
>> understanding of why.
> The boundaries are always going to be fuzzy, I think. As said, I'd
> prefer the alternative place, but I'm not going to insist.

All I'm looking for is some kind of clarity on what this boundary might be.

~Andrew
Jan Beulich March 19, 2020, 11:16 a.m. UTC | #7
On 19.03.2020 11:41, Andrew Cooper wrote:
> On 19/03/2020 09:59, Jan Beulich wrote:
>> On 19.03.2020 10:52, Andrew Cooper wrote:
>>> On 19/03/2020 09:21, Jan Beulich wrote:
>>>> On 18.03.2020 22:05, Andrew Cooper wrote:
>>>>> Split the existing asm/microcode.h in half, keeping the per-cpu cpu_sig
>>>>> available to external users, and moving everything else into private.h
>>>>>
>>>>> Take the opportunity to trim and clean up the include lists for all 3 source
>>>>> files, all of which include rather more than necessary.
>>>>>
>>>>> No functional change.
>>>>>
>>>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>>> Acked-by: Jan Beulich <jbeulich@suse.com>
>>>> albeit preferably with ...
>>>>
>>>>> ---
>>>>>  xen/arch/x86/Makefile                              |  4 +--
>>>>>  xen/arch/x86/microcode/Makefile                    |  3 ++
>>>>>  xen/arch/x86/{microcode_amd.c => microcode/amd.c}  | 12 ++++----
>>>>>  xen/arch/x86/{microcode.c => microcode/core.c}     | 15 +++-------
>>>>>  .../x86/{microcode_intel.c => microcode/intel.c}   |  9 ++----
>>>>>  .../microcode.h => arch/x86/microcode/private.h}   | 19 ++++---------
>>>> ... these going into xen/arch/x86/cpu/microcode/. Thoughts?
>>> TBH, I've always found the cpu/ directory redundant.  Everything in
>>> arch/x86 is part of the CPU, and these days, even drivers/passthrough is
>>> part of the CPU.
>> I'm surprised of you saying so - certainly e.g. memory management
>> stuff also interfaces with the CPU, but is imo still helpful to be
>> separated.
> 
> I can see an argument for things like domain.c not living in cpu/, but
> where do we draw the line?
> 
> Should traps.c be considered cpu/ or not?

Perhaps partly here and there.

>  What about FPU handling?

Yes, this would belong under cpu/ imo.

>> Likewise while IOMMU stuff may today be part of the
>> CPU package, it's still not core CPU functionality imo.
> 
> Sure, for small systems, but considering it is effectively mandatory for
> a >255 cpu system, I'd no longer agree.

That still doesn't make the IOMMU part of the core CPU. Nor
is it technically impossible to run >255 CPU systems without
IOMMU, it's just not very efficient interrupt distribution
wise.

> After all, we know its not safe running an Intel system until you've
> turned on every thread's CR4.MCE, even if you don't actually want to use
> the thread.

Well, CR4.MCE and in fact all MCA handling is CPU stuff,
and hence imo validly lives under cpu/mcheck/.

Jan
diff mbox series

Patch

diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index ed709e2373..fa87520c66 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -43,9 +43,7 @@  obj-$(CONFIG_INDIRECT_THUNK) += indirect-thunk.o
 obj-y += ioport_emulate.o
 obj-y += irq.o
 obj-$(CONFIG_KEXEC) += machine_kexec.o
-obj-y += microcode_amd.o
-obj-y += microcode_intel.o
-obj-y += microcode.o
+obj-y += microcode/
 obj-y += mm.o x86_64/mm.o
 obj-$(CONFIG_HVM) += monitor.o
 obj-y += mpparse.o
diff --git a/xen/arch/x86/microcode/Makefile b/xen/arch/x86/microcode/Makefile
new file mode 100644
index 0000000000..aae235245b
--- /dev/null
+++ b/xen/arch/x86/microcode/Makefile
@@ -0,0 +1,3 @@ 
+obj-y += amd.o
+obj-y += core.o
+obj-y += intel.o
diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode/amd.c
similarity index 99%
rename from xen/arch/x86/microcode_amd.c
rename to xen/arch/x86/microcode/amd.c
index bc7459416c..9028889813 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode/amd.c
@@ -16,16 +16,14 @@ 
 
 #include <xen/err.h>
 #include <xen/init.h>
-#include <xen/kernel.h>
-#include <xen/lib.h>
-#include <xen/sched.h>
-#include <xen/smp.h>
-#include <xen/spinlock.h>
+#include <xen/mm.h> /* TODO: Fix asm/tlbflush.h breakage */
 
+#include <asm/hvm/svm/svm.h>
 #include <asm/msr.h>
 #include <asm/processor.h>
-#include <asm/microcode.h>
-#include <asm/hvm/svm/svm.h>
+#include <asm/system.h>
+
+#include "private.h"
 
 #define pr_debug(x...) ((void)0)
 
diff --git a/xen/arch/x86/microcode.c b/xen/arch/x86/microcode/core.c
similarity index 99%
rename from xen/arch/x86/microcode.c
rename to xen/arch/x86/microcode/core.c
index 6907b312cf..e99f4ab06c 100644
--- a/xen/arch/x86/microcode.c
+++ b/xen/arch/x86/microcode/core.c
@@ -22,29 +22,22 @@ 
  */
 
 #include <xen/cpu.h>
+#include <xen/earlycpio.h>
 #include <xen/err.h>
+#include <xen/guest_access.h>
 #include <xen/init.h>
-#include <xen/kernel.h>
-#include <xen/lib.h>
-#include <xen/notifier.h>
 #include <xen/param.h>
-#include <xen/sched.h>
-#include <xen/smp.h>
-#include <xen/softirq.h>
 #include <xen/spinlock.h>
 #include <xen/stop_machine.h>
-#include <xen/tasklet.h>
-#include <xen/guest_access.h>
-#include <xen/earlycpio.h>
 #include <xen/watchdog.h>
 
 #include <asm/apic.h>
 #include <asm/delay.h>
-#include <asm/msr.h>
 #include <asm/nmi.h>
 #include <asm/processor.h>
 #include <asm/setup.h>
-#include <asm/microcode.h>
+
+#include "private.h"
 
 /*
  * Before performing a late microcode update on any thread, we
diff --git a/xen/arch/x86/microcode_intel.c b/xen/arch/x86/microcode/intel.c
similarity index 98%
rename from xen/arch/x86/microcode_intel.c
rename to xen/arch/x86/microcode/intel.c
index 91b7d473f7..90fb006c94 100644
--- a/xen/arch/x86/microcode_intel.c
+++ b/xen/arch/x86/microcode/intel.c
@@ -23,15 +23,12 @@ 
 
 #include <xen/err.h>
 #include <xen/init.h>
-#include <xen/kernel.h>
-#include <xen/lib.h>
-#include <xen/sched.h>
-#include <xen/smp.h>
-#include <xen/spinlock.h>
 
 #include <asm/msr.h>
 #include <asm/processor.h>
-#include <asm/microcode.h>
+#include <asm/system.h>
+
+#include "private.h"
 
 #define pr_debug(x...) ((void)0)
 
diff --git a/xen/include/asm-x86/microcode.h b/xen/arch/x86/microcode/private.h
similarity index 79%
copy from xen/include/asm-x86/microcode.h
copy to xen/arch/x86/microcode/private.h
index 7d5a1f8e8a..97c7405dad 100644
--- a/xen/include/asm-x86/microcode.h
+++ b/xen/arch/x86/microcode/private.h
@@ -1,7 +1,9 @@ 
-#ifndef ASM_X86__MICROCODE_H
-#define ASM_X86__MICROCODE_H
+#ifndef ASM_X86_MICROCODE_PRIVATE_H
+#define ASM_X86_MICROCODE_PRIVATE_H
 
-#include <xen/percpu.h>
+#include <xen/types.h>
+
+#include <asm/microcode.h>
 
 enum microcode_match_result {
     OLD_UCODE, /* signature matched, but revision id is older or equal */
@@ -9,8 +11,6 @@  enum microcode_match_result {
     MIS_UCODE, /* signature mismatched */
 };
 
-struct cpu_signature;
-
 struct microcode_patch {
     union {
         struct microcode_intel *mc_intel;
@@ -32,15 +32,8 @@  struct microcode_ops {
         const struct microcode_patch *new, const struct microcode_patch *old);
 };
 
-struct cpu_signature {
-    unsigned int sig;
-    unsigned int pf;
-    unsigned int rev;
-};
-
-DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
 extern const struct microcode_ops *microcode_ops;
 
 void microcode_free_patch(struct microcode_patch *patch);
 
-#endif /* ASM_X86__MICROCODE_H */
+#endif /* ASM_X86_MICROCODE_PRIVATE_H */
diff --git a/xen/include/asm-x86/microcode.h b/xen/include/asm-x86/microcode.h
index 7d5a1f8e8a..9b6ff7db08 100644
--- a/xen/include/asm-x86/microcode.h
+++ b/xen/include/asm-x86/microcode.h
@@ -3,35 +3,6 @@ 
 
 #include <xen/percpu.h>
 
-enum microcode_match_result {
-    OLD_UCODE, /* signature matched, but revision id is older or equal */
-    NEW_UCODE, /* signature matched, but revision id is newer */
-    MIS_UCODE, /* signature mismatched */
-};
-
-struct cpu_signature;
-
-struct microcode_patch {
-    union {
-        struct microcode_intel *mc_intel;
-        struct microcode_amd *mc_amd;
-        void *mc;
-    };
-};
-
-struct microcode_ops {
-    struct microcode_patch *(*cpu_request_microcode)(const void *buf,
-                                                     size_t size);
-    int (*collect_cpu_info)(struct cpu_signature *csig);
-    int (*apply_microcode)(const struct microcode_patch *patch);
-    int (*start_update)(void);
-    void (*end_update_percpu)(void);
-    void (*free_patch)(void *mc);
-    bool (*match_cpu)(const struct microcode_patch *patch);
-    enum microcode_match_result (*compare_patch)(
-        const struct microcode_patch *new, const struct microcode_patch *old);
-};
-
 struct cpu_signature {
     unsigned int sig;
     unsigned int pf;
@@ -39,8 +10,5 @@  struct cpu_signature {
 };
 
 DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
-extern const struct microcode_ops *microcode_ops;
-
-void microcode_free_patch(struct microcode_patch *patch);
 
 #endif /* ASM_X86__MICROCODE_H */