From 8ae86621d6fff60b6e20c6b0f9b336785c935b0f Mon Sep 17 00:00:00 2001 From: Michał Winiarski Date: Tue, 12 Mar 2019 13:48:13 +0100 Subject: lib/igt_device: Move intel_get_pci_device under igt_device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It allows us to make things a little bit more generic. Also, we now require fd rather than doing guesswork when it comes to pci address. v2: Use readlinkat rather than string concat, move stuff around, provide a version that does not assert. (Chris) v3: Print addr on failure, avoid assignment in conditionals. (Chris) Signed-off-by: Michał Winiarski Cc: Chris Wilson Reviewed-by: Chris Wilson --- tools/intel_audio_dump.c | 9 ++++++++- tools/intel_backlight.c | 8 ++++++-- tools/intel_display_poller.c | 8 ++++++-- tools/intel_forcewaked.c | 10 +++++++--- tools/intel_gpu_time.c | 8 ++++++-- tools/intel_gtt.c | 8 +++++++- tools/intel_infoframes.c | 7 ++++++- tools/intel_l3_parity.c | 3 ++- tools/intel_lid.c | 9 +++++++-- tools/intel_panel_fitter.c | 8 +++++++- tools/intel_perf_counters.c | 3 ++- tools/intel_reg.c | 23 ++++++++++------------- tools/intel_reg_checker.c | 8 +++++++- tools/intel_watermark.c | 23 ++++++++++++++--------- 14 files changed, 95 insertions(+), 40 deletions(-) (limited to 'tools') diff --git a/tools/intel_audio_dump.c b/tools/intel_audio_dump.c index 90260a2f..350a21d9 100644 --- a/tools/intel_audio_dump.c +++ b/tools/intel_audio_dump.c @@ -32,6 +32,7 @@ #include #include #include +#include "igt_device.h" #include "intel_io.h" #include "intel_reg.h" #include "intel_chipset.h" @@ -2464,8 +2465,12 @@ static void dump_braswell(void) int main(int argc, char **argv) { struct pci_device *pci_dev; + int fd; + + fd = drm_open_driver(DRIVER_INTEL); + pci_dev = igt_device_get_pci_device(fd); + close(fd); - pci_dev = intel_get_pci_device(); devid = pci_dev->device_id; /* XXX not true when mapping! */ do_self_tests(); @@ -2493,5 +2498,7 @@ int main(int argc, char **argv) dump_eaglelake(); } + close(fd); + return 0; } diff --git a/tools/intel_backlight.c b/tools/intel_backlight.c index 067fd418..fc45d985 100644 --- a/tools/intel_backlight.c +++ b/tools/intel_backlight.c @@ -30,8 +30,9 @@ #include #include +#include "drmtest.h" +#include "igt_device.h" #include "intel_io.h" -#include "intel_chipset.h" #include "intel_reg.h" /* XXX PCH only today */ @@ -39,8 +40,11 @@ int main(int argc, char** argv) { uint32_t current, max; + int fd; - intel_mmio_use_pci_bar(intel_get_pci_device()); + fd = drm_open_driver(DRIVER_INTEL); + intel_mmio_use_pci_bar(igt_device_get_pci_device(fd)); + close(fd); current = INREG(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; max = INREG(BLC_PWM_PCH_CTL2) >> 16; diff --git a/tools/intel_display_poller.c b/tools/intel_display_poller.c index 51f5b9a5..293574f2 100644 --- a/tools/intel_display_poller.c +++ b/tools/intel_display_poller.c @@ -36,6 +36,7 @@ #include "intel_io.h" #include "intel_reg.h" #include "igt_debugfs.h" +#include "igt_device.h" #include "drmtest.h" #include "igt_aux.h" @@ -971,6 +972,7 @@ int main(int argc, char *argv[]) uint32_t a, b; enum test test = TEST_INVALID; const int count = ARRAY_SIZE(min)/2; + int fd; for (;;) { static const struct option long_options[] = { @@ -1046,7 +1048,8 @@ int main(int argc, char *argv[]) } } - devid = intel_get_pci_device()->device_id; + fd = drm_open_driver(DRIVER_INTEL); + devid = igt_device_get_pci_device(fd)->device_id; /* * check if the requires registers are @@ -1187,7 +1190,7 @@ int main(int argc, char *argv[]) break; } - intel_register_access_init(intel_get_pci_device(), 0, -1); + intel_register_access_init(igt_device_get_pci_device(fd), 0, -1); printf("%s?\n", test_name(test, pipe, bit, test_pixelcount)); @@ -1263,6 +1266,7 @@ int main(int argc, char *argv[]) } intel_register_access_fini(); + close(fd); if (quit) return 0; diff --git a/tools/intel_forcewaked.c b/tools/intel_forcewaked.c index 02fbf888..7d32337a 100644 --- a/tools/intel_forcewaked.c +++ b/tools/intel_forcewaked.c @@ -34,8 +34,8 @@ #include #include #include +#include "igt_device.h" #include "intel_io.h" -#include "intel_chipset.h" #include "drmtest.h" bool daemonized; @@ -65,6 +65,7 @@ is_alive(void) { int main(int argc, char *argv[]) { int ret; + int fd; if (argc > 2 || (argc == 2 && !strncmp(argv[1], "-h", 2))) { help(argv[1]); @@ -80,24 +81,27 @@ int main(int argc, char *argv[]) INFO_PRINT("started daemon"); } - ret = intel_register_access_init(intel_get_pci_device(), 1, -1); + fd = drm_open_driver(DRIVER_INTEL); + ret = intel_register_access_init(igt_device_get_pci_device(fd), 1, -1); if (ret) { INFO_PRINT("Couldn't init register access\n"); exit(1); } else { INFO_PRINT("Forcewake locked\n"); } + while(1) { if (!is_alive()) { INFO_PRINT("gpu reset? restarting daemon\n"); intel_register_access_fini(); - ret = intel_register_access_init(intel_get_pci_device(), 1, -1); + ret = intel_register_access_init(igt_device_get_pci_device(fd), 1, -1); if (ret) INFO_PRINT("Reg access init fail\n"); } sleep(1); } intel_register_access_fini(); + close(fd); INFO_PRINT("Forcewake unlock\n"); if (daemonized) { diff --git a/tools/intel_gpu_time.c b/tools/intel_gpu_time.c index 56d65fe0..0fc73f92 100644 --- a/tools/intel_gpu_time.c +++ b/tools/intel_gpu_time.c @@ -34,8 +34,9 @@ #include #include +#include "drmtest.h" +#include "igt_device.h" #include "intel_io.h" -#include "intel_chipset.h" #include "intel_reg.h" #define SAMPLES_PER_SEC 10000 @@ -66,8 +67,11 @@ int main(int argc, char **argv) struct timeval start, end; static struct rusage rusage; int status; + int fd; - intel_mmio_use_pci_bar(intel_get_pci_device()); + fd = drm_open_driver(DRIVER_INTEL); + intel_mmio_use_pci_bar(igt_device_get_pci_device(fd)); + close(fd); if (argc == 1) { fprintf(stderr, "usage: %s cmd [args...]\n", argv[0]); diff --git a/tools/intel_gtt.c b/tools/intel_gtt.c index 311694ba..5740e794 100644 --- a/tools/intel_gtt.c +++ b/tools/intel_gtt.c @@ -34,6 +34,8 @@ #include #include +#include "drmtest.h" +#include "igt_device.h" #include "intel_io.h" #include "intel_chipset.h" @@ -140,13 +142,17 @@ int main(int argc, char **argv) { struct pci_device *pci_dev; unsigned int start, gtt_size; + int fd; int flag[] = { PCI_DEV_MAP_FLAG_WRITE_COMBINE, PCI_DEV_MAP_FLAG_WRITABLE, 0 }, f; - pci_dev = intel_get_pci_device(); + fd = drm_open_driver(DRIVER_INTEL); + pci_dev = igt_device_get_pci_device(fd); + close(fd); + devid = pci_dev->device_id; if (IS_GEN2(devid)) { diff --git a/tools/intel_infoframes.c b/tools/intel_infoframes.c index 2ef5d4fd..9129572a 100644 --- a/tools/intel_infoframes.c +++ b/tools/intel_infoframes.c @@ -30,6 +30,7 @@ #include #include #include +#include "igt_device.h" #include "intel_io.h" #include "intel_chipset.h" #include "drmtest.h" @@ -1081,6 +1082,7 @@ printf("Options:\n" int main(int argc, char *argv[]) { int opt; + int fd; int ret = 0; Transcoder transcoder = TRANSC_INVALID; DipType dip = DIP_INVALID; @@ -1107,7 +1109,10 @@ int main(int argc, char *argv[]) printf("WARNING: This is just a debugging tool! Don't expect it to work" " perfectly: the Kernel might undo our changes.\n"); - pci_dev = intel_get_pci_device(); + fd = drm_open_driver(DRIVER_INTEL); + pci_dev = igt_device_get_pci_device(fd); + close(fd); + intel_register_access_init(pci_dev, 0, -1); intel_check_pch(); diff --git a/tools/intel_l3_parity.c b/tools/intel_l3_parity.c index d8c997af..e2e4503a 100644 --- a/tools/intel_l3_parity.c +++ b/tools/intel_l3_parity.c @@ -36,6 +36,7 @@ #include #include "intel_chipset.h" #include "intel_io.h" +#include "igt_device.h" #include "igt_sysfs.h" #include "drmtest.h" #include "config.h" @@ -189,7 +190,7 @@ int main(int argc, char *argv[]) if (intel_gen(devid) < 7 || IS_VALLEYVIEW(devid)) exit(77); - assert(intel_register_access_init(intel_get_pci_device(), 0, device) == 0); + assert(intel_register_access_init(igt_device_get_pci_device(device), 0, device) == 0); dir = igt_sysfs_open(device); diff --git a/tools/intel_lid.c b/tools/intel_lid.c index 37c6ba5e..447790d9 100644 --- a/tools/intel_lid.c +++ b/tools/intel_lid.c @@ -37,9 +37,10 @@ #include #include +#include "drmtest.h" +#include "igt_device.h" #include "intel_io.h" #include "intel_reg.h" -#include "intel_chipset.h" #define SWF14_LID_STATUS_CLOSED (1<<29) /* 0 here means open */ @@ -118,8 +119,11 @@ out: int main(int argc, char **argv) { int swf14, acpi_lid; + int fd; - intel_mmio_use_pci_bar(intel_get_pci_device()); + fd = drm_open_driver(DRIVER_INTEL); + intel_mmio_use_pci_bar(igt_device_get_pci_device(fd)); + close(fd); while (1) { swf14 = INREG(SWF14); @@ -142,5 +146,6 @@ int main(int argc, char **argv) } sleep(2); } + return 0; } diff --git a/tools/intel_panel_fitter.c b/tools/intel_panel_fitter.c index 137ef61a..06f4ac59 100644 --- a/tools/intel_panel_fitter.c +++ b/tools/intel_panel_fitter.c @@ -30,6 +30,7 @@ #include #include #include +#include "igt_device.h" #include "intel_io.h" #include "intel_chipset.h" #include "intel_reg.h" @@ -273,13 +274,17 @@ int main (int argc, char *argv[]) bool do_disable = false, do_dump = false, do_usage = false; struct pci_device *pci_dev; uint32_t devid; + int fd; printf("WARNING:\n" "This tool is a workaround for people that don't have a Kernel " "with overscan compensation properties: it is just a temporary " "solution that may or may not work. Use it at your own risk.\n"); - pci_dev = intel_get_pci_device(); + fd = drm_open_driver(DRIVER_INTEL); + pci_dev = igt_device_get_pci_device(fd); + close(fd); + intel_register_access_init(pci_dev, 0, -1); devid = pci_dev->device_id; @@ -343,5 +348,6 @@ int main (int argc, char *argv[]) out: intel_register_access_fini(); + return ret; } diff --git a/tools/intel_perf_counters.c b/tools/intel_perf_counters.c index 50c4bce6..105a0924 100644 --- a/tools/intel_perf_counters.c +++ b/tools/intel_perf_counters.c @@ -45,6 +45,7 @@ #include "drm.h" #include "i915_drm.h" #include "drmtest.h" +#include "igt_device.h" #include "intel_io.h" #include "intel_bufmgr.h" #include "intel_batchbuffer.h" @@ -483,7 +484,7 @@ main(int argc, char **argv) if (oacontrol) { /* Forcewake */ - intel_register_access_init(intel_get_pci_device(), 0, fd); + intel_register_access_init(igt_device_get_pci_device(fd), 0, fd); /* Enable performance counters */ intel_register_write(OACONTROL, diff --git a/tools/intel_reg.c b/tools/intel_reg.c index 1247b70b..305323b6 100644 --- a/tools/intel_reg.c +++ b/tools/intel_reg.c @@ -33,9 +33,9 @@ #include #include "igt.h" +#include "igt_device.h" #include "igt_gt.h" #include "intel_io.h" -#include "intel_chipset.h" #include "intel_reg_spec.h" @@ -274,15 +274,6 @@ static int register_srm(struct config *config, struct reg *reg, int fd, i; uint32_t val; - if (config->fd == -1) { - config->fd = __drm_open_driver(DRIVER_INTEL); - if (config->fd == -1) { - fprintf(stderr, "Error opening driver: %s", - strerror(errno)); - exit(EXIT_FAILURE); - } - } - fd = config->fd; engine = find_engine(reg->engine); if (engine == NULL) @@ -1015,6 +1006,13 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } + config.fd = __drm_open_driver(DRIVER_INTEL); + if (config.fd == -1) { + fprintf(stderr, "Error opening driver: %s", + strerror(errno)); + exit(EXIT_FAILURE); + } + if (config.mmiofile) { if (!config.devid) { fprintf(stderr, "--mmio requires --devid\n"); @@ -1026,7 +1024,7 @@ int main(int argc, char *argv[]) fprintf(stderr, "--devid without --mmio\n"); return EXIT_FAILURE; } - config.pci_dev = intel_get_pci_device(); + config.pci_dev = igt_device_get_pci_device(config.fd); config.devid = config.pci_dev->device_id; } @@ -1050,8 +1048,7 @@ int main(int argc, char *argv[]) free(config.mmiofile); - if (config.fd >= 0) - close(config.fd); + close(config.fd); return ret; } diff --git a/tools/intel_reg_checker.c b/tools/intel_reg_checker.c index 6bde63ec..0ed26029 100644 --- a/tools/intel_reg_checker.c +++ b/tools/intel_reg_checker.c @@ -26,6 +26,8 @@ #include #include #include +#include "drmtest.h" +#include "igt_device.h" #include "intel_io.h" #include "intel_chipset.h" @@ -342,8 +344,12 @@ check_dpfc_control_sa(void) int main(int argc, char** argv) { struct pci_device *dev; + int fd; + + fd = drm_open_driver(DRIVER_INTEL); + dev = igt_device_get_pci_device(fd); + close(fd); - dev = intel_get_pci_device(); devid = dev->device_id; intel_mmio_use_pci_bar(dev); diff --git a/tools/intel_watermark.c b/tools/intel_watermark.c index e71c3d9c..2dc4307c 100644 --- a/tools/intel_watermark.c +++ b/tools/intel_watermark.c @@ -29,12 +29,14 @@ #include #include #include +#include "igt_device.h" #include "intel_io.h" #include "intel_chipset.h" #include "drmtest.h" static uint32_t display_base; static uint32_t devid; +static int fd; static uint32_t read_reg(uint32_t addr) { @@ -249,7 +251,7 @@ static void skl_wm_dump(void) uint32_t plane_ctl[num_pipes][max_planes]; uint32_t wm_linetime[num_pipes]; - intel_register_access_init(intel_get_pci_device(), 0, -1); + intel_register_access_init(igt_device_get_pci_device(fd), 0, -1); for (pipe = 0; pipe < num_pipes; pipe++) { int num_planes = skl_num_planes(devid, pipe); @@ -469,7 +471,7 @@ static void ilk_wm_dump(void) int num_pipes = intel_gen(devid) >= 7 ? 3 : 2; struct ilk_wm wm = {}; - intel_register_access_init(intel_get_pci_device(), 0, -1); + intel_register_access_init(igt_device_get_pci_device(fd), 0, -1); for (i = 0; i < num_pipes; i++) { dspcntr[i] = read_reg(0x70180 + i * 0x1000); @@ -619,7 +621,7 @@ static void vlv_wm_dump(void) uint32_t dsp_ss_pm, ddr_setup2; struct gmch_wm wms[MAX_PLANE] = {}; - intel_register_access_init(intel_get_pci_device(), 0, -1); + intel_register_access_init(igt_device_get_pci_device(fd), 0, -1); dsparb = read_reg(0x70030); dsparb2 = read_reg(0x70060); @@ -835,7 +837,7 @@ static void g4x_wm_dump(void) uint32_t mi_arb_state; struct gmch_wm wms[MAX_PLANE] = {}; - intel_register_access_init(intel_get_pci_device(), 0, -1); + intel_register_access_init(igt_device_get_pci_device(fd), 0, -1); dspacntr = read_reg(0x70180); dspbcntr = read_reg(0x71180); @@ -921,7 +923,7 @@ static void gen4_wm_dump(void) uint32_t mi_arb_state; struct gmch_wm wms[MAX_PLANE] = {}; - intel_register_access_init(intel_get_pci_device(), 0, -1); + intel_register_access_init(igt_device_get_pci_device(fd), 0, -1); dsparb = read_reg(0x70030); fw1 = read_reg(0x70034); @@ -992,7 +994,7 @@ static void pnv_wm_dump(void) uint32_t cbr; struct gmch_wm wms[MAX_PLANE] = {}; - intel_register_access_init(intel_get_pci_device(), 0, -1); + intel_register_access_init(igt_device_get_pci_device(fd), 0, -1); dsparb = read_reg(0x70030); fw1 = read_reg(0x70034); @@ -1082,7 +1084,7 @@ static void gen3_wm_dump(void) uint32_t mi_arb_state; struct gmch_wm wms[MAX_PLANE] = {}; - intel_register_access_init(intel_get_pci_device(), 0, -1); + intel_register_access_init(igt_device_get_pci_device(fd), 0, -1); dsparb = read_reg(0x70030); instpm = read_reg(0x20c0); @@ -1151,7 +1153,7 @@ static void gen2_wm_dump(void) uint32_t mi_state; struct gmch_wm wms[MAX_PLANE] = {}; - intel_register_access_init(intel_get_pci_device(), 0, -1); + intel_register_access_init(igt_device_get_pci_device(fd), 0, -1); dsparb = read_reg(0x70030); mem_mode = read_reg(0x20cc); @@ -1226,7 +1228,8 @@ static void gen2_wm_dump(void) int main(int argc, char *argv[]) { - devid = intel_get_pci_device()->device_id; + fd = drm_open_driver(DRIVER_INTEL); + devid = igt_device_get_pci_device(fd)->device_id; if (intel_gen(devid) >= 9) { skl_wm_dump(); @@ -1250,5 +1253,7 @@ int main(int argc, char *argv[]) return 1; } + close(fd); + return 0; } -- cgit v1.2.3