All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] Use para_fill instead of vmi_get_function for APIC ops
@ 2007-02-27  0:06 Anthony Liguori
  2007-02-27  0:43 ` Zachary Amsden
  0 siblings, 1 reply; 6+ messages in thread
From: Anthony Liguori @ 2007-02-27  0:06 UTC (permalink / raw)
  To: Zachary Amsden; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 693 bytes --]

Hi Zach,

It seems to me that the APIC paravirt_ops should be filled by 
para_fill() instead of vmi_get_function().  vmi_get_function() returns a 
nop when the relocation type is NONE.  para_fill() leaves the native 
code in place.

The native version of the apic write ops is more or less *(APIC_BASE + 
reg) = value.  APIC_BASE is unknown to the ROM so it's impossible to 
simulate this in the ROM.

This means that a ROM has no choice but to do APIC emulation (or jump 
through seriously hairy loops to get the APIC mapped in it's address 
space).  Was this the intention?

N.B. attached patch is just to illustrate the point.  Has not even been 
compile tested.

Regards,

Anthony Liguori

[-- Attachment #2: vmi-apic-ops.diff --]
[-- Type: text/x-patch, Size: 552 bytes --]

--- linux-2.6.21-rc1/arch/i386/kernel/vmi.c~	2007-02-20 22:32:30.000000000 -0600
+++ linux-2.6.21-rc1/arch/i386/kernel/vmi.c	2007-02-26 17:58:18.000000000 -0600
@@ -852,9 +852,9 @@
 #endif
 
 #ifdef CONFIG_X86_LOCAL_APIC
-	paravirt_ops.apic_read = vmi_get_function(VMI_CALL_APICRead);
-	paravirt_ops.apic_write = vmi_get_function(VMI_CALL_APICWrite);
-	paravirt_ops.apic_write_atomic = vmi_get_function(VMI_CALL_APICWrite);
+	para_fill(apic_read, APICRead);
+	para_fill(apic_write, APICWrite);
+	para_fill(apic_write_atomic, APICWrite);
 #endif
 
 	/*

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-02-27 16:17 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-02-27  0:06 [RFC] Use para_fill instead of vmi_get_function for APIC ops Anthony Liguori
2007-02-27  0:43 ` Zachary Amsden
2007-02-27  0:49   ` Anthony Liguori
2007-02-27  1:00     ` Zachary Amsden
2007-02-27  1:36   ` Jeremy Fitzhardinge
2007-02-27 16:17   ` Anthony Liguori

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.