Commit d2b96a94 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://kernel.bkbits.net/davem/sparc-2.6

into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents ad54da3a c4a60f0e
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
/* /*
* Power management idle function * Power management idle function
* Set in pm platform drivers * Set in pm platform drivers (apc.c and pmc.c)
*/ */
void (*pm_idle)(void); void (*pm_idle)(void);
...@@ -122,7 +122,7 @@ int cpu_idle(void) ...@@ -122,7 +122,7 @@ int cpu_idle(void)
} }
while((!need_resched()) && pm_idle) { while((!need_resched()) && pm_idle) {
(*pm_idle)(); /* XXX Huh? On sparc?! */ (*pm_idle)();
} }
schedule(); schedule();
......
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.10-rc1 # Linux kernel version: 2.6.10-rc2
# Sun Oct 31 13:19:19 2004 # Tue Nov 16 11:09:23 2004
# #
CONFIG_64BIT=y CONFIG_64BIT=y
CONFIG_MMU=y CONFIG_MMU=y
...@@ -65,9 +65,7 @@ CONFIG_SMP=y ...@@ -65,9 +65,7 @@ CONFIG_SMP=y
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
CONFIG_NR_CPUS=4 CONFIG_NR_CPUS=4
CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y # CONFIG_CPU_FREQ_DEBUG is not set
CONFIG_US3_FREQ=m
CONFIG_US2E_FREQ=m
CONFIG_CPU_FREQ_PROC_INTF=y CONFIG_CPU_FREQ_PROC_INTF=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
...@@ -76,6 +74,9 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=m ...@@ -76,6 +74,9 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m CONFIG_CPU_FREQ_GOV_USERSPACE=m
# CONFIG_CPU_FREQ_24_API is not set # CONFIG_CPU_FREQ_24_API is not set
CONFIG_CPU_FREQ_GOV_ONDEMAND=m CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_TABLE=y
CONFIG_US3_FREQ=m
CONFIG_US2E_FREQ=m
CONFIG_SPARC64=y CONFIG_SPARC64=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_HUGETLB_PAGE_SIZE_4MB=y CONFIG_HUGETLB_PAGE_SIZE_4MB=y
...@@ -429,6 +430,7 @@ CONFIG_MD_RAID10=m ...@@ -429,6 +430,7 @@ CONFIG_MD_RAID10=m
CONFIG_MD_RAID5=m CONFIG_MD_RAID5=m
CONFIG_MD_RAID6=m CONFIG_MD_RAID6=m
CONFIG_MD_MULTIPATH=m CONFIG_MD_MULTIPATH=m
# CONFIG_MD_FAULTY is not set
CONFIG_BLK_DEV_DM=m CONFIG_BLK_DEV_DM=m
CONFIG_DM_CRYPT=m CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m CONFIG_DM_SNAPSHOT=m
...@@ -503,6 +505,8 @@ CONFIG_INET_AH=y ...@@ -503,6 +505,8 @@ CONFIG_INET_AH=y
CONFIG_INET_ESP=y CONFIG_INET_ESP=y
CONFIG_INET_IPCOMP=y CONFIG_INET_IPCOMP=y
CONFIG_INET_TUNNEL=y CONFIG_INET_TUNNEL=y
CONFIG_IP_TCPDIAG=y
# CONFIG_IP_TCPDIAG_IPV6 is not set
# #
# IP: Virtual Server Configuration # IP: Virtual Server Configuration
...@@ -745,6 +749,7 @@ CONFIG_NET_ACT_POLICE=m ...@@ -745,6 +749,7 @@ CONFIG_NET_ACT_POLICE=m
CONFIG_NET_ACT_GACT=m CONFIG_NET_ACT_GACT=m
CONFIG_GACT_PROB=y CONFIG_GACT_PROB=y
CONFIG_NET_ACT_MIRRED=m CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_IPT=m
CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_PEDIT=m
# #
...@@ -1148,6 +1153,7 @@ CONFIG_I2C_ALI1535=m ...@@ -1148,6 +1153,7 @@ CONFIG_I2C_ALI1535=m
CONFIG_I2C_ALI1563=m CONFIG_I2C_ALI1563=m
CONFIG_I2C_ALI15X3=m CONFIG_I2C_ALI15X3=m
CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756=m
# CONFIG_I2C_AMD756_S4882 is not set
CONFIG_I2C_AMD8111=m CONFIG_I2C_AMD8111=m
CONFIG_I2C_I801=m CONFIG_I2C_I801=m
CONFIG_I2C_I810=m CONFIG_I2C_I810=m
...@@ -1179,6 +1185,7 @@ CONFIG_SENSORS_DS1621=m ...@@ -1179,6 +1185,7 @@ CONFIG_SENSORS_DS1621=m
CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCHER=m
CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL518SM=m
CONFIG_SENSORS_IT87=m CONFIG_SENSORS_IT87=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM75=m CONFIG_SENSORS_LM75=m
CONFIG_SENSORS_LM77=m CONFIG_SENSORS_LM77=m
CONFIG_SENSORS_LM78=m CONFIG_SENSORS_LM78=m
...@@ -1188,6 +1195,7 @@ CONFIG_SENSORS_LM85=m ...@@ -1188,6 +1195,7 @@ CONFIG_SENSORS_LM85=m
CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM87=m
CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM90=m
CONFIG_SENSORS_MAX1619=m CONFIG_SENSORS_MAX1619=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M1=m
CONFIG_SENSORS_VIA686A=m CONFIG_SENSORS_VIA686A=m
CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83781D=m
...@@ -1677,7 +1685,7 @@ CONFIG_USB_SN9C102=m ...@@ -1677,7 +1685,7 @@ CONFIG_USB_SN9C102=m
CONFIG_USB_W9968CF=m CONFIG_USB_W9968CF=m
# #
# USB Network adaptors # USB Network Adapters
# #
CONFIG_USB_CATC=m CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m CONFIG_USB_KAWETH=m
...@@ -1694,6 +1702,7 @@ CONFIG_USB_BELKIN=y ...@@ -1694,6 +1702,7 @@ CONFIG_USB_BELKIN=y
CONFIG_USB_GENESYS=y CONFIG_USB_GENESYS=y
CONFIG_USB_NET1080=y CONFIG_USB_NET1080=y
CONFIG_USB_PL2301=y CONFIG_USB_PL2301=y
CONFIG_USB_KC2190=y
# #
# Intelligent USB Devices/Gadgets # Intelligent USB Devices/Gadgets
...@@ -1720,6 +1729,7 @@ CONFIG_USB_SERIAL=m ...@@ -1720,6 +1729,7 @@ CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_BELKIN=m CONFIG_USB_SERIAL_BELKIN=m
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m CONFIG_USB_SERIAL_FTDI_SIO=m
# CONFIG_USB_SERIAL_VISOR is not set # CONFIG_USB_SERIAL_VISOR is not set
...@@ -1858,6 +1868,7 @@ CONFIG_CRYPTO_CAST6=m ...@@ -1858,6 +1868,7 @@ CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_TEA=m CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m CONFIG_CRYPTO_CRC32C=m
......
...@@ -725,7 +725,7 @@ static int __pci_mmap_make_offset(struct pci_dev *dev, struct vm_area_struct *vm ...@@ -725,7 +725,7 @@ static int __pci_mmap_make_offset(struct pci_dev *dev, struct vm_area_struct *vm
static void __pci_mmap_set_flags(struct pci_dev *dev, struct vm_area_struct *vma, static void __pci_mmap_set_flags(struct pci_dev *dev, struct vm_area_struct *vma,
enum pci_mmap_state mmap_state) enum pci_mmap_state mmap_state)
{ {
vma->vm_flags |= (VM_SHM | VM_LOCKED); vma->vm_flags |= (VM_IO | VM_RESERVED);
} }
/* Set vm_page_prot of VMA, as appropriate for this architecture, for a pci /* Set vm_page_prot of VMA, as appropriate for this architecture, for a pci
......
...@@ -352,7 +352,7 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs) ...@@ -352,7 +352,7 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs)
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
if (in_interrupt() || !mm) if (in_atomic() || !mm)
goto intr_or_no_mm; goto intr_or_no_mm;
if (test_thread_flag(TIF_32BIT)) { if (test_thread_flag(TIF_32BIT)) {
...@@ -361,7 +361,15 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs) ...@@ -361,7 +361,15 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs)
address &= 0xffffffff; address &= 0xffffffff;
} }
down_read(&mm->mmap_sem); if (!down_read_trylock(&mm->mmap_sem)) {
if ((regs->tstate & TSTATE_PRIV) &&
!search_exception_tables(regs->tpc)) {
insn = get_fault_insn(regs, insn);
goto handle_kernel_fault;
}
down_read(&mm->mmap_sem);
}
vma = find_vma(mm, address); vma = find_vma(mm, address);
if (!vma) if (!vma)
goto bad_area; goto bad_area;
...@@ -446,16 +454,18 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs) ...@@ -446,16 +454,18 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs)
} }
switch (handle_mm_fault(mm, vma, address, (fault_code & FAULT_CODE_WRITE))) { switch (handle_mm_fault(mm, vma, address, (fault_code & FAULT_CODE_WRITE))) {
case 1: case VM_FAULT_MINOR:
current->min_flt++; current->min_flt++;
break; break;
case 2: case VM_FAULT_MAJOR:
current->maj_flt++; current->maj_flt++;
break; break;
case 0: case VM_FAULT_SIGBUS:
goto do_sigbus; goto do_sigbus;
default: case VM_FAULT_OOM:
goto out_of_memory; goto out_of_memory;
default:
BUG();
} }
up_read(&mm->mmap_sem); up_read(&mm->mmap_sem);
......
...@@ -15,14 +15,6 @@ ...@@ -15,14 +15,6 @@
#include <asm/page.h> #include <asm/page.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
static inline void forget_pte(pte_t page)
{
if (!pte_none(page)) {
printk("forget_pte: old mapping existed!\n");
BUG();
}
}
/* Remap IO memory, the same way as remap_pfn_range(), but use /* Remap IO memory, the same way as remap_pfn_range(), but use
* the obio memory space. * the obio memory space.
* *
...@@ -43,7 +35,6 @@ static inline void io_remap_pte_range(pte_t * pte, unsigned long address, unsign ...@@ -43,7 +35,6 @@ static inline void io_remap_pte_range(pte_t * pte, unsigned long address, unsign
if (end > PMD_SIZE) if (end > PMD_SIZE)
end = PMD_SIZE; end = PMD_SIZE;
do { do {
pte_t oldpage;
pte_t entry; pte_t entry;
unsigned long curend = address + PAGE_SIZE; unsigned long curend = address + PAGE_SIZE;
...@@ -75,10 +66,8 @@ static inline void io_remap_pte_range(pte_t * pte, unsigned long address, unsign ...@@ -75,10 +66,8 @@ static inline void io_remap_pte_range(pte_t * pte, unsigned long address, unsign
if (offset & 0x1UL) if (offset & 0x1UL)
pte_val(entry) &= ~(_PAGE_E); pte_val(entry) &= ~(_PAGE_E);
do { do {
oldpage = *pte; BUG_ON(!pte_none(*pte));
pte_clear(pte);
set_pte(pte, entry); set_pte(pte, entry);
forget_pte(oldpage);
address += PAGE_SIZE; address += PAGE_SIZE;
pte++; pte++;
} while (address < curend); } while (address < curend);
...@@ -132,8 +121,8 @@ int io_remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned ...@@ -132,8 +121,8 @@ int io_remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned
from = (from + PGDIR_SIZE) & PGDIR_MASK; from = (from + PGDIR_SIZE) & PGDIR_MASK;
dir++; dir++;
} }
flush_tlb_range(vma, beg, end);
spin_unlock(&mm->page_table_lock); spin_unlock(&mm->page_table_lock);
flush_tlb_range(vma, beg, end);
return error; return error;
} }
...@@ -974,6 +974,8 @@ sunzilog_set_termios(struct uart_port *port, struct termios *termios, ...@@ -974,6 +974,8 @@ sunzilog_set_termios(struct uart_port *port, struct termios *termios,
sunzilog_maybe_update_regs(up, ZILOG_CHANNEL_FROM_PORT(port)); sunzilog_maybe_update_regs(up, ZILOG_CHANNEL_FROM_PORT(port));
uart_update_timeout(port, termios->c_cflag, baud);
spin_unlock_irqrestore(&up->port.lock, flags); spin_unlock_irqrestore(&up->port.lock, flags);
} }
......
...@@ -1844,7 +1844,7 @@ static int atyfb_mmap(struct fb_info *info, struct file *file, struct vm_area_st ...@@ -1844,7 +1844,7 @@ static int atyfb_mmap(struct fb_info *info, struct file *file, struct vm_area_st
size = vma->vm_end - vma->vm_start; size = vma->vm_end - vma->vm_start;
/* To stop the swapper from even considering these pages. */ /* To stop the swapper from even considering these pages. */
vma->vm_flags |= (VM_SHM | VM_LOCKED); vma->vm_flags |= (VM_IO | VM_RESERVED);
if (((vma->vm_pgoff == 0) && (size == info->fix.smem_len)) || if (((vma->vm_pgoff == 0) && (size == info->fix.smem_len)) ||
((off == info->fix.smem_len) && (size == PAGE_SIZE))) ((off == info->fix.smem_len) && (size == PAGE_SIZE)))
...@@ -1891,8 +1891,6 @@ static int atyfb_mmap(struct fb_info *info, struct file *file, struct vm_area_st ...@@ -1891,8 +1891,6 @@ static int atyfb_mmap(struct fb_info *info, struct file *file, struct vm_area_st
if (!map_size) if (!map_size)
return -EINVAL; return -EINVAL;
vma->vm_flags |= VM_IO;
if (!par->mmaped) if (!par->mmaped)
par->mmaped = 1; par->mmaped = 1;
return 0; return 0;
......
...@@ -255,6 +255,9 @@ static int cg14_setcolreg(unsigned regno, ...@@ -255,6 +255,9 @@ static int cg14_setcolreg(unsigned regno,
if (regno >= 256) if (regno >= 256)
return 1; return 1;
red >>= 8;
green >>= 8;
blue >>= 8;
val = (red | (green << 8) | (blue << 16)); val = (red | (green << 8) | (blue << 16));
spin_lock_irqsave(&par->lock, flags); spin_lock_irqsave(&par->lock, flags);
...@@ -322,7 +325,8 @@ static int cg14_ioctl(struct inode *inode, struct file *file, unsigned int cmd, ...@@ -322,7 +325,8 @@ static int cg14_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
break; break;
case MDI_16_PIX: case MDI_16_PIX:
cur_mode |= 0x20; cur_mode |= (CG14_MCR_PIXMODE_16 <<
CG14_MCR_PIXMODE_SHIFT);
break; break;
case MDI_8_PIX: case MDI_8_PIX:
...@@ -341,7 +345,7 @@ static int cg14_ioctl(struct inode *inode, struct file *file, unsigned int cmd, ...@@ -341,7 +345,7 @@ static int cg14_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
default: default:
ret = sbusfb_ioctl_helper(cmd, arg, info, ret = sbusfb_ioctl_helper(cmd, arg, info,
FBTYPE_MDICOLOR, 24, par->fbsize); FBTYPE_MDICOLOR, 8, par->fbsize);
break; break;
}; };
...@@ -355,11 +359,16 @@ static int cg14_ioctl(struct inode *inode, struct file *file, unsigned int cmd, ...@@ -355,11 +359,16 @@ static int cg14_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
static void cg14_init_fix(struct fb_info *info, int linebytes) static void cg14_init_fix(struct fb_info *info, int linebytes)
{ {
struct cg14_par *par = (struct cg14_par *)info->par; struct cg14_par *par = (struct cg14_par *)info->par;
const char *name;
name = "cgfourteen";
if (par->sdev)
name = par->sdev->prom_name;
strlcpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id)); strlcpy(info->fix.id, name, sizeof(info->fix.id));
info->fix.type = FB_TYPE_PACKED_PIXELS; info->fix.type = FB_TYPE_PACKED_PIXELS;
info->fix.visual = FB_VISUAL_TRUECOLOR; info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
info->fix.line_length = linebytes; info->fix.line_length = linebytes;
...@@ -484,8 +493,11 @@ static void cg14_init_one(struct sbus_dev *sdev, int node, int parent_node) ...@@ -484,8 +493,11 @@ static void cg14_init_one(struct sbus_dev *sdev, int node, int parent_node)
spin_lock_init(&all->par.lock); spin_lock_init(&all->par.lock);
sbusfb_fill_var(&all->info.var, node, 8); sbusfb_fill_var(&all->info.var, node, 8);
all->info.var.red.length = 8;
all->info.var.green.length = 8;
all->info.var.blue.length = 8;
linebytes = prom_getintdefault(sdev->prom_node, "linebytes", linebytes = prom_getintdefault(node, "linebytes",
all->info.var.xres); all->info.var.xres);
all->par.fbsize = PAGE_ALIGN(linebytes * all->info.var.yres); all->par.fbsize = PAGE_ALIGN(linebytes * all->info.var.yres);
...@@ -561,6 +573,7 @@ static void cg14_init_one(struct sbus_dev *sdev, int node, int parent_node) ...@@ -561,6 +573,7 @@ static void cg14_init_one(struct sbus_dev *sdev, int node, int parent_node)
kfree(all); kfree(all);
return; return;
} }
fb_set_cmap(&all->info.cmap, &all->info);
cg14_init_fix(&all->info, linebytes); cg14_init_fix(&all->info, linebytes);
...@@ -573,8 +586,8 @@ static void cg14_init_one(struct sbus_dev *sdev, int node, int parent_node) ...@@ -573,8 +586,8 @@ static void cg14_init_one(struct sbus_dev *sdev, int node, int parent_node)
list_add(&all->list, &cg14_list); list_add(&all->list, &cg14_list);
printk("cg14: cgfourteen at %lx:%lx\n", printk("cg14: cgfourteen at %lx:%lx, %dMB\n",
all->par.physbase, all->par.iospace); all->par.iospace, all->par.physbase, all->par.ramsize >> 20);
} }
......
...@@ -198,9 +198,9 @@ cg3_blank(int blank, struct fb_info *info) ...@@ -198,9 +198,9 @@ cg3_blank(int blank, struct fb_info *info)
switch (blank) { switch (blank) {
case FB_BLANK_UNBLANK: /* Unblanking */ case FB_BLANK_UNBLANK: /* Unblanking */
val = sbus_readl(&regs->control); val = sbus_readb(&regs->control);
val |= CG3_CR_ENABLE_VIDEO; val |= CG3_CR_ENABLE_VIDEO;
sbus_writel(val, &regs->control); sbus_writeb(val, &regs->control);
par->flags &= ~CG3_FLAG_BLANKED; par->flags &= ~CG3_FLAG_BLANKED;
break; break;
...@@ -208,9 +208,9 @@ cg3_blank(int blank, struct fb_info *info) ...@@ -208,9 +208,9 @@ cg3_blank(int blank, struct fb_info *info)
case FB_BLANK_VSYNC_SUSPEND: /* VESA blank (vsync off) */ case FB_BLANK_VSYNC_SUSPEND: /* VESA blank (vsync off) */
case FB_BLANK_HSYNC_SUSPEND: /* VESA blank (hsync off) */ case FB_BLANK_HSYNC_SUSPEND: /* VESA blank (hsync off) */
case FB_BLANK_POWERDOWN: /* Poweroff */ case FB_BLANK_POWERDOWN: /* Poweroff */
val = sbus_readl(&regs->control); val = sbus_readb(&regs->control);
val |= CG3_CR_ENABLE_VIDEO; val |= CG3_CR_ENABLE_VIDEO;
sbus_writel(val, &regs->control); sbus_writeb(val, &regs->control);
par->flags |= CG3_FLAG_BLANKED; par->flags |= CG3_FLAG_BLANKED;
break; break;
} }
......
...@@ -906,9 +906,8 @@ fb_mmap(struct file *file, struct vm_area_struct * vma) ...@@ -906,9 +906,8 @@ fb_mmap(struct file *file, struct vm_area_struct * vma)
off += start; off += start;
vma->vm_pgoff = off >> PAGE_SHIFT; vma->vm_pgoff = off >> PAGE_SHIFT;
/* This is an IO map - tell maydump to skip this VMA */ /* This is an IO map - tell maydump to skip this VMA */
vma->vm_flags |= VM_IO; vma->vm_flags |= VM_IO | VM_RESERVED;
#if defined(__sparc_v9__) #if defined(__sparc_v9__)
vma->vm_flags |= (VM_SHM | VM_LOCKED);
if (io_remap_page_range(vma, vma->vm_start, off, if (io_remap_page_range(vma, vma->vm_start, off,
vma->vm_end - vma->vm_start, vma->vm_page_prot, 0)) vma->vm_end - vma->vm_start, vma->vm_page_prot, 0))
return -EAGAIN; return -EAGAIN;
......
...@@ -52,7 +52,7 @@ int sbusfb_mmap_helper(struct sbus_mmap_map *map, ...@@ -52,7 +52,7 @@ int sbusfb_mmap_helper(struct sbus_mmap_map *map,
off = vma->vm_pgoff << PAGE_SHIFT; off = vma->vm_pgoff << PAGE_SHIFT;
/* To stop the swapper from even considering these pages */ /* To stop the swapper from even considering these pages */
vma->vm_flags |= (VM_SHM | VM_IO | VM_LOCKED); vma->vm_flags |= (VM_IO | VM_RESERVED);
/* Each page, see which map applies */ /* Each page, see which map applies */
for (page = 0; page < size; ){ for (page = 0; page < size; ){
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment