/* * RapidIO interconnect services * (RapidIO Interconnect Specification, http://www.rapidio.org) * * Copyright 2005 MontaVista Software, Inc. * Matt Porter * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ #ifndef LINUX_RIO_H #define LINUX_RIO_H #include #include #include #include #include #include #include #ifdef CONFIG_RAPIDIO_DMA_ENGINE #include #endif #define RIO_NO_HOPCOUNT -1 #define RIO_INVALID_DESTID 0xffff #define RIO_MAX_MPORTS 8 #define RIO_MAX_MPORT_RESOURCES 16 #define RIO_MAX_DEV_RESOURCES 16 #define RIO_MAX_MPORT_NAME 40 #define RIO_GLOBAL_TABLE 0xff /* Indicates access of a switch's global routing table if it has multiple (or per port) tables */ #define RIO_INVALID_ROUTE 0xff /* Indicates that a route table entry is invalid (no route exists for the device ID) */ #define RIO_MAX_ROUTE_ENTRIES(size) (size ? (1 << 16) : (1 << 8)) #define RIO_ANY_DESTID(size) (size ? 0xffff : 0xff) #define RIO_MAX_MBOX 4 #define RIO_MAX_MSG_SIZE 0x1000 /* * Error values that may be returned by RIO functions. */ #define RIO_SUCCESSFUL 0x00 #define RIO_BAD_SIZE 0x81 /* * For RIO devices, the region numbers are assigned this way: * * 0 RapidIO outbound doorbells * 1-15 RapidIO memory regions * * For RIO master ports, the region number are assigned this way: * * 0 RapidIO inbound doorbells * 1 RapidIO inbound mailboxes * 2 RapidIO outbound mailboxes */ #define RIO_DOORBELL_RESOURCE 0 #define RIO_INB_MBOX_RESOURCE 1 #define RIO_OUTB_MBOX_RESOURCE 2 #define RIO_PW_MSG_SIZE 64 /* * A component tag value (stored in the component tag CSR) is used as device's * unique identifier assigned during enumeration. Besides being used for * identifying switches (which do not have device ID register), it also is used * by error management notification and therefore has to be assigned * to endpoints as well. */ #define RIO_CTAG_RESRVD 0xfffe0000 /* Reserved */ #define RIO_CTAG_UDEVID 0x0001ffff /* Unique device identifier */ extern struct bus_type rio_bus_type; extern struct class rio_mport_class; struct rio_mport; struct rio_dev; union rio_pw_msg; /** * struct rio_switch - RIO switch info * @node: Node in global list of switches * @route_table: Copy of switch routing table * @port_ok: Status of each port (one bit per port) - OK=1 or UNINIT=0 * @ops: pointer to switch-specific operations * @lock: lock to serialize operations updates * @nextdev: Array of per-port pointers to the next attached device */ struct rio_switch { struct list_head node; u8 *route_table; u32 port_ok; struct rio_switch_ops *ops; spinlock_t lock; struct rio_dev *nextdev[0]; }; /** * struct rio_switch_ops - Per-switch operations * @owner: The module owner of this structure * @add_entry: Callback for switch-specific route add function * @get_entry: Callback for switch-specific route get function * @clr_table: Callback for switch-specific clear route table function * @set_domain: Callback for switch-specific domain setting function * @get_domain: Callback for switch-specific domain get function * @em_init: Callback for switch-specific error management init function * @em_handle: Callback for switch-specific error management handler function * * Defines the operations that are necessary to initialize/control * a particular RIO switch device. */ struct rio_switch_ops { struct module *owner; int (*add_entry) (struct rio_mport *mport, u16 destid, u8 hopcount, u16 table, u16 route_destid, u8 route_port); int (*get_entry) (struct rio_mport *mport, u16 destid, u8 hopcount, u16 table, u16 route_destid, u8 *route_port); int (*clr_table) (struct rio_mport *mport, u16 destid, u8 hopcount, u16 table); int (*set_domain) (struct rio_mport *mport, u16 destid, u8 hopcount, u8 sw_domain); int (*get_domain) (struct rio_mport *mport, u16 destid, u8 hopcount, u8 *sw_domain); int (*em_init) (struct rio_dev *dev); int (*em_handle) (struct rio_dev *dev, u8 swport); }; /** * struct rio_dev - RIO device info * @global_list: Node in list of all RIO devices * @net_list: Node in list of RIO devices in a network * @net: Network this device is a part of * @do_enum: Enumeration flag * @did: Device ID * @vid: Vendor ID * @device_rev: Device revision * @asm_did: Assembly device ID * @asm_vid: Assembly vendor ID * @asm_rev: Assembly revision * @efptr: Extended feature pointer * @pef: Processing element features * @swpinfo: Switch port info * @src_ops: Source operation capabilities * @dst_ops: Destination operation capabilities * @comp_tag: RIO component tag * @phys_efptr: RIO device extended features pointer * @em_efptr: RIO Error Management features pointer * @dma_mask: Mask of bits of RIO address this device implements * @driver: Driver clai
From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Date: Fri, 9 Sep 2016 17:55:38 +0200
Subject: [PATCH] FIXME: deploy: EFI: Skip re-ordering boot via IPMI

On EFI systems deploys, altering the boot order via IPMI causes
issues on some specific targets. Until we agree on an uniform
solution for EFI systems + IPMI boot order handling, just skip
altering it via IPMI.

Related-bug: https://jira.opnfv.org/browse/ARMBAND-71

Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
---
 deploy/deploy_env.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/deploy/deploy_env.py b/deploy/deploy_env.py
index 93dc395..1d2dfeb 100644
--- a/deploy/deploy_env.py
+++ b/deploy/deploy_env.py
@@ -255,7 +255,9 @@ class CloudDeploy(object):
 
     def set_boot_order_nodes(self):
         self.power_off_nodes()
-        self.set_boot_order(['pxe', 'disk'])
+        # ARMBAND FIXME: See https://jira.opnfv.org/browse/ARMBAND-71
+        # Until we choose an uniform design on EFI systems, just disable it
+        # self.set_boot_order(['pxe', 'disk'])
         self.power_on_nodes()
 
     def get_put_deploy_log(self):
t rio_mport *, void *, int, int); extern void rio_close_outb_mbox(struct rio_mport *, int); #endif /* LINUX_RIO_H */