Reformat the pfn_info structure to ensure that

lock cmpxchg8b instructions occur only on naturally
aligned 8-byte memory values. This is needed for some
NUMA x86 systems.

Signed-off-by: Keir Fraser <keir@xensource.com>
Signed-off-by: Aravindh Puthiyaparambil <first.last@unisys.com>
This commit is contained in:
kaf24@firebug.cl.cam.ac.uk committed 2005-10-05 23:47:09 +01:00
1 parent c436ce043d
commit ec7c322ccd
3 files changed
+12 -9

No files matched your search

+1
View File
@@ -156,6 +156,7 @@ void subarch_init_memory(struct domain *dom_xen)
*/
if ( (offsetof(struct pfn_info, u.inuse._domain) !=
(offsetof(struct pfn_info, count_info) + sizeof(u32))) ||
((offsetof(struct pfn_info, count_info) & 7) != 0) ||
(sizeof(struct pfn_info) != 24) )
{
printk("Weird pfn_info layout (%ld,%ld,%d)\n",
+4 -2
View File
@@ -137,8 +137,10 @@ void subarch_init_memory(struct domain *dom_xen)
* count_info and domain fields must be adjacent, as we perform atomic
* 64-bit operations on them.
*/
if ( (offsetof(struct pfn_info, u.inuse._domain) !=
(offsetof(struct pfn_info, count_info) + sizeof(u32))) )
if ( ((offsetof(struct pfn_info, u.inuse._domain) !=
(offsetof(struct pfn_info, count_info) + sizeof(u32)))) ||
((offsetof(struct pfn_info, count_info) & 7) != 0) ||
(sizeof(struct pfn_info) != 40) )
{
printk("Weird pfn_info layout (%ld,%ld,%ld)\n",
offsetof(struct pfn_info, count_info),
+7 -7
View File
@@ -22,9 +22,6 @@ struct pfn_info
/* Each frame can be threaded onto a doubly-linked list. */
struct list_head list;
/* Timestamp from 'TLB clock', used to reduce need for safety flushes. */
u32 tlbflush_timestamp;
/* Reference count and various PGC_xxx flags and fields. */
u32 count_info;
@@ -37,17 +34,20 @@ struct pfn_info
u32 _domain; /* pickled format */
/* Type reference count and various PGT_xxx flags and fields. */
unsigned long type_info;
} inuse;
} __attribute__ ((packed)) inuse;
/* Page is on a free list: ((count_info & PGC_count_mask) == 0). */
struct {
/* Order-size of the free chunk this page is the head of. */
u32 order;
/* Mask of possibly-tainted TLBs. */
cpumask_t cpumask;
/* Order-size of the free chunk this page is the head of. */
u8 order;
} free;
} __attribute__ ((packed)) free;
} u;
/* Timestamp from 'TLB clock', used to reduce need for safety flushes. */
u32 tlbflush_timestamp;
};
/* The following page types are MUTUALLY EXCLUSIVE. */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.