summaryrefslogtreecommitdiffstats
path: root/hdata
Commit message (Collapse)AuthorAgeFilesLines
...
* hdata/iohub: Use only wildcard slots for pluggablesOliver O'Halloran2018-02-201-1/+1
| | | | | | | | | | | | | We don't want to cause a VID:DID check against pluggable devices, as they may use multiple devids. Narrow the condition under which VID:DID is listed in the dt, so that we'll end up creating a wildcard slot for these instead. Cc: stable # 5.9.x Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/vpd: Add vendor propertyVasant Hegde2018-01-301-0/+5
| | | | | | | | ibm,vpd blob contains VN field. Use that to populate vendor property for various FRU's. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/vpd: Remove possible dereference after null check (CID 207468)Cyril Bur2018-01-301-1/+1
| | | | | | | | | | | The next_extry label doesn't do anything other than perform an addition which requires a dereference of the NULL entry variable, just continue the loop instead. Fixes: 77190aa7 (hdata/vpd: Rework vpd node creation logic) Signed-off-by: Cyril Bur <cyril.bur@au1.ibm.com> Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/vpd: Fix DTC warningsOliver O'Halloran2018-01-143-0/+207
| | | | | | | | | All the nodes under the vpd heirachy have a unit address (their SLCA index) but no reg properties. Add them and their size/address cells to squash the warnings. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdat/i2c: Fix SPD EEPROM compatible stringOliver O'Halloran2018-01-141-1/+16
| | | | | | | | | Hostboot doesn't give us accurate information about the DIMM SPD devices. Hack around by assuming any EEPROM we find on the SPD I2C master is an SPD eeprom. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/i2c: Fix 512Kb EEPROM sizeOliver O'Halloran2018-01-141-1/+1
| | | | | | | There's no such thing as a 412Kb EEPROM. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Parse IPL FW feature settingsOliver O'Halloran2018-01-052-0/+54
| | | | | | | | | | Add parsing for the firmware feature flags in the HDAT. This indicates the settings of various parameters which are set at IPL time by firmware. Cc: stable # 5.4.x 371e88e23662 eeba2d64fb7a 0abc3af7e8f6 Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* lock: Add additional lock auditing codeBenjamin Herrenschmidt2017-12-201-1/+1
| | | | | | | | | | | | | | | | | Keep track of lock owner name and replace lock_depth counter with a per-cpu list of locks held by the cpu. This allows us to print the actual locks held in case we hit the (in)famous message about opal_pollers being run with a lock held. It also allows us to warn (and drop them) if locks are still held when returning to the OS or completing a scheduled job. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Reviewed-by: Nicholas Piggin <npiggin@gmail.com> [stewart: fix unit tests] Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/tpmrel.c: add ibm, cvc device tree nodeClaudio Carvalho2017-12-182-0/+119
| | | | | | | | | | | | In P9, the Container Verification Code is stored in a hostboot reserved memory and the list of provided CVC services is stored in the TPMREL_IDATA_HASH_VERIF_OFFSETS idata array. Each CVC service has an offset and version. This adds the ibm,cvc device tree node and its documentation. Signed-off-by: Claudio Carvalho <cclaudio@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/tpmrel.c: add firmware event log info to the tpm nodeClaudio Carvalho2017-12-186-1/+156
| | | | | | | | | | | | | This parses the firmware event log information from the secureboot_tpm_info HDAT structure and add it to the tpm device tree node. There can be multiple secureboot_tpm_info entries with each entry corresponding to a master processor that has a tpm device, however, multiple tpm is not supported. Signed-off-by: Claudio Carvalho <cclaudio@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/spira: add ibm, secureboot node in P9Claudio Carvalho2017-12-182-6/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | In P9, skiboot builds the device tree from the HDAT. These are the "ibm,secureboot" node changes compared to P8: - The Container-Verification-Code (CVC), a.k.a. ROM code, is no longer stored in a secure ROM with static address. In P9, it is stored in a hostboot reserved memory and each service provided also has a version, not only an offset. - The hash-algo property is not provided via HDAT, instead it provides the hw-key-hash-size, which is indeed the information required by the CVC to verify containers. This parses the iplparams_sysparams HDAT structure and creates the "ibm,secureboot", which is bumped to "ibm,secureboot-v2". In "ibm,secureboot-v2": - hash-algo property is superseded by hw-key-hash-size. - container verification code is explicitly described by a child node. Added in a subsequent patch. Signed-off-by: Claudio Carvalho <cclaudio@linux.vnet.ibm.com> Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Reviewed-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: add secure and trusted boot ntuple to SPIRA-H/SClaudio Carvalho2017-12-182-3/+5
| | | | | | | | | | | This adds to spira-h/s the overall tpmrel structure, which defines secure and trusted boot related data. The internal data structures are added in subsequent patches. Signed-off-by: Claudio Carvalho <cclaudio@linux.vnet.ibm.com> Reviewed-by: Oliver O'Halloran <oohall@gmail.com> Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Parse SPD dataVasant Hegde2017-12-181-1/+49
| | | | | | | | | | | | | | | | | | | | | | | | | Parse SPD data and populate device tree. list of properites parsing from SPD: ----------------------------------- [root@ltc-wspoon dimm@d00f]# lsprop . memory-id 0000000c (12) <-- DIMM type product-version 00000032 (50) <-- Module Revision Code device_type "memory-dimm-ddr4" serial-number 15d9acb6 (366587062) status "okay" size 00004000 (16384) phandle 000000bd (189) ibm,loc-code "UOPWR.0000000-Node0-DIMM7" part-number "36ASF2G72PZ-2G6B2 " reg 0000d007 (53255) name "dimm" manufacturer-id 0000802c (32812) <-- Vendor ID, we can get vendor name from this ID Also update documentation. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Add memory hierarchy under xscom nodeVasant Hegde2017-12-184-20/+146
| | | | | | | | | | | | | | | We have memory to chip mapping but doesn't have complete memory hierarchy. This patch adds memory hierarchy under xscom node. This is specific to P9 system as these hierarchy may change between processor generation. It uses memory controller ID details and populates nodes like: xscom@<addr>/mcbist@<mcbist_id>/mcs@<mcs_id>/mca@<mca_id>/dimm@<resource_id> Also this patch adds few properties under dimm node. Finally make sure xscom nodes created before calling memory_parse(). Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* make check: Make valgrind optionalMichael Ellerman2017-12-181-1/+1
| | | | | | | | | | To (slightly) lower the barrier for contributions, we can make valgrind optional with just a small amount of plumbing. This allows make check to run successfully without valgrind. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Add location code property to xscom nodeVasant Hegde2017-12-133-0/+11
| | | | | | | | This patch adds chip location code property to xscom node. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/spira: Add missing newline to prlog() callReza Arbab2017-12-111-1/+1
| | | | | | | We're missing a \n here. Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/vpd: add support for parsing CPU VRML recordsRobert Lippert2017-11-191-0/+24
| | | | | | | | | Allows skiboot to parse out the processor part/serial numbers on OpenPOWER P9 machines. Change-Id: Ie22a3c50d32f480671334b4b6c820476e29301c9 Signed-off-by: Robert Lippert <rlippert@google.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Fix copying GEN4 lane equalisation settingsMichael Neuling2017-11-151-0/+2
| | | | | | | These aren't copied currently but should be. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Rename 'fsp-ipl-side' as 'sp-ipl-side'Vasant Hegde2017-11-091-3/+9
| | | | | | | | | .. as OPAL is building device tree for both FSP and BMC system. Also I don't see anyone using this property today. Hence renaming should be fine. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/vpd: Improve vpd node find logicVasant Hegde2017-10-161-14/+2
| | | | | | | | | Use dt_find_by_name_addr() instead of dt_find_by_name(). That way we can avoid unnecessary memory allocation/cleanup. CC: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/vpd: Rework vpd node creation logicVasant Hegde2017-10-165-399/+363
| | | | | | | | | | | | | | | | | | | | | | | Presently we traverse SLCA structure to create various FRU nodes under /vpd node. We assumed that children are always contiguous. It happened to be contiguous in P8 and worked fine, but failed in P9 system. So it ended up populating duplicate node under wrong parent. Also failed to populate some of the nodes. Unfortunately there is no way to reach all the children of a given parent from parent node :-( Hence we have to rework vpd creation logic. This patch goes through all the SLCA entries serially and creates vpd node. Assumptions: - SLCA index is always serial (0..n) - When we traverse serially parent entry comes before child - Redundant resources are always consecutive - Populate node if SLCA has 'installed' and 'VPD collected' bit set CC: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Reviewed-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/i2c: update the list of known i2c devsClaudio Carvalho2017-10-151-4/+33
| | | | | | | | | This updates the list of known i2c devices - as of HDAT spec v10.5e - so that they can be properly identified during the hdat parsing. Signed-off-by: Claudio Carvalho <cclaudio@linux.vnet.ibm.com> Reviewed-by: Oliver O'Halloran <oohal@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/i2c: log unknown i2c devicesClaudio Carvalho2017-10-151-4/+17
| | | | | | | | | | | An i2c device is unknown if either the i2c device list is outdated or the device is marked as unknown (0xFF) in the hdat. This log both cases. Signed-off-by: Claudio Carvalho <cclaudio@linux.vnet.ibm.com> Reviewed-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/i2c: add __packed to the host_i2c_hdr structureClaudio Carvalho2017-10-151-1/+1
| | | | | | | | | This adds __packed to the host_i2c_hdr structure since it defines an offset that refers to the beginning of the structure. Fixes: 41dc3eb4495c451a405974570f604622a3f829ef Signed-off-by: Claudio Carvalho <cclaudio@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdat: Disable TM on Power9 DD 2.1Michael Ellerman2017-10-101-1/+1
| | | | | | | | | | | | | | Update pa_features_p9[] to disable TM (Transactional Memory). On DD 2.1 TM is not usable by Linux without other workarounds, so skiboot must disable it. The presence of TM is communicated by setting bit 7 of byte 22 in the pa-features array. As no other bits are set in that byte, we currently have a value of 0x80. To disable TM we set bit 7 to 0, leaving a value of 0x0. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/iohub: Check IOHUB child count before usingVasant Hegde2017-10-101-1/+4
| | | | | | | | | | | | | | | | | | ..else we endup getting below calltrace in older system. [ 169.179598388,3] HDIF: child array idx out of range! CPU 085c Backtrace: S: 0000000033d739b0 R: 00000000300136e8 .backtrace+0x40 S: 0000000033d73a50 R: 00000000300a1510 .HDIF_child_arr+0x34 S: 0000000033d73ac0 R: 00000000300a47a8 .io_parse+0x708 S: 0000000033d73c80 R: 000000003009f4ec .parse_hdat+0x177c S: 0000000033d73e30 R: 0000000030014750 .main_cpu_entry+0x148 S: 0000000033d73f00 R: 0000000030002690 boot_entry+0x198 Fixes: ad484081 (hdata: Parse IOSLOT information) CC: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Fix sparse warning in add_ecid_data()Vasant Hegde2017-10-021-1/+1
| | | | | | | | | warning: hdata/spira.c:433:33: warning: restricted beint64_t degrades to integer Reported-by: Stewart Smith <stewart@linux.vnet.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/i2c: hdat_i2c_labels and hdat_i2c_devs should be staticStewart Smith2017-10-021-2/+2
| | | | | | | | Silences sparse warnings: hdata/i2c.c:103:23: warning: symbol 'hdat_i2c_labels' was not declared. Should it be static? hdata/i2c.c:93:22: warning: symbol 'hdat_i2c_devs' was not declared. Should it be static? Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/spira: silence 'so big is unsigned long' sparse warningsStewart Smith2017-10-021-2/+2
| | | | | | | | | hdata/spira.c:1401:17: warning: constant 0x8000000009010c3f is so big it is unsigned long hdata/spira.c:1401:17: warning: constant 0x800000000c010c3f is so big it is unsigned long hdata/spira.c:1401:17: warning: constant 0x8000000009010c3f is so big it is unsigned long hdata/spira.c:1401:17: warning: constant 0x800000000c010c3f is so big it is unsigned long Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/spira: be32_to_cpu() doesn't work on 8bitsStewart Smith2017-10-021-1/+1
| | | | | | | | | Sparse warning: hdata/spira.c:1458:41: warning: incorrect type in argument 1 (different base types) expected restricted beint32_t [usertype] be_val got unsigned char const [unsigned] [usertype] link_speed Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com> Reviewed-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* core: POWER9 implement OPAL_SIGNAL_SYSTEM_RESETNicholas Piggin2017-09-202-14/+15
| | | | | | | | | | | | | | This implements OPAL_SIGNAL_SYSTEM_RESET, using scom registers to quiesce the target thread and raise a system reset exception on it. It has been tested on DD2 with stop0 ESL=0 and ESL=1 shallow power saving modes. DD1 is not implemented because it is sufficiently different as to make support difficult. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> [stewart@linux.vnet.ibm.com: fixup hdat_to_dt test] Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/smplink: Increment index of associated PHBOliver O'Halloran2017-09-201-1/+1
| | | | | | | | | The PHB number of the NPU device needs to be incremented per-chip or bad things are going to occur. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> [stewart@linux.vnet.ibm.com: Reza found npu_index++ needed too] Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdat: logically dead code, assert insteadStewart Smith2017-09-201-2/+1
| | | | | | | | | | Since we already assert that base != NULL, the if() condition on hdif can never be NULL. Instead, we should just assert (if even that) if it is. Found by Coverity Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Add wafer-location propertyVasant Hegde2017-09-191-0/+4
| | | | | | | | | | | | | | | | Extract wafer-location from ECID and add property under xscom node. bits 64:71 are the chip x location (7:0) bits 72:79 are the chip y location (7:0) Sample output: ------------- [root@wsp xscom@623fc00000000]# lsprop ecid ecid 019a00d4 03100718 852c0000 00fd7911 [root@wsp xscom@623fc00000000]# lsprop wafer-location wafer-location 00000085 0000002c Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Add wafer-id propertyVasant Hegde2017-09-191-0/+25
| | | | | | | | | | | | | | | Wafer id is derived from ECID data. bits 4:63 are the wafer id ( ten 6 bit fields each containing a code) Sample output: ------------- [root@wsp xscom@623fc00000000]# lsprop ecid ecid 019a00d4 03100718 852c0000 00fd7911 [root@wsp xscom@623fc00000000]# lsprop wafer-id wafer-id "6Q0DG340SO" Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Add ecid propertyVasant Hegde2017-09-192-1/+28
| | | | | | | | | | | | Add ecid property under xscom node. Sample output: ------------- [root@wsp xscom@623fc00000000]# lsprop ecid ecid 019a00d4 03100718 852c0000 00fd7911 Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdat: fix parsing of P8 hdatStewart Smith2017-09-182-6/+3
| | | | | | | Also fixes hdat_to_dt test cases. Fixes: ad484081ef8a51811e7902aec436fa8f1ca9604a Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Parse extra NVLink infoOliver O'Halloran2017-09-152-1/+32
| | | | | | | | Add parsing for the link speed information and the OCC GPU presence flags. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Parse NVLink informationOliver O'Halloran2017-09-154-2/+202
| | | | | | | | | Add the per-chip structures that descibe how the A-Bus/NVLink/OpenCAPI phy is configured. This generates the npu@xyz nodes for each chip on systems that support it. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Parse IOSLOT informationOliver O'Halloran2017-09-152-0/+470
| | | | | | | | | Add structure definitions that describe the physical PCIe topology of a system and parse them into the device-tree based PCIe slot description. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Add xscom_to_pcrd()Oliver O'Halloran2017-09-151-0/+39
| | | | | | | | | | | | Iterating the SPPCRD structures (per chip data) is a fairly common operation in the HDAT parser. Iterating the tuples directly is somewhat irritating since we need to check for disabled chips, etc on every pass. A better way to handle this is to iterate throught he xscom nodes (generated from the SPPCRD data) and map from the xscom node to the originating structure. This patch adds a function to do that. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Add an idata array iteratorOliver O'Halloran2017-09-152-0/+87
| | | | | | | | | | | Adds HDIF_get_iarray() which retrieves and validates an internal array header and HDIF_iarray_for_each() for walking the individual array entries. This reduces the amount of get-then-check boilerplate that we have with the existing HDIF_get_iarray_item() method for iterating internal data arrays. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Update RAM area structureVasant Hegde2017-09-041-6/+2
| | | | | | | Also remove unused ram_area structure. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Make vpd data parsing function globalVasant Hegde2017-09-042-5/+11
| | | | | | | | | | Move VPD parsing code to separate function (vpd_data_parse()) and make it as global. So that we can call this function from other files. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Acked-by: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Fix vpd parseVasant Hegde2017-09-041-6/+3
| | | | | | | | | | | | | | | | We detect vpd data format in vpd_parse() and set "op_platform" variable. dt_add_vpd_node() depends on op_platform to select parser type. There are places where we call dt_add_vpd_node() even before calling vpd_parse(). And in such cases it will not parse vpd data properly. This patch fixes above issue. Fixes: 694546c1 (hdata/vpd: Parse the OpenPOWER OPFR record) CC: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Acked-by: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/iohub: fix load of misaligned address for type 'long unsigned int', ↵Stewart Smith2017-08-241-4/+7
| | | | | | | | | | | | | | | | | | | | | which requires 8 byte alignment UBSan caught this: hdata/test/../iohub.c:83:2: runtime error: load of misaligned address 0x7f1dc7b0210a for type 'long unsigned int', which requires 8 byte alignment 0x7f1dc7b0210a: note: pointer points here 31 4c 58 08 31 00 04 01 00 30 00 42 50 46 02 00 00 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ^ #0 0x41470a in io_get_lx_info hdata/test/../iohub.c:83 #1 0x41759f in io_add_p8_cec_vpd hdata/test/../iohub.c:450 #2 0x417d35 in io_parse_fru hdata/test/../iohub.c:538 #3 0x41812a in io_parse hdata/test/../iohub.c:600 #4 0x425aa2 in parse_hdat hdata/test/../spira.c:1337 #5 0x43d9f8 in main hdata/test/hdata_to_dt.c:358 #6 0x7f1dcb868509 in __libc_start_main (/lib64/libc.so.6+0x20509) #7 0x4019e9 in _start (/home/stewart/skiboot/hdata/test/hdata_to_dt+0x4019e9) Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata: Reduce 'struct HDIF_array_hdr' alignment to 4 bytesStewart Smith2017-08-241-1/+1
| | | | | | | | | | | | | UBSan threw up the following: hdata/test/../hdif.c:96:9: runtime error: member access within misaligned address 0x7f9ad8b02c18 for type 'const struct HDIF_array_hdr', which requires 16 byte alignment 0x7f9ad8b02c18: note: pointer points here 00 00 00 00 00 00 00 10 00 00 00 08 00 00 00 14 00 00 00 14 00 00 00 20 00 00 00 00 80 03 ff ff ^ Real data we're parsing doesn't enforce that alignment requirement, so we shouldn't rely on it. Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata/hostservices: fix memory leak parsing mini dtStewart Smith2017-08-241-0/+1
| | | | Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
* hdata_to_dt: free device tree on error pathStewart Smith2017-08-241-0/+1
| | | | Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
OpenPOWER on IntegriCloud