Skip to content

Commit 10788fc

Browse files
authored
Merge pull request #150 from zandrey/5.4.x+fslc
Update 5.4.x+fslc to v5.4.70
2 parents 527fdf5 + b573f6a commit 10788fc

File tree

66 files changed

+570
-420
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+570
-420
lines changed

Documentation/admin-guide/iostats.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ Field 10 -- # of milliseconds spent doing I/Os
9999

100100
Since 5.0 this field counts jiffies when at least one request was
101101
started or completed. If request runs more than 2 jiffies then some
102-
I/O time will not be accounted unless there are other requests.
102+
I/O time might be not accounted in case of concurrent requests.
103103

104104
Field 11 -- weighted # of milliseconds spent doing I/Os
105105
This field is incremented at each I/O start, I/O completion, I/O
@@ -133,6 +133,9 @@ are summed (possibly overflowing the unsigned long variable they are
133133
summed to) and the result given to the user. There is no convenient
134134
user interface for accessing the per-CPU counters themselves.
135135

136+
Since 4.19 request times are measured with nanoseconds precision and
137+
truncated to milliseconds before showing in this interface.
138+
136139
Disks vs Partitions
137140
-------------------
138141

Documentation/devicetree/bindings/gpio/sgpio-aspeed.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ Required properties:
2020
- gpio-controller : Marks the device node as a GPIO controller
2121
- interrupts : Interrupt specifier, see interrupt-controller/interrupts.txt
2222
- interrupt-controller : Mark the GPIO controller as an interrupt-controller
23-
- ngpios : number of GPIO lines, see gpio.txt
24-
(should be multiple of 8, up to 80 pins)
23+
- ngpios : number of *hardware* GPIO lines, see gpio.txt. This will expose
24+
2 software GPIOs per hardware GPIO: one for hardware input, one for hardware
25+
output. Up to 80 pins, must be a multiple of 8.
2526
- clocks : A phandle to the APB clock for SGPM clock division
2627
- bus-frequency : SGPM CLK frequency
2728

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 5
33
PATCHLEVEL = 4
4-
SUBLEVEL = 69
4+
SUBLEVEL = 70
55
EXTRAVERSION =
66
NAME = Kleptomaniac Octopus
77

arch/ia64/mm/init.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ virtual_memmap_init(u64 start, u64 end, void *arg)
518518
if (map_start < map_end)
519519
memmap_init_zone((unsigned long)(map_end - map_start),
520520
args->nid, args->zone, page_to_pfn(map_start),
521-
MEMMAP_EARLY, NULL);
521+
MEMINIT_EARLY, NULL);
522522
return 0;
523523
}
524524

@@ -527,8 +527,8 @@ memmap_init (unsigned long size, int nid, unsigned long zone,
527527
unsigned long start_pfn)
528528
{
529529
if (!vmem_map) {
530-
memmap_init_zone(size, nid, zone, start_pfn, MEMMAP_EARLY,
531-
NULL);
530+
memmap_init_zone(size, nid, zone, start_pfn,
531+
MEMINIT_EARLY, NULL);
532532
} else {
533533
struct page *start;
534534
struct memmap_init_callback_data args;

block/bio.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1754,14 +1754,14 @@ void bio_check_pages_dirty(struct bio *bio)
17541754
schedule_work(&bio_dirty_work);
17551755
}
17561756

1757-
void update_io_ticks(struct hd_struct *part, unsigned long now)
1757+
void update_io_ticks(struct hd_struct *part, unsigned long now, bool end)
17581758
{
17591759
unsigned long stamp;
17601760
again:
17611761
stamp = READ_ONCE(part->stamp);
17621762
if (unlikely(stamp != now)) {
17631763
if (likely(cmpxchg(&part->stamp, stamp, now) == stamp)) {
1764-
__part_stat_add(part, io_ticks, 1);
1764+
__part_stat_add(part, io_ticks, end ? now - stamp : 1);
17651765
}
17661766
}
17671767
if (part->partno) {
@@ -1777,7 +1777,7 @@ void generic_start_io_acct(struct request_queue *q, int op,
17771777

17781778
part_stat_lock();
17791779

1780-
update_io_ticks(part, jiffies);
1780+
update_io_ticks(part, jiffies, false);
17811781
part_stat_inc(part, ios[sgrp]);
17821782
part_stat_add(part, sectors[sgrp], sectors);
17831783
part_inc_in_flight(q, part, op_is_write(op));
@@ -1795,7 +1795,7 @@ void generic_end_io_acct(struct request_queue *q, int req_op,
17951795

17961796
part_stat_lock();
17971797

1798-
update_io_ticks(part, now);
1798+
update_io_ticks(part, now, true);
17991799
part_stat_add(part, nsecs[sgrp], jiffies_to_nsecs(duration));
18001800
part_stat_add(part, time_in_queue, duration);
18011801
part_dec_in_flight(q, part, op_is_write(req_op));

block/blk-core.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,7 +1334,7 @@ void blk_account_io_done(struct request *req, u64 now)
13341334
part_stat_lock();
13351335
part = req->part;
13361336

1337-
update_io_ticks(part, jiffies);
1337+
update_io_ticks(part, jiffies, true);
13381338
part_stat_inc(part, ios[sgrp]);
13391339
part_stat_add(part, nsecs[sgrp], now - req->start_time_ns);
13401340
part_stat_add(part, time_in_queue, nsecs_to_jiffies64(now - req->start_time_ns));
@@ -1376,7 +1376,7 @@ void blk_account_io_start(struct request *rq, bool new_io)
13761376
rq->part = part;
13771377
}
13781378

1379-
update_io_ticks(part, jiffies);
1379+
update_io_ticks(part, jiffies, false);
13801380

13811381
part_stat_unlock();
13821382
}

drivers/base/node.c

Lines changed: 55 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -758,14 +758,36 @@ static int __ref get_nid_for_pfn(unsigned long pfn)
758758
return pfn_to_nid(pfn);
759759
}
760760

761+
static int do_register_memory_block_under_node(int nid,
762+
struct memory_block *mem_blk)
763+
{
764+
int ret;
765+
766+
/*
767+
* If this memory block spans multiple nodes, we only indicate
768+
* the last processed node.
769+
*/
770+
mem_blk->nid = nid;
771+
772+
ret = sysfs_create_link_nowarn(&node_devices[nid]->dev.kobj,
773+
&mem_blk->dev.kobj,
774+
kobject_name(&mem_blk->dev.kobj));
775+
if (ret)
776+
return ret;
777+
778+
return sysfs_create_link_nowarn(&mem_blk->dev.kobj,
779+
&node_devices[nid]->dev.kobj,
780+
kobject_name(&node_devices[nid]->dev.kobj));
781+
}
782+
761783
/* register memory section under specified node if it spans that node */
762-
static int register_mem_sect_under_node(struct memory_block *mem_blk,
763-
void *arg)
784+
static int register_mem_block_under_node_early(struct memory_block *mem_blk,
785+
void *arg)
764786
{
765787
unsigned long memory_block_pfns = memory_block_size_bytes() / PAGE_SIZE;
766788
unsigned long start_pfn = section_nr_to_pfn(mem_blk->start_section_nr);
767789
unsigned long end_pfn = start_pfn + memory_block_pfns - 1;
768-
int ret, nid = *(int *)arg;
790+
int nid = *(int *)arg;
769791
unsigned long pfn;
770792

771793
for (pfn = start_pfn; pfn <= end_pfn; pfn++) {
@@ -782,38 +804,33 @@ static int register_mem_sect_under_node(struct memory_block *mem_blk,
782804
}
783805

784806
/*
785-
* We need to check if page belongs to nid only for the boot
786-
* case, during hotplug we know that all pages in the memory
787-
* block belong to the same node.
788-
*/
789-
if (system_state == SYSTEM_BOOTING) {
790-
page_nid = get_nid_for_pfn(pfn);
791-
if (page_nid < 0)
792-
continue;
793-
if (page_nid != nid)
794-
continue;
795-
}
796-
797-
/*
798-
* If this memory block spans multiple nodes, we only indicate
799-
* the last processed node.
807+
* We need to check if page belongs to nid only at the boot
808+
* case because node's ranges can be interleaved.
800809
*/
801-
mem_blk->nid = nid;
802-
803-
ret = sysfs_create_link_nowarn(&node_devices[nid]->dev.kobj,
804-
&mem_blk->dev.kobj,
805-
kobject_name(&mem_blk->dev.kobj));
806-
if (ret)
807-
return ret;
810+
page_nid = get_nid_for_pfn(pfn);
811+
if (page_nid < 0)
812+
continue;
813+
if (page_nid != nid)
814+
continue;
808815

809-
return sysfs_create_link_nowarn(&mem_blk->dev.kobj,
810-
&node_devices[nid]->dev.kobj,
811-
kobject_name(&node_devices[nid]->dev.kobj));
816+
return do_register_memory_block_under_node(nid, mem_blk);
812817
}
813818
/* mem section does not span the specified node */
814819
return 0;
815820
}
816821

822+
/*
823+
* During hotplug we know that all pages in the memory block belong to the same
824+
* node.
825+
*/
826+
static int register_mem_block_under_node_hotplug(struct memory_block *mem_blk,
827+
void *arg)
828+
{
829+
int nid = *(int *)arg;
830+
831+
return do_register_memory_block_under_node(nid, mem_blk);
832+
}
833+
817834
/*
818835
* Unregister a memory block device under the node it spans. Memory blocks
819836
* with multiple nodes cannot be offlined and therefore also never be removed.
@@ -829,11 +846,19 @@ void unregister_memory_block_under_nodes(struct memory_block *mem_blk)
829846
kobject_name(&node_devices[mem_blk->nid]->dev.kobj));
830847
}
831848

832-
int link_mem_sections(int nid, unsigned long start_pfn, unsigned long end_pfn)
849+
int link_mem_sections(int nid, unsigned long start_pfn, unsigned long end_pfn,
850+
enum meminit_context context)
833851
{
852+
walk_memory_blocks_func_t func;
853+
854+
if (context == MEMINIT_HOTPLUG)
855+
func = register_mem_block_under_node_hotplug;
856+
else
857+
func = register_mem_block_under_node_early;
858+
834859
return walk_memory_blocks(PFN_PHYS(start_pfn),
835860
PFN_PHYS(end_pfn - start_pfn), (void *)&nid,
836-
register_mem_sect_under_node);
861+
func);
837862
}
838863

839864
#ifdef CONFIG_HUGETLBFS

drivers/clk/samsung/clk-exynos4.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -927,7 +927,7 @@ static const struct samsung_gate_clock exynos4210_gate_clks[] __initconst = {
927927
GATE(CLK_PCIE, "pcie", "aclk133", GATE_IP_FSYS, 14, 0, 0),
928928
GATE(CLK_SMMU_PCIE, "smmu_pcie", "aclk133", GATE_IP_FSYS, 18, 0, 0),
929929
GATE(CLK_MODEMIF, "modemif", "aclk100", GATE_IP_PERIL, 28, 0, 0),
930-
GATE(CLK_CHIPID, "chipid", "aclk100", E4210_GATE_IP_PERIR, 0, 0, 0),
930+
GATE(CLK_CHIPID, "chipid", "aclk100", E4210_GATE_IP_PERIR, 0, CLK_IGNORE_UNUSED, 0),
931931
GATE(CLK_SYSREG, "sysreg", "aclk100", E4210_GATE_IP_PERIR, 0,
932932
CLK_IGNORE_UNUSED, 0),
933933
GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4210_GATE_IP_PERIR, 11, 0,
@@ -969,7 +969,7 @@ static const struct samsung_gate_clock exynos4x12_gate_clks[] __initconst = {
969969
0),
970970
GATE(CLK_TSADC, "tsadc", "aclk133", E4X12_GATE_BUS_FSYS1, 16, 0, 0),
971971
GATE(CLK_MIPI_HSI, "mipi_hsi", "aclk133", GATE_IP_FSYS, 10, 0, 0),
972-
GATE(CLK_CHIPID, "chipid", "aclk100", E4X12_GATE_IP_PERIR, 0, 0, 0),
972+
GATE(CLK_CHIPID, "chipid", "aclk100", E4X12_GATE_IP_PERIR, 0, CLK_IGNORE_UNUSED, 0),
973973
GATE(CLK_SYSREG, "sysreg", "aclk100", E4X12_GATE_IP_PERIR, 1,
974974
CLK_IGNORE_UNUSED, 0),
975975
GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4X12_GATE_IP_PERIR, 11, 0,

drivers/clk/socfpga/clk-s10.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ static const struct stratix10_perip_cnt_clock s10_main_perip_cnt_clks[] = {
107107
{ STRATIX10_EMAC_B_FREE_CLK, "emacb_free_clk", NULL, emacb_free_mux, ARRAY_SIZE(emacb_free_mux),
108108
0, 0, 2, 0xB0, 1},
109109
{ STRATIX10_EMAC_PTP_FREE_CLK, "emac_ptp_free_clk", NULL, emac_ptp_free_mux,
110-
ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 4, 0xB0, 2},
110+
ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 2, 0xB0, 2},
111111
{ STRATIX10_GPIO_DB_FREE_CLK, "gpio_db_free_clk", NULL, gpio_db_free_mux,
112112
ARRAY_SIZE(gpio_db_free_mux), 0, 0, 0, 0xB0, 3},
113113
{ STRATIX10_SDMMC_FREE_CLK, "sdmmc_free_clk", NULL, sdmmc_free_mux,

drivers/clk/tegra/clk-pll.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,9 +1569,6 @@ static int clk_plle_tegra114_enable(struct clk_hw *hw)
15691569
unsigned long flags = 0;
15701570
unsigned long input_rate;
15711571

1572-
if (clk_pll_is_enabled(hw))
1573-
return 0;
1574-
15751572
input_rate = clk_hw_get_rate(clk_hw_get_parent(hw));
15761573

15771574
if (_get_table_rate(hw, &sel, pll->params->fixed_rate, input_rate))

0 commit comments

Comments
 (0)