mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
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@suse.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Wei Liu <wei.liu2@citrix.com> Acked-by: Julien Grall <julien.grall@arm.com>
This commit is contained in:
1 parent
f805e59c69
commit
e556d3a17a
5 files changed
+14
-14
No files matched your search
+1
-1
@@ -2514,7 +2514,7 @@ static int __get_page_type(struct page_info *page, unsigned long type,
|
||||
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. */
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -50,13 +50,14 @@ static inline int NEED_FLUSH(u32 cpu_stamp, u32 lastuse_stamp)
|
||||
* 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);
|
||||
|
||||
|
||||
@@ -588,9 +588,10 @@ static inline void accumulate_tlbflush(bool *need_tlbflush,
|
||||
|
||||
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);
|
||||
|
||||