mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-09 17:06:14 +00:00
intel_reg_dumper: Add support for reading register dumps from files
Also add intel_reg_snapshot for creating such snapshots, and relevant documentation. Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
2187ec2112
commit
cd64e19329
@ -25,12 +25,17 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
#include <err.h>
|
#include <err.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
|
#include <sys/fcntl.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
#include "intel_gpu_tools.h"
|
#include "intel_gpu_tools.h"
|
||||||
#include "i915_drm.h"
|
#include "i915_drm.h"
|
||||||
#include "intel_batchbuffer.h"
|
#include "intel_batchbuffer.h"
|
||||||
@ -82,6 +87,28 @@ intel_get_pci_device(void)
|
|||||||
devid = pci_dev->device_id;
|
devid = pci_dev->device_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
intel_map_file(char *file)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
fd = open(file, O_RDWR);
|
||||||
|
if (fd == -1) {
|
||||||
|
fprintf(stderr, "Couldn't open %s: %s\n", file,
|
||||||
|
strerror(errno));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
fstat(fd, &st);
|
||||||
|
mmio = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
|
||||||
|
if (mmio == MAP_FAILED) {
|
||||||
|
fprintf(stderr, "Couldn't mmap %s: %s\n", file,
|
||||||
|
strerror(errno));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
intel_get_mmio(void)
|
intel_get_mmio(void)
|
||||||
{
|
{
|
||||||
|
@ -56,3 +56,4 @@ void intel_get_drm_devid(int fd);
|
|||||||
void intel_copy_bo(struct intel_batchbuffer *batch,
|
void intel_copy_bo(struct intel_batchbuffer *batch,
|
||||||
drm_intel_bo *dst_bo, drm_intel_bo *src_bo,
|
drm_intel_bo *dst_bo, drm_intel_bo *src_bo,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
|
void intel_map_file(char *);
|
||||||
|
@ -4,8 +4,21 @@
|
|||||||
.SH NAME
|
.SH NAME
|
||||||
intel_reg_dumper \- Decode a bunch of Intel GPU registers for debugging
|
intel_reg_dumper \- Decode a bunch of Intel GPU registers for debugging
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B intel_reg_dumper
|
.B intel_reg_dumper [ file ]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.B intel_reg_write
|
.B intel_reg_dumper
|
||||||
is a tool to read and decode the values of many Intel GPU registers. It is
|
is a tool to read and decode the values of many Intel GPU registers. It is
|
||||||
commonly used in debugging video mode setting issues.
|
commonly used in debugging video mode setting issues. If the
|
||||||
|
.B file
|
||||||
|
argument is present, the registers will be decoded from the given file
|
||||||
|
instead of the current registers. Use the
|
||||||
|
.B intel_reg_snapshot
|
||||||
|
tool to generate such files.
|
||||||
|
.SH ENVIRONMENT
|
||||||
|
.BR HAS_PCH_SPLIT
|
||||||
|
.PP
|
||||||
|
If set, decode as though the GPU has a PCH split. This is only necessary for
|
||||||
|
Intel HD (Ironlake) and later register dumps in files; live decodes get this
|
||||||
|
correct automatically.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR intel_reg_snapshot(1)
|
||||||
|
15
man/intel_reg_snapshot.1
Normal file
15
man/intel_reg_snapshot.1
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
.\" shorthand for double quote that works everywhere.
|
||||||
|
.ds q \N'34'
|
||||||
|
.TH intel_reg_snapshot 1 "intel_reg_snapshot 1.0"
|
||||||
|
.SH NAME
|
||||||
|
intel_reg_snapshot \- Take a GPU register snapshot
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B intel_reg_snapshot
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.B intel_reg_snapshot
|
||||||
|
takes a snapshot of the registers of an Intel GPU, and writes it to standard
|
||||||
|
output. These files can be inspected later with the
|
||||||
|
.B intel_reg_dumper
|
||||||
|
tool.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR intel_reg_dumper(1)
|
@ -10,6 +10,7 @@ bin_PROGRAMS = \
|
|||||||
intel_lid \
|
intel_lid \
|
||||||
intel_stepping \
|
intel_stepping \
|
||||||
intel_reg_dumper \
|
intel_reg_dumper \
|
||||||
|
intel_reg_snapshot \
|
||||||
intel_reg_write \
|
intel_reg_write \
|
||||||
intel_reg_read
|
intel_reg_read
|
||||||
|
|
||||||
|
@ -1658,9 +1658,12 @@ intel_dump_regs(void)
|
|||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
intel_get_mmio();
|
if (argc == 2)
|
||||||
|
intel_map_file(argv[1]);
|
||||||
|
else
|
||||||
|
intel_get_mmio();
|
||||||
|
|
||||||
if (HAS_PCH_SPLIT(devid))
|
if (HAS_PCH_SPLIT(devid) || getenv("HAS_PCH_SPLIT"))
|
||||||
ironlake_dump_regs();
|
ironlake_dump_regs();
|
||||||
else
|
else
|
||||||
intel_dump_regs();
|
intel_dump_regs();
|
||||||
|
44
tools/intel_reg_snapshot.c
Normal file
44
tools/intel_reg_snapshot.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright © 2010 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice (including the next
|
||||||
|
* paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
* Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Adam Jackson <ajax@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "intel_gpu_tools.h"
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
int mmio_bar;
|
||||||
|
|
||||||
|
intel_get_mmio();
|
||||||
|
|
||||||
|
if (IS_9XX(devid))
|
||||||
|
mmio_bar = 0;
|
||||||
|
else
|
||||||
|
mmio_bar = 1;
|
||||||
|
|
||||||
|
write(1, mmio, pci_dev->regions[mmio_bar].size);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user