diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-04-12 17:15:21 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-04-12 17:15:21 -0400 |
| commit | ecca5c3acc0d0933d89abc44e60afb0cc8170e35 (patch) | |
| tree | e765a76f8bf07717b4c446193bc4e2601b4fd038 | |
| parent | 174808af90a06ee59ffedd60c00c252f1f887f25 (diff) | |
| parent | 026ee1f66aaa7f01b617a0ba89ac4b531f9603f1 (diff) | |
Merge branch 'akpm' (Andrew's patch-bomb)
Merge fixes from Andrew Morton.
* emailed from Andrew Morton <akpm@linux-foundation.org>: (14 patches)
panic: fix stack dump print on direct call to panic()
drivers/rtc/rtc-pl031.c: enable clock on all ST variants
Revert "mm: vmscan: fix misused nr_reclaimed in shrink_mem_cgroup_zone()"
hugetlb: fix race condition in hugetlb_fault()
drivers/rtc/rtc-twl.c: use static register while reading time
drivers/rtc/rtc-s3c.c: add placeholder for driver private data
drivers/rtc/rtc-s3c.c: fix compilation error
MAINTAINERS: add PCDP console maintainer
memcg: do not open code accesses to res_counter members
drivers/rtc/rtc-efi.c: fix section mismatch warning
drivers/rtc/rtc-r9701.c: reset registers if invalid values are detected
drivers/char/random.c: fix boot id uniqueness race
memcg: fix broken boolen expression
memcg: fix up documentation on global LRU
| -rw-r--r-- | Documentation/cgroups/memory.txt | 5 | ||||
| -rw-r--r-- | MAINTAINERS | 5 | ||||
| -rw-r--r-- | drivers/char/random.c | 11 | ||||
| -rw-r--r-- | drivers/rtc/rtc-efi.c | 1 | ||||
| -rw-r--r-- | drivers/rtc/rtc-pl031.c | 3 | ||||
| -rw-r--r-- | drivers/rtc/rtc-r9701.c | 22 | ||||
| -rw-r--r-- | drivers/rtc/rtc-s3c.c | 31 | ||||
| -rw-r--r-- | drivers/rtc/rtc-twl.c | 43 | ||||
| -rw-r--r-- | kernel/panic.c | 2 | ||||
| -rw-r--r-- | mm/hugetlb.c | 2 | ||||
| -rw-r--r-- | mm/memcontrol.c | 6 | ||||
| -rw-r--r-- | mm/vmscan.c | 7 |
12 files changed, 105 insertions, 33 deletions
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt index 4c95c0034a4b..9b1067afb224 100644 --- a/Documentation/cgroups/memory.txt +++ b/Documentation/cgroups/memory.txt | |||
| @@ -34,8 +34,7 @@ Current Status: linux-2.6.34-mmotm(development version of 2010/April) | |||
| 34 | 34 | ||
| 35 | Features: | 35 | Features: |
| 36 | - accounting anonymous pages, file caches, swap caches usage and limiting them. | 36 | - accounting anonymous pages, file caches, swap caches usage and limiting them. |
| 37 | - private LRU and reclaim routine. (system's global LRU and private LRU | 37 | - pages are linked to per-memcg LRU exclusively, and there is no global LRU. |
| 38 | work independently from each other) | ||
| 39 | - optionally, memory+swap usage can be accounted and limited. | 38 | - optionally, memory+swap usage can be accounted and limited. |
| 40 | - hierarchical accounting | 39 | - hierarchical accounting |
| 41 | - soft limit | 40 | - soft limit |
| @@ -154,7 +153,7 @@ updated. page_cgroup has its own LRU on cgroup. | |||
| 154 | 2.2.1 Accounting details | 153 | 2.2.1 Accounting details |
| 155 | 154 | ||
| 156 | All mapped anon pages (RSS) and cache pages (Page Cache) are accounted. | 155 | All mapped anon pages (RSS) and cache pages (Page Cache) are accounted. |
| 157 | Some pages which are never reclaimable and will not be on the global LRU | 156 | Some pages which are never reclaimable and will not be on the LRU |
| 158 | are not accounted. We just account pages under usual VM management. | 157 | are not accounted. We just account pages under usual VM management. |
| 159 | 158 | ||
| 160 | RSS pages are accounted at page_fault unless they've already been accounted | 159 | RSS pages are accounted at page_fault unless they've already been accounted |
diff --git a/MAINTAINERS b/MAINTAINERS index f08bac96c431..32671e00800d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -5117,6 +5117,11 @@ F: drivers/i2c/busses/i2c-pca-* | |||
| 5117 | F: include/linux/i2c-algo-pca.h | 5117 | F: include/linux/i2c-algo-pca.h |
| 5118 | F: include/linux/i2c-pca-platform.h | 5118 | F: include/linux/i2c-pca-platform.h |
| 5119 | 5119 | ||
| 5120 | PCDP - PRIMARY CONSOLE AND DEBUG PORT | ||
| 5121 | M: Khalid Aziz <khalid.aziz@hp.com> | ||
| 5122 | S: Maintained | ||
| 5123 | F: drivers/firmware/pcdp.* | ||
| 5124 | |||
| 5120 | PCI ERROR RECOVERY | 5125 | PCI ERROR RECOVERY |
| 5121 | M: Linas Vepstas <linasvepstas@gmail.com> | 5126 | M: Linas Vepstas <linasvepstas@gmail.com> |
| 5122 | L: linux-pci@vger.kernel.org | 5127 | L: linux-pci@vger.kernel.org |
diff --git a/drivers/char/random.c b/drivers/char/random.c index 54ca8b23cde3..4ec04a754733 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c | |||
| @@ -1260,10 +1260,15 @@ static int proc_do_uuid(ctl_table *table, int write, | |||
| 1260 | uuid = table->data; | 1260 | uuid = table->data; |
| 1261 | if (!uuid) { | 1261 | if (!uuid) { |
| 1262 | uuid = tmp_uuid; | 1262 | uuid = tmp_uuid; |
| 1263 | uuid[8] = 0; | ||
| 1264 | } | ||
| 1265 | if (uuid[8] == 0) | ||
| 1266 | generate_random_uuid(uuid); | 1263 | generate_random_uuid(uuid); |
| 1264 | } else { | ||
| 1265 | static DEFINE_SPINLOCK(bootid_spinlock); | ||
| 1266 | |||
| 1267 | spin_lock(&bootid_spinlock); | ||
| 1268 | if (!uuid[8]) | ||
| 1269 | generate_random_uuid(uuid); | ||
| 1270 | spin_unlock(&bootid_spinlock); | ||
| 1271 | } | ||
| 1267 | 1272 | ||
| 1268 | sprintf(buf, "%pU", uuid); | 1273 | sprintf(buf, "%pU", uuid); |
| 1269 | 1274 | ||
diff --git a/drivers/rtc/rtc-efi.c b/drivers/rtc/rtc-efi.c index 550292304b0f..c9f890b088da 100644 --- a/drivers/rtc/rtc-efi.c +++ b/drivers/rtc/rtc-efi.c | |||
| @@ -213,7 +213,6 @@ static struct platform_driver efi_rtc_driver = { | |||
| 213 | .name = "rtc-efi", | 213 | .name = "rtc-efi", |
| 214 | .owner = THIS_MODULE, | 214 | .owner = THIS_MODULE, |
| 215 | }, | 215 | }, |
| 216 | .probe = efi_rtc_probe, | ||
| 217 | .remove = __exit_p(efi_rtc_remove), | 216 | .remove = __exit_p(efi_rtc_remove), |
| 218 | }; | 217 | }; |
| 219 | 218 | ||
diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c index 692de7360e94..684ef4bbfce4 100644 --- a/drivers/rtc/rtc-pl031.c +++ b/drivers/rtc/rtc-pl031.c | |||
| @@ -339,8 +339,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id) | |||
| 339 | dev_dbg(&adev->dev, "revision = 0x%01x\n", ldata->hw_revision); | 339 | dev_dbg(&adev->dev, "revision = 0x%01x\n", ldata->hw_revision); |
| 340 | 340 | ||
| 341 | /* Enable the clockwatch on ST Variants */ | 341 | /* Enable the clockwatch on ST Variants */ |
| 342 | if ((ldata->hw_designer == AMBA_VENDOR_ST) && | 342 | if (ldata->hw_designer == AMBA_VENDOR_ST) |
| 343 | (ldata->hw_revision > 1)) | ||
| 344 | writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN, | 343 | writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN, |
| 345 | ldata->base + RTC_CR); | 344 | ldata->base + RTC_CR); |
| 346 | 345 | ||
diff --git a/drivers/rtc/rtc-r9701.c b/drivers/rtc/rtc-r9701.c index 7f8e6c247935..33b6ba0afa0d 100644 --- a/drivers/rtc/rtc-r9701.c +++ b/drivers/rtc/rtc-r9701.c | |||
| @@ -122,6 +122,7 @@ static const struct rtc_class_ops r9701_rtc_ops = { | |||
| 122 | static int __devinit r9701_probe(struct spi_device *spi) | 122 | static int __devinit r9701_probe(struct spi_device *spi) |
| 123 | { | 123 | { |
| 124 | struct rtc_device *rtc; | 124 | struct rtc_device *rtc; |
| 125 | struct rtc_time dt; | ||
| 125 | unsigned char tmp; | 126 | unsigned char tmp; |
| 126 | int res; | 127 | int res; |
| 127 | 128 | ||
| @@ -132,6 +133,27 @@ static int __devinit r9701_probe(struct spi_device *spi) | |||
| 132 | return -ENODEV; | 133 | return -ENODEV; |
| 133 | } | 134 | } |
| 134 | 135 | ||
| 136 | /* | ||
| 137 | * The device seems to be present. Now check if the registers | ||
| 138 | * contain invalid values. If so, try to write a default date: | ||
| 139 | * 2000/1/1 00:00:00 | ||
| 140 | */ | ||
| 141 | r9701_get_datetime(&spi->dev, &dt); | ||
| 142 | if (rtc_valid_tm(&dt)) { | ||
| 143 | dev_info(&spi->dev, "trying to repair invalid date/time\n"); | ||
| 144 | dt.tm_sec = 0; | ||
| 145 | dt.tm_min = 0; | ||
| 146 | dt.tm_hour = 0; | ||
| 147 | dt.tm_mday = 1; | ||
| 148 | dt.tm_mon = 0; | ||
| 149 | dt.tm_year = 100; | ||
| 150 | |||
| 151 | if (r9701_set_datetime(&spi->dev, &dt)) { | ||
| 152 | dev_err(&spi->dev, "cannot repair RTC register\n"); | ||
| 153 | return -ENODEV; | ||
| 154 | } | ||
| 155 | } | ||
| 156 | |||
| 135 | rtc = rtc_device_register("r9701", | 157 | rtc = rtc_device_register("r9701", |
| 136 | &spi->dev, &r9701_rtc_ops, THIS_MODULE); | 158 | &spi->dev, &r9701_rtc_ops, THIS_MODULE); |
| 137 | if (IS_ERR(rtc)) | 159 | if (IS_ERR(rtc)) |
diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c index 9ccea134a996..3f3a29752369 100644 --- a/drivers/rtc/rtc-s3c.c +++ b/drivers/rtc/rtc-s3c.c | |||
| @@ -40,6 +40,10 @@ enum s3c_cpu_type { | |||
| 40 | TYPE_S3C64XX, | 40 | TYPE_S3C64XX, |
| 41 | }; | 41 | }; |
| 42 | 42 | ||
| 43 | struct s3c_rtc_drv_data { | ||
| 44 | int cpu_type; | ||
| 45 | }; | ||
| 46 | |||
| 43 | /* I have yet to find an S3C implementation with more than one | 47 | /* I have yet to find an S3C implementation with more than one |
| 44 | * of these rtc blocks in */ | 48 | * of these rtc blocks in */ |
| 45 | 49 | ||
| @@ -446,10 +450,12 @@ static const struct of_device_id s3c_rtc_dt_match[]; | |||
| 446 | static inline int s3c_rtc_get_driver_data(struct platform_device *pdev) | 450 | static inline int s3c_rtc_get_driver_data(struct platform_device *pdev) |
| 447 | { | 451 | { |
| 448 | #ifdef CONFIG_OF | 452 | #ifdef CONFIG_OF |
| 453 | struct s3c_rtc_drv_data *data; | ||
| 449 | if (pdev->dev.of_node) { | 454 | if (pdev->dev.of_node) { |
| 450 | const struct of_device_id *match; | 455 | const struct of_device_id *match; |
| 451 | match = of_match_node(s3c_rtc_dt_match, pdev->dev.of_node); | 456 | match = of_match_node(s3c_rtc_dt_match, pdev->dev.of_node); |
| 452 | return match->data; | 457 | data = (struct s3c_rtc_drv_data *) match->data; |
| 458 | return data->cpu_type; | ||
| 453 | } | 459 | } |
| 454 | #endif | 460 | #endif |
| 455 | return platform_get_device_id(pdev)->driver_data; | 461 | return platform_get_device_id(pdev)->driver_data; |
| @@ -664,20 +670,27 @@ static int s3c_rtc_resume(struct platform_device *pdev) | |||
| 664 | #define s3c_rtc_resume NULL | 670 | #define s3c_rtc_resume NULL |
| 665 | #endif | 671 | #endif |
| 666 | 672 | ||
| 673 | static struct s3c_rtc_drv_data s3c_rtc_drv_data_array[] = { | ||
| 674 | [TYPE_S3C2410] = { TYPE_S3C2410 }, | ||
| 675 | [TYPE_S3C2416] = { TYPE_S3C2416 }, | ||
