Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F149348378
D16163.id44965.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D16163.id44965.diff
View Options
Index: sys/amd64/include/counter.h
===================================================================
--- sys/amd64/include/counter.h
+++ sys/amd64/include/counter.h
@@ -83,18 +83,11 @@
static inline void
counter_u64_add(counter_u64_t c, int64_t inc)
{
- int64_t *p;
-#ifdef notyet
+
__asm __volatile("addq\t%1,%%gs:(%0)"
:
: "r" ((char *)c - (char *)&__pcpu[0]), "ri" (inc)
: "memory", "cc");
-#endif
- /* temporary */
- critical_enter();
- p = zpcpu_get(c);
- *p += inc;
- critical_exit();
}
#endif /* ! __MACHINE_COUNTER_H__ */
Index: sys/amd64/include/pcpu.h
===================================================================
--- sys/amd64/include/pcpu.h
+++ sys/amd64/include/pcpu.h
@@ -76,8 +76,7 @@
uint32_t pc_pcid_gen; \
uint32_t pc_smp_tlb_done; /* TLB op acknowledgement */ \
uint32_t pc_ibpb_set; \
- char __pad[216] /* be divisor of PAGE_SIZE \
- after cache alignment */
+ char __pad[3288] /* pad to UMA_PCPU_ALLOC_SIZE */
#define PC_DBREG_CMD_NONE 0
#define PC_DBREG_CMD_LOAD 1
Index: sys/i386/include/pcpu.h
===================================================================
--- sys/i386/include/pcpu.h
+++ sys/i386/include/pcpu.h
@@ -80,7 +80,7 @@
caddr_t pc_pmap_eh_ptep; \
uint32_t pc_smp_tlb_done; /* TLB op acknowledgement */ \
uint32_t pc_ibpb_set; \
- char __pad[538]
+ char __pad[3610]
#ifdef _KERNEL
Index: sys/sys/pcpu.h
===================================================================
--- sys/sys/pcpu.h
+++ sys/sys/pcpu.h
@@ -185,14 +185,6 @@
PCPU_MD_FIELDS;
} __aligned(CACHE_LINE_SIZE);
-#ifdef CTASSERT
-/*
- * To minimize memory waste in per-cpu UMA zones, size of struct pcpu
- * should be denominator of PAGE_SIZE.
- */
-CTASSERT((PAGE_SIZE / sizeof(struct pcpu)) * sizeof(struct pcpu) == PAGE_SIZE);
-#endif
-
#ifdef _KERNEL
STAILQ_HEAD(cpuhead, pcpu);
@@ -209,6 +201,19 @@
#define UMA_PCPU_ALLOC_SIZE PAGE_SIZE
+#ifdef CTASSERT
+#if defined(__i386__) || defined(__amd64__)
+/* Required for counters(9) to work on x86. */
+CTASSERT(sizeof(struct pcpu) == UMA_PCPU_ALLOC_SIZE);
+#else
+/*
+ * To minimize memory waste in per-cpu UMA zones, size of struct pcpu
+ * should be denominator of PAGE_SIZE.
+ */
+CTASSERT((PAGE_SIZE / sizeof(struct pcpu)) * sizeof(struct pcpu) == PAGE_SIZE);
+#endif /* UMA_PCPU_ALLOC_SIZE && x86 */
+#endif /* CTASSERT */
+
/* Accessor to elements allocated via UMA_ZONE_PCPU zone. */
static inline void *
zpcpu_get(void *base)
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Mar 24, 10:05 PM (3 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30275102
Default Alt Text
D16163.id44965.diff (2 KB)
Attached To
Mode
D16163: Expand x86 struct pcpus to UMA_PCPU_ALLOC_SIZE AKA PAGE_SIZE.
Attached
Detach File
Event Timeline
Log In to Comment