[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XenPPC] [RFC] fix stupid grant table flags



I don't think you definition of clear_entry_flag will work, see below

On Jun 21, 2006, at 2:49 PM, Hollis Blanchard wrote:
diff -r ab08d443113d xen/include/asm-ppc/grant_table.h
--- a/xen/include/asm-ppc/grant_table.h Wed Jun 21 13:36:49 2006 -0500
+++ b/xen/include/asm-ppc/grant_table.h Wed Jun 21 13:42:23 2006 -0500
@@ -6,4 +6,6 @@
 #define mark_dirty(d, f) ((void )0)
 #include "../asm-x86/grant_table.h"

+#define clear_entry_flag(nr, flags) clear_bit((nr), (int *)(flags));

1) clear_bit takes an 'unsigned long *' so this should have cause a warning 2) bitops are designed to find the ulong array element (nr / BITS_PER_LONG) then set the bit like (1 << (nr % BITS_PER_LONG)) so that the word feels like 'C' order.

So I think the definition should be:
static inline void clear_entry_flag(unsigned long nr, volatile uint16_t *addr) {
      volatile unsigned long *laddr;
      unsigned long lnr;
  #ifdef SAFETY_DANCE
      BUG_ON((ulong)addr % sizeof (ulong));
  #endif
      lnr = (BITS_PER_LONG - (sizeof (*addr) * 8)) + nr;
      laddr = (volatile unsigned long *)addr;
      clear_bit(lnr, laddr);
  }

You could macro-tize this, but why.

-JX


_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.