Hi all,
I am trying to bring virtual network interface in non-root cell and also i am
trying to understand how virtual network will initialize while loading non-root
cell, i am putting some print statements in ivshmem-net.c file i.e present in
kernel source[drivers/net/ivshmem-net.c].
In ivshm_net_state_change function we have couple of cases like
IVSHM_NET_STATE_RESET, IVSHM_NET_STATE_INIT, IVSHM_NET_STATE_READY etc.. i
added some of print statements in this cases, i am able to see logs from case
IVSHM_NET_STATE_RESET after that i am not able to see any logs from other cases.
Assumption:
>From the above behavior i assume my ivshmem-net is not brought up properly,
>because i am not able to see the logs from IVSHM_NET_STATE_INIT,
>IVSHM_NET_STATE_READY cases.
Can anyone please tell me my assumption is correct or not?
I am attaching my ivshmem-net.c file[added with logs], and also my non-root
cell logs[search RH in non-root cell logs, that line is from ivshmem-net.c]
I am adding below configuration to both root and non-root cell. the non-root
cell have JAILHOUSE_MEM_ROOTSHARED flag. shmem_region has changed based on the
index value in non-root cell.
{
.type = JAILHOUSE_PCI_TYPE_IVSHMEM,
.iommu = 1,
.domain = 0x0,
.bdf = 0x0e << 3,
.bar_mask = {
0xffffff00, 0xffffffff, 0x00000000,
0x00000000, 0xffffffe0, 0xffffffff,
},
.num_msix_vectors = 1,
.shmem_region = 75,
.shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH,
},
/* MemRegion: 3f200000 : IVSHMEM-net*/
{
.phys_start = 0x3f200000,
.virt_start = 0x3f200000,
.size = 0x100000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
},
After loading non-root cell i am able to see the virtual network interfaces is
coming up by issuing command like ifconfig -a, and i can pci device is also
added. I can see interrupt is registered with ivshmem-net.
But i am not able to do any operation using these virtual network interface[ if
i try to ping any other network or root-cell network, i am not able to ping, i
am not seeing any changes in the interrupt number].
I have another question regarding interrupts, how can i know interrupt is
working or not? whether i need to trigger the interrupt externally?-> if it is
yes means how can i trigger the interrupts
Thanks
Prajwal
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
/*
* Copyright 2016 Mans Rullgard <[email protected]>
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/io.h>
#include <linux/bitops.h>
#include <linux/interrupt.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/rtnetlink.h>
#include <linux/virtio_ring.h>
#define DRV_NAME "ivshmem-net"
#define JAILHOUSE_CFG_SHMEM_PTR 0x40
#define JAILHOUSE_CFG_SHMEM_SZ 0x48
#define IVSHMEM_INTX_ENABLE 0x1
#define IVSHM_NET_STATE_RESET 0
#define IVSHM_NET_STATE_INIT 1
#define IVSHM_NET_STATE_READY 2
#define IVSHM_NET_STATE_RUN 3
#define IVSHM_NET_FLAG_RUN 0
#define IVSHM_NET_MTU_MIN 256
#define IVSHM_NET_MTU_MAX 65535
#define IVSHM_NET_MTU_DEF 16384
#define IVSHM_NET_FRAME_SIZE(s) ALIGN(18 + (s), SMP_CACHE_BYTES)
#define IVSHM_NET_VQ_ALIGN 64
struct ivshmem_regs {
u32 intxctrl;
u32 istat;
u32 ivpos;
u32 doorbell;
u32 lstate;
u32 rstate;
};
struct ivshm_net_queue {
struct vring vr;
u32 free_head;
u32 num_free;
u32 num_added;
u16 last_avail_idx;
u16 last_used_idx;
void *data;
void *end;
u32 size;
u32 head;
u32 tail;
};
struct ivshm_net_stats {
u32 interrupts;
u32 tx_packets;
u32 tx_notify;
u32 tx_pause;
u32 rx_packets;
u32 rx_notify;
u32 napi_poll;
u32 napi_complete;
u32 napi_poll_n[10];
};
struct ivshm_net {
struct ivshm_net_queue rx;
struct ivshm_net_queue tx;
u32 vrsize;
u32 qlen;
u32 qsize;
spinlock_t tx_free_lock;
spinlock_t tx_clean_lock;
struct napi_struct napi;
u32 lstate;
u32 rstate;
unsigned long flags;
struct workqueue_struct *state_wq;
struct work_struct state_work;
struct ivshm_net_stats stats;
struct ivshmem_regs __iomem *ivshm_regs;
void *shm;
phys_addr_t shmaddr;
resource_size_t shmlen;
u32 peer_id;
struct pci_dev *pdev;
};
static void *ivshm_net_desc_data(struct ivshm_net *in,
struct ivshm_net_queue *q,
struct vring_desc *desc,
u32 *len)
{
u64 offs = READ_ONCE(desc->addr);
u32 dlen = READ_ONCE(desc->len);
u16 flags = READ_ONCE(desc->flags);
void *data;
if (flags)
return NULL;
if (offs >= in->shmlen)
return NULL;
data = in->shm + offs;
if (data < q->data || data >= q->end)
return NULL;
if (dlen > q->end - data)
return NULL;
*len = dlen;
return data;
}
static void ivshm_net_init_queue(struct ivshm_net *in,
struct ivshm_net_queue *q,
void *mem, unsigned int len)
{
memset(q, 0, sizeof(*q));
vring_init(&q->vr, len, mem, IVSHM_NET_VQ_ALIGN);
q->data = mem + in->vrsize;
q->end = q->data + in->qsize;
q->size = in->qsize;
}
static void ivshm_net_init_queues(struct net_device *ndev)
{
struct ivshm_net *in = netdev_priv(ndev);
int ivpos = readl(&in->ivshm_regs->ivpos);
void *tx;
void *rx;
int i;
tx = in->shm + ivpos * in->shmlen / 2;
rx = in->shm + !ivpos * in->shmlen / 2;
memset(tx, 0, in->shmlen / 2);
ivshm_net_init_queue(in, &in->rx, rx, in->qlen);
ivshm_net_init_queue(in, &in->tx, tx, in->qlen);
swap(in->rx.vr.used, in->tx.vr.used);
in->tx.num_free = in->tx.vr.num;
for (i = 0; i < in->tx.vr.num - 1; i++)
in->tx.vr.desc[i].next = i + 1;
}
static int ivshm_net_calc_qsize(struct net_device *ndev)
{
struct ivshm_net *in = netdev_priv(ndev);
unsigned int vrsize;
unsigned int qsize;
unsigned int qlen;
for (qlen = 4096; qlen > 32; qlen >>= 1) {
vrsize = vring_size(qlen, IVSHM_NET_VQ_ALIGN);
vrsize = ALIGN(vrsize, IVSHM_NET_VQ_ALIGN);
if (vrsize < in->shmlen / 16)
break;
}
if (vrsize > in->shmlen / 2)
return -EINVAL;
qsize = in->shmlen / 2 - vrsize;
if (qsize < 4 * IVSHM_NET_MTU_MIN)
return -EINVAL;
in->vrsize = vrsize;
in->qlen = qlen;
in->qsize = qsize;
return 0;
}
static void ivshm_net_notify_tx(struct ivshm_net *in, unsigned int num)
{
u16 evt, old, new;
virt_mb();
evt = READ_ONCE(vring_avail_event(&in->tx.vr));
old = in->tx.last_avail_idx - num;
new = in->tx.last_avail_idx;
if (vring_need_event(evt, new, old)) {
writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
in->stats.tx_notify++;
}
}
static void ivshm_net_enable_rx_irq(struct ivshm_net *in)
{
vring_avail_event(&in->rx.vr) = in->rx.last_avail_idx;
virt_wmb();
}
static void ivshm_net_notify_rx(struct ivshm_net *in, unsigned int num)
{
u16 evt, old, new;
virt_mb();
evt = vring_used_event(&in->rx.vr);
old = in->rx.last_used_idx - num;
new = in->rx.last_used_idx;
if (vring_need_event(evt, new, old)) {
writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
in->stats.rx_notify++;
}
}
static void ivshm_net_enable_tx_irq(struct ivshm_net *in)
{
vring_used_event(&in->tx.vr) = in->tx.last_used_idx;
virt_wmb();
}
static bool ivshm_net_rx_avail(struct ivshm_net *in)
{
virt_mb();
return READ_ONCE(in->rx.vr.avail->idx) != in->rx.last_avail_idx;
}
static size_t ivshm_net_tx_space(struct ivshm_net *in)
{
struct ivshm_net_queue *tx = &in->tx;
u32 tail = tx->tail;
u32 head = tx->head;
u32 space;
if (head < tail)
space = tail - head;
else
space = max(tx->size - head, tail);
return space;
}
static bool ivshm_net_tx_ok(struct ivshm_net *in, unsigned int mtu)
{
return in->tx.num_free >= 2 &&
ivshm_net_tx_space(in) >= 2 * IVSHM_NET_FRAME_SIZE(mtu);
}
static u32 ivshm_net_tx_advance(struct ivshm_net_queue *q, u32 *pos, u32 len)
{
u32 p = *pos;
len = IVSHM_NET_FRAME_SIZE(len);
if (q->size - p < len)
p = 0;
*pos = p + len;
return p;
}
static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
{
struct ivshm_net *in = netdev_priv(ndev);
struct ivshm_net_queue *tx = &in->tx;
struct vring *vr = &tx->vr;
struct vring_desc *desc;
unsigned int desc_idx;
unsigned int avail;
u32 head;
void *buf;
BUG_ON(tx->num_free < 1);
spin_lock(&in->tx_free_lock);
desc_idx = tx->free_head;
desc = &vr->desc[desc_idx];
tx->free_head = desc->next;
tx->num_free--;
spin_unlock(&in->tx_free_lock);
head = ivshm_net_tx_advance(tx, &tx->head, skb->len);
buf = tx->data + head;
skb_copy_and_csum_dev(skb, buf);
desc->addr = buf - in->shm;
desc->len = skb->len;
desc->flags = 0;
avail = tx->last_avail_idx++ & (vr->num - 1);
vr->avail->ring[avail] = desc_idx;
tx->num_added++;
if (!skb->xmit_more) {
virt_store_release(&vr->avail->idx, tx->last_avail_idx);
ivshm_net_notify_tx(in, tx->num_added);
tx->num_added = 0;
}
return 0;
}
static void ivshm_net_tx_clean(struct net_device *ndev)
{
struct ivshm_net *in = netdev_priv(ndev);
struct ivshm_net_queue *tx = &in->tx;
struct vring_used_elem *used;
struct vring *vr = &tx->vr;
struct vring_desc *desc;
struct vring_desc *fdesc;
unsigned int num;
u16 used_idx;
u16 last;
u32 fhead;
if (!spin_trylock(&in->tx_clean_lock))
return;
used_idx = virt_load_acquire(&vr->used->idx);
last = tx->last_used_idx;
fdesc = NULL;
fhead = 0;
num = 0;
while (last != used_idx) {
void *data;
u32 len;
u32 tail;
used = vr->used->ring + (last % vr->num);
if (used->id >= vr->num || used->len != 1) {
netdev_err(ndev, "invalid tx used->id %d ->len %d\n",
used->id, used->len);
break;
}
desc = &vr->desc[used->id];
data = ivshm_net_desc_data(in, &in->tx, desc, &len);
if (!data) {
netdev_err(ndev, "bad tx descriptor, data == NULL\n");
break;
}
tail = ivshm_net_tx_advance(tx, &tx->tail, len);
if (data != tx->data + tail) {
netdev_err(ndev, "bad tx descriptor\n");
break;
}
if (!num)
fdesc = desc;
else
desc->next = fhead;
fhead = used->id;
last++;
num++;
}
tx->last_used_idx = last;
spin_unlock(&in->tx_clean_lock);
if (num) {
spin_lock(&in->tx_free_lock);
fdesc->next = tx->free_head;
tx->free_head = fhead;
tx->num_free += num;
BUG_ON(tx->num_free > vr->num);
spin_unlock(&in->tx_free_lock);
}
}
static struct vring_desc *ivshm_net_rx_desc(struct net_device *ndev)
{
struct ivshm_net *in = netdev_priv(ndev);
struct ivshm_net_queue *rx = &in->rx;
struct vring *vr = &rx->vr;
unsigned int avail;
u16 avail_idx;
avail_idx = virt_load_acquire(&vr->avail->idx);
if (avail_idx == rx->last_avail_idx)
return NULL;
avail = vr->avail->ring[rx->last_avail_idx++ & (vr->num - 1)];
if (avail >= vr->num) {
netdev_err(ndev, "invalid rx avail %d\n", avail);
return NULL;
}
return &vr->desc[avail];
}
static void ivshm_net_rx_finish(struct ivshm_net *in, struct vring_desc *desc)
{
struct ivshm_net_queue *rx = &in->rx;
struct vring *vr = &rx->vr;
unsigned int desc_id = desc - vr->desc;
unsigned int used;
used = rx->last_used_idx++ & (vr->num - 1);
vr->used->ring[used].id = desc_id;
vr->used->ring[used].len = 1;
virt_store_release(&vr->used->idx, rx->last_used_idx);
}
static int ivshm_net_poll(struct napi_struct *napi, int budget)
{
struct net_device *ndev = napi->dev;
struct ivshm_net *in = container_of(napi, struct ivshm_net, napi);
int received = 0;
in->stats.napi_poll++;
ivshm_net_tx_clean(ndev);
while (received < budget) {
struct vring_desc *desc;
struct sk_buff *skb;
void *data;
u32 len;
desc = ivshm_net_rx_desc(ndev);
if (!desc)
break;
data = ivshm_net_desc_data(in, &in->rx, desc, &len);
if (!data) {
netdev_err(ndev, "bad rx descriptor\n");
break;
}
skb = napi_alloc_skb(napi, len);
if (skb) {
memcpy(skb_put(skb, len), data, len);
skb->protocol = eth_type_trans(skb, ndev);
napi_gro_receive(napi, skb);
}
ndev->stats.rx_packets++;
ndev->stats.rx_bytes += len;
ivshm_net_rx_finish(in, desc);
received++;
}
if (received < budget) {
in->stats.napi_complete++;
napi_complete_done(napi, received);
ivshm_net_enable_rx_irq(in);
if (ivshm_net_rx_avail(in))
napi_schedule(napi);
}
if (received)
ivshm_net_notify_rx(in, received);
in->stats.rx_packets += received;
in->stats.napi_poll_n[received ? 1 + min(ilog2(received), 8) : 0]++;
if (ivshm_net_tx_ok(in, ndev->mtu))
netif_wake_queue(ndev);
return received;
}
static netdev_tx_t ivshm_net_xmit(struct sk_buff *skb, struct net_device *ndev)
{
struct ivshm_net *in = netdev_priv(ndev);
ivshm_net_tx_clean(ndev);
if (!ivshm_net_tx_ok(in, ndev->mtu)) {
ivshm_net_enable_tx_irq(in);
netif_stop_queue(ndev);
skb->xmit_more = 0;
in->stats.tx_pause++;
}
ivshm_net_tx_frame(ndev, skb);
in->stats.tx_packets++;
ndev->stats.tx_packets++;
ndev->stats.tx_bytes += skb->len;
pr_info("RH: ivshm_net_xmit() : tx_packets:(%d):: tx_bytes:(%d)\n",ndev->stats.tx_packets,ndev->stats.tx_bytes);
dev_consume_skb_any(skb);
return NETDEV_TX_OK;
}
static void ivshm_net_set_state(struct ivshm_net *in, u32 state)
{
virt_wmb();
WRITE_ONCE(in->lstate, state);
writel(state, &in->ivshm_regs->lstate);
pr_info("RH: ivshm_net_set_state() : lstate is:(%d)\n",in->lstate);
}
static void ivshm_net_run(struct net_device *ndev)
{
struct ivshm_net *in = netdev_priv(ndev);
if (in->lstate < IVSHM_NET_STATE_READY)
return;
if (!netif_running(ndev))
return;
if (test_and_set_bit(IVSHM_NET_FLAG_RUN, &in->flags))
return;
netif_start_queue(ndev);
napi_enable(&in->napi);
napi_schedule(&in->napi);
ivshm_net_set_state(in, IVSHM_NET_STATE_RUN);
}
static void ivshm_net_do_stop(struct net_device *ndev)
{
struct ivshm_net *in = netdev_priv(ndev);
ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
if (!test_and_clear_bit(IVSHM_NET_FLAG_RUN, &in->flags))
return;
netif_stop_queue(ndev);
napi_disable(&in->napi);
}
static void ivshm_net_state_change(struct work_struct *work)
{
struct ivshm_net *in = container_of(work, struct ivshm_net, state_work);
struct net_device *ndev = in->napi.dev;
u32 rstate = readl(&in->ivshm_regs->rstate);
pr_info("RH: ivshm_net_set_state(): rstate(%d)\n", rstate);
switch (in->lstate) {
case IVSHM_NET_STATE_RESET:
pr_info("RH: ivshm_net_set_state(): in IVSHM_NET_STATE_RESET case: rstate(%d), lstate(%d)\n", rstate, in->lstate);
if (rstate < IVSHM_NET_STATE_READY)
{
pr_info("RH: ivshm_net_set_state() : inside IVSHM_NET_STATE_READY if cond\n");
ivshm_net_set_state(in, IVSHM_NET_STATE_INIT);
}
break;
case IVSHM_NET_STATE_INIT:
//pr_info("RH: %s(): in IVSHM_NET_STATE_INIT\n", __func__);
pr_info("RH: ivshm_net_set_state(): in IVSHM_NET_STATE_INIT case: rstate(%d), lstate(%d)\n", rstate, in->lstate);
//if (rstate > IVSHM_NET_STATE_RESET) //JH original
if (rstate >= IVSHM_NET_STATE_RESET) {
pr_info("RH: ivshm_net_set_state() : inside case: IVSHM_NET_STATE_INIT if cond\n");
ivshm_net_init_queues(ndev);
ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
rtnl_lock();
call_netdevice_notifiers(NETDEV_CHANGEADDR, ndev);
rtnl_unlock();
}
break;
case IVSHM_NET_STATE_READY:
case IVSHM_NET_STATE_RUN:
//pr_info("JH: %s(): in IVSHM_NET_STATE_RUN | IVSHM_NET_STATE_READY\n", __func__);
if (rstate >= IVSHM_NET_STATE_READY) {
pr_info("RH: ivshm_net_set_state(): in IVSHM_NET_STATE_READY case: rstate(%d), lstate(%d)\n", rstate, in->lstate);
netif_carrier_on(ndev);
ivshm_net_run(ndev);
} else {
pr_info("RH: ivshm_net_set_state(): in IVSHM_NET_STATE_RUN case: rstate(%d), lstate(%d)\n", rstate, in->lstate);
netif_carrier_off(ndev);
ivshm_net_do_stop(ndev);
}
break;
}
virt_wmb();
WRITE_ONCE(in->rstate, rstate);
}
static void ivshm_net_check_state(struct net_device *ndev)
{
struct ivshm_net *in = netdev_priv(ndev);
u32 rstate = readl(&in->ivshm_regs->rstate);
pr_info("RH:%s(): rstate(%d)\n", __func__, rstate);
if (rstate != in->rstate || !test_bit(IVSHM_NET_FLAG_RUN, &in->flags))
{
pr_info("RH:%s(): state-work-value in ivshm_net_check_state(%d)\n", __func__, in->state_work.data);
queue_work(in->state_wq, &in->state_work);
}
}
static irqreturn_t ivshm_net_int(int irq, void *data)
{
struct net_device *ndev = data;
struct ivshm_net *in = netdev_priv(ndev);
pr_info("RH:%s(): IRQ numbr(%d)\n", __func__, irq);
in->stats.interrupts++;
ivshm_net_check_state(ndev);
napi_schedule_irqoff(&in->napi);
return IRQ_HANDLED;
}
static int ivshm_net_open(struct net_device *ndev)
{
netdev_reset_queue(ndev);
ndev->operstate = IF_OPER_UP;
ivshm_net_run(ndev);
return 0;
}
static int ivshm_net_stop(struct net_device *ndev)
{
ndev->operstate = IF_OPER_DOWN;
ivshm_net_do_stop(ndev);
return 0;
}
static int ivshm_net_change_mtu(struct net_device *ndev, int mtu)
{
struct ivshm_net *in = netdev_priv(ndev);
struct ivshm_net_queue *tx = &in->tx;
if (mtu < IVSHM_NET_MTU_MIN || mtu > IVSHM_NET_MTU_MAX)
return -EINVAL;
if (in->tx.size / mtu < 4)
return -EINVAL;
if (ivshm_net_tx_space(in) < 2 * IVSHM_NET_FRAME_SIZE(mtu))
return -EBUSY;
if (in->tx.size - tx->head < IVSHM_NET_FRAME_SIZE(mtu) &&
tx->head < tx->tail)
return -EBUSY;
netif_tx_lock_bh(ndev);
if (in->tx.size - tx->head < IVSHM_NET_FRAME_SIZE(mtu))
tx->head = 0;
netif_tx_unlock_bh(ndev);
ndev->mtu = mtu;
return 0;
}
#ifdef CONFIG_NET_POLL_CONTROLLER
static void ivshm_net_poll_controller(struct net_device *ndev)
{
struct ivshm_net *in = netdev_priv(ndev);
napi_schedule(&in->napi);
}
#endif
static const struct net_device_ops ivshm_net_ops = {
.ndo_open = ivshm_net_open,
.ndo_stop = ivshm_net_stop,
.ndo_start_xmit = ivshm_net_xmit,
.ndo_change_mtu = ivshm_net_change_mtu,
.ndo_set_mac_address = eth_mac_addr,
.ndo_validate_addr = eth_validate_addr,
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = ivshm_net_poll_controller,
#endif
};
static const char ivshm_net_stats[][ETH_GSTRING_LEN] = {
"interrupts",
"tx_packets",
"tx_notify",
"tx_pause",
"rx_packets",
"rx_notify",
"napi_poll",
"napi_complete",
"napi_poll_0",
"napi_poll_1",
"napi_poll_2",
"napi_poll_4",
"napi_poll_8",
"napi_poll_16",
"napi_poll_32",
"napi_poll_64",
"napi_poll_128",
"napi_poll_256",
};
#define NUM_STATS ARRAY_SIZE(ivshm_net_stats)
static int ivshm_net_get_sset_count(struct net_device *ndev, int sset)
{
if (sset == ETH_SS_STATS)
return NUM_STATS;
return -EOPNOTSUPP;
}
static void ivshm_net_get_strings(struct net_device *ndev, u32 sset, u8 *buf)
{
if (sset == ETH_SS_STATS)
memcpy(buf, &ivshm_net_stats, sizeof(ivshm_net_stats));
}
static void ivshm_net_get_ethtool_stats(struct net_device *ndev,
struct ethtool_stats *estats, u64 *st)
{
struct ivshm_net *in = netdev_priv(ndev);
unsigned int n = 0;
unsigned int i;
st[n++] = in->stats.interrupts;
st[n++] = in->stats.tx_packets;
st[n++] = in->stats.tx_notify;
st[n++] = in->stats.tx_pause;
st[n++] = in->stats.rx_packets;
st[n++] = in->stats.rx_notify;
st[n++] = in->stats.napi_poll;
st[n++] = in->stats.napi_complete;
for (i = 0; i < ARRAY_SIZE(in->stats.napi_poll_n); i++)
st[n++] = in->stats.napi_poll_n[i];
memset(&in->stats, 0, sizeof(in->stats));
}
#define IVSHM_NET_REGS_LEN (3 * sizeof(u32) + 6 * sizeof(u16))
static int ivshm_net_get_regs_len(struct net_device *ndev)
{
return IVSHM_NET_REGS_LEN;
}
static void ivshm_net_get_regs(struct net_device *ndev,
struct ethtool_regs *regs, void *p)
{
struct ivshm_net *in = netdev_priv(ndev);
u32 *reg32 = p;
u16 *reg16;
*reg32++ = in->lstate;
*reg32++ = in->rstate;
*reg32++ = in->qlen;
reg16 = (u16 *)reg32;
*reg16++ = in->tx.vr.avail ? in->tx.vr.avail->idx : 0;
*reg16++ = in->tx.vr.used ? in->tx.vr.used->idx : 0;
*reg16++ = in->tx.vr.avail ? vring_avail_event(&in->tx.vr) : 0;
*reg16++ = in->rx.vr.avail ? in->rx.vr.avail->idx : 0;
*reg16++ = in->rx.vr.used ? in->rx.vr.used->idx : 0;
*reg16++ = in->rx.vr.avail ? vring_avail_event(&in->rx.vr) : 0;
}
static const struct ethtool_ops ivshm_net_ethtool_ops = {
.get_sset_count = ivshm_net_get_sset_count,
.get_strings = ivshm_net_get_strings,
.get_ethtool_stats = ivshm_net_get_ethtool_stats,
.get_regs_len = ivshm_net_get_regs_len,
.get_regs = ivshm_net_get_regs,
};
static int ivshm_net_probe(struct pci_dev *pdev,
const struct pci_device_id *id)
{
struct net_device *ndev;
struct ivshm_net *in;
struct ivshmem_regs __iomem *regs;
resource_size_t shmaddr;
resource_size_t shmlen;
char *device_name;
void *shm;
u32 ivpos;
int ret;
ret = pcim_enable_device(pdev);
//pr_info("RH: %s(): ret(%d)\n", __func__, ret);
if (ret) {
dev_err(&pdev->dev, "pci_enable_device: %d\n", ret);
return ret;
}
ret = pcim_iomap_regions(pdev, BIT(0), DRV_NAME);
if (ret) {
dev_err(&pdev->dev, "pcim_iomap_regions: %d\n", ret);
return ret;
}
regs = pcim_iomap_table(pdev)[0];
pr_info("RH: %s(): regs(0x%p) for L|R|state\n", __func__, regs);
shmlen = pci_resource_len(pdev, 2);
if (shmlen) {
shmaddr = pci_resource_start(pdev, 2);
pr_info("RH: %s() shmaddr(%lld)\n", __func__, shmaddr);
} else {
union { u64 v; u32 hl[2]; } val;
pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR,
&val.hl[0]);
pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR + 4,
&val.hl[1]);
shmaddr = val.v;
pr_info("RH: %s() in else : shmaddr(%lld)\n", __func__, val.v);
pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ,
&val.hl[0]);
pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ + 4,
&val.hl[1]);
shmlen = val.v;
pr_info("RH: %s() in else : shmlen(%lld)\n", __func__, val.v);
}
if (!devm_request_mem_region(&pdev->dev, shmaddr, shmlen, DRV_NAME))
return -EBUSY;
shm = devm_memremap(&pdev->dev, shmaddr, shmlen, MEMREMAP_WB);
if (!shm)
return -ENOMEM;
ivpos = readl(®s->ivpos);
if (ivpos > 1) {
dev_err(&pdev->dev, "invalid IVPosition %d\n", ivpos);
return -EINVAL;
}
device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s[%s]", DRV_NAME,
dev_name(&pdev->dev));
if (!device_name)
return -ENOMEM;
pr_info("RH:%s(): device name of virtual pci is %s\n", __func__, device_name);
ndev = alloc_etherdev(sizeof(*in));
if (!ndev)
return -ENOMEM;
pci_set_drvdata(pdev, ndev);
SET_NETDEV_DEV(ndev, &pdev->dev);
in = netdev_priv(ndev);
in->ivshm_regs = regs;
in->shm = shm;
in->shmaddr = shmaddr;
in->shmlen = shmlen;
in->peer_id = !ivpos;
in->pdev = pdev;
spin_lock_init(&in->tx_free_lock);
spin_lock_init(&in->tx_clean_lock);
ret = ivshm_net_calc_qsize(ndev);
if (ret)
goto err_free;
in->state_wq = alloc_ordered_workqueue(device_name, 0);
if (!in->state_wq)
goto err_free;
pr_info("RH: %s() : state_work:(%d)\n",__func__,in->state_work.data);
INIT_WORK(&in->state_work, ivshm_net_state_change);
pr_info("RH: %s() : ndev->dev_addr:(%d)\n",__func__,ndev->dev_addr);
eth_random_addr(ndev->dev_addr);
ndev->netdev_ops = &ivshm_net_ops;
ndev->ethtool_ops = &ivshm_net_ethtool_ops;
ndev->mtu = min_t(u32, IVSHM_NET_MTU_DEF, in->qsize / 16);
ndev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG;
ndev->features = ndev->hw_features;
netif_carrier_off(ndev);
netif_napi_add(ndev, &in->napi, ivshm_net_poll, NAPI_POLL_WEIGHT);
ret = register_netdev(ndev);
if (ret)
goto err_wq;
#if 1 // JH original
ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_LEGACY | PCI_IRQ_MSIX);
#endif
#if 0
ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSIX);
#endif
pr_info("RH: %s() : return value of pci_alloc_irq_vectors:(%d)\n",__func__,ret);
if (ret < 0)
goto err_alloc_irq;
#if 1 // JH original
ret = request_irq(pci_irq_vector(pdev, 0), ivshm_net_int, 0,
device_name, ndev);
#endif
#if 0
ret = request_irq(pci_irq_vector(pdev, 0), ivshm_net_int, IRQF_SHARED,
device_name, ndev);
#endif
if (ret)
goto err_request_irq;
pci_set_master(pdev);
if (!pdev->msix_enabled)
writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
ivshm_net_check_state(ndev);
return 0;
err_request_irq:
pci_free_irq_vectors(pdev);
err_alloc_irq:
unregister_netdev(ndev);
err_wq:
destroy_workqueue(in->state_wq);
err_free:
free_netdev(ndev);
return ret;
}
static void ivshm_net_remove(struct pci_dev *pdev)
{
struct net_device *ndev = pci_get_drvdata(pdev);
struct ivshm_net *in = netdev_priv(ndev);
writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
if (!pdev->msix_enabled)
writel(0, &in->ivshm_regs->intxctrl);
free_irq(pci_irq_vector(pdev, 0), ndev);
pci_free_irq_vectors(pdev);
unregister_netdev(ndev);
cancel_work_sync(&in->state_work);
destroy_workqueue(in->state_wq);
free_netdev(ndev);
}
static const struct pci_device_id ivshm_net_id_table[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_REDHAT_QUMRANET, 0x1110),
(PCI_CLASS_OTHERS << 16) | (0x01 << 8), 0xffff00 },
{ 0 }
};
MODULE_DEVICE_TABLE(pci, ivshm_net_id_table);
static struct pci_driver ivshm_net_driver = {
.name = DRV_NAME,
.id_table = ivshm_net_id_table,
.probe = ivshm_net_probe,
.remove = ivshm_net_remove,
};
module_pci_driver(ivshm_net_driver);
MODULE_AUTHOR("Mans Rullgard <[email protected]>");
MODULE_LICENSE("GPL");
Started cell "Linux 4.9.47 non root"
[ 0.000000] Linux version 4.9.47-rt37+-RedHawk-7.4-custom
([email protected]) (gcc version 5.4.0 (GCC) ) #67 SMP PREEMPT Fri Apr
28
[ 0.000000] Command line: console=ttyS0,115200
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point
registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes,
using 'standard' format.
[ 0.000000] x86/fpu: Using 'eager' FPU context switches.
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x00000000000fffff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000000100fff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000200000-0x00000000c01fffff] usable
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] extended physical RAM map:
[ 0.000000] reserve setup_data: [mem 0x0000000000000000-0x0000000000006fff]
usable
[ 0.000000] reserve setup_data: [mem 0x0000000000007000-0x0000000000007127]
usable
[ 0.000000] reserve setup_data: [mem 0x0000000000007128-0x00000000000fffff]
usable
[ 0.000000] reserve setup_data: [mem 0x0000000000100000-0x0000000000100fff]
reserved
[ 0.000000] reserve setup_data: [mem 0x0000000000200000-0x00000000c01fffff]
usable
[ 0.000000] DMI not present or invalid.
[ 0.000000] Hypervisor detected: Jailhouse
[ 0.000000] e820: last_pfn = 0xc0200 max_arch_pfn = 0x400000000
[ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT
[ 0.000000] Scanning 2 areas for low memory corruption
[ 0.000000] Using GB pages for direct mapping
[ 0.000000] RAMDISK: [mem 0x05d43000-0x23f77fff]
[ 0.000000] No NUMA configuration found
[ 0.000000] Faking a node at [mem 0x0000000000000000-0x00000000c01fffff]
[ 0.000000] NODE_DATA(0) allocated [mem 0xc01fc000-0xc01fffff]
[ 0.000000] cma: Reserved 16 MiB at 0x00000000bf000000
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff]
[ 0.000000] DMA32 [mem 0x0000000001000000-0x00000000c01fffff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000001000-0x000000000009ffff]
[ 0.000000] node 0: [mem 0x0000000000200000-0x00000000c01fffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x00000000c01fffff]
[ 0.000000] SFI: Simple Firmware Interface v0.81 http://simplefirmware.org
[ 0.000000] IOAPIC[0]: apic_id 0, version 32, address 0xfec00000, GSI 0-23
[ 0.000000] smpboot: Allowing 2 CPUs, 0 hotplug CPUs
[ 0.000000] e820: [mem 0xc0200000-0xffffffff] available for PCI devices
[ 0.000000] Booting paravirtualized kernel on bare hardware
[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles:
0xffffffff, max_idle_ns: 1910969940391419 ns
[ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:2
nr_node_ids:1
[ 0.000000] percpu: Embedded 115 pages/cpu @ffff8800bee00000 s430280 r8192
d32568 u1048576
[ 0.000000] kexec_core: kexec records boot cpu as 0
[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total
pages: 774278
[ 0.000000] Policy zone: DMA32
[ 0.000000] Kernel command line: console=ttyS0,115200
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] Memory: 2525580K/3146364K available (15662K kernel code, 2416K
rwdata, 6148K rodata, 2096K init, 29176K bss, 604400K reserved, )
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] JRCU static data structures initialized.
[ 0.000000] NR_IRQS:16640 nr_irqs:424 0
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [ttyS0] enabled
[ 0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc.,
Ingo Molnar
[ 0.000000] ... MAX_LOCKDEP_SUBCLASSES: 8
[ 0.000000] ... MAX_LOCK_DEPTH: 48
[ 0.000000] ... MAX_LOCKDEP_KEYS: 8191
[ 0.000000] ... CLASSHASH_SIZE: 4096
[ 0.000000] ... MAX_LOCKDEP_ENTRIES: 32768
[ 0.000000] ... MAX_LOCKDEP_CHAINS: 65536
[ 0.000000] ... CHAINHASH_SIZE: 32768
[ 0.000000] memory used by lock dependency info: 8159 kB
[ 0.000000] per task-struct memory footprint: 1920 bytes
[ 0.000000] ODEBUG: selftest passed
[ 0.000000] tsc: Detected 2099.998 MHz processor
[ 0.000004] Calibrating delay loop (skipped), value calculated using timer
frequency.. 4199.99 BogoMIPS (lpj=2099998)
[ 0.010618] pid_max: default: 32768 minimum: 301
[ 0.015275] Security Framework initialized
[ 0.019370] SELinux: Initializing.
[ 0.023219] Dentry cache hash table entries: 524288 (order: 10, 4194304
bytes)
[ 0.031146] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
[ 0.038487] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.045183] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.052968] CPU: Physical Processor ID: 0
[ 0.056973] CPU: Processor Core ID: 2
[ 0.060638] mce: CPU supports 22 MCE banks
[ 0.064759] CPU0: Thermal monitoring enabled (TM1)
[ 0.069567] process: using mwait in idle threads
[ 0.074181] Last level iTLB entries: 4KB 64, 2MB 8, 4MB 8
[ 0.079575] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4
[ 0.085908] Freeing SMP alternatives memory: 48K
[ 0.093597] ftrace: allocating 52571 entries in 206 pages
[ 0.139609] smpboot: Max logical packages: 1
[ 0.144097] x2apic: IRQ remapping doesn't support X2APIC mode
[ 0.150055] Switched APIC routing to physical flat.
[ 0.155063] smpboot: CPU0: Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
(family: 0x6, model: 0x4f, stepping: 0x1)
[ 0.165119] Performance Events: PEBS fmt2+, Broadwell events, 16-deep LBR,
full-width counters, Intel PMU driver.
[ 0.175507] ... version: 3
[ 0.179514] ... bit width: 48
[ 0.183611] ... generic registers: 4
[ 0.187616] ... value mask: 0000ffffffffffff
[ 0.192930] ... max period: 00007fffffffffff
[ 0.198242] ... fixed-purpose events: 3
[ 0.202255] ... event mask: 000000070000000f
[ 0.214516] NMI watchdog: enabled on all CPUs, permanently consumes one
hw-PMU counter.
[ 0.228414] x86: Booting SMP configuration:
[ 0.232605] .... node #0, CPUs: #1CPU 3 received SIPI, vector 9a
[ 0.300427] x86: Booted up 1 node, 2 CPUs
[ 0.304446] smpboot: Total of 2 processors activated (8293.10 BogoMIPS)
[ 0.314576] devtmpfs: initialized
[ 0.318116] evm: security.selinux
[ 0.321444] evm: security.SMACK64
[ 0.324768] evm: security.capability
[ 0.328650] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff,
max_idle_ns: 1911260446275000 ns
[ 0.328651] JRCU now processing callbacks.
[ 0.328653] JRCU non-expedited frame rate is 20 Hz, expedited is 500 Hz, max
is 1000 Hz.
[ 0.328658] JRCU daemon running SCHED_RR at priority 1.
[ 0.338517] kworker/u4:1 (20) used greatest stack depth: 14248 bytes left
[ 0.362627] futex hash table entries: 512 (order: 4, 65536 bytes)
[ 0.370315] xor: automatically using best checksumming function avx
[ 0.377369] pinctrl core: initialized pinctrl subsystem
[ 0.383207] NET: Registered protocol family 16
[ 0.388415] kworker/u4:1 (41) used greatest stack depth: 13560 bytes left
[ 0.400139] cpuidle: using governor ladder
[ 0.408152] cpuidle: using governor menu
[ 0.412257] PCI: Using configuration type 1 for base access
[ 0.417842] PCI: ashok JH PCI MMCONFIG
[ 0.421603] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem
0x80000000-0x8fffffff] (base 0x80000000)
[ 0.430907] ------------[ cut here ]------------
[ 0.435532] WARNING: CPU: 0 PID: 1 at arch/x86/mm/ioremap.c:121
__ioremap_caller+0x286/0x360
[ 0.443968] ioremap on RAM at 0x0000000080000000 - 0x000000008fffffff
[ 0.450406] Modules linked in:
[ 0.453483] CPU: 0 PID: 1 Comm: swapper/0 Not tainted
4.9.47-rt37+-RedHawk-7.4-custom #67
[ 0.461648] ffffc9000062bd10 ffffffff8155da23 ffffc9000062bd60
0000000000000000
[ 0.469100] ffffc9000062bd50 ffffffff81077d1b 00000079ffffffff
0000000010000000
[ 0.476553] 0000000000000002 ffffffff81d95e7f 0000000080000000
0000000000000000
[ 0.484006] Call Trace:
[ 0.486455] [<ffffffff8155da23>] dump_stack+0x85/0xc2
[ 0.491590] [<ffffffff81077d1b>] __warn+0xcb/0xf0
[ 0.496376] [<ffffffff81d95e7f>] ? pci_mmcfg_arch_map+0x2f/0x70
[ 0.502370] [<ffffffff81077d8f>] warn_slowpath_fmt+0x4f/0x60
[ 0.508107] [<ffffffff81060c16>] __ioremap_caller+0x286/0x360
[ 0.513935] [<ffffffff810dec19>] ? vprintk_default+0x29/0x40
[ 0.519680] [<ffffffff811afde4>] ? printk+0x48/0x50
[ 0.524637] [<ffffffff82b35f15>] ? pcibios_resource_survey+0x70/0x70
[ 0.531067] [<ffffffff81060d07>] ioremap_nocache+0x17/0x20
[ 0.536632] [<ffffffff81d95e7f>] pci_mmcfg_arch_map+0x2f/0x70
[ 0.542454] [<ffffffff82b35fbd>] pci_mmcfg_arch_init+0x1d/0x42
[ 0.548366] [<ffffffff82ae0a25>] jailhouse_pci_arch_init+0x40/0x44
[ 0.554620] [<ffffffff82b35f50>] pci_arch_init+0x3b/0x66
[ 0.560015] [<ffffffff81000420>] do_one_initcall+0x50/0x190
[ 0.565666] [<ffffffff8109aa7a>] ? parse_args+0x26a/0x3f0
[ 0.571151] [<ffffffff82ac9154>] kernel_init_freeable+0x1cf/0x257
[ 0.577321] [<ffffffff81f3caf0>] ? rest_init+0x90/0x90
[ 0.582536] [<ffffffff81f3cafe>] kernel_init+0xe/0x120
[ 0.587757] [<ffffffff81f4653a>] ret_from_fork+0x2a/0x40
[ 0.593177] ---[ end trace 8cd5fd5ad197e354 ]---
[ 0.597800] PCI: can't map MMCONFIG at [mem 0x80000000-0x8fffffff]
[ 0.605081] kworker/u4:4 (65) used greatest stack depth: 13512 bytes left
[ 0.637015] kworker/u4:4 (639) used greatest stack depth: 12984 bytes left
[ 0.644373] HugeTLB registered 1 GB page size, pre-allocated 0 pages
[ 0.650739] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.673439] raid6: sse2x1 gen() 7507 MB/s
[ 0.694306] raid6: sse2x1 xor() 5748 MB/s
[ 0.715181] raid6: sse2x2 gen() 9273 MB/s
[ 0.736056] raid6: sse2x2 xor() 6246 MB/s
[ 0.756925] raid6: sse2x4 gen() 10945 MB/s
[ 0.777793] raid6: sse2x4 xor() 7671 MB/s
[ 0.798661] raid6: avx2x1 gen() 15019 MB/s
[ 0.819531] raid6: avx2x2 gen() 17765 MB/s
[ 0.839996] raid6: avx2x4 gen() 21515 MB/s
[ 0.844272] raid6: using algorithm avx2x4 gen() 21515 MB/s
[ 0.849760] raid6: using avx2x2 recovery algorithm
[ 0.854801] ACPI: Interpreter disabled.
[ 0.859322] vgaarb: loaded
[ 0.862752] SCSI subsystem initialized
[ 0.866842] usbcore: registered new interface driver usbfs
[ 0.872498] usbcore: registered new interface driver hub
[ 0.877894] usbcore: registered new device driver usb
[ 0.883051] pps_core: LinuxPPS API ver. 1 registered
[ 0.888048] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo
Giometti <[email protected]>
[ 0.897185] PTP clock support registered
[ 0.901249] dmi: Firmware registration failed.
[ 0.906725] PCI: Probing PCI hardware
[ 0.910457] PCI host bridge to bus 0000:00
[ 0.914562] pci_bus 0000:00: root bus resource [io 0x0000-0xffff]
[ 0.920746] pci_bus 0000:00: root bus resource [mem
0x00000000-0x3fffffffffff]
[ 0.927968] pci_bus 0000:00: No busn resource found for root bus, will use
[bus 00-ff]
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): outside big if cond :for ivshmem type: step-2,
mask(ffff0000), value(0)
JH: in ivshmem_pci_cfg_write()
JH: value(0x11)
JH: ivshmem_pci_cfg_write(): in IVSHMEM_CFG_MSIX_CAP case
JH:in ivshmem_write_msix_control()
[ 1.248995] NetLabel: Initializing
[ 1.252406] NetLabel: domain hash size = 128
[ 1.256769] NetLabel: protocols = UNLABELED CIPSOv4
[ 1.261765] NetLabel: unlabeled traffic allowed by default
[ 1.267498] clocksource: Switched to clocksource refined-jiffies
[ 1.327939] VFS: Disk quotas dquot_6.6.0
[ 1.331895] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 1.339024] pnp: PnP ACPI: disabled
[ 1.350779] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff,
max_idle_ns: 2085701024 ns
[ 1.359667] clocksource: Switched to clocksource acpi_pm
[ 1.365064] pci 0000:00:0e.0: BAR 0: assigned [mem 0x100000000-0x1000000ff
64bit]
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH:pci_cfg_write_moderate(): in case of PCI_CFG_HDR_SZ->PCI_CONFIG_ALLOW
JH:pci_cfg_write_moderate(): for ivshmem type, calling ivshmem_pci_cfg_write()
api step-1, mask(ffff), value(0)
JH: in ivshmem_pci_cfg_write()
JH: value(0x100000)
JH:in ivshmem_write_command()
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH:pci_cfg_write_moderate(): in case of PCI_CFG_HDR_SZ->PCI_CONFIG_ALLOW
JH:pci_cfg_write_moderate(): for ivshmem type, calling ivshmem_pci_cfg_write()
api step-1, mask(ffff), value(0)
JH: in ivshmem_pci_cfg_write()
JH: value(0x100000)
JH:in ivshmem_write_command()
[ 1.451890] pci 0000:00:0e.0: BAR 4: assigned [mem 0x100000100-0x10000011f
64bit]
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH:pci_cfg_write_moderate(): in case of PCI_CFG_HDR_SZ->PCI_CONFIG_ALLOW
JH:pci_cfg_write_moderate(): for ivshmem type, calling ivshmem_pci_cfg_write()
api step-1, mask(ffff), value(0)
JH: in ivshmem_pci_cfg_write()
JH: value(0x100000)
JH:in ivshmem_write_command()
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): not equal to bridge type
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH:pci_cfg_write_moderate(): in case of PCI_CFG_HDR_SZ->PCI_CONFIG_ALLOW
JH:pci_cfg_write_moderate(): for ivshmem type, calling ivshmem_pci_cfg_write()
api step-1, mask(ffff), value(0)
JH: in ivshmem_pci_cfg_write()
JH: value(0x100000)
JH:in ivshmem_write_command()
[ 1.538971] NET: Registered protocol family 2
[ 1.543991] TCP established hash table entries: 32768 (order: 6, 262144
bytes)
[ 1.551381] TCP bind hash table entries: 32768 (order: 9, 2097152 bytes)
[ 1.559490] TCP: Hash tables configured (established 32768 bind 32768)
[ 1.566083] UDP hash table entries: 2048 (order: 6, 327680 bytes)
[ 1.572412] UDP-Lite hash table entries: 2048 (order: 6, 327680 bytes)
[ 1.579282] NET: Registered protocol family 1
[ 1.583903] RPC: Registered named UNIX socket transport module.
[ 1.589861] RPC: Registered udp transport module.
[ 1.594580] RPC: Registered tcp transport module.
[ 1.599289] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 1.605730] tsc: Refining TSC calibration synchronously, will consume one
second...
[ 2.613518] tsc: Refined TSC calibration by +0 ppm to 2099.998 MHz.
[ 2.619788] clocksource: tsc: mask: 0xffffffffffffffff max_cycles:
0x1e452ea631d, max_idle_ns: 440795244572 ns
[ 2.629810] clocksource: Switched to clocksource tsc
[ 2.634996] Trying to unpack rootfs image as initramfs...
[ 4.226405] Freeing initrd memory: 493780K
[ 4.238327] DMA-API: preallocated 65536 debug entries
[ 4.243384] DMA-API: debugging enabled by kernel config
[ 4.248720] Intel CQM monitoring enabled
[ 4.252655] Intel MBM enabled
[ 4.256204] Scanning for low memory corruption every 60 seconds
[ 4.262276] Masterclock system initialized.
[ 4.266494] Masterclock "none": registered, rating is 0.
[ 4.271839] Masterclock "none": activated.
[ 4.276228] audit: initializing netlink subsys (disabled)
[ 4.281692] audit: type=2000 audit(3.490:1): initialized
[ 4.287362] Initializing xtrace.
[ 4.291577] workingset: timestamp_bits=40 max_order=20 bucket_order=0
[ 4.310976] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 4.317528] NFS: Registering the id_resolver key type
[ 4.322625] Key type id_resolver registered
[ 4.326815] Key type id_legacy registered
[ 4.330838] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[ 4.337549] NFS: objlayout_init: Registered OSD pNFS Layout Driver
[ 4.343755] Installing knfsd (copyright (C) 1996 [email protected]).
[ 4.351030] SGI XFS with ACLs, security attributes, realtime, no debug
enabled
[ 4.362835] async_tx: api initialized (async)
[ 4.367206] Key type asymmetric registered
[ 4.371338] Block layer SCSI generic (bsg) driver version 0.4 loaded (major
245)
[ 4.378827] io scheduler noop registered
[ 4.382760] io scheduler deadline registered
[ 4.387215] io scheduler cfq registered (default)
[ 4.393877] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 4.399807] Max sleep state not auto-reduced to 1, as both TSC and the local
timer are nonstoppable
[ 4.409557] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
�[ 4.693814] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is
a 16550A
[ 4.973853] serial8250: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is
a 16550A
[ 4.982871] kobject: 'hpet' (ffff880023b5b810): kobject_release, parent
(null) (delayed 2000)
[ 4.992526] Non-volatile memory driver v1.3
[ 4.996835] Linux agpgart interface v0.103
[ 5.001053] kobject: 'agpgart-amd64' (ffff8800237b6c00): kobject_release,
parent ffff8800ba98a248 (delayed 2000)
[ 5.011369] Loading Multiboard RCIM driver, major is 243.
[ 5.016819] Initializing Multiboard RCIM UART sub-driver, major is 204.
[ 5.023538] RCIM RTC emulation driver, major is 242.
[ 5.028573] kobject: 'tpm_tis' (ffff8800237b7a00): kobject_release, parent
ffff8800ba863e48 (delayed 4000)
[ 5.038784] [drm] Initialized
[ 5.054209] brd: module loaded
[ 5.063545] loop: module loaded
[ 5.066704] skd: v2.2.1-b0260 loaded
[ 5.071061] zram: Added device: zram0
[ 5.074891] kobject: 'i2c-htcpld' (ffff88002350b600): kobject_release,
parent ffff8800ba863e48 (delayed 3000)
[ 5.085300] Loading iSCSI transport class v2.0-870.
[ 5.092342] fnic: Cisco FCoE HBA Driver, ver 1.6.0.21
[ 5.097462] fnic: Successfully Initialized Trace Buffer
[ 5.102802] fnic: Successfully Initialized FC_CTLR Trace Buffer
[ 5.109283] snic:Cisco SCSI NIC Driver, ver 0.0.1.18
[ 5.114300] snic:Trace Facility Enabled.
[ 5.114300] Trace Buffer SZ 16 Pages.
[ 5.122511] Adaptec aacraid driver 1.2-1[41066]-ms
[ 5.127359] aic94xx: Adaptec aic94xx SAS/SATA driver version 1.0.3 loaded
[ 5.134234] isci: Intel(R) C600 SAS Controller Driver - version 1.2.0
[ 5.140803] kobject: 'ips' (ffff880023268600): kobject_release, parent
ffff8800ba98a248 (delayed 1000)
[ 5.150170] qla2xxx [0000:00:00.0]-0005: : QLogic Fibre Channel HBA Driver:
8.07.00.38-k.
[ 5.158473] iscsi: registered transport (qla4xxx)
[ 5.163216] QLogic iSCSI HBA Driver
[ 5.166708] Emulex LightPulse Fibre Channel SCSI driver 11.2.0.0.
[ 5.172798] Copyright(c) 2004-2016 Emulex. All rights reserved.
[ 5.179053] megaraid cmm: 2.20.2.7 (Release Date: Sun Jul 16 00:01:03 EST
2006)
[ 5.186476] megaraid: 2.20.5.1 (Release Date: Thu Nov 16 15:32:35 EST 2006)
[ 5.193471] megasas: 06.811.02.00-rc1
[ 5.197219] mpt3sas version 13.100.00.00 loaded
[ 5.202010] 3ware Storage Controller device driver for Linux v1.26.02.003.
[ 5.208951] 3ware 9000 Storage Controller device driver for Linux
v2.26.02.014.
[ 5.216317] LSI 3ware SAS/SATA-RAID Controller device driver for Linux
v3.26.02.000.
[ 5.224088] ipr: IBM Power RAID SCSI Device Driver version: 2.6.3 (October
17, 2015)
[ 5.231872] RocketRAID 3xxx/4xxx Controller driver v1.10.0
[ 5.237395] stex: Promise SuperTrak EX Driver version: 5.00.0000.01
[ 5.243845] kobject: 'esas2r' (ffff88002326b800): kobject_release, parent
ffff8800ba98a248 (delayed 1000)
[ 5.253417] esas2r: driver will not be loaded because no ATTO esas2r devices
were found
[ 5.261418] VMware PVSCSI driver - version 1.0.7.0-k
[ 5.266553] osd: LOADED open-osd 0.2.1
[ 5.272037] libphy: Fixed MDIO Bus: probed
[ 5.276859] libphy: mdio_driver_register: xgmiitorgmii
[ 5.282312] pcnet32: pcnet32.c:v1.35 21.Apr.2008 [email protected]
[ 5.289262] Atheros(R) L2 Ethernet Driver - version 2.2.3
[ 5.294658] Copyright (c) 2007 Atheros Corporation.
[ 5.299706] bna: QLogic BR-series 10G Ethernet driver - version: 3.2.25.1
[ 5.306526] thunder-xcv, ver 1.0
[ 5.309793] thunder-BGX, ver 1.0
[ 5.313066] thunder-nic, ver 1.0
[ 5.316329] thunder-nicvf, ver 1.0
[ 6.325845] enic: Cisco VIC Ethernet NIC Driver, ver 2.3.0.20
[ 6.331744] dmfe: Davicom DM9xxx net driver, version 1.36.4 (2002-01-17)
[ 6.338491] v1.01-e (2.4 port) Sep-11-2006 Donald Becker <[email protected]>
[ 6.338491] http://www.scyld.com/network/drivers.html
[ 6.350911] uli526x: ULi M5261/M5263 net driver, version 0.9.3 (2005-7-29)
[ 6.359122] vxge: Copyright(c) 2002-2010 Exar Corp.
[ 6.364013] vxge: Driver version: 2.5.3.22640-k
[ 6.368584] e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI
[ 6.374688] e100: Copyright(c) 1999-2006 Intel Corporation
[ 6.380216] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
[ 6.387262] e1000: Copyright (c) 1999-2006 Intel Corporation.
[ 6.393042] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[ 6.398875] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[ 6.404837] jme: JMicron JMC2XX ethernet driver version 1.0.8
[ 6.410652] sky2: driver version 1.30
[ 6.414476] myri10ge: Version 1.5.3-1.534
[ 6.418603] ns83820.c: National Semiconductor DP83820 10/100/1000 driver.
[ 6.425480] nfp_netvf: NFP VF Network driver, Copyright (C) 2014-2015
Netronome Systems
[ 6.434370] ivshmem-net 0000:00:0e.0: enabling device (0000 -> 0002)
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH:pci_cfg_write_moderate(): in case of PCI_CFG_HDR_SZ->PCI_CONFIG_ALLOW
JH:pci_cfg_write_moderate(): for ivshmem type, calling ivshmem_pci_cfg_write()
api step-1, mask(ffff), value(2)
JH: in ivshmem_pci_cfg_write()
JH: value(0x100002)
JH:in ivshmem_write_command()
JH:ivshmem_write_command():PCI cmd MEM is requested
JH:ivshmem_write_command():ive-bar0-addr(0x100000000),
ive-bar4-addr(0x100000100)
[ 6.484484] RH: ivshm_net_probe(): regs(0xffffc9000064d000) for L|R|state
[ 6.491462] RH: ivshm_net_probe() in else : shmaddr(17248026624)
[ 6.497475] RH: ivshm_net_probe() in else : shmlen(1048576)
JH:in ivshmem_register_mmio()
JH: ivshmem_register_mmio(): IVPOS reg : !write mmio->value(0x1)
[ 6.511259] RH:ivshm_net_probe(): device name of virtual pci is
ivshmem-net[0000:00:0e.0]
[ 6.519757] RH: ivshm_net_probe() : state_work:(0)
[ 6.524957] JH: __pci_enable_msix(), NR_ENTRIES: 1
[ 6.529765] JH: __pci_enable_msix(), Before return of MSIX_capability
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): outside big if cond :for ivshmem type: step-2,
mask(ffff0000), value(0)
JH: in ivshmem_pci_cfg_write()
JH: value(0x11)
JH: ivshmem_pci_cfg_write(): in IVSHMEM_CFG_MSIX_CAP case
JH:in ivshmem_write_msix_control()
[ 6.560174] JH: msix_capability_init(), calling msix_setup_entries
[ 6.566572] JH: msix_capability_init(), calling pci_msi_setup_msi_irqs
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio():in mmio-wr for msix_table , mmio-val(0xfee04000)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x0)
JH: ivshmem_is_msix_masked() global mask
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio():in mmio-wr for msix_table , mmio-val(0x0)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x0)
JH: ivshmem_is_msix_masked() global mask
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio():in mmio-wr for msix_table , mmio-val(0x4051)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x4051)
JH: ivshmem_is_msix_masked() global mask
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
[ 6.659074] JH: msix_capability_init(), calling msi_verify_entries
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): outside big if cond :for ivshmem type: step-2,
mask(ffff0000), value(c0000000)
JH: in ivshmem_pci_cfg_write()
JH: value(0xc0000011)
JH: ivshmem_pci_cfg_write(): in IVSHMEM_CFG_MSIX_CAP case
JH:in ivshmem_write_msix_control()
JH:ivshmem_write_msix_control(): new value for caps of msix,
newval-raw(0xc0000011)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x4051)
JH: ivshmem_is_msix_masked() global mask
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio(): else of msix-table, but not of write, mmio-val(0x1)
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio():in mmio-wr for msix_table , mmio-val(0x1)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x4051)
JH: ivshmem_is_msix_masked() global mask
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
[ 6.756075] JH: msix_capability_init(), calling populate_msi_sysfsn
[ 6.762571] JH:populate_msi_sysfs(), msi_dev_attr->attr.name: 24
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH:pci_cfg_write_moderate(): in case of PCI_CFG_HDR_SZ->PCI_CONFIG_ALLOW
JH:pci_cfg_write_moderate(): for ivshmem type, calling ivshmem_pci_cfg_write()
api step-1, mask(ffff), value(402)
JH: in ivshmem_pci_cfg_write()
JH: value(0x100402)
JH:in ivshmem_write_command()
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): outside big if cond :for ivshmem type: step-2,
mask(ffff0000), value(80000000)
JH: in ivshmem_pci_cfg_write()
JH: value(0x80000011)
JH: ivshmem_pci_cfg_write(): in IVSHMEM_CFG_MSIX_CAP case
JH:in ivshmem_write_msix_control()
JH:ivshmem_write_msix_control(): new value for caps of msix,
newval-raw(0x80000011)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x4051)
JH: ivshmem_is_msix_masked() local mask
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
[ 6.848608] JH: msix_capability_init(), calling pcibios_free_irq
[ 6.854841] JH: pci_alloc_irq_vectors(),vecs: 1
[ 6.859375] ivshmem-net 0000:00:0e.0: JH:pci_irq_vector(): IRQ:: i(0), nr(0)
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio():in mmio-wr for msix_table , mmio-val(0x0)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x4051)
JH: ivshmem_is_msix_masked() BUS master
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio(): else of msix-table, but not of write,
mmio-val(0xfee04000)
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio():in mmio-wr for msix_table , mmio-val(0xfee04000)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x4051)
JH: ivshmem_is_msix_masked() BUS master
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio():in mmio-wr for msix_table , mmio-val(0x0)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x4051)
JH: ivshmem_is_msix_masked() BUS master
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
JH:in ivshmem_msix_mmio()
JH:ivshmem_msix_mmio(): else of mmio-addr >= msix_vec(0x20)
JH:ivshmem_msix_mmio():in mmio-wr for msix_table , mmio-val(0x4051)
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x4051)
JH: ivshmem_is_msix_masked() BUS master
JH: arch_ivshmem_update_msix(), ivshmem_is_msix_masked
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH:pci_cfg_write_moderate(): in case of PCI_CFG_HDR_SZ->PCI_CONFIG_ALLOW
JH:pci_cfg_write_moderate(): for ivshmem type, calling ivshmem_pci_cfg_write()
api step-1, mask(ffff), value(6)
JH: in ivshmem_pci_cfg_write()
JH: value(0x100006)
JH:in ivshmem_write_command()
JH: INSIDE arch_ivshmem_update_msix(),MSI_addr(0xfee04000), MSI_data(0x4051)
JH: ivshmem_is_msix_masked() return false
JH: arch_ivshmem_update_msix(), getting irq_msg
JH:X86_PCI_TRANSLATE_MSI(): for apic_irq_message
JH:ivshmem_write_command(): val of cmd_master NOT EQ cmd of CMD_master, err(0)
JH: in pci_cfg_write_moderate()
JH:pci_cfg_write_moderate(): in if cond of PCI_CONFIG_HEADER_SIZE
JH:pci_cfg_write_moderate(): in case of PCI_CFG_HDR_SZ->PCI_CONFIG_ALLOW
JH:pci_cfg_write_moderate(): for ivshmem type, calling ivshmem_pci_cfg_write()
api step-1, mask(ff00), value(4000)
JH: in ivshmem_pci_cfg_write()
JH: value(0x4000)
JH:in ivshmem_register_mmio()
JH: ivshmem_register_mmio(): LSTATE:is_write() true : mmio->val(0)
JH: ivshmem_remote_interrupt() : ive->remote(0xfffffffff022b000)
JH: arch_ivshmem_trigger_interrupt()
JH:in ivshmem_register_mmio()
JH: ivshmem_register_mmio(): RSTATE: !is_write() true : mmio->val(0),
remote(0xfffffffff022b000)
J[ in 7vs12e58reusstor_m rogi
er: nsh im_rrficeerrimir ):nRSxxTE: !is_write() true : mmio->val(0),
remote(0xfffffffff022b000)
JH:in ivshmem_register_mmio()
JH: ivshmem_register_mmio(): LSTATE:is_write() true : mmio->val(1)
JH: ivshmem_remote_interrupt() : ive->remote(0xfffffffff022b000)
JH: arch_ivshmem_trigger_interrupt()
[ 7.123849] RH: ivshm_net_set_state(): rstate(0)
[ 7.123850] RH: ivshm_net_set_state(): in IVSHM_NET_STATE_RESET case:
rstate(0), lstate(0)
[ 7.123850] RH: ivshm_net_set_state() : inside IVSHM_NET_STATE_READY if cond
[ 7.141274] RH: ivshm_net_set_state() : lstate is:(1)
[ 7.166515] Fusion MPT base driver 3.04.20
[ 7.170613] Copyright (c) 1999-2008 LSI Corporation
[ 7.175503] Fusion MPT SPI Host driver 3.04.20
[ 7.180004] Fusion MPT FC Host driver 3.04.20
[ 7.184409] Fusion MPT SAS Host driver 3.04.20
[ 7.188898] Fusion MPT misc device (ioctl) driver 3.04.20
[ 7.194424] mptctl: Registered with Fusion MPT base driver
[ 7.199918] mptctl: /dev/mptctl @ (major,minor=10,220)
[ 7.205064] Fusion MPT LAN driver 3.04.20
[ 7.209373] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 7.215915] ehci-pci: EHCI PCI platform driver
[ 7.220390] ehci-platform: EHCI generic platform driver
[ 7.225645] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 7.231834] ohci-platform: OHCI generic platform driver
[ 7.237080] uhci_hcd: USB Universal Host Controller Interface driver
[ 7.243647] mousedev: PS/2 mouse device common for all mice
[ 7.249824] kobject: 'rtc_cmos' (ffff88002317e400): kobject_release, parent
ffff8800ba863e48 (delayed 1000)
[ 7.259573] kobject: 'rtc_cmos' (ffff88002317e200): kobject_release, parent
ffff8800ba8bbe48 (delayed 3000)
[ 7.270194] md: linear personality registered for level -1
[ 7.275723] md: raid0 personality registered for level 0
[ 7.281036] md: raid1 personality registered for level 1
[ 7.286346] md: raid10 personality registered for level 10
[ 7.291949] md: raid6 personality registered for level 6
[ 7.297271] md: raid5 personality registered for level 5
[ 7.302587] md: raid4 personality registered for level 4
[ 7.307900] md: multipath personality registered for level -4
[ 7.313647] md: faulty personality registered for level -5
[ 7.319403] device-mapper: uevent: version 1.0.3
[ 7.324308] device-mapper: ioctl: 4.35.0-ioctl (2016-06-23) initialised:
[email protected]
[ 7.332947] device-mapper: multipath round-robin: version 1.2.0 loaded
[ 7.339478] device-mapper: multipath queue-length: version 0.2.0 loaded
[ 7.346095] device-mapper: multipath service-time: version 0.3.0 loaded
[ 7.352872] hidraw: raw HID events driver (C) Jiri Kosina
[ 7.358653] usbcore: registered new interface driver usbhid
[ 7.364237] usbhid: USB HID core driver
[ 7.368079] Initializing the frequency based scheduler.
[ 7.373410] oprofile: using NMI interrupt.
[ 7.377605] Netfilter messages via NETLINK v0.30.
[ 7.382520] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[ 7.388847] nf_tables: (c) 2007-2009 Patrick McHardy <[email protected]>
[ 7.395460] Initializing XFRM netlink socket
[ 7.400311] NET: Registered protocol family 10
[ 7.405460] NET: Registered protocol family 17
[ 7.409965] Bridge firewalling registered
[ 7.413991] Ebtables v2.0 registered
[ 7.417628] Key type dns_resolver registered
[ 7.422337] microcode: sig=0x406f1, pf=0x1, revision=0xb000021
[ 7.428393] microcode: Microcode Update Driver: v2.01
<[email protected]>, Peter Oruba
[ 7.437197] Kernel text replication: single NUMA memory node
[ 7.442852] Kernel text replication is disabled.
[ 7.457506] registered taskstats version 1
[ 7.461640] page_owner is disabled
[ 7.466032] Key type encrypted registered
[ 7.470058] evm: HMAC attrs: 0x0
[ 7.476016] Freeing unused kernel memory: 2096K
[ 7.480558] Write protecting the kernel read-only data: 24576k
RedHawk Live Boot
[ 8.237642] audit: type=1403 audit(7.445:2): policy loaded auid=4294967295
ses=4294967295
[ 8.252564] systemd[1]: Successfully loaded SELinux policy in 125.501ms.
[ 8.290836] systemd[1]: Relabelled /dev and /run in 7.936ms.
[ 8.299593] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.308288] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.314960] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.324258] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT
+SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCR)
[ 8.342387] systemd[1]: Detected virtualization other.
[ 8.347548] systemd[1]: Detected architecture x86-64.
Welcome to CentOS Linux 7 (Core)!
[ 8.359838] systemd[1]: No hostname configured.
[ 8.364421] systemd[1]: Set hostname to <localhost>.
[ 8.379360] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.394017] random: systemd-cryptse: uninitialized urandom read (16 bytes
read)
[ 8.395670] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.396781] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.404785] systemd-rc-loca (1692) used greatest stack depth: 12960 bytes
left
[ 8.406174] lvm2-activation (1684) used greatest stack depth: 12552 bytes
left
[ 8.408161] systemd-debug-g (1687) used greatest stack depth: 12360 bytes
left
[ 8.408522] random: systemd-sysv-ge: uninitialized urandom read (16 bytes
read)
[ 8.458748] systemd[1681]:
/usr/lib/systemd/system-generators/lvm2-activation-generator failed with error
code 127.
[ 8.470135] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.477303] random: systemd: uninitialized urandom read (16 bytes read)
[ 8.547074] systemd[1]: Mounted /.tmpfs/sfs.
[ 8.551535] systemd[1]: Cannot add dependency job for unit
lvm2-monitor.service, ignoring: Unit not found.
[ 8.561280] systemd[1]: Cannot add dependency job for unit
rhel-configure.service, ignoring: Unit is masked.
[ 8.571119] systemd[1]: Cannot add dependency job for unit
rhel-autorelabel-mark.service, ignoring: Unit is masked.
[ OK ] Reached target Timers.
[ OK ] Set up automount Arbitrary Executab...ats File System Automount Point.
[ OK ] Reached target Swap.
[ OK ] Created slice Root Slice.
[ OK ] Listening on udev Control Socket.
[ OK ] Listening on Delayed Shutdown Socket.
[ OK ] Listening on Journal Socket.
[ OK ] Listening on /dev/initctl Compatibility Named Pipe.
[ OK ] Created slice User and Session Slice.
[ OK ] Listening on udev Kernel Socket.
[ OK ] Listening on LVM2 metadata daemon socket.
[ OK ] Listening on LVM2 poll daemon socket.
[ OK ] Created slice System Slice.
Mounting Huge Pages File System...
[ OK ] Created slice system-selinux\x2dpol...grate\x2dlocal\x2dchanges.slice.
[ OK ] Reached target Slices.
Mounting Debug File System...
Mounting Temporary Directory...
Starting Journal Service...
Mounting NFSD configuration filesystem...
[ OK ] Created slice system-getty.slice.
Starting Monitoring of LVM2 mirrors... dmeventd or progress polling...
Starting Setup Virtual Console...
Starting Remount Root and Kernel File Systems...
[ OK ] Created slice system-serial\x2dgetty.slice.
Starting Create Static Device Nodes in /dev...
Starting Apply Kernel Variables...
Mounting Configuration File System...
Mounting POSIX Message Queue File System...
[ OK ] Mounted NFSD configuration filesystem.
[ OK ] Mounted Debug File System.
[ OK ] Mounted Configuration File System.
[ OK ] Mounted POSIX Message Queue File System.
[ OK ] Mounted Huge Pages File System.
[ OK ] Mounted Temporary Directory.
[ OK ] Started Journal Service.
[ OK ] Started Remount Root and Kernel File Systems.
[ OK ] Started Setup Virtual Console.
[ OK ] Started Create Static Device Nodes in /dev.
[ OK ] Started Apply Kernel Variables.
[ OK ] Started LVM2 metadata daemon.
Starting LVM2 metadata daemon...
Starting udev Kernel Device Manager...
Starting Load/Save Random Seed...
Starting Rebuild Hardware Database...
Starting Configure read-only root support...
Starting Flush Journal to Persistent Storage...
[ OK ] Started udev Kernel Device Manager.
[ OK ] Started Load/Save Random Seed.
[ OK ] Started Flush Journal to Persistent Storage.
[ OK ] Started Configure read-only root support.
[ OK ] Started Rebuild Hardware Database.
Starting udev Coldplug all Devices...
[ OK ] Started udev Coldplug all Devices.
Starting udev Wait for Complete Device Initialization...
Starting Show Plymouth Boot Screen...
Starting Device-Mapper Multipath Device Controller...
[FAILED] Failed to start Device-Mapper Multipath Device Controller.
See 'systemctl status multipathd.service' for details.
[ OK ] Started Show Plymouth Boot Screen.
Starting Initialize the iWARP/InfiniBand/RDMA stack in the kernel...
[ OK ] Found device /dev/ttyS0.
G[ OK ] Started udev Wait for Complete Device Initialization.
Starting Activation of DM RAID sets...
[ OK ] Started Activation of DM RAID sets.
[ OK ] Reached target Encrypted Volumes.
[ OK ] Started Initialize the iWARP/InfiniBand/RDMA stack in the kernel.
[ OK ] Started Monitoring of LVM2 mirrors,...ng dmeventd or progress polling.
[ OK ] Reached target Local File Systems (Pre).
[ OK ] Reached target Local File Systems.
Starting Migrate local SELinux poli...tructure to the new structure...
Starting Preprocess NFS configuration...
Starting Tell Plymouth To Write Out Runtime Data...
Starting Commit a transient machine-id on disk...
Starting Rebuild Journal
CentOS Linux 7 (Core)
Kernel 4.9.47-rt37+-RedHawk-7.4-custom on an x86_64
localhost login: root
[root@localhost ~]#