|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/3] make tlbflush_filter()'s first parameter a pointer
This brings it in line with most other functions dealing with CPU
masks. Convert both implementations to inline functions at once.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -2514,7 +2514,7 @@ static int __get_page_type(struct page_i
cpumask_copy(&mask, d->domain_dirty_cpumask);
/* Don't flush if the timestamp is old enough */
- tlbflush_filter(mask, page->tlbflush_timestamp);
+ tlbflush_filter(&mask, page->tlbflush_timestamp);
if ( unlikely(!cpumask_empty(&mask)) &&
/* Shadow mode: track only writable pages. */
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -1471,7 +1471,7 @@ mfn_t shadow_alloc(struct domain *d,
/* Before we overwrite the old contents of this page,
* we need to be sure that no TLB holds a pointer to it. */
cpumask_copy(&mask, d->domain_dirty_cpumask);
- tlbflush_filter(mask, sp->tlbflush_timestamp);
+ tlbflush_filter(&mask, sp->tlbflush_timestamp);
if ( unlikely(!cpumask_empty(&mask)) )
{
perfc_incr(shadow_alloc_tlbflush);
--- a/xen/include/asm-arm/flushtlb.h
+++ b/xen/include/asm-arm/flushtlb.h
@@ -8,9 +8,7 @@
* TLB since @page_timestamp.
*/
/* XXX lazy implementation just doesn't clear anything.... */
-#define tlbflush_filter(mask, page_timestamp) \
-do { \
-} while ( 0 )
+static inline void tlbflush_filter(cpumask_t *mask, uint32_t page_timestamp) {}
#define tlbflush_current_time() (0)
--- a/xen/include/asm-x86/flushtlb.h
+++ b/xen/include/asm-x86/flushtlb.h
@@ -50,13 +50,14 @@ static inline int NEED_FLUSH(u32 cpu_sta
* Filter the given set of CPUs, removing those that definitely flushed their
* TLB since @page_timestamp.
*/
-#define tlbflush_filter(mask, page_timestamp) \
-do { \
- unsigned int cpu; \
- for_each_cpu ( cpu, &(mask) ) \
- if ( !NEED_FLUSH(per_cpu(tlbflush_time, cpu), page_timestamp) ) \
- cpumask_clear_cpu(cpu, &(mask)); \
-} while ( 0 )
+static inline void tlbflush_filter(cpumask_t *mask, uint32_t page_timestamp)
+{
+ unsigned int cpu;
+
+ for_each_cpu ( cpu, mask )
+ if ( !NEED_FLUSH(per_cpu(tlbflush_time, cpu), page_timestamp) )
+ cpumask_clear_cpu(cpu, mask);
+}
void new_tlbflush_clock_period(void);
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -588,9 +588,10 @@ static inline void accumulate_tlbflush(b
static inline void filtered_flush_tlb_mask(uint32_t tlbflush_timestamp)
{
- cpumask_t mask = cpu_online_map;
+ cpumask_t mask;
- tlbflush_filter(mask, tlbflush_timestamp);
+ cpumask_copy(&mask, &cpu_online_map);
+ tlbflush_filter(&mask, tlbflush_timestamp);
if ( !cpumask_empty(&mask) )
{
perfc_incr(need_flush_tlb_flush);
Attachment:
tlbflush_filter-mask-ptr.patch _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |