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 <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <err.h>
|
||||
#include <assert.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/mman.h>
|
||||
#include "intel_gpu_tools.h"
|
||||
#include "i915_drm.h"
|
||||
#include "intel_batchbuffer.h"
|
||||
@ -82,6 +87,28 @@ intel_get_pci_device(void)
|
||||
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
|
||||
intel_get_mmio(void)
|
||||
{
|
||||
|
@ -56,3 +56,4 @@ void intel_get_drm_devid(int fd);
|
||||
void intel_copy_bo(struct intel_batchbuffer *batch,
|
||||
drm_intel_bo *dst_bo, drm_intel_bo *src_bo,
|
||||
int width, int height);
|
||||
void intel_map_file(char *);
|
||||
|
@ -4,8 +4,21 @@
|
||||
.SH NAME
|
||||
intel_reg_dumper \- Decode a bunch of Intel GPU registers for debugging
|
||||
.SH SYNOPSIS
|
||||
.B intel_reg_dumper
|
||||
.B intel_reg_dumper [ file ]
|
||||
.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
|
||||
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_stepping \
|
||||
intel_reg_dumper \
|
||||
intel_reg_snapshot \
|
||||
intel_reg_write \
|
||||
intel_reg_read
|
||||
|
||||
|
@ -1658,9 +1658,12 @@ intel_dump_regs(void)
|
||||
|
||||
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();
|
||||
else
|
||||
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