void visorchannel_debug(VISORCHANNEL *channel, int nQueues, struct seq_file *seq, U32 off) { HOSTADDRESS addr = 0; ulong nbytes = 0, nbytes_region = 0; MEMREGION *memregion = NULL; CHANNEL_HEADER hdr; CHANNEL_HEADER *phdr = &hdr; int i = 0; int errcode = 0; if (channel == NULL) { ERRDRV("%s no channel", __func__); return; } memregion = channel->memregion; if (memregion == NULL) { ERRDRV("%s no memregion", __func__); return; } addr = visor_memregion_get_physaddr(memregion); nbytes_region = visor_memregion_get_nbytes(memregion); errcode = visorchannel_read(channel, off, phdr, sizeof(CHANNEL_HEADER)); if (errcode < 0) { seq_printf(seq, "Read of channel header failed with errcode=%d)\n", errcode); if (off == 0) { phdr = &channel->chan_hdr; seq_puts(seq, "(following data may be stale)\n"); } else return; } nbytes = (ulong) (phdr->Size); seq_printf(seq, "--- Begin channel @0x%-16.16Lx for 0x%lx bytes (region=0x%lx bytes) ---\n", addr + off, nbytes, nbytes_region); seq_printf(seq, "Type = %pUL\n", &phdr->Type); seq_printf(seq, "ZoneGuid = %pUL\n", &phdr->ZoneGuid); seq_printf(seq, "Signature = 0x%-16.16Lx\n", (long long) phdr->Signature); seq_printf(seq, "LegacyState = %lu\n", (ulong) phdr->LegacyState); seq_printf(seq, "SrvState = %lu\n", (ulong) phdr->SrvState); seq_printf(seq, "CliStateBoot = %lu\n", (ulong) phdr->CliStateBoot); seq_printf(seq, "CliStateOS = %lu\n", (ulong) phdr->CliStateOS); seq_printf(seq, "HeaderSize = %lu\n", (ulong) phdr->HeaderSize); seq_printf(seq, "Size = %llu\n", (long long) phdr->Size); seq_printf(seq, "Features = 0x%-16.16llx\n", (long long) phdr->Features); seq_printf(seq, "PartitionHandle = 0x%-16.16llx\n", (long long) phdr->PartitionHandle); seq_printf(seq, "Handle = 0x%-16.16llx\n", (long long) phdr->Handle); seq_printf(seq, "VersionId = %lu\n", (ulong) phdr->VersionId); seq_printf(seq, "oChannelSpace = %llu\n", (long long) phdr->oChannelSpace); if ((phdr->oChannelSpace == 0) || (errcode < 0)) ; else for (i = 0; i < nQueues; i++) { SIGNAL_QUEUE_HEADER q; errcode = visorchannel_read(channel, off + phdr->oChannelSpace + (i * sizeof(q)), &q, sizeof(q)); if (errcode < 0) { seq_printf(seq, "failed to read signal queue #%d from channel @0x%-16.16Lx errcode=%d\n", i, addr, errcode); continue; } sigqueue_debug(&q, i, seq); } seq_printf(seq, "--- End channel @0x%-16.16Lx for 0x%lx bytes ---\n", addr + off, nbytes); }
void visorchannel_debug(VISORCHANNEL *channel, int nQueues, struct seq_file *seq, u32 off) { HOSTADDRESS addr = 0; ulong nbytes = 0, nbytes_region = 0; struct memregion *memregion = NULL; struct channel_header hdr; struct channel_header *phdr = &hdr; int i = 0; int errcode = 0; if (channel == NULL) { ERRDRV("%s no channel", __func__); return; } memregion = channel->memregion; if (memregion == NULL) { ERRDRV("%s no memregion", __func__); return; } addr = visor_memregion_get_physaddr(memregion); nbytes_region = visor_memregion_get_nbytes(memregion); errcode = visorchannel_read(channel, off, phdr, sizeof(struct channel_header)); if (errcode < 0) { seq_printf(seq, "Read of channel header failed with errcode=%d)\n", errcode); if (off == 0) { phdr = &channel->chan_hdr; seq_puts(seq, "(following data may be stale)\n"); } else { return; } } nbytes = (ulong)(phdr->size); seq_printf(seq, "--- Begin channel @0x%-16.16Lx for 0x%lx bytes (region=0x%lx bytes) ---\n", addr + off, nbytes, nbytes_region); seq_printf(seq, "Type = %pUL\n", &phdr->chtype); seq_printf(seq, "ZoneGuid = %pUL\n", &phdr->zone_uuid); seq_printf(seq, "Signature = 0x%-16.16Lx\n", (long long)phdr->signature); seq_printf(seq, "LegacyState = %lu\n", (ulong)phdr->legacy_state); seq_printf(seq, "SrvState = %lu\n", (ulong)phdr->srv_state); seq_printf(seq, "CliStateBoot = %lu\n", (ulong)phdr->cli_state_boot); seq_printf(seq, "CliStateOS = %lu\n", (ulong)phdr->cli_state_os); seq_printf(seq, "HeaderSize = %lu\n", (ulong)phdr->header_size); seq_printf(seq, "Size = %llu\n", (long long)phdr->size); seq_printf(seq, "Features = 0x%-16.16llx\n", (long long)phdr->features); seq_printf(seq, "PartitionHandle = 0x%-16.16llx\n", (long long)phdr->partition_handle); seq_printf(seq, "Handle = 0x%-16.16llx\n", (long long)phdr->handle); seq_printf(seq, "VersionId = %lu\n", (ulong)phdr->version_id); seq_printf(seq, "oChannelSpace = %llu\n", (long long)phdr->ch_space_offset); if ((phdr->ch_space_offset == 0) || (errcode < 0)) ; else for (i = 0; i < nQueues; i++) { struct signal_queue_header q; errcode = visorchannel_read(channel, off + phdr->ch_space_offset + (i * sizeof(q)), &q, sizeof(q)); if (errcode < 0) { seq_printf(seq, "failed to read signal queue #%d from channel @0x%-16.16Lx errcode=%d\n", i, addr, errcode); continue; } sigqueue_debug(&q, i, seq); } seq_printf(seq, "--- End channel @0x%-16.16Lx for 0x%lx bytes ---\n", addr + off, nbytes); }