On Fri, 28 Aug 2015, Mika Kuoppala <[email protected]> wrote:
> Sometimes it is beneficial to debug the forcewake registers
> themselves or registers that don't need or are interfered by
> forcewake. Add parameter to intel_register_access_init()
> to optionally avoid forcewake dance around register access.
>
> Signed-off-by: Mika Kuoppala <[email protected]>
> ---
>  debugger/debug_rdata.c       |  2 +-
>  debugger/eudb.c              |  2 +-
>  lib/intel_io.h               |  2 +-
>  lib/intel_mmio.c             |  9 +++++++--
>  tests/gem_workarounds.c      |  2 +-
>  tests/pm_lpsp.c              |  2 +-
>  tools/intel_display_poller.c |  2 +-
>  tools/intel_forcewaked.c     |  4 ++--
>  tools/intel_gpu_top.c        |  2 +-
>  tools/intel_infoframes.c     |  2 +-
>  tools/intel_l3_parity.c      |  2 +-
>  tools/intel_panel_fitter.c   |  2 +-
>  tools/intel_perf_counters.c  |  2 +-
>  tools/intel_reg.c            |  6 +++---
>  tools/intel_watermark.c      | 14 +++++++-------
>  tools/quick_dump/chipset.i   |  4 ++--
>  16 files changed, 32 insertions(+), 27 deletions(-)
>
> diff --git a/debugger/debug_rdata.c b/debugger/debug_rdata.c
> index 61d82d9..2643581 100644
> --- a/debugger/debug_rdata.c
> +++ b/debugger/debug_rdata.c
> @@ -135,7 +135,7 @@ int main(int argc, char *argv[]) {
>       struct pci_device *pci_dev;
>       pci_dev = intel_get_pci_device();
>  
> -     intel_register_access_init(pci_dev, 1);
> +     intel_register_access_init(pci_dev, 1, 0);
>       find_stuck_threads();
>  //   collect_rdata(atoi(argv[1]), atoi(argv[2]));
>       return 0;
> diff --git a/debugger/eudb.c b/debugger/eudb.c
> index 39c5cca..1d6da48 100644
> --- a/debugger/eudb.c
> +++ b/debugger/eudb.c
> @@ -540,7 +540,7 @@ int main(int argc, char* argv[]) {
>               abort();
>       }
>  
> -     assert(intel_register_access_init(pci_dev, 1) == 0);
> +     assert(intel_register_access_init(pci_dev, 1, 0) == 0);
>  
>       memset(bits, -1, sizeof(bits));
>       /*
> diff --git a/lib/intel_io.h b/lib/intel_io.h
> index e2d6b47..3ce9474 100644
> --- a/lib/intel_io.h
> +++ b/lib/intel_io.h
> @@ -36,7 +36,7 @@ extern void *igt_global_mmio;
>  void intel_mmio_use_pci_bar(struct pci_device *pci_dev);
>  void intel_mmio_use_dump_file(char *file);
>  
> -int intel_register_access_init(struct pci_device *pci_dev, int safe);
> +int intel_register_access_init(struct pci_device *pci_dev, int safe, int 
> nofw);

Friday night nitpicking, in the long run adding boolean parameters to a
function makes it hard to use. (Especially so if they are ints used as
boolean! ;) I'd rather you either turned the two parameters into one
mode parameter, so you'd call it with init(dev, SAFE | NOFW), or added
an init_nofw() variant.

Just sayin'. I'm not insisting though.

BR,
Jani.



>  void intel_register_access_fini(void);
>  uint32_t intel_register_read(uint32_t reg);
>  void intel_register_write(uint32_t reg, uint32_t val);
> diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c
> index e5e23c3..641fb4c 100644
> --- a/lib/intel_mmio.c
> +++ b/lib/intel_mmio.c
> @@ -155,6 +155,7 @@ release_forcewake_lock(int fd)
>   * intel_register_access_init:
>   * @pci_dev: intel graphics pci device
>   * @safe: use safe register access tables
> + * @nofw: don't take forcewake lock during register access
>   *
>   * This initializes the new register access library, which supports forcewake
>   * handling and also allows register access to be checked with an explicit
> @@ -165,7 +166,7 @@ release_forcewake_lock(int fd)
>   * @pci_dev can be obtained from intel_get_pci_device().
>   */
>  int
> -intel_register_access_init(struct pci_device *pci_dev, int safe)
> +intel_register_access_init(struct pci_device *pci_dev, int safe, int nofw)
>  {
>       int ret;
>  
> @@ -187,7 +188,11 @@ intel_register_access_init(struct pci_device *pci_dev, 
> int safe)
>       /* Find where the forcewake lock is. Forcewake doesn't exist
>        * gen < 6, but the debugfs should do the right things for us.
>        */
> -     ret = igt_open_forcewake_handle();
> +     if (nofw)
> +             ret = -1;
> +     else
> +             ret = igt_open_forcewake_handle();
> +
>       if (ret == -1)
>               mmio_data.key = FAKEKEY;
>       else
> diff --git a/tests/gem_workarounds.c b/tests/gem_workarounds.c
> index 3759c23..81d67dd 100644
> --- a/tests/gem_workarounds.c
> +++ b/tests/gem_workarounds.c
> @@ -117,7 +117,7 @@ static int workaround_fail_count(void)
>  {
>       int i, fail_count = 0;
>  
> -     intel_register_access_init(intel_get_pci_device(), 0);
> +     intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>       /* There is a small delay after coming ot of rc6 to the correct
>          render context values will get loaded by hardware (bdw,chv).
> diff --git a/tests/pm_lpsp.c b/tests/pm_lpsp.c
> index 43444d8..faf20a2 100644
> --- a/tests/pm_lpsp.c
> +++ b/tests/pm_lpsp.c
> @@ -239,7 +239,7 @@ igt_main
>  
>               igt_require(supports_lpsp(devid));
>  
> -             intel_register_access_init(intel_get_pci_device(), 0);
> +             intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>               kmstest_set_vt_graphics_mode();
>       }
> diff --git a/tools/intel_display_poller.c b/tools/intel_display_poller.c
> index 6d6ea21..4c2bde7 100644
> --- a/tools/intel_display_poller.c
> +++ b/tools/intel_display_poller.c
> @@ -1350,7 +1350,7 @@ int main(int argc, char *argv[])
>               break;
>       }
>  
> -     intel_register_access_init(intel_get_pci_device(), 0);
> +     intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>       printf("%s?\n", test_name(test, pipe, bit, test_pixelcount));
>  
> diff --git a/tools/intel_forcewaked.c b/tools/intel_forcewaked.c
> index 01ca025..95e173d 100644
> --- a/tools/intel_forcewaked.c
> +++ b/tools/intel_forcewaked.c
> @@ -79,7 +79,7 @@ int main(int argc, char *argv[])
>               INFO_PRINT("started daemon");
>       }
>  
> -     ret = intel_register_access_init(intel_get_pci_device(), 1);
> +     ret = intel_register_access_init(intel_get_pci_device(), 1, 0);
>       if (ret) {
>               INFO_PRINT("Couldn't init register access\n");
>               exit(1);
> @@ -90,7 +90,7 @@ int main(int argc, char *argv[])
>               if (!is_alive()) {
>                       INFO_PRINT("gpu reset? restarting daemon\n");
>                       intel_register_access_fini();
> -                     ret = 
> intel_register_access_init(intel_get_pci_device(), 1);
> +                     ret = 
> intel_register_access_init(intel_get_pci_device(), 1, 0);
>                       if (ret)
>                               INFO_PRINT("Reg access init fail\n");
>               }
> diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
> index b5cfda0..6629dcc 100644
> --- a/tools/intel_gpu_top.c
> +++ b/tools/intel_gpu_top.c
> @@ -511,7 +511,7 @@ int main(int argc, char **argv)
>       }
>  
>       /* Grab access to the registers */
> -     intel_register_access_init(pci_dev, 0);
> +     intel_register_access_init(pci_dev, 0, 0);
>  
>       ring_init(&render_ring);
>       if (IS_GEN4(devid) || IS_GEN5(devid))
> diff --git a/tools/intel_infoframes.c b/tools/intel_infoframes.c
> index e03cb2c..63eb10b 100644
> --- a/tools/intel_infoframes.c
> +++ b/tools/intel_infoframes.c
> @@ -1108,7 +1108,7 @@ int main(int argc, char *argv[])
>              " perfectly: the Kernel might undo our changes.\n");
>  
>       pci_dev = intel_get_pci_device();
> -     intel_register_access_init(pci_dev, 0);
> +     intel_register_access_init(pci_dev, 0, 0);
>       intel_check_pch();
>  
>       if (IS_GEN4(pci_dev->device_id))
> diff --git a/tools/intel_l3_parity.c b/tools/intel_l3_parity.c
> index a4b7d73..ef38177 100644
> --- a/tools/intel_l3_parity.c
> +++ b/tools/intel_l3_parity.c
> @@ -196,7 +196,7 @@ int main(int argc, char *argv[])
>       if (intel_gen(devid) < 7 || IS_VALLEYVIEW(devid))
>               exit(EXIT_SUCCESS);
>  
> -     assert(intel_register_access_init(intel_get_pci_device(), 0) == 0);
> +     assert(intel_register_access_init(intel_get_pci_device(), 0, 0) == 0);
>  
>       ret = asprintf(&path[0], "/sys/class/drm/card%d/l3_parity", device);
>       assert(ret != -1);
> diff --git a/tools/intel_panel_fitter.c b/tools/intel_panel_fitter.c
> index 5519361..31b9f0e 100644
> --- a/tools/intel_panel_fitter.c
> +++ b/tools/intel_panel_fitter.c
> @@ -279,7 +279,7 @@ int main (int argc, char *argv[])
>              "solution that may or may not work. Use it at your own risk.\n");
>  
>       pci_dev = intel_get_pci_device();
> -     intel_register_access_init(pci_dev, 0);
> +     intel_register_access_init(pci_dev, 0, 0);
>       devid = pci_dev->device_id;
>  
>       if (!HAS_PCH_SPLIT(devid)) {
> diff --git a/tools/intel_perf_counters.c b/tools/intel_perf_counters.c
> index 739f926..d26bba3 100644
> --- a/tools/intel_perf_counters.c
> +++ b/tools/intel_perf_counters.c
> @@ -483,7 +483,7 @@ main(int argc, char **argv)
>  
>       if (oacontrol) {
>               /* Forcewake */
> -             intel_register_access_init(intel_get_pci_device(), 0);
> +             intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>               /* Enable performance counters */
>               intel_register_write(OACONTROL,
> diff --git a/tools/intel_reg.c b/tools/intel_reg.c
> index 2b60a83..b082555 100644
> --- a/tools/intel_reg.c
> +++ b/tools/intel_reg.c
> @@ -409,7 +409,7 @@ static int intel_reg_read(struct config *config, int 
> argc, char *argv[])
>       if (config->mmiofile)
>               intel_mmio_use_dump_file(config->mmiofile);
>       else
> -             intel_register_access_init(config->pci_dev, 0);
> +             intel_register_access_init(config->pci_dev, 0, 0);
>  
>       for (i = 1; i < argc; i++) {
>               struct reg reg;
> @@ -439,7 +439,7 @@ static int intel_reg_write(struct config *config, int 
> argc, char *argv[])
>               return EXIT_FAILURE;
>       }
>  
> -     intel_register_access_init(config->pci_dev, 0);
> +     intel_register_access_init(config->pci_dev, 0, 0);
>  
>       for (i = 1; i < argc; i += 2) {
>               struct reg reg;
> @@ -477,7 +477,7 @@ static int intel_reg_dump(struct config *config, int 
> argc, char *argv[])
>       if (config->mmiofile)
>               intel_mmio_use_dump_file(config->mmiofile);
>       else
> -             intel_register_access_init(config->pci_dev, 0);
> +             intel_register_access_init(config->pci_dev, 0, 0);
>  
>       for (i = 0; i < config->regcount; i++) {
>               reg = &config->regs[i];
> diff --git a/tools/intel_watermark.c b/tools/intel_watermark.c
> index 0b7c5e5..f399e96 100644
> --- a/tools/intel_watermark.c
> +++ b/tools/intel_watermark.c
> @@ -139,7 +139,7 @@ static void ilk_wm_dump(void)
>       int num_pipes = is_gen7_plus(devid) ? 3 : 2;
>       struct ilk_wm wm = {};
>  
> -     intel_register_access_init(intel_get_pci_device(), 0);
> +     intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>       for (i = 0; i < num_pipes; i++) {
>               dspcntr[i] = read_reg(0x70180 + i * 0x1000);
> @@ -265,7 +265,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);
> +     intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>       dsparb = read_reg(0x70030);
>       dsparb2 = read_reg(0x70060);
> @@ -481,7 +481,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);
> +     intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>       dspacntr = read_reg(0x70180);
>       dspbcntr = read_reg(0x71180);
> @@ -567,7 +567,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);
> +     intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>       dsparb = read_reg(0x70030);
>       fw1 = read_reg(0x70034);
> @@ -638,7 +638,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);
> +     intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>       dsparb = read_reg(0x70030);
>       fw1 = read_reg(0x70034);
> @@ -728,7 +728,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);
> +     intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>       dsparb = read_reg(0x70030);
>       instpm = read_reg(0x20c0);
> @@ -797,7 +797,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);
> +     intel_register_access_init(intel_get_pci_device(), 0, 0);
>  
>       dsparb = read_reg(0x70030);
>       mem_mode = read_reg(0x20cc);
> diff --git a/tools/quick_dump/chipset.i b/tools/quick_dump/chipset.i
> index 90db40e..e6921cf 100644
> --- a/tools/quick_dump/chipset.i
> +++ b/tools/quick_dump/chipset.i
> @@ -13,7 +13,7 @@ extern int is_haswell(unsigned short pciid);
>  extern int is_broadwell(unsigned short pciid);
>  extern int is_skylake(unsigned short pciid);
>  extern struct pci_device *intel_get_pci_device();
> -extern int intel_register_access_init(struct pci_device *pci_dev, int safe);
> +extern int intel_register_access_init(struct pci_device *pci_dev, int safe, 
> int nofw);
>  extern uint32_t intel_register_read(uint32_t reg);
>  extern void intel_register_write(uint32_t reg, uint32_t val);
>  extern void intel_register_access_fini();
> @@ -31,7 +31,7 @@ extern int is_haswell(unsigned short pciid);
>  extern int is_broadwell(unsigned short pciid);
>  extern int is_skylake(unsigned short pciid);
>  extern struct pci_device *intel_get_pci_device();
> -extern int intel_register_access_init(struct pci_device *pci_dev, int safe);
> +extern int intel_register_access_init(struct pci_device *pci_dev, int safe, 
> int nofw);
>  extern uint32_t intel_register_read(uint32_t reg);
>  extern void intel_register_write(uint32_t reg, uint32_t val);
>  extern void intel_register_access_fini();
> -- 
> 2.1.4
>
> _______________________________________________
> Intel-gfx mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to