diff options
| -rw-r--r-- | arch/i386/pci/mmconfig.c | 2 | ||||
| -rw-r--r-- | arch/ppc/syslib/ppc4xx_dma.c | 1 | ||||
| -rw-r--r-- | drivers/char/drm/radeon_cp.c | 9 | ||||
| -rw-r--r-- | drivers/char/drm/radeon_drv.h | 1 | ||||
| -rw-r--r-- | drivers/char/watchdog/booke_wdt.c | 2 | ||||
| -rw-r--r-- | drivers/i2c/busses/i2c-mv64xxx.c | 11 | ||||
| -rw-r--r-- | drivers/pci/Makefile | 7 | ||||
| -rw-r--r-- | drivers/usb/host/uhci-hcd.c | 2 | ||||
| -rw-r--r-- | include/asm-ppc/ppc4xx_dma.h | 3 | ||||
| -rw-r--r-- | include/linux/mm.h | 1 | ||||
| -rw-r--r-- | mm/memory.c | 3 | ||||
| -rw-r--r-- | mm/mmap.c | 2 | ||||
| -rw-r--r-- | mm/mremap.c | 2 |
13 files changed, 27 insertions, 19 deletions
diff --git a/arch/i386/pci/mmconfig.c b/arch/i386/pci/mmconfig.c index 70a9cc132cf7..4bb4d4b0f73a 100644 --- a/arch/i386/pci/mmconfig.c +++ b/arch/i386/pci/mmconfig.c | |||
| @@ -155,7 +155,7 @@ static __init void unreachable_devices(void) | |||
| 155 | addr = get_base_addr(0, 0, PCI_DEVFN(i, 0)); | 155 | addr = get_base_addr(0, 0, PCI_DEVFN(i, 0)); |
| 156 | if (addr != 0) | 156 | if (addr != 0) |
| 157 | pci_exp_set_dev_base(addr, 0, PCI_DEVFN(i, 0)); | 157 | pci_exp_set_dev_base(addr, 0, PCI_DEVFN(i, 0)); |
| 158 | if (addr == 0 || readl((u32 __iomem *)addr) != val1) | 158 | if (addr == 0 || readl((u32 __iomem *)mmcfg_virt_addr) != val1) |
| 159 | set_bit(i, fallback_slots); | 159 | set_bit(i, fallback_slots); |
| 160 | spin_unlock_irqrestore(&pci_config_lock, flags); | 160 | spin_unlock_irqrestore(&pci_config_lock, flags); |
| 161 | } | 161 | } |
diff --git a/arch/ppc/syslib/ppc4xx_dma.c b/arch/ppc/syslib/ppc4xx_dma.c index f15e64285f96..05ccd598dd4e 100644 --- a/arch/ppc/syslib/ppc4xx_dma.c +++ b/arch/ppc/syslib/ppc4xx_dma.c | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | #include <asm/system.h> | 31 | #include <asm/system.h> |
| 32 | #include <asm/io.h> | 32 | #include <asm/io.h> |
| 33 | #include <asm/dma.h> | ||
| 33 | #include <asm/ppc4xx_dma.h> | 34 | #include <asm/ppc4xx_dma.h> |
| 34 | 35 | ||
| 35 | ppc_dma_ch_t dma_channels[MAX_PPC4xx_DMA_CHANNELS]; | 36 | ppc_dma_ch_t dma_channels[MAX_PPC4xx_DMA_CHANNELS]; |
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c index 9f2b4efd0c7a..95ae9e0892ac 100644 --- a/drivers/char/drm/radeon_cp.c +++ b/drivers/char/drm/radeon_cp.c | |||
| @@ -1312,6 +1312,8 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on) | |||
| 1312 | static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init) | 1312 | static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init) |
| 1313 | { | 1313 | { |
| 1314 | drm_radeon_private_t *dev_priv = dev->dev_private;; | 1314 | drm_radeon_private_t *dev_priv = dev->dev_private;; |
| 1315 | unsigned int mem_size; | ||
| 1316 | |||
| 1315 | DRM_DEBUG("\n"); | 1317 | DRM_DEBUG("\n"); |
| 1316 | 1318 | ||
| 1317 | dev_priv->is_pci = init->is_pci; | 1319 | dev_priv->is_pci = init->is_pci; |
| @@ -1521,8 +1523,11 @@ static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init) | |||
| 1521 | + dev_priv->fb_location) >> 10)); | 1523 | + dev_priv->fb_location) >> 10)); |
| 1522 | 1524 | ||
| 1523 | dev_priv->gart_size = init->gart_size; | 1525 | dev_priv->gart_size = init->gart_size; |
| 1524 | dev_priv->gart_vm_start = dev_priv->fb_location | 1526 | |
| 1525 | + RADEON_READ(RADEON_CONFIG_APER_SIZE) * 2; | 1527 | mem_size = RADEON_READ(RADEON_CONFIG_MEMSIZE); |
| 1528 | if (mem_size == 0) | ||
| 1529 | mem_size = 0x800000; | ||
| 1530 | dev_priv->gart_vm_start = dev_priv->fb_location + mem_size; | ||
| 1526 | 1531 | ||
| 1527 | #if __OS_HAS_AGP | 1532 | #if __OS_HAS_AGP |
| 1528 | if (!dev_priv->is_pci) | 1533 | if (!dev_priv->is_pci) |
diff --git a/drivers/char/drm/radeon_drv.h b/drivers/char/drm/radeon_drv.h index 7bda7e33d2bd..d92ccee3e54c 100644 --- a/drivers/char/drm/radeon_drv.h +++ b/drivers/char/drm/radeon_drv.h | |||
| @@ -379,6 +379,7 @@ extern int r300_do_cp_cmdbuf(drm_device_t * dev, DRMFILE filp, | |||
| 379 | # define RADEON_PLL_WR_EN (1 << 7) | 379 | # define RADEON_PLL_WR_EN (1 << 7) |
| 380 | #define RADEON_CLOCK_CNTL_INDEX 0x0008 | 380 | #define RADEON_CLOCK_CNTL_INDEX 0x0008 |
| 381 | #define RADEON_CONFIG_APER_SIZE 0x0108 | 381 | #define RADEON_CONFIG_APER_SIZE 0x0108 |
| 382 | #define RADEON_CONFIG_MEMSIZE 0x00f8 | ||
| 382 | #define RADEON_CRTC_OFFSET 0x0224 | 383 | #define RADEON_CRTC_OFFSET 0x0224 |
| 383 | #define RADEON_CRTC_OFFSET_CNTL 0x0228 | 384 | #define RADEON_CRTC_OFFSET_CNTL 0x0228 |
| 384 | # define RADEON_CRTC_TILE_EN (1 << 15) | 385 | # define RADEON_CRTC_TILE_EN (1 << 15) |
diff --git a/drivers/char/watchdog/booke_wdt.c b/drivers/char/watchdog/booke_wdt.c index c800cce73c1e..b6640606b44d 100644 --- a/drivers/char/watchdog/booke_wdt.c +++ b/drivers/char/watchdog/booke_wdt.c | |||
| @@ -173,7 +173,7 @@ static int __init booke_wdt_init(void) | |||
| 173 | int ret = 0; | 173 | int ret = 0; |
| 174 | 174 | ||
| 175 | printk (KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n"); | 175 | printk (KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n"); |
| 176 | ident.firmware_version = cpu_specs[0].pvr_value; | 176 | ident.firmware_version = cur_cpu_spec->pvr_value; |
| 177 | 177 | ||
| 178 | ret = misc_register(&booke_wdt_miscdev); | 178 | ret = misc_register(&booke_wdt_miscdev); |
| 179 | if (ret) { | 179 | if (ret) { |
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c index afd7634e5cc9..81031eb51056 100644 --- a/drivers/i2c/busses/i2c-mv64xxx.c +++ b/drivers/i2c/busses/i2c-mv64xxx.c | |||
| @@ -529,14 +529,15 @@ mv64xxx_i2c_probe(struct platform_device *pd) | |||
| 529 | i2c_set_adapdata(&drv_data->adapter, drv_data); | 529 | i2c_set_adapdata(&drv_data->adapter, drv_data); |
| 530 | 530 | ||
| 531 | if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0, | 531 | if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0, |
| 532 | MV64XXX_I2C_CTLR_NAME, drv_data)) { | 532 | MV64XXX_I2C_CTLR_NAME, drv_data)) { |
| 533 | 533 | dev_err(&drv_data->adapter.dev, | |
| 534 | dev_err(dev, "mv64xxx: Can't register intr handler " | 534 | "mv64xxx: Can't register intr handler irq: %d\n", |
| 535 | "irq: %d\n", drv_data->irq); | 535 | drv_data->irq); |
| 536 | rc = -EINVAL; | 536 | rc = -EINVAL; |
| 537 | goto exit_unmap_regs; | 537 | goto exit_unmap_regs; |
| 538 | } else if ((rc = i2c_add_adapter(&drv_data->adapter)) != 0) { | 538 | } else if ((rc = i2c_add_adapter(&drv_data->adapter)) != 0) { |
| 539 | dev_err(dev, "mv64xxx: Can't add i2c adapter, rc: %d\n", -rc); | 539 | dev_err(&drv_data->adapter.dev, |
| 540 | "mv64xxx: Can't add i2c adapter, rc: %d\n", -rc); | ||
| 540 | goto exit_free_irq; | 541 | goto exit_free_irq; |
| 541 | } | 542 | } |
| 542 | 543 | ||
diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile index 716df015f8d0..6707df968934 100644 --- a/drivers/pci/Makefile +++ b/drivers/pci/Makefile | |||
| @@ -6,6 +6,9 @@ obj-y += access.o bus.o probe.o remove.o pci.o quirks.o \ | |||
| 6 | pci-driver.o search.o pci-sysfs.o rom.o setup-res.o | 6 | pci-driver.o search.o pci-sysfs.o rom.o setup-res.o |
| 7 | obj-$(CONFIG_PROC_FS) += proc.o | 7 | obj-$(CONFIG_PROC_FS) += proc.o |
| 8 | 8 | ||
| 9 | # Build PCI Express stuff if needed | ||
| 10 | obj-$(CONFIG_PCIEPORTBUS) += pcie/ | ||
| 11 | |||
| 9 | obj-$(CONFIG_HOTPLUG) += hotplug.o | 12 | obj-$(CONFIG_HOTPLUG) += hotplug.o |
| 10 | 13 | ||
| 11 | # Build the PCI Hotplug drivers if we were asked to | 14 | # Build the PCI Hotplug drivers if we were asked to |
| @@ -40,7 +43,3 @@ endif | |||
| 40 | ifeq ($(CONFIG_PCI_DEBUG),y) | 43 | ifeq ($(CONFIG_PCI_DEBUG),y) |
| 41 | EXTRA_CFLAGS += -DDEBUG | 44 | EXTRA_CFLAGS += -DDEBUG |
| 42 | endif | 45 | endif |
| 43 | |||
| 44 | # Build PCI Express stuff if needed | ||
| 45 | obj-$(CONFIG_PCIEPORTBUS) += pcie/ | ||
| 46 | |||
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index ed550132db0b..79efaf7d86a3 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c | |||
| @@ -717,6 +717,7 @@ static int uhci_suspend(struct usb_hcd *hcd, pm_message_t message) | |||
| 717 | * at the source, so we must turn off PIRQ. | 717 | * at the source, so we must turn off PIRQ. |
| 718 | */ | 718 | */ |
| 719 | pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP, 0); | 719 | pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP, 0); |
| 720 | mb(); | ||
| 720 | clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); | 721 | clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); |
| 721 | uhci->hc_inaccessible = 1; | 722 | uhci->hc_inaccessible = 1; |
| 722 | hcd->poll_rh = 0; | 723 | hcd->poll_rh = 0; |
| @@ -738,6 +739,7 @@ static int uhci_resume(struct usb_hcd *hcd) | |||
| 738 | * really don't want to keep a stale HCD_FLAG_HW_ACCESSIBLE=0 | 739 | * really don't want to keep a stale HCD_FLAG_HW_ACCESSIBLE=0 |
| 739 | */ | 740 | */ |
| 740 | set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); | 741 | set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); |
| 742 | mb(); | ||
| 741 | 743 | ||
| 742 | if (uhci->rh_state == UHCI_RH_RESET) /* Dead */ | 744 | if (uhci->rh_state == UHCI_RH_RESET) /* Dead */ |
| 743 | return 0; | 745 | return 0; |
diff --git a/include/asm-ppc/ppc4xx_dma.h b/include/asm-ppc/ppc4xx_dma.h index a415001165fa..46a086fff816 100644 --- a/include/asm-ppc/ppc4xx_dma.h +++ b/include/asm-ppc/ppc4xx_dma.h | |||
| @@ -33,9 +33,6 @@ | |||
| 33 | 33 | ||
| 34 | #define MAX_PPC4xx_DMA_CHANNELS 4 | 34 | #define MAX_PPC4xx_DMA_CHANNELS 4 |
| 35 | 35 | ||
| 36 | /* in arch/ppc/kernel/setup.c -- Cort */ | ||
| 37 | extern unsigned long DMA_MODE_WRITE, DMA_MODE_READ; | ||
| 38 | |||
| 39 | /* | 36 | /* |
| 40 | * Function return status codes | 37 | * Function return status codes |
| 41 | * These values are used to indicate whether or not the function | 38 | * These values are used to indicate whether or not the function |
diff --git a/include/linux/mm.h b/include/linux/mm.h index e5677f456742..a06a84d347fb 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -163,6 +163,7 @@ extern unsigned int kobjsize(const void *objp); | |||
| 163 | #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ | 163 | #define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */ |
| 164 | #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ | 164 | #define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */ |
| 165 | #define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */ | 165 | #define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */ |
| 166 | #define VM_INSERTPAGE 0x02000000 /* The vma has had "vm_insert_page()" done on it */ | ||
| 166 | 167 | ||
| 167 | #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ | 168 | #ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */ |
| 168 | #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS | 169 | #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS |
diff --git a/mm/memory.c b/mm/memory.c index d22f78c8a381..d8dde07a3656 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
| @@ -574,7 +574,7 @@ int copy_page_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, | |||
| 574 | * readonly mappings. The tradeoff is that copy_page_range is more | 574 | * readonly mappings. The tradeoff is that copy_page_range is more |
| 575 | * efficient than faulting. | 575 | * efficient than faulting. |
| 576 | */ | 576 | */ |
| 577 | if (!(vma->vm_flags & (VM_HUGETLB|VM_NONLINEAR|VM_PFNMAP))) { | 577 | if (!(vma->vm_flags & (VM_HUGETLB|VM_NONLINEAR|VM_PFNMAP|VM_INSERTPAGE))) { |
| 578 | if (!vma->anon_vma) | 578 | if (!vma->anon_vma) |
| 579 | return 0; | 579 | return 0; |
| 580 | } | 580 | } |
| @@ -1228,6 +1228,7 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr, struct page * | |||
| 1228 | return -EFAULT; | 1228 | return -EFAULT; |
| 1229 | if (!page_count(page)) | 1229 | if (!page_count(page)) |
| 1230 | return -EINVAL; | 1230 | return -EINVAL; |
| 1231 | vma->vm_flags |= VM_INSERTPAGE; | ||
| 1231 | return insert_page(vma->vm_mm, addr, page, vma->vm_page_prot); | 1232 | return insert_page(vma->vm_mm, addr, page, vma->vm_page_prot); |
| 1232 | } | 1233 | } |
| 1233 | EXPORT_SYMBOL(vm_insert_page); | 1234 | EXPORT_SYMBOL(vm_insert_page); |
| @@ -611,7 +611,7 @@ again: remove_next = 1 + (end > next->vm_end); | |||
| 611 | * If the vma has a ->close operation then the driver probably needs to release | 611 | * If the vma has a ->close operation then the driver probably needs to release |
| 612 | * per-vma resources, so we don't attempt to merge those. | 612 | * per-vma resources, so we don't attempt to merge those. |
| 613 | */ | 613 | */ |
| 614 | #define VM_SPECIAL (VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_RESERVED) | 614 | #define VM_SPECIAL (VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_RESERVED | VM_PFNMAP) |
| 615 | 615 | ||
| 616 | static inline int is_mergeable_vma(struct vm_area_struct *vma, | 616 | static inline int is_mergeable_vma(struct vm_area_struct *vma, |
| 617 | struct file *file, unsigned long vm_flags) | 617 | struct file *file, unsigned long vm_flags) |
diff --git a/mm/mremap.c b/mm/mremap.c index b535438c363c..ddaeee9a0b69 100644 --- a/mm/mremap.c +++ b/mm/mremap.c | |||
| @@ -323,7 +323,7 @@ unsigned long do_mremap(unsigned long addr, | |||
| 323 | /* We can't remap across vm area boundaries */ | 323 | /* We can't remap across vm area boundaries */ |
| 324 | if (old_len > vma->vm_end - addr) | 324 | if (old_len > vma->vm_end - addr) |
| 325 | goto out; | 325 | goto out; |
| 326 | if (vma->vm_flags & VM_DONTEXPAND) { | 326 | if (vma->vm_flags & (VM_DONTEXPAND | VM_PFNMAP)) { |
| 327 | if (new_len > old_len) | 327 | if (new_len > old_len) |
| 328 | goto out; | 328 | goto out; |
| 329 | } | 329 | } |
