Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 23dcfa61 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'akpm' (Andrew's patch-bomb)

Merge fixes from Andrew Morton.

Random drivers and some VM fixes.

* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (17 commits)
  mm: compaction: Abort async compaction if locks are contended or taking too long
  mm: have order > 0 compaction start near a pageblock with free pages
  rapidio/tsi721: fix unused variable compiler warning
  rapidio/tsi721: fix inbound doorbell interrupt handling
  drivers/rtc/rtc-rs5c348.c: fix hour decoding in 12-hour mode
  mm: correct page->pfmemalloc to fix deactivate_slab regression
  drivers/rtc/rtc-pcf2123.c: initialize dynamic sysfs attributes
  mm/compaction.c: fix deferring compaction mistake
  drivers/misc/sgi-xp/xpc_uv.c: SGI XPC fails to load when cpu 0 is out of IRQ resources
  string: do not export memweight() to userspace
  hugetlb: update hugetlbpage.txt
  checkpatch: add control statement test to SINGLE_STATEMENT_DO_WHILE_MACRO
  mm: hugetlbfs: correctly populate shared pmd
  cciss: fix incorrect scsi status reporting
  Documentation: update mount option in filesystem/vfat.txt
  mm: change nr_ptes BUG_ON to WARN_ON
  cs5535-clockevt: typo, it's MFGPT, not MFPGT
parents a484147a c67fe375
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -137,6 +137,17 @@ errors=panic|continue|remount-ro
		 without doing anything or remount the partition in
		 read-only mode (default behavior).

discard       -- If set, issues discard/TRIM commands to the block
		 device when blocks are freed. This is useful for SSD devices
		 and sparse/thinly-provisoned LUNs.

nfs           -- This option maintains an index (cache) of directory
		 inodes by i_logstart which is used by the nfs-related code to
		 improve look-ups.

		 Enable this only if you want to export the FAT filesystem
		 over NFS

<bool>: 0,1,yes,no,true,false

TODO
+8 −2
Original line number Diff line number Diff line
@@ -299,11 +299,17 @@ map_hugetlb.c.
*******************************************************************

/*
 * hugepage-shm:  see Documentation/vm/hugepage-shm.c
 * map_hugetlb: see tools/testing/selftests/vm/map_hugetlb.c
 */

*******************************************************************

/*
 * hugepage-mmap:  see Documentation/vm/hugepage-mmap.c
 * hugepage-shm:  see tools/testing/selftests/vm/hugepage-shm.c
 */

*******************************************************************

/*
 * hugepage-mmap:  see tools/testing/selftests/vm/hugepage-mmap.c
 */
+16 −5
Original line number Diff line number Diff line
@@ -56,9 +56,16 @@ static int vma_shareable(struct vm_area_struct *vma, unsigned long addr)
}

/*
 * search for a shareable pmd page for hugetlb.
 * Search for a shareable pmd page for hugetlb. In any case calls pmd_alloc()
 * and returns the corresponding pte. While this is not necessary for the
 * !shared pmd case because we can allocate the pmd later as well, it makes the
 * code much cleaner. pmd allocation is essential for the shared case because
 * pud has to be populated inside the same i_mmap_mutex section - otherwise
 * racing tasks could either miss the sharing (see huge_pte_offset) or select a
 * bad pmd for sharing.
 */
static void huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud)
static pte_t *
huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud)
{
	struct vm_area_struct *vma = find_vma(mm, addr);
	struct address_space *mapping = vma->vm_file->f_mapping;
@@ -68,9 +75,10 @@ static void huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud)
	struct vm_area_struct *svma;
	unsigned long saddr;
	pte_t *spte = NULL;
	pte_t *pte;

	if (!vma_shareable(vma, addr))
		return;
		return (pte_t *)pmd_alloc(mm, pud, addr);

	mutex_lock(&mapping->i_mmap_mutex);
	vma_prio_tree_foreach(svma, &iter, &mapping->i_mmap, idx, idx) {
@@ -97,7 +105,9 @@ static void huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud)
		put_page(virt_to_page(spte));
	spin_unlock(&mm->page_table_lock);
out:
	pte = (pte_t *)pmd_alloc(mm, pud, addr);
	mutex_unlock(&mapping->i_mmap_mutex);
	return pte;
}

/*
@@ -142,7 +152,8 @@ pte_t *huge_pte_alloc(struct mm_struct *mm,
		} else {
			BUG_ON(sz != PMD_SIZE);
			if (pud_none(*pud))
				huge_pmd_share(mm, addr, pud);
				pte = huge_pmd_share(mm, addr, pud);
			else
				pte = (pte_t *)pmd_alloc(mm, pud, addr);
		}
	}
+1 −10
Original line number Diff line number Diff line
@@ -763,16 +763,7 @@ static void complete_scsi_command(CommandList_struct *c, int timeout,
		{
			case CMD_TARGET_STATUS:
				/* Pass it up to the upper layers... */
				if( ei->ScsiStatus)
                		{
#if 0
                    			printk(KERN_WARNING "cciss: cmd %p "
						"has SCSI Status = %x\n",
						c, ei->ScsiStatus);
#endif
					cmd->result |= (ei->ScsiStatus << 1);
                		}
				else {  /* scsi status is zero??? How??? */
				if (!ei->ScsiStatus) {
					
	/* Ordinarily, this case should never happen, but there is a bug
	   in some released firmware revisions that allows it to happen
+2 −2
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ static struct cs5535_mfgpt_timer *cs5535_event_clock;
#define MFGPT_PERIODIC (MFGPT_HZ / HZ)

/*
 * The MFPGT timers on the CS5536 provide us with suitable timers to use
 * The MFGPT timers on the CS5536 provide us with suitable timers to use
 * as clock event sources - not as good as a HPET or APIC, but certainly
 * better than the PIT.  This isn't a general purpose MFGPT driver, but
 * a simplified one designed specifically to act as a clock event source.
@@ -144,7 +144,7 @@ static int __init cs5535_mfgpt_init(void)

	timer = cs5535_mfgpt_alloc_timer(MFGPT_TIMER_ANY, MFGPT_DOMAIN_WORKING);
	if (!timer) {
		printk(KERN_ERR DRV_NAME ": Could not allocate MFPGT timer\n");
		printk(KERN_ERR DRV_NAME ": Could not allocate MFGPT timer\n");
		return -ENODEV;
	}
	cs5535_event_clock = timer;
Loading