Thread (1 message) 1 message, 1 author, 2007-08-09

Re: [PATCH 25/25] [PATCH] add paravirtualization support for x86_64

From: Jeremy Fitzhardinge <hidden>
Date: 2007-08-09 06:53:17

Andi Kleen wrote:
quoted
+	if (opfunc == NULL)
+		/* If there's no function, patch it with a ud2a (BUG) */
+		ret = paravirt_patch_insns(site, len, start_ud2a, end_ud2a);
    
This will actually give corrupted BUGs because you don't supply
the full inline BUG header. Perhaps another trap would be better.
  
The BUG handler will still report it as a normal illegal instruction. 
It should never happen; the main thing is that it clearly points out
where the problem is (as opposed to jumping to a NULL pointer and
getting the unhelpful "oh, eip is zero" symptom).
quoted
+EXPORT_SYMBOL(paravirt_ops);
    
Definitely _GPL at least.
  
No, for the same reason as i386.
quoted
+extern struct paravirt_ops paravirt_ops;
    
Should be native_paravirt_ops I guess

  
No, because its the current set of pv_ops.  It starts all native, but it
is either completely or partially overwritten by hypervisor-specific ops.
quoted
+
+ * This generates an indirect call based on the operation type number.
    
The macros here don't
  
Yes, PARAVIRT_CALL does: "call *(paravirt_ops+%c[paravirt_typenum]*8);"

quoted
+			     : "=a"(f)
+			     : paravirt_type(save_fl),
+			       paravirt_clobber(CLBR_RAX)
+			     : "memory", "cc");
+	return f;
+}
+
+static inline void raw_local_irq_restore(unsigned long f)
+{
+	__asm__ __volatile__(paravirt_alt(PARAVIRT_CALL)
+			     :
+			     : "D" (f),
    
Have you investigated if a different input register generates better/smaller 
code? I would assume rdi to be usually used already for the caller's 
arguments so it will produce spilling

Similar for the rax return in the other functions.
  
This has to match the normal C calling convention though, doesn't it?

    J
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help