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
|
@ -1489,7 +1489,7 @@ AVR32 ARCHITECTURE
|
||||||
M: Haavard Skinnemoen <hskinnemoen@gmail.com>
|
M: Haavard Skinnemoen <hskinnemoen@gmail.com>
|
||||||
M: Hans-Christian Egtvedt <egtvedt@samfundet.no>
|
M: Hans-Christian Egtvedt <egtvedt@samfundet.no>
|
||||||
W: http://www.atmel.com/products/AVR32/
|
W: http://www.atmel.com/products/AVR32/
|
||||||
W: http://avr32linux.org/
|
W: http://mirror.egtvedt.no/avr32linux.org/
|
||||||
W: http://avrfreaks.net/
|
W: http://avrfreaks.net/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/avr32/
|
F: arch/avr32/
|
||||||
|
|
|
@ -506,6 +506,7 @@ isl1208_rtc_interrupt(int irq, void *data)
|
||||||
{
|
{
|
||||||
unsigned long timeout = jiffies + msecs_to_jiffies(1000);
|
unsigned long timeout = jiffies + msecs_to_jiffies(1000);
|
||||||
struct i2c_client *client = data;
|
struct i2c_client *client = data;
|
||||||
|
struct rtc_device *rtc = i2c_get_clientdata(client);
|
||||||
int handled = 0, sr, err;
|
int handled = 0, sr, err;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -528,6 +529,8 @@ isl1208_rtc_interrupt(int irq, void *data)
|
||||||
if (sr & ISL1208_REG_SR_ALM) {
|
if (sr & ISL1208_REG_SR_ALM) {
|
||||||
dev_dbg(&client->dev, "alarm!\n");
|
dev_dbg(&client->dev, "alarm!\n");
|
||||||
|
|
||||||
|
rtc_update_irq(rtc, 1, RTC_IRQF | RTC_AF);
|
||||||
|
|
||||||
/* Clear the alarm */
|
/* Clear the alarm */
|
||||||
sr &= ~ISL1208_REG_SR_ALM;
|
sr &= ~ISL1208_REG_SR_ALM;
|
||||||
sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr);
|
sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr);
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
#define RTC_YMR 0x34 /* Year match register */
|
#define RTC_YMR 0x34 /* Year match register */
|
||||||
#define RTC_YLR 0x38 /* Year data load 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_CR_CWEN (1 << 26) /* Clockwatch enable bit */
|
||||||
|
|
||||||
#define RTC_TCR_EN (1 << 1) /* Periodic timer 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_local *ldata;
|
||||||
struct pl031_vendor_data *vendor = id->data;
|
struct pl031_vendor_data *vendor = id->data;
|
||||||
struct rtc_class_ops *ops = &vendor->ops;
|
struct rtc_class_ops *ops = &vendor->ops;
|
||||||
unsigned long time;
|
unsigned long time, data;
|
||||||
|
|
||||||
ret = amba_request_regions(adev, NULL);
|
ret = amba_request_regions(adev, NULL);
|
||||||
if (ret)
|
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, "designer ID = 0x%02x\n", amba_manf(adev));
|
||||||
dev_dbg(&adev->dev, "revision = 0x%01x\n", amba_rev(adev));
|
dev_dbg(&adev->dev, "revision = 0x%01x\n", amba_rev(adev));
|
||||||
|
|
||||||
|
data = readl(ldata->base + RTC_CR);
|
||||||
/* Enable the clockwatch on ST Variants */
|
/* Enable the clockwatch on ST Variants */
|
||||||
if (vendor->clockwatch)
|
if (vendor->clockwatch)
|
||||||
writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN,
|
data |= RTC_CR_CWEN;
|
||||||
ldata->base + RTC_CR);
|
writel(data | RTC_CR_EN, ldata->base + RTC_CR);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* On ST PL031 variants, the RTC reset value does not provide correct
|
* 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;
|
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_mon + 1) << DATE_MONTH_S)
|
||||||
| (bin2bcd(tm->tm_mday))
|
| (bin2bcd(tm->tm_mday))
|
||||||
| ((tm->tm_year >= 200) << DATE_CENTURY_S),
|
| ((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)
|
if (ret < 0)
|
||||||
printk(KERN_ERR "NILFS: GC failed during preparation: "
|
printk(KERN_ERR "NILFS: GC failed during preparation: "
|
||||||
"cannot read source blocks: err=%d\n", ret);
|
"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);
|
ret = nilfs_clean_segments(inode->i_sb, argv, kbufs);
|
||||||
|
}
|
||||||
|
|
||||||
nilfs_remove_all_gcinodes(nilfs);
|
nilfs_remove_all_gcinodes(nilfs);
|
||||||
clear_nilfs_gc_running(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
|
* the slab_mutex must be held when looping through those caches
|
||||||
*/
|
*/
|
||||||
#define for_each_memcg_cache_index(_idx) \
|
#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)
|
static inline bool memcg_kmem_enabled(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -151,7 +151,7 @@ struct mmu_notifier_ops {
|
||||||
* Therefore notifier chains can only be traversed when either
|
* Therefore notifier chains can only be traversed when either
|
||||||
*
|
*
|
||||||
* 1. mmap_sem is held.
|
* 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)
|
* 3. No other concurrent thread can access the list (release)
|
||||||
*/
|
*/
|
||||||
struct mmu_notifier {
|
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))
|
if (flags & FOLL_WRITE && !pmd_write(*pmd))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
/* Avoid dumping huge zero page */
|
||||||
|
if ((flags & FOLL_DUMP) && is_huge_zero_pmd(*pmd))
|
||||||
|
return ERR_PTR(-EFAULT);
|
||||||
|
|
||||||
page = pmd_page(*pmd);
|
page = pmd_page(*pmd);
|
||||||
VM_BUG_ON(!PageHead(page));
|
VM_BUG_ON(!PageHead(page));
|
||||||
if (flags & FOLL_TOUCH) {
|
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))) {
|
if (!huge_pte_none(huge_ptep_get(ptep))) {
|
||||||
pte = huge_ptep_get_and_clear(mm, address, ptep);
|
pte = huge_ptep_get_and_clear(mm, address, ptep);
|
||||||
pte = pte_mkhuge(pte_modify(pte, newprot));
|
pte = pte_mkhuge(pte_modify(pte, newprot));
|
||||||
|
pte = arch_make_huge_pte(pte, vma, NULL, 0);
|
||||||
set_huge_pte_at(mm, address, ptep, pte);
|
set_huge_pte_at(mm, address, ptep, pte);
|
||||||
pages++;
|
pages++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,8 +160,10 @@ static int remove_migration_pte(struct page *new, struct vm_area_struct *vma,
|
||||||
if (is_write_migration_entry(entry))
|
if (is_write_migration_entry(entry))
|
||||||
pte = pte_mkwrite(pte);
|
pte = pte_mkwrite(pte);
|
||||||
#ifdef CONFIG_HUGETLB_PAGE
|
#ifdef CONFIG_HUGETLB_PAGE
|
||||||
if (PageHuge(new))
|
if (PageHuge(new)) {
|
||||||
pte = pte_mkhuge(pte);
|
pte = pte_mkhuge(pte);
|
||||||
|
pte = arch_make_huge_pte(pte, vma, new, 0);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
flush_cache_page(vma, addr, pte_pfn(pte));
|
flush_cache_page(vma, addr, pte_pfn(pte));
|
||||||
set_pte_at(mm, addr, ptep, 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.
|
* 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
|
* 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
|
* 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.
|
* 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.
|
# Try to match the kernel target.
|
||||||
ifndef CONFIG_64BIT
|
ifndef CONFIG_64BIT
|
||||||
|
ifndef CROSS_COMPILE
|
||||||
|
|
||||||
# s390 has -m31 flag to build 31 bit binaries
|
# s390 has -m31 flag to build 31 bit binaries
|
||||||
ifndef CONFIG_S390
|
ifndef CONFIG_S390
|
||||||
|
@ -35,6 +36,7 @@ HOSTLOADLIBES_bpf-direct += $(MFLAG)
|
||||||
HOSTLOADLIBES_bpf-fancy += $(MFLAG)
|
HOSTLOADLIBES_bpf-fancy += $(MFLAG)
|
||||||
HOSTLOADLIBES_dropper += $(MFLAG)
|
HOSTLOADLIBES_dropper += $(MFLAG)
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# Tell kbuild to always build the programs
|
# Tell kbuild to always build the programs
|
||||||
always := $(hostprogs-y)
|
always := $(hostprogs-y)
|
||||||
|
|
|
@ -230,12 +230,12 @@ our $Inline = qr{inline|__always_inline|noinline};
|
||||||
our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]};
|
our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]};
|
||||||
our $Lval = qr{$Ident(?:$Member)*};
|
our $Lval = qr{$Ident(?:$Member)*};
|
||||||
|
|
||||||
our $Float_hex = qr{(?i:0x[0-9a-f]+p-?[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_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_int = qr{(?i)[0-9]+e-?[0-9]+[fl]?};
|
||||||
our $Float = qr{$Float_hex|$Float_dec|$Float_int};
|
our $Float = qr{$Float_hex|$Float_dec|$Float_int};
|
||||||
our $Constant = qr{(?:$Float|(?i:(?:0x[0-9a-f]+|[0-9]+)[ul]*))};
|
our $Constant = qr{$Float|(?i)(?:0x[0-9a-f]+|[0-9]+)[ul]*};
|
||||||
our $Assignment = qr{(?:\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=)};
|
our $Assignment = qr{\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=};
|
||||||
our $Compare = qr{<=|>=|==|!=|<|>};
|
our $Compare = qr{<=|>=|==|!=|<|>};
|
||||||
our $Operators = qr{
|
our $Operators = qr{
|
||||||
<=|>=|==|!=|
|
<=|>=|==|!=|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
slabinfo
|
||||||
|
page-types
|
Reference in New Issue