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

Commit f11002a5 authored by Kenneth Magic's avatar Kenneth Magic Committed by Tri Vo
Browse files

Update PageTypeInfoParser to be less restrictive.

The page block order is an independent variable from the free
page order table in the kernel, so the parser should not error
out if they do not match.

Bug: 110559361
Test: incident_helper_test
Change-Id: I08ad9c8f9b29cc15b80a89929f3a1fb6886852e6
Merged-In: I08ad9c8f9b29cc15b80a89929f3a1fb6886852e6
(cherry picked from commit 3abb4399)
(cherry picked from commit 93ca85a1)
parent 6549309f
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -75,18 +75,13 @@ PageTypeInfoParser::Parse(const int in, const int out) const
            } else return BAD_VALUE;
            // expect part 2 starts with "type"
            if (stripPrefix(&record[2], "type")) {
                // expect the rest of part 2 has number of (pageBlockOrder + 2) parts
                // An example looks like:
                // header line:      type    0   1   2 3 4 5 6 7 8 9 10
                // record line: Unmovable  426 279 226 1 1 1 0 0 2 2  0
                // The pageBlockOrder = 10 and it's zero-indexed. so total parts
                // are 10 + 1(zero-indexed) + 1(the type part) = 12.
                record_t pageCounts = parseRecord(record[2]);
                int pageCountsSize = pageBlockOrder + 2;
                if ((int)pageCounts.size() != pageCountsSize) return BAD_VALUE;

                proto.write(PageTypeInfoProto::MigrateType::TYPE, pageCounts[0]);
                for (auto i=1; i<pageCountsSize; i++) {
                for (size_t i=1; i<pageCounts.size(); i++) {
                    proto.write(PageTypeInfoProto::MigrateType::FREE_PAGES_COUNT, toInt(pageCounts[i]));
                }
            } else return BAD_VALUE;
+2 −2
Original line number Diff line number Diff line
Page block order: 10
Pages per block:  1024
Page block order: 9
Pages per block:  512

Free pages count per migrate type at order       0      1      2      3      4      5      6      7      8      9     10 
Node    0, zone      DMA, type    Unmovable    426    279    226      1      1      1      0      0      2      2      0 
+2 −2
Original line number Diff line number Diff line
@@ -54,8 +54,8 @@ TEST_F(PageTypeInfoParserTest, Success) {
    PageTypeInfoParser parser;
    PageTypeInfoProto expected;

    expected.set_page_block_order(10);
    expected.set_pages_per_block(1024);
    expected.set_page_block_order(9);
    expected.set_pages_per_block(512);

    PageTypeInfoProto::MigrateType* mt1 = expected.add_migrate_types();
    mt1->set_node(0);