Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 237
b: refs/heads/master
c: a9546f5
h: refs/heads/master
i:
  235: f66c9ba
v: v3
  • Loading branch information
David S. Miller authored and Linus Torvalds committed Apr 18, 2005
1 parent b0c2379 commit 8da464d
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a4e884a311893b476893739901bed382cd62b4fe
refs/heads/master: a9546f59e90d6ec1b65952c547302e0678e3a5ac
19 changes: 15 additions & 4 deletions trunk/arch/sparc64/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,13 +201,24 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t p

void flush_dcache_page(struct page *page)
{
struct address_space *mapping = page_mapping(page);
int dirty = test_bit(PG_dcache_dirty, &page->flags);
int dirty_cpu = dcache_dirty_cpu(page);
int this_cpu = get_cpu();
struct address_space *mapping;
int this_cpu;

/* Do not bother with the expensive D-cache flush if it
* is merely the zero page. The 'bigcore' testcase in GDB
* causes this case to run millions of times.
*/
if (page == ZERO_PAGE(0))
return;

this_cpu = get_cpu();

mapping = page_mapping(page);
if (mapping && !mapping_mapped(mapping)) {
int dirty = test_bit(PG_dcache_dirty, &page->flags);
if (dirty) {
int dirty_cpu = dcache_dirty_cpu(page);

if (dirty_cpu == this_cpu)
goto out;
smp_flush_dcache_page_impl(page, dirty_cpu);
Expand Down

0 comments on commit 8da464d

Please sign in to comment.