Merge branch 'akpm' (Andrew's patch-bomb)
Merge mix fixes from Andrew Morton. * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (12 commits) drivers/rtc/rtc-pl031.c: fix the missing operation on enable drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq handler samples/seccomp: be less stupid about cross compiling checkpatch: fix $Float creation of match variables memcg: fix typo in kmemcg cache walk macro mm: fix wrong comments about anon_vma lock MAINTAINERS: update avr32 web ressources mm/hugetlb: set PTE as huge in hugetlb_change_protection and remove_migration_pte drivers/rtc/rtc-vt8500.c: fix year field in vt8500_rtc_set_time() tools/vm: add .gitignore to ignore built binaries thp: avoid dumping huge zero page nilfs2: fix fix very long mount time issue
This commit is contained in:
commit
3296944e29
14 changed files with 34 additions and 15 deletions
|
@ -1489,7 +1489,7 @@ AVR32 ARCHITECTURE
|
|||
M: Haavard Skinnemoen <hskinnemoen@gmail.com>
|
||||
M: Hans-Christian Egtvedt <egtvedt@samfundet.no>
|
||||
W: http://www.atmel.com/products/AVR32/
|
||||
W: http://avr32linux.org/
|
||||
W: http://mirror.egtvedt.no/avr32linux.org/
|
||||
W: http://avrfreaks.net/
|
||||
S: Maintained
|
||||
F: arch/avr32/
|
||||
|
|
|
@ -506,6 +506,7 @@ isl1208_rtc_interrupt(int irq, void *data)
|
|||
{
|
||||
unsigned long timeout = jiffies + msecs_to_jiffies(1000);
|
||||
struct i2c_client *client = data;
|
||||
struct rtc_device *rtc = i2c_get_clientdata(client);
|
||||
int handled = 0, sr, err;
|
||||
|
||||
/*
|
||||
|
@ -528,6 +529,8 @@ isl1208_rtc_interrupt(int irq, void *data)
|
|||
if (sr & ISL1208_REG_SR_ALM) {
|
||||
dev_dbg(&client->dev, "alarm!\n");
|
||||
|
||||
rtc_update_irq(rtc, 1, RTC_IRQF | RTC_AF);
|
||||
|
||||
/* Clear the alarm */
|
||||
sr &= ~ISL1208_REG_SR_ALM;
|
||||
sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr);
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
#define RTC_YMR 0x34 /* Year match register */
|
||||
#define RTC_YLR 0x38 /* Year data load register */
|
||||
|
||||
#define RTC_CR_EN (1 << 0) /* counter enable bit */
|
||||
#define RTC_CR_CWEN (1 << 26) /* Clockwatch enable bit */
|
||||
|
||||
#define RTC_TCR_EN (1 << 1) /* Periodic timer enable bit */
|
||||
|
@ -320,7 +321,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
|
|||
struct pl031_local *ldata;
|
||||
struct pl031_vendor_data *vendor = id->data;
|
||||
struct rtc_class_ops *ops = &vendor->ops;
|
||||
unsigned long time;
|
||||
unsigned long time, data;
|
||||
|
||||
ret = amba_request_regions(adev, NULL);
|
||||
if (ret)
|
||||
|
@ -345,10 +346,11 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
|
|||
dev_dbg(&adev->dev, "designer ID = 0x%02x\n", amba_manf(adev));
|
||||
dev_dbg(&adev->dev, "revision = 0x%01x\n", amba_rev(adev));
|
||||
|
||||
data = readl(ldata->base + RTC_CR);
|
||||
/* Enable the clockwatch on ST Variants */
|
||||
if (vendor->clockwatch)
|
||||
writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN,
|
||||
ldata->base + RTC_CR);
|
||||
data |= RTC_CR_CWEN;
|
||||
writel(data | RTC_CR_EN, ldata->base + RTC_CR);
|
||||
|
||||
/*
|
||||
* On ST PL031 variants, the RTC reset value does not provide correct
|
||||
|
|
|
@ -137,7 +137,7 @@ static int vt8500_rtc_set_time(struct device *dev, struct rtc_time *tm)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
writel((bin2bcd(tm->tm_year - 100) << DATE_YEAR_S)
|
||||
writel((bin2bcd(tm->tm_year % 100) << DATE_YEAR_S)
|
||||
| (bin2bcd(tm->tm_mon + 1) << DATE_MONTH_S)
|
||||
| (bin2bcd(tm->tm_mday))
|
||||
| ((tm->tm_year >= 200) << DATE_CENTURY_S),
|
||||
|
|
|
@ -664,8 +664,11 @@ static int nilfs_ioctl_clean_segments(struct inode *inode, struct file *filp,
|
|||
if (ret < 0)
|
||||
printk(KERN_ERR "NILFS: GC failed during preparation: "
|
||||
"cannot read source blocks: err=%d\n", ret);
|
||||
else
|
||||
else {
|
||||
if (nilfs_sb_need_update(nilfs))
|
||||
set_nilfs_discontinued(nilfs);
|
||||
ret = nilfs_clean_segments(inode->i_sb, argv, kbufs);
|
||||
}
|
||||
|
||||
nilfs_remove_all_gcinodes(nilfs);
|
||||
clear_nilfs_gc_running(nilfs);
|
||||
|
|
|
@ -429,7 +429,7 @@ extern int memcg_limited_groups_array_size;
|
|||
* the slab_mutex must be held when looping through those caches
|
||||
*/
|
||||
#define for_each_memcg_cache_index(_idx) \
|
||||
for ((_idx) = 0; i < memcg_limited_groups_array_size; (_idx)++)
|
||||
for ((_idx) = 0; (_idx) < memcg_limited_groups_array_size; (_idx)++)
|
||||
|
||||
static inline bool memcg_kmem_enabled(void)
|
||||
{
|
||||
|
|
|
@ -151,7 +151,7 @@ struct mmu_notifier_ops {
|
|||
* Therefore notifier chains can only be traversed when either
|
||||
*
|
||||
* 1. mmap_sem is held.
|
||||
* 2. One of the reverse map locks is held (i_mmap_mutex or anon_vma->mutex).
|
||||
* 2. One of the reverse map locks is held (i_mmap_mutex or anon_vma->rwsem).
|
||||
* 3. No other concurrent thread can access the list (release)
|
||||
*/
|
||||
struct mmu_notifier {
|
||||
|
|
|
@ -1257,6 +1257,10 @@ struct page *follow_trans_huge_pmd(struct vm_area_struct *vma,
|
|||
if (flags & FOLL_WRITE && !pmd_write(*pmd))
|
||||
goto out;
|
||||
|
||||
/* Avoid dumping huge zero page */
|
||||
if ((flags & FOLL_DUMP) && is_huge_zero_pmd(*pmd))
|
||||
return ERR_PTR(-EFAULT);
|
||||
|
||||
page = pmd_page(*pmd);
|
||||
VM_BUG_ON(!PageHead(page));
|
||||
if (flags & FOLL_TOUCH) {
|
||||
|
|
|
@ -3033,6 +3033,7 @@ unsigned long hugetlb_change_protection(struct vm_area_struct *vma,
|
|||
if (!huge_pte_none(huge_ptep_get(ptep))) {
|
||||
pte = huge_ptep_get_and_clear(mm, address, ptep);
|
||||
pte = pte_mkhuge(pte_modify(pte, newprot));
|
||||
pte = arch_make_huge_pte(pte, vma, NULL, 0);
|
||||
set_huge_pte_at(mm, address, ptep, pte);
|
||||
pages++;
|
||||
}
|
||||
|
|
|
@ -160,8 +160,10 @@ static int remove_migration_pte(struct page *new, struct vm_area_struct *vma,
|
|||
if (is_write_migration_entry(entry))
|
||||
pte = pte_mkwrite(pte);
|
||||
#ifdef CONFIG_HUGETLB_PAGE
|
||||
if (PageHuge(new))
|
||||
if (PageHuge(new)) {
|
||||
pte = pte_mkhuge(pte);
|
||||
pte = arch_make_huge_pte(pte, vma, new, 0);
|
||||
}
|
||||
#endif
|
||||
flush_cache_page(vma, addr, pte_pfn(pte));
|
||||
set_pte_at(mm, addr, ptep, pte);
|
||||
|
|
|
@ -2943,7 +2943,7 @@ static void vm_lock_mapping(struct mm_struct *mm, struct address_space *mapping)
|
|||
* vma in this mm is backed by the same anon_vma or address_space.
|
||||
*
|
||||
* We can take all the locks in random order because the VM code
|
||||
* taking i_mmap_mutex or anon_vma->mutex outside the mmap_sem never
|
||||
* taking i_mmap_mutex or anon_vma->rwsem outside the mmap_sem never
|
||||
* takes more than one of them in a row. Secondly we're protected
|
||||
* against a concurrent mm_take_all_locks() by the mm_all_locks_mutex.
|
||||
*
|
||||
|
|
|
@ -19,6 +19,7 @@ bpf-direct-objs := bpf-direct.o
|
|||
|
||||
# Try to match the kernel target.
|
||||
ifndef CONFIG_64BIT
|
||||
ifndef CROSS_COMPILE
|
||||
|
||||
# s390 has -m31 flag to build 31 bit binaries
|
||||
ifndef CONFIG_S390
|
||||
|
@ -35,6 +36,7 @@ HOSTLOADLIBES_bpf-direct += $(MFLAG)
|
|||
HOSTLOADLIBES_bpf-fancy += $(MFLAG)
|
||||
HOSTLOADLIBES_dropper += $(MFLAG)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Tell kbuild to always build the programs
|
||||
always := $(hostprogs-y)
|
||||
|
|
|
@ -230,12 +230,12 @@ our $Inline = qr{inline|__always_inline|noinline};
|
|||
our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]};
|
||||
our $Lval = qr{$Ident(?:$Member)*};
|
||||
|
||||
our $Float_hex = qr{(?i:0x[0-9a-f]+p-?[0-9]+[fl]?)};
|
||||
our $Float_dec = qr{(?i:((?:[0-9]+\.[0-9]*|[0-9]*\.[0-9]+)(?:e-?[0-9]+)?[fl]?))};
|
||||
our $Float_int = qr{(?i:[0-9]+e-?[0-9]+[fl]?)};
|
||||
our $Float_hex = qr{(?i)0x[0-9a-f]+p-?[0-9]+[fl]?};
|
||||
our $Float_dec = qr{(?i)(?:[0-9]+\.[0-9]*|[0-9]*\.[0-9]+)(?:e-?[0-9]+)?[fl]?};
|
||||
our $Float_int = qr{(?i)[0-9]+e-?[0-9]+[fl]?};
|
||||
our $Float = qr{$Float_hex|$Float_dec|$Float_int};
|
||||
our $Constant = qr{(?:$Float|(?i:(?:0x[0-9a-f]+|[0-9]+)[ul]*))};
|
||||
our $Assignment = qr{(?:\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=)};
|
||||
our $Constant = qr{$Float|(?i)(?:0x[0-9a-f]+|[0-9]+)[ul]*};
|
||||
our $Assignment = qr{\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=};
|
||||
our $Compare = qr{<=|>=|==|!=|<|>};
|
||||
our $Operators = qr{
|
||||
<=|>=|==|!=|
|
||||
|
|
2
tools/vm/.gitignore
vendored
Normal file
2
tools/vm/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
slabinfo
|
||||
page-types
|
Loading…
Reference in a new issue