History log of /openbmc/hiomapd/ (Results 251 – 275 of 415)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
5345c51e21-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

test: Move tests to a separate Makefile fragment

Change-Id: I46d5b165ed668ace67ae237b16d65a24586dd87d
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

7f9c343a28-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Rework semantics of Table::size()

Table::size() now returns the exact table size in bytes,
Table::capacity() returns the block-aligned size in bytes (capacity in
terms of how m

pnor_partition_table: Rework semantics of Table::size()

Table::size() now returns the exact table size in bytes,
Table::capacity() returns the block-aligned size in bytes (capacity in
terms of how much the table could grow before expanding to another
block), and Table::blocks() returns the size in blocks.

This helps out with code clarity around the codebase and enables the
introduction of ToC-related integration tests.

The one wrinkle is vpnor_get_partition_table_size(), which is modified
to call Table::blocks() but retains 'size' in its name. This is largely
unimportant as the function will go away shortly.

Change-Id: I3becf47f2201df5fe0bed86fcb92d7b94d06ab11
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

b87aa32926-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Log errors for invalid properties

Change-Id: Ifabbbf43800a0bc3ed7672207a3d78fd4a475e10
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

e8a79ff326-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition{,_table}: Conform to logging requirements

See the Rules section of README.md for justification.

Change-Id: Ib5ac059b498abc152269e926fc750cb83cd75d6c
Signed-off-by: Andrew Jeffery <an

pnor_partition{,_table}: Conform to logging requirements

See the Rules section of README.md for justification.

Change-Id: Ib5ac059b498abc152269e926fc750cb83cd75d6c
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

f96bd16d25-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Make parseTocLine throw exceptions

Change-Id: I66dc8af4fede36c3c952df596040356e11a72644
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

d976c9c926-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Drop Table ctor with default location

Make the caller be explicit about what they want. Also, rearrange calls
in mboxd_pnor_partition_table.cpp to remove noise there as well.

pnor_partition_table: Drop Table ctor with default location

Make the caller be explicit about what they want. Also, rearrange calls
in mboxd_pnor_partition_table.cpp to remove noise there as well.

Change-Id: I8e36101b84b1b24cf0edbedb744f8edca15a834a
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

d394a78720-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Move parseTocLine() out of Table class

This is the final patch in the ongoing effort to extract parseTocLine()
from the Table class, enabling re-use in setup for test cases.

C

pnor_partition_table: Move parseTocLine() out of Table class

This is the final patch in the ongoing effort to extract parseTocLine()
from the Table class, enabling re-use in setup for test cases.

Change-Id: I62bbcbba39fbd337e370dcc78aec6ef3cf337caa
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

4859540020-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Make writeSizes() private to namespace

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id: I1

pnor_partition_table: Make writeSizes() private to namespace

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id: I1817023347575843e5518343c83a7f2eae6302a4
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

faaa71ca20-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Hoist partition existence check from parseTocLine()

Enforce some separation of concerns: Parsing the text of a ToC entry is
an operation independent of testing whether context

pnor_partition_table: Hoist partition existence check from parseTocLine()

Enforce some separation of concerns: Parsing the text of a ToC entry is
an operation independent of testing whether context derived from the
parsed data is valid.

Specifically, testing whether a file at a path derived from the ToC
entry is valid inside the parser is unhelpful when we try to reuse the
parser for test code, where we want to set up an environment as
described by the ToC entry. Under this condition the file is of course
not going to exist - we're parsing the ToC entry in order to create it.

So, lets hoist the test out to the caller, enabling re-use of the parser
in the test code.

Change-Id: Ibc9b62c00b95b8296b48ccf45630cb5344347bd7
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

a76199bb20-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Make writeUserdata() private to namespace

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id:

pnor_partition_table: Make writeUserdata() private to namespace

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id: I846e67b728df7bf57fd132b21438a13248d426fc
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

4cc2e8f320-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Make writeDefaults() private to namespace

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id:

pnor_partition_table: Make writeDefaults() private to namespace

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id: I0b888c028c61db2a555fa99a5abcbe339e657f95
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

54e9122620-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Make writeNameAndId() private to namespace

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id

pnor_partition_table: Make writeNameAndId() private to namespace

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id: I676e536e651dff1b27d0e53ecbb96d8e5ae8f025
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

62de1aae20-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Return early in parseTocLine()

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id: I0521f8272

pnor_partition_table: Return early in parseTocLine()

This is part of the ongoing effort to extract parseTocLine() from the
Table class, enabling reuse in setup for test cases.

Change-Id: I0521f82727029db1ab6c59971c923fcec01b6fc9
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

581a4f2c20-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Extract preparePartitions() loop body

Create a new private method, parseTocLine(), to handle the function of
the loop body. The eventual goal is to extract the function from th

pnor_partition_table: Extract preparePartitions() loop body

Create a new private method, parseTocLine(), to handle the function of
the loop body. The eventual goal is to extract the function from the
class completely and simply have parseTocLine() as a public function in
the openpower::virtual_pnor namespace. This will facilitate testing of
the virtual PNOR parts of the codebase.

Change-Id: Ib8c3b39eb9390cfc088a54abd45aab6f551775d3
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

f34db31d08-Mar-2018 Andrew Jeffery <andrew@aj.id.au>

Format C++ files according to OpenBMC style guide

We don't touch the C yet as upstream hasn't got such a change in place.

Change-Id: Ie6cab4bf99df520bb6655b9b00ae31e762e3c57b
Signed-off-by: Andrew

Format C++ files according to OpenBMC style guide

We don't touch the C yet as upstream hasn't got such a change in place.

Change-Id: Ie6cab4bf99df520bb6655b9b00ae31e762e3c57b
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

25eca77f26-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

README: Begin documenting development style rules

The first rule enforces the use of stdout/stderr for logging. Rationale
is provided in the README.

Change-Id: Ibb5b62ea1341aa951fd42b15e9cd14a83684

README: Begin documenting development style rules

The first rule enforces the use of stdout/stderr for logging. Rationale
is provided in the README.

Change-Id: Ibb5b62ea1341aa951fd42b15e9cd14a836842032
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

c2c0868501-Mar-2018 Andrew Jeffery <andrew@aj.id.au>

test: system: Return memory size rather than mtd size in LPC ioctl

The old behaviour was an outright bug in the system framework. The size
of the LPC reserved memory window has nothing to do with th

test: system: Return memory size rather than mtd size in LPC ioctl

The old behaviour was an outright bug in the system framework. The size
of the LPC reserved memory window has nothing to do with the size of the
flash.

Change-Id: Ie16686ac6df8fb3117fb46aa2eaab082873fd4d0
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

ee7af88328-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

test: mbox: Type buf parameter to dump_buf() as `const void *`

This makes it a bit more ergonomic to use by not forcing the caller to
cast.

Change-Id: I5d40715f4de84f174157a39d459dc1b40a94a949
Sign

test: mbox: Type buf parameter to dump_buf() as `const void *`

This makes it a bit more ergonomic to use by not forcing the caller to
cast.

Change-Id: I5d40715f4de84f174157a39d459dc1b40a94a949
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

c314404225-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

test: Update tmpf to store data in /tmp, reformat names

Cleans up residuals from failed tests in the source tree by moving them
to /tmp. Some were annoying to remove with prefixes like 'mbox', so
ch

test: Update tmpf to store data in /tmp, reformat names

Cleans up residuals from failed tests in the source tree by moving them
to /tmp. Some were annoying to remove with prefixes like 'mbox', so
change the pattern as well to include '-store'.

Change-Id: I674664a372e7e15ec4c3cd93d33318c4135f33ba
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

baea36d925-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

gitignore: Ignore all cscope files

Change-Id: I91dd5df23491d9377bcbbc529b08529818f06285
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

44ac078b25-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

common: Improve readability and utility of MSG_*() macros

Ensures we can't dereference NULL if a logger hasn't been set, and
cleans up the MSG_*() macros for readability.

Change-Id: I9808d8fe767261

common: Improve readability and utility of MSG_*() macros

Ensures we can't dereference NULL if a logger hasn't been set, and
cleans up the MSG_*() macros for readability.

Change-Id: I9808d8fe7672613e90c705686d1eaf1e2edef38a
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

7a3814b022-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

common: Ensure helpers are endian-safe

The specification states that all multibyte values communicated via mbox
are little-endian[0]. Do the conversions in the helpers to enforce this
property.

[0]

common: Ensure helpers are endian-safe

The specification states that all multibyte values communicated via mbox
are little-endian[0]. Do the conversions in the helpers to enforce this
property.

[0] https://github.com/openbmc/mboxbridge/blob/master/Documentation/mbox_protocol.md#information

Change-Id: I9f96281c439fd666cb1c9ae643454569d61f7a81
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

cafb002e20-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

test: Fix memory leak in write_flash_vpnor

Running the test suite when configuring the source via `./bootstrap.sh dev`
leads to a failure of the write_flash_vpnor test with the report below in
test-

test: Fix memory leak in write_flash_vpnor

Running the test suite when configuring the source via `./bootstrap.sh dev`
leads to a failure of the write_flash_vpnor test with the report below in
test-suite.log. Add the necessary cleanup to ensure the test suite passes
cleanly.

===================================
mboxd 2.1.0: ./test-suite.log
===================================

.. contents:: :depth: 2

FAIL: test/write_flash_vpnor
============================

[ 1519173867.854683139] Write flash @ 0x00003000 for 0x00000008 from 0x7ffe94d51ae0
[ 1519173867.854904248] Didn't find the file in the desired partition so copying[/tmp/prsv.RY6KiO/TEST3]
[ 1519173867.854979940] File copied from[/tmp/ro.dUeyxG/TEST3] to [/tmp/prsv.RY6KiO/TEST3]
[ 1519173867.855082198] Write flash @ 0x00001000 for 0x00000008 from 0x7ffe94d51ae0
[ 1519173867.857098822] Write flash @ 0x00002000 for 0x00000008 from 0x7ffe94d51ae0
[ 1519173867.857249802] Write flash @ 0x00002003 for 0x0000001c from 0x7ffe94d51ae0
[ 1519173867.857806832] Write flash @ 0x00002000 for 0x00000008 from 0x7ffe94d51ae0
[ 1519173867.857955823] Write flash @ 0x00002000 for 0x00000001 from 0x7ffe94d51ae0
[ 1519173867.858045089] Write flash @ 0x00002001 for 0x00000001 from 0x7ffe94d51ae1
[ 1519173867.858120016] Write flash @ 0x00002002 for 0x00000001 from 0x7ffe94d51ae2
[ 1519173867.858273459] Write flash @ 0x00002000 for 0x00000008 from 0x7ffe94d51b20
[ 1519173867.855134488] Can't open the RO partition for write[ 1519173867.857323229] Offset is beyond the partition file length[0x00000008]

=================================================================
==15139==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 8 byte(s) in 1 object(s) allocated from:
#0 0x7f98b42f6458 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0458)
#1 0x56371c4cb52f in vpnor_create_partition_table_from_path /home/andrew/src/openbmc/phosphor-mboxd/mboxd_pnor_partition_table.cpp:40
#2 0x56371c502013 in main test/write_flash_vpnor.cpp:145
#3 0x7f98b225b1c0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x211c0)

Direct leak of 2 byte(s) in 1 object(s) allocated from:
#0 0x7f98b42f4d38 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded38)
#1 0x56371c5003b6 in init(mbox_context*) test/write_flash_vpnor.cpp:115
#2 0x56371c501c36 in main test/write_flash_vpnor.cpp:137
#3 0x7f98b225b1c0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x211c0)

Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
#0 0x7f98b42f6458 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0458)
#1 0x56371c3fa0c0 in __gnu_cxx::new_allocator<unsigned char>::allocate(unsigned long, void const*) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x2850c0)
#2 0x56371c3f3483 in std::allocator_traits<std::allocator<unsigned char> >::allocate(std::allocator<unsigned char>&, unsigned long) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x27e483)
#3 0x56371c3ebf6c in std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_allocate(unsigned long) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x276f6c)
#4 0x56371c3e3aa4 in std::vector<unsigned char, std::allocator<unsigned char> >::_M_default_append(unsigned long) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x26eaa4)
#5 0x56371c3d82c5 in std::vector<unsigned char, std::allocator<unsigned char> >::resize(unsigned long) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x2632c5)
#6 0x56371c3c623d in openpower::virtual_pnor::endianFixup(std::vector<unsigned char, std::allocator<unsigned char> > const&) /home/andrew/src/openbmc/phosphor-mboxd/pnor_partition_table.cpp:268
#7 0x56371c3c2366 in openpower::virtual_pnor::partition::Table::Table(std::experimental::filesystem::v1::__cxx11::path&&, unsigned long, unsigned long) /home/andrew/src/openbmc/phosphor-mboxd/pnor_partition_table.cpp:38
#8 0x56371c4cb844 in vpnor_create_partition_table_from_path /home/andrew/src/openbmc/phosphor-mboxd/mboxd_pnor_partition_table.cpp:45
#9 0x56371c502013 in main test/write_flash_vpnor.cpp:145
#10 0x7f98b225b1c0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x211c0)

Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
#0 0x7f98b42f6458 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0458)
#1 0x56371c3fa0c0 in __gnu_cxx::new_allocator<unsigned char>::allocate(unsigned long, void const*) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x2850c0)
#2 0x56371c3f3483 in std::allocator_traits<std::allocator<unsigned char> >::allocate(std::allocator<unsigned char>&, unsigned long) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x27e483)
#3 0x56371c3ebf6c in std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_allocate(unsigned long) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x276f6c)
#4 0x56371c3e3aa4 in std::vector<unsigned char, std::allocator<unsigned char> >::_M_default_append(unsigned long) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x26eaa4)
#5 0x56371c3d82c5 in std::vector<unsigned char, std::allocator<unsigned char> >::resize(unsigned long) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x2632c5)
#6 0x56371c3d1b40 in openpower::virtual_pnor::partition::Table::allocateMemory(std::experimental::filesystem::v1::__cxx11::path const&) /home/andrew/src/openbmc/phosphor-mboxd/pnor_partition_table.cpp:78
#7 0x56371c3c3006 in openpower::virtual_pnor::partition::Table::preparePartitions() /home/andrew/src/openbmc/phosphor-mboxd/pnor_partition_table.cpp:165
#8 0x56371c3c2216 in openpower::virtual_pnor::partition::Table::Table(std::experimental::filesystem::v1::__cxx11::path&&, unsigned long, unsigned long) /home/andrew/src/openbmc/phosphor-mboxd/pnor_partition_table.cpp:36
#9 0x56371c4cb844 in vpnor_create_partition_table_from_path /home/andrew/src/openbmc/phosphor-mboxd/mboxd_pnor_partition_table.cpp:45
#10 0x56371c502013 in main test/write_flash_vpnor.cpp:145
#11 0x7f98b225b1c0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x211c0)

Indirect leak of 432 byte(s) in 3 object(s) allocated from:
#0 0x7f98b42f6458 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0458)
#1 0x56371c5176b0 in void std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> >::_M_realloc_insert<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::experimental::filesystem::v1::__cxx11::path::_Type, unsigned long&>(__gnu_cxx::__normal_iterator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt*, std::vector<std::experimental::filesystem::v1::__cxx11::path::_Cmpt, std::allocator<std::experimental::filesystem::v1::__cxx11::path::_Cmpt> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::experimental::filesystem::v1::__cxx11::path::_Type&&, unsigned long&) (/home/andrew/src/openbmc/phosphor-mboxd/test/write_flash_vpnor+0x3a26b0)

Indirect leak of 144 byte(s) in 1 object(s) allocated from:
#0 0x7f98b42f6458 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0458)
#1 0x56371c4cb74b in vpnor_create_partition_table_from_path /home/andrew/src/openbmc/phosphor-mboxd/mboxd_pnor_partition_table.cpp:45
#2 0x56371c502013 in main test/write_flash_vpnor.cpp:145
#3 0x7f98b225b1c0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x211c0)

SUMMARY: AddressSanitizer: 8778 byte(s) leaked in 8 allocation(s).
FAIL test/write_flash_vpnor (exit status: 1)

Change-Id: I7d1a5262833146794e0298084e828e14821041b7
Fixes: openbmc/openbmc#2866
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

e570740d01-Feb-2018 Andrew Jeffery <andrew@aj.id.au>

pnor_partition_table: Fix printf() format specifier for size_t

On x86_64 we receive the following warning from GCC:

In file included from pnor_partition_table.cpp:2:0:
pnor_partition_table.

pnor_partition_table: Fix printf() format specifier for size_t

On x86_64 we receive the following warning from GCC:

In file included from pnor_partition_table.cpp:2:0:
pnor_partition_table.cpp: In member function ‘const pnor_partition& openpower::virtual_pnor::partition::Table::partition(size_t) const’:
common.h:37:61: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘size_t {aka long unsigned int}’ [-Werror=format=]
#define MSG_ERR(f_, ...) mbox_log(LOG_ERR, f_, ##__VA_ARGS__)
^
pnor_partition_table.cpp:218:5: note: in expansion of macro ‘MSG_ERR’
MSG_ERR("Partition corresponding to offset %x not found", offset);
^~~~~~~

The type of %x may not match the size of the type on the host system. Use %zu
to avoid a compiler warning.

Change-Id: I79b0a33af6fc4e0c06c60457e89d0c4125d1e39d
Tested: Changed the format specifier and recompiled, observed no warnings
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

acb32ef705-Dec-2017 Adriana Kobylak <anoo@us.ibm.com>

pnor_partition_table: Parse all miscellaneous user flags from TOC

Add support for the remaining miscellaneous flags specified in the Hostboot FFS
header, specifically the CLEARECC flag:

https:/

pnor_partition_table: Parse all miscellaneous user flags from TOC

Add support for the remaining miscellaneous flags specified in the Hostboot FFS
header, specifically the CLEARECC flag:

https://github.com/open-power/hostboot/blob/master/src/usr/pnor/common/ffs_hb.H

This requires a change to how the properties string was being parsed so we can
differentiate between the ECC and CLEARECC options.

In detail:

Issue openbmc/openbmc#2704 captures a failure where Hostboot detects flash
corruption on an FFS partition with ECC enabled. In some instances,
configuration of FFS partitions allows Hostboot to "fix" ECC errors by clearing
the entire partition and trying again. In this case, the attempt fails:

--== Welcome to Hostboot hostboot-e223708/hbicore.bin ==--

4.01970|secure|SecureROM valid - enabling functionality
4.01974|secure|Booting in non-secure mode.
5.93358|ISTEP 6. 5 - host_init_fsi
6.06661|ISTEP 6. 6 - host_set_ipl_parms
6.07597|ECC error in PNOR flash in section offset 0x00026000

6.07604|System shutting down with error status 0x60F

Looking at the TOC, we find 0x26000 is in HBEL:

# cat /tmp/pnor.toc
version=IBM-witherspoon-ibm-OP9_v1.19_1.121
extended_version=op-build-v1.19-326-g20bf99a-dirty,buildroot-2017.08-8-g5e23247,skiboot-v5.9.8,hostboot-7f4ced1,linux-4.13.16-openpower1-p686edfa,petitboot-v1.6.3-p191b3ea,machine-xml-758eb02,occ-84f3564,hostboot-binaries-38248b4,capp-ucode-p9-dd2-v2,sbe-99e2fe2
partition00=part,0x00000000,0x00001000,00,READWRITE
partition01=HBEL,0x00008000,0x0002c000,00,ECC,REPROVISION,READWRITE
partition02=GUARD,0x0002c000,0x00031000,00,ECC,PRESERVED,REPROVISION

Except, Dan Crowell identified that the reported offset is merely *indirectly*
related to the offending location in the PNOR layout description:

1) There is a bug in the openbmc code that causes them to remove space from
our pnor layout. We don't think that has a functional problem but it does
confuse things. The number pointed out in the printk was pointing me at
the HBEL partition but the problem is really inside the GUARD partition.
Adriana is going to be fixing this issue.

The GUARD partition requires the ClearOnEccErr flag[1], however Hostboot's
output indicates this action isn't taken; phosphor-mboxd failed to add this
information to the dynamically generated TOC data structure presented to
Hostboot.

Thus, add support for all miscellaneous flags to the ToC generator, allowing
the ClearOnEccErr (CLEARECC) flag to be propagated.

[1] https://github.com/open-power/pnor/blob/22a9eadc0b2afbd2aca1e054faa2cca90e7760c2/p9Layouts/defaultPnorLayout_64.xml#L90

The bug was confirmed on a Witherspoon system by creating a dummy GUARD
partition from /dev/urandom and beginning IPL. Leaving the dummy GUARD in
place, mboxd was replaced with the patched build and the host rebooted.
Hostboot successfully cleared the partition and triggered a reboot, then
successfully booted to Petitboot.

Resolves openbmc/openbmc#2704

Tested: As described above
Change-Id: I21c9bbc60b8c503194fcea03e74ab1d08aff57fe
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
[arj: Reworked the commit message to describe the bug and fallout]
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

show more ...

1...<<11121314151617