All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] lib: add pci helper functions to intel_chipset
@ 2019-03-11 13:23 Daniel Mrzyglod
  2019-03-11 13:44 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Daniel Mrzyglod @ 2019-03-11 13:23 UTC (permalink / raw)
  To: igt-dev; +Cc: Mrzyglod

From: "Mrzyglod, Daniel T" <daniel.t.mrzyglod@intel.com>

This patch add two helper functions:
 * reading register from PCI based on open fd
 * getting PCI domain/bus/dev/func based on fd

The reason why we need this function is up to scenario when we have
multiple PCI devices.

Signed-off-by: Mrzyglod, Daniel T <daniel.t.mrzyglod@intel.com>
---
 lib/intel_chipset.c | 176 ++++++++++++++++++++++++++++++++++++++++++++
 lib/intel_chipset.h |  13 ++++
 2 files changed, 189 insertions(+)

diff --git a/lib/intel_chipset.c b/lib/intel_chipset.c
index 4748a3fb..3dd722d6 100644
--- a/lib/intel_chipset.c
+++ b/lib/intel_chipset.c
@@ -36,6 +36,7 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/mman.h>
+#include <linux/limits.h>
 #include "i915_drm.h"
 
 #include "drmtest.h"
@@ -178,3 +179,178 @@ intel_check_pch(void)
 		return;
 	}
 }
+
+/**
+ * parse_pci_address_string:
+ * @pci_address: PCI string in form 0000:00:00.0
+ * @dev_addr: structure to be filled by this parsing function
+ *
+ * This function fill fd_pci_address structure with data about pci: domain, bus
+ * device, function
+ * Return:
+ * O or -EINVAL
+ */
+static int parse_pci_address_string(char *pci_address,
+				    struct fd_pci_address *dev_addr)
+{
+	unsigned long val;
+	char *pch;
+	int i = 0;
+
+	if (strlen(pci_address) != 12)
+		return -EINVAL;
+
+	/* parse PCI address  string for domain */
+	pch = strtok(pci_address, ":.");
+	errno = 0;
+	val = strtoul(pch, NULL, 16);
+	if (errno != 0 || val > UINT16_MAX)
+		return -EINVAL;
+	dev_addr->domain = val;
+
+	/* parse  PCI address for: BUS DEVICE FUNCTION */
+	for (i = 0; i < 3; i++) {
+		pch = strtok(NULL, ":.");
+		errno = 0;
+		val = strtoul(pch, NULL, 16);
+		if (errno != 0 || val > UINT8_MAX)
+			return -EINVAL;
+
+		switch (i) {
+		case 0:
+			dev_addr->bus = val;
+			break;
+		case 1:
+			dev_addr->dev = val;
+			break;
+		case 2:
+			dev_addr->func = val;
+			break;
+		default:
+			return -EINVAL;
+		break;
+		}
+	}
+
+	pch = strtok(NULL, ":.");
+	if (pch)
+		return -EINVAL;
+
+	return 0;
+}
+
+/**
+ * parse_pci_filepath_string:
+ * @filepath: string in form ../../devices/pci0000:00/0000:00:00.0/drm/card0
+ * @dev_addr: structure to be filled by this parsing function
+ *
+ * This function parse filepath string to PCI address string 0000:00:00.0 form.
+ * and fill dev_addr.
+ * Return:
+ * O or -EINVAL
+ */
+static int
+parse_pci_filepath_string(char *filepath, struct fd_pci_address *dev_addr)
+{
+	char *pch = strstr(filepath, "pci");
+	char *begin = NULL;
+	char *end = NULL;
+
+	if (pch) {
+		pch = strstr(pch, "/");
+		pch++;
+		begin = pch;
+		end = strstr(pch, "/");
+		*end = '\0';
+		} else {
+			return -EINVAL;
+		}
+	if (strlen(begin) != 12)
+		return -EINVAL;
+	if (parse_pci_address_string(begin, dev_addr) < 0)
+		return -EINVAL;
+	return 0;
+}
+
+/**
+ * get_pci_address_space:
+ * @fd: file descriptor of opened device
+ * @dev_addr: structure with pci_address to be filled by this parsing function
+ *
+ * This function fill dev_addr from reading fstats from opened device.
+ * from it.
+ * Return:
+ * O or -EINVAL
+ */
+int intel_get_pci_address_space(int fd, struct fd_pci_address *dev_addr)
+{
+	struct stat sb;
+	char filepath[PATH_MAX];
+	char fdp[PATH_MAX];
+	int ret = -1;
+
+	if (fstat(fd, &sb) == -1) {
+		perror("stat");
+		return -EINVAL;
+	}
+
+	sprintf(fdp, "/sys/dev/char/%d:%d",  major(sb.st_rdev),
+		minor(sb.st_rdev));
+	readlink(fdp, filepath, PATH_MAX);
+
+	ret = parse_pci_filepath_string(filepath, dev_addr);
+	if (ret < 0)
+		return -EINVAL;
+
+	return 0;
+}
+
+/**
+ * pci_read_register_u32:
+ * @fd: file descriptor of opened device
+ * @reg_name: offset in mmio space
+ *
+ * This function read UINT32 from pci.
+ * Return:
+ * Register value or igt_fail
+ */
+uint32_t intel_pci_read_register_u32(int fd, uint32_t reg_name)
+{
+	uint32_t reg_val = 0;
+	int error = -1;
+	int mmio_bar, mmio_size;
+	struct pci_device *dev;
+	struct fd_pci_address dev_addr;
+	void *igt_mmio;
+
+	intel_get_pci_address_space(fd, &dev_addr);
+	pci_system_init();
+	dev = pci_device_find_by_slot((uint32_t)dev_addr.domain,
+				      (uint32_t)dev_addr.bus,
+				      (uint32_t)dev_addr.dev,
+				      (uint32_t)dev_addr.func);
+
+	error = pci_device_probe(dev);
+	igt_fail_on_f(error != 0,
+		      "Couldn't probe graphics card\n");
+
+	mmio_bar = 0;
+	mmio_size = 2 * 1024 * 1024;
+
+	error = pci_device_map_range(dev,
+				     dev->regions[mmio_bar].base_addr,
+				     mmio_size,
+				     PCI_DEV_MAP_FLAG_WRITABLE,
+				     &igt_mmio);
+	igt_fail_on_f(error != 0,
+		      "Couldn't map MMIO region\n");
+
+	reg_val = *(volatile uint32_t *)((volatile char *)igt_mmio + reg_name);
+
+	error = pci_device_unmap_range(dev, igt_mmio,
+				       mmio_size);
+	igt_fail_on_f(error != 0,
+		      "Couldn't unmap MMIO region\n");
+
+	return reg_val;
+}
diff --git a/lib/intel_chipset.h b/lib/intel_chipset.h
index 40170b7b..96a618eb 100644
--- a/lib/intel_chipset.h
+++ b/lib/intel_chipset.h
@@ -73,6 +73,19 @@ struct intel_device_info {
 
 const struct intel_device_info *intel_get_device_info(uint16_t devid) __attribute__((pure));
 
+struct fd_pci_address {
+	/**
+	 * PCI Address
+	 */
+	uint16_t	domain;
+	uint8_t		bus;
+	uint8_t		dev;
+	uint8_t		func;
+};
+
+uint32_t intel_pci_read_register_u32(int fd, uint32_t reg_name);
+int intel_get_pci_address_space(int fd, struct fd_pci_address *dev_addr);
+
 unsigned intel_gen(uint16_t devid) __attribute__((pure));
 unsigned intel_gt(uint16_t devid) __attribute__((pure));
 
-- 
2.20.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for lib: add pci helper functions to intel_chipset
  2019-03-11 13:23 [igt-dev] [PATCH i-g-t] lib: add pci helper functions to intel_chipset Daniel Mrzyglod
@ 2019-03-11 13:44 ` Patchwork
  2019-03-11 13:52 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2019-03-11 13:44 UTC (permalink / raw)
  To: Daniel Mrzyglod; +Cc: igt-dev

== Series Details ==

Series: lib: add pci helper functions to intel_chipset
URL   : https://patchwork.freedesktop.org/series/57831/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5733 -> IGTPW_2585
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/57831/revisions/1/mbox/

Known issues
------------

  Here are the changes found in IGTPW_2585 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@amdgpu/amd_basic@cs-compute:
    - fi-kbl-8809g:       NOTRUN -> FAIL [fdo#108094]

  * igt@amdgpu/amd_basic@cs-sdma:
    - fi-skl-6770hq:      NOTRUN -> SKIP [fdo#109271] +37

  * igt@gem_exec_basic@readonly-bsd2:
    - fi-pnv-d510:        NOTRUN -> SKIP [fdo#109271] +76

  * igt@kms_busy@basic-flip-a:
    - fi-bsw-n3050:       NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +1

  * igt@kms_busy@basic-flip-c:
    - fi-pnv-d510:        NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-kbl-7567u:       PASS -> WARN [fdo#109380]

  * igt@kms_chamelium@hdmi-crc-fast:
    - fi-bsw-n3050:       NOTRUN -> SKIP [fdo#109271] +62

  * igt@kms_chamelium@vga-edid-read:
    - fi-hsw-4770r:       NOTRUN -> SKIP [fdo#109271] +45

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-b:
    - fi-byt-clapper:     PASS -> FAIL [fdo#103191] / [fdo#107362] +1

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c:
    - fi-kbl-7567u:       PASS -> SKIP [fdo#109271] +33

  
#### Possible fixes ####

  * igt@amdgpu/amd_basic@userptr:
    - fi-kbl-8809g:       DMESG-WARN [fdo#108965] -> PASS

  * igt@i915_pm_rpm@basic-pci-d3-state:
    - fi-bsw-kefka:       SKIP [fdo#109271] -> PASS

  * igt@i915_pm_rpm@basic-rte:
    - fi-bsw-kefka:       FAIL [fdo#108800] -> PASS

  * igt@prime_vgem@basic-fence-flip:
    - fi-gdg-551:         FAIL [fdo#103182] -> PASS

  
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#108094]: https://bugs.freedesktop.org/show_bug.cgi?id=108094
  [fdo#108800]: https://bugs.freedesktop.org/show_bug.cgi?id=108800
  [fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109380]: https://bugs.freedesktop.org/show_bug.cgi?id=109380


Participating hosts (44 -> 36)
------------------------------

  Additional (4): fi-hsw-4770r fi-skl-6770hq fi-bsw-n3050 fi-pnv-d510 
  Missing    (12): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-icl-u2 fi-bsw-cyan fi-cfl-guc fi-whl-u fi-cfl-8109u fi-icl-u3 fi-bdw-samus fi-skl-6700k2 


Build changes
-------------

    * IGT: IGT_4879 -> IGTPW_2585

  CI_DRM_5733: e853777d9c87e9b21d9ccb781e0dc186d816cfc0 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2585: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2585/
  IGT_4879: 4e7296aa879350b10a216b88fa7f44d919765765 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2585/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] lib: add pci helper functions to intel_chipset
  2019-03-11 13:23 [igt-dev] [PATCH i-g-t] lib: add pci helper functions to intel_chipset Daniel Mrzyglod
  2019-03-11 13:44 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2019-03-11 13:52 ` Chris Wilson
  2019-03-11 14:24   ` Mrzyglod, Daniel T
  2019-03-11 15:47 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork
  2019-03-12 13:43 ` [igt-dev] [PATCH i-g-t] " Jani Nikula
  3 siblings, 1 reply; 6+ messages in thread
From: Chris Wilson @ 2019-03-11 13:52 UTC (permalink / raw)
  To: Daniel Mrzyglod, igt-dev; +Cc: Mrzyglod

Quoting Daniel Mrzyglod (2019-03-11 13:23:09)
> +       error = pci_device_map_range(dev,
> +                                    dev->regions[mmio_bar].base_addr,
> +                                    mmio_size,
> +                                    PCI_DEV_MAP_FLAG_WRITABLE,
> +                                    &igt_mmio);

This wasn't enough clue to consider intel_mmio.c instead?
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] lib: add pci helper functions to intel_chipset
  2019-03-11 13:52 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
@ 2019-03-11 14:24   ` Mrzyglod, Daniel T
  0 siblings, 0 replies; 6+ messages in thread
From: Mrzyglod, Daniel T @ 2019-03-11 14:24 UTC (permalink / raw)
  To: igt-dev, chris


[-- Attachment #1.1: Type: text/plain, Size: 544 bytes --]

On Mon, 2019-03-11 at 13:52 +0000, Chris Wilson wrote:
> Quoting Daniel Mrzyglod (2019-03-11 13:23:09)
> > +       error = pci_device_map_range(dev,
> > +                                    dev-
> > >regions[mmio_bar].base_addr,
> > +                                    mmio_size,
> > +                                    PCI_DEV_MAP_FLAG_WRITABLE,
> > +                                    &igt_mmio);
> 
> This wasn't enough clue to consider intel_mmio.c instead?
> -Chris

You are correct I will move to v2 for second iteration.

[-- Attachment #1.2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 3282 bytes --]

[-- Attachment #2: Type: text/plain, Size: 153 bytes --]

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [igt-dev] ✗ Fi.CI.IGT: failure for lib: add pci helper functions to intel_chipset
  2019-03-11 13:23 [igt-dev] [PATCH i-g-t] lib: add pci helper functions to intel_chipset Daniel Mrzyglod
  2019-03-11 13:44 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
  2019-03-11 13:52 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
@ 2019-03-11 15:47 ` Patchwork
  2019-03-12 13:43 ` [igt-dev] [PATCH i-g-t] " Jani Nikula
  3 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2019-03-11 15:47 UTC (permalink / raw)
  To: Mrzyglod, Daniel T; +Cc: igt-dev

== Series Details ==

Series: lib: add pci helper functions to intel_chipset
URL   : https://patchwork.freedesktop.org/series/57831/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_5733_full -> IGTPW_2585_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_2585_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_2585_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/57831/revisions/1/mbox/

Known issues
------------

  Here are the changes found in IGTPW_2585_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_param@invalid-param-get:
    - shard-glk:          NOTRUN -> FAIL [fdo#109559]
    - shard-snb:          NOTRUN -> FAIL [fdo#109559]
    - shard-hsw:          NOTRUN -> FAIL [fdo#109559]
    - shard-apl:          NOTRUN -> FAIL [fdo#109559]
    - shard-kbl:          NOTRUN -> FAIL [fdo#109559]

  * igt@gem_ctx_param@invalid-param-set:
    - shard-snb:          NOTRUN -> FAIL [fdo#109674]
    - shard-glk:          NOTRUN -> FAIL [fdo#109674]
    - shard-kbl:          NOTRUN -> FAIL [fdo#109674]
    - shard-apl:          NOTRUN -> FAIL [fdo#109674]
    - shard-hsw:          NOTRUN -> FAIL [fdo#109674]

  * igt@gem_exec_schedule@preempt-other-chain-blt:
    - shard-snb:          NOTRUN -> SKIP [fdo#109271] +1260

  * igt@gem_exec_store@basic-bsd2:
    - shard-hsw:          NOTRUN -> SKIP [fdo#109271] +898

  * igt@i915_pm_rps@waitboost:
    - shard-glk:          NOTRUN -> FAIL [fdo#102250]

  * igt@kms_atomic_transition@6x-modeset-transitions-fencing:
    - shard-snb:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +140

  * igt@kms_atomic_transition@6x-modeset-transitions-nonblocking:
    - shard-apl:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +56

  * igt@kms_available_modes_crc@available_mode_test_crc:
    - shard-apl:          NOTRUN -> FAIL [fdo#106641]
    - shard-kbl:          NOTRUN -> FAIL [fdo#106641]
    - shard-glk:          NOTRUN -> FAIL [fdo#106641]

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
    - shard-glk:          NOTRUN -> DMESG-WARN [fdo#107956] +10

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-b:
    - shard-snb:          NOTRUN -> DMESG-WARN [fdo#107956] +3

  * igt@kms_busy@extended-pageflip-hang-newfb-render-a:
    - shard-apl:          NOTRUN -> DMESG-WARN [fdo#107956] +11

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-a:
    - shard-hsw:          NOTRUN -> DMESG-WARN [fdo#107956] +4

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
    - shard-kbl:          NOTRUN -> DMESG-WARN [fdo#107956] +3

  * igt@kms_color@pipe-a-degamma:
    - shard-glk:          NOTRUN -> FAIL [fdo#104782] / [fdo#108145]

  * igt@kms_color@pipe-b-degamma:
    - shard-glk:          NOTRUN -> FAIL [fdo#104782] +1

  * igt@kms_color@pipe-c-ctm-max:
    - shard-glk:          NOTRUN -> FAIL [fdo#108147] +2

  * igt@kms_concurrent@pipe-d:
    - shard-hsw:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +90

  * igt@kms_content_protection@atomic:
    - shard-kbl:          NOTRUN -> FAIL [fdo#108597] / [fdo#108739] +1
    - shard-apl:          NOTRUN -> FAIL [fdo#108597] / [fdo#108739] +1

  * igt@kms_content_protection@atomic-dpms:
    - shard-apl:          NOTRUN -> FAIL [fdo#108739]
    - shard-kbl:          NOTRUN -> FAIL [fdo#108739]

  * igt@kms_cursor_crc@cursor-128x128-suspend:
    - shard-apl:          NOTRUN -> FAIL [fdo#103191] / [fdo#103232] +1
    - shard-kbl:          NOTRUN -> FAIL [fdo#103191] / [fdo#103232]

  * igt@kms_cursor_crc@cursor-128x42-onscreen:
    - shard-kbl:          NOTRUN -> FAIL [fdo#103232] +1

  * igt@kms_cursor_crc@cursor-128x42-random:
    - shard-apl:          NOTRUN -> FAIL [fdo#103232] +6

  * igt@kms_cursor_crc@cursor-256x85-onscreen:
    - shard-glk:          NOTRUN -> FAIL [fdo#103232] +23

  * igt@kms_cursor_crc@cursor-alpha-opaque:
    - shard-glk:          NOTRUN -> FAIL [fdo#109350]

  * igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic:
    - shard-glk:          NOTRUN -> FAIL [fdo#105454] / [fdo#106509] +1

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-snb:          NOTRUN -> DMESG-WARN [fdo#102365]

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
    - shard-kbl:          NOTRUN -> FAIL [fdo#103167]

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-apl:          NOTRUN -> FAIL [fdo#103167] +2

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt:
    - shard-glk:          NOTRUN -> FAIL [fdo#103167] +6

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
    - shard-kbl:          NOTRUN -> SKIP [fdo#109271] +727

  * igt@kms_frontbuffer_tracking@fbc-2p-rte:
    - shard-apl:          NOTRUN -> SKIP [fdo#109271] +851

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-blt:
    - shard-glk:          NOTRUN -> SKIP [fdo#109271] +695

  * igt@kms_invalid_dotclock:
    - shard-glk:          NOTRUN -> DMESG-WARN [fdo#109373]

  * igt@kms_plane_alpha_blend@pipe-b-alpha-7efc:
    - shard-kbl:          NOTRUN -> FAIL [fdo#108145] / [fdo#108590] +5

  * igt@kms_plane_alpha_blend@pipe-b-alpha-basic:
    - shard-apl:          NOTRUN -> FAIL [fdo#108145] +14

  * igt@kms_plane_alpha_blend@pipe-b-alpha-transparant-fb:
    - shard-kbl:          NOTRUN -> FAIL [fdo#108145] +8

  * igt@kms_plane_alpha_blend@pipe-c-alpha-transparant-fb:
    - shard-glk:          NOTRUN -> FAIL [fdo#108145] +11

  * igt@kms_plane_multiple@atomic-pipe-a-tiling-x:
    - shard-glk:          NOTRUN -> FAIL [fdo#103166] +7

  * igt@kms_plane_multiple@atomic-pipe-b-tiling-yf:
    - shard-apl:          NOTRUN -> FAIL [fdo#103166]

  * igt@kms_setmode@basic:
    - shard-glk:          NOTRUN -> FAIL [fdo#99912]
    - shard-hsw:          NOTRUN -> FAIL [fdo#99912]
    - shard-apl:          NOTRUN -> FAIL [fdo#99912]
    - shard-snb:          NOTRUN -> FAIL [fdo#99912]

  * igt@kms_sysfs_edid_timing:
    - shard-apl:          NOTRUN -> FAIL [fdo#100047]
    - shard-kbl:          NOTRUN -> FAIL [fdo#100047]

  * igt@kms_universal_plane@cursor-fb-leak-pipe-e:
    - shard-glk:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +59

  * igt@kms_universal_plane@disable-primary-vs-flip-pipe-d:
    - shard-kbl:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +56

  * igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend:
    - shard-hsw:          NOTRUN -> INCOMPLETE [fdo#103540]

  * igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm:
    - shard-apl:          NOTRUN -> FAIL [fdo#104894]

  * igt@runner@aborted:
    - shard-glk:          NOTRUN -> FAIL [fdo#109373] / [k.org#202321]

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047
  [fdo#102250]: https://bugs.freedesktop.org/show_bug.cgi?id=102250
  [fdo#102365]: https://bugs.freedesktop.org/show_bug.cgi?id=102365
  [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
  [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
  [fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
  [fdo#104894]: https://bugs.freedesktop.org/show_bug.cgi?id=104894
  [fdo#105454]: https://bugs.freedesktop.org/show_bug.cgi?id=105454
  [fdo#106509]: https://bugs.freedesktop.org/show_bug.cgi?id=106509
  [fdo#106641]: https://bugs.freedesktop.org/show_bug.cgi?id=106641
  [fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#108147]: https://bugs.freedesktop.org/show_bug.cgi?id=108147
  [fdo#108590]: https://bugs.freedesktop.org/show_bug.cgi?id=108590
  [fdo#108597]: https://bugs.freedesktop.org/show_bug.cgi?id=108597
  [fdo#108739]: https://bugs.freedesktop.org/show_bug.cgi?id=108739
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109350]: https://bugs.freedesktop.org/show_bug.cgi?id=109350
  [fdo#109373]: https://bugs.freedesktop.org/show_bug.cgi?id=109373
  [fdo#109559]: https://bugs.freedesktop.org/show_bug.cgi?id=109559
  [fdo#109674]: https://bugs.freedesktop.org/show_bug.cgi?id=109674
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
  [k.org#202321]: https://bugzilla.kernel.org/show_bug.cgi?id=202321


Participating hosts (3 -> 5)
------------------------------

  ERROR: It appears as if the changes made in IGTPW_2585_full prevented too many machines from booting.

  Additional (5): shard-apl shard-glk shard-hsw shard-kbl shard-snb 
  Missing    (3): pig-skl-6260u pig-glk-j5005 pig-hsw-4770r 


Build changes
-------------

    * IGT: None -> IGTPW_2585
    * Piglit: piglit_4509 -> None

  CI_DRM_5733: e853777d9c87e9b21d9ccb781e0dc186d816cfc0 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2585: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2585/
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2585/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] lib: add pci helper functions to intel_chipset
  2019-03-11 13:23 [igt-dev] [PATCH i-g-t] lib: add pci helper functions to intel_chipset Daniel Mrzyglod
                   ` (2 preceding siblings ...)
  2019-03-11 15:47 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork
@ 2019-03-12 13:43 ` Jani Nikula
  3 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2019-03-12 13:43 UTC (permalink / raw)
  To: Daniel Mrzyglod, igt-dev; +Cc: Mrzyglod

On Mon, 11 Mar 2019, Daniel Mrzyglod <daniel.t.mrzyglod@intel.com> wrote:
> From: "Mrzyglod, Daniel T" <daniel.t.mrzyglod@intel.com>
>
> This patch add two helper functions:
>  * reading register from PCI based on open fd
>  * getting PCI domain/bus/dev/func based on fd
>
> The reason why we need this function is up to scenario when we have
> multiple PCI devices.
>
> Signed-off-by: Mrzyglod, Daniel T <daniel.t.mrzyglod@intel.com>
> ---
>  lib/intel_chipset.c | 176 ++++++++++++++++++++++++++++++++++++++++++++
>  lib/intel_chipset.h |  13 ++++
>  2 files changed, 189 insertions(+)
>
> diff --git a/lib/intel_chipset.c b/lib/intel_chipset.c
> index 4748a3fb..3dd722d6 100644
> --- a/lib/intel_chipset.c
> +++ b/lib/intel_chipset.c
> @@ -36,6 +36,7 @@
>  #include <fcntl.h>
>  #include <sys/stat.h>
>  #include <sys/mman.h>
> +#include <linux/limits.h>
>  #include "i915_drm.h"
>  
>  #include "drmtest.h"
> @@ -178,3 +179,178 @@ intel_check_pch(void)
>  		return;
>  	}
>  }
> +
> +/**
> + * parse_pci_address_string:
> + * @pci_address: PCI string in form 0000:00:00.0
> + * @dev_addr: structure to be filled by this parsing function
> + *
> + * This function fill fd_pci_address structure with data about pci: domain, bus
> + * device, function
> + * Return:
> + * O or -EINVAL
> + */
> +static int parse_pci_address_string(char *pci_address,
> +				    struct fd_pci_address *dev_addr)
> +{
> +	unsigned long val;
> +	char *pch;
> +	int i = 0;
> +
> +	if (strlen(pci_address) != 12)
> +		return -EINVAL;
> +
> +	/* parse PCI address  string for domain */
> +	pch = strtok(pci_address, ":.");
> +	errno = 0;
> +	val = strtoul(pch, NULL, 16);
> +	if (errno != 0 || val > UINT16_MAX)
> +		return -EINVAL;
> +	dev_addr->domain = val;
> +
> +	/* parse  PCI address for: BUS DEVICE FUNCTION */
> +	for (i = 0; i < 3; i++) {
> +		pch = strtok(NULL, ":.");
> +		errno = 0;
> +		val = strtoul(pch, NULL, 16);
> +		if (errno != 0 || val > UINT8_MAX)
> +			return -EINVAL;
> +
> +		switch (i) {
> +		case 0:
> +			dev_addr->bus = val;
> +			break;
> +		case 1:
> +			dev_addr->dev = val;
> +			break;
> +		case 2:
> +			dev_addr->func = val;
> +			break;
> +		default:
> +			return -EINVAL;
> +		break;
> +		}
> +	}
> +
> +	pch = strtok(NULL, ":.");
> +	if (pch)
> +		return -EINVAL;
> +
> +	return 0;
> +}

static int parse_pci_address_string(const char *pci_address,
				    struct fd_pci_address *dev_addr)
{
        int ret;
	unsigned int domain, bus, dev, func;

	ret = sscanf(pci_address, "%4x:%2x:%2x.%1x", &domain, &bus, &dev, &func);
	if (ret != 4)
        	return -EINVAL;

	dev_addr->domain = domain;
	dev_addr->bus = bus;
        dev_addr->dev = dev;
        dev_addr->func = func;

	return 0;
}

BR,
Jani.


> +
> +/**
> + * parse_pci_filepath_string:
> + * @filepath: string in form ../../devices/pci0000:00/0000:00:00.0/drm/card0
> + * @dev_addr: structure to be filled by this parsing function
> + *
> + * This function parse filepath string to PCI address string 0000:00:00.0 form.
> + * and fill dev_addr.
> + * Return:
> + * O or -EINVAL
> + */
> +static int
> +parse_pci_filepath_string(char *filepath, struct fd_pci_address *dev_addr)
> +{
> +	char *pch = strstr(filepath, "pci");
> +	char *begin = NULL;
> +	char *end = NULL;
> +
> +	if (pch) {
> +		pch = strstr(pch, "/");
> +		pch++;
> +		begin = pch;
> +		end = strstr(pch, "/");
> +		*end = '\0';
> +		} else {
> +			return -EINVAL;
> +		}
> +	if (strlen(begin) != 12)
> +		return -EINVAL;
> +	if (parse_pci_address_string(begin, dev_addr) < 0)
> +		return -EINVAL;
> +	return 0;
> +}
> +
> +/**
> + * get_pci_address_space:
> + * @fd: file descriptor of opened device
> + * @dev_addr: structure with pci_address to be filled by this parsing function
> + *
> + * This function fill dev_addr from reading fstats from opened device.
> + * from it.
> + * Return:
> + * O or -EINVAL
> + */
> +int intel_get_pci_address_space(int fd, struct fd_pci_address *dev_addr)
> +{
> +	struct stat sb;
> +	char filepath[PATH_MAX];
> +	char fdp[PATH_MAX];
> +	int ret = -1;
> +
> +	if (fstat(fd, &sb) == -1) {
> +		perror("stat");
> +		return -EINVAL;
> +	}
> +
> +	sprintf(fdp, "/sys/dev/char/%d:%d",  major(sb.st_rdev),
> +		minor(sb.st_rdev));
> +	readlink(fdp, filepath, PATH_MAX);
> +
> +	ret = parse_pci_filepath_string(filepath, dev_addr);
> +	if (ret < 0)
> +		return -EINVAL;
> +
> +	return 0;
> +}
> +
> +/**
> + * pci_read_register_u32:
> + * @fd: file descriptor of opened device
> + * @reg_name: offset in mmio space
> + *
> + * This function read UINT32 from pci.
> + * Return:
> + * Register value or igt_fail
> + */
> +uint32_t intel_pci_read_register_u32(int fd, uint32_t reg_name)
> +{
> +	uint32_t reg_val = 0;
> +	int error = -1;
> +	int mmio_bar, mmio_size;
> +	struct pci_device *dev;
> +	struct fd_pci_address dev_addr;
> +	void *igt_mmio;
> +
> +	intel_get_pci_address_space(fd, &dev_addr);
> +	pci_system_init();
> +	dev = pci_device_find_by_slot((uint32_t)dev_addr.domain,
> +				      (uint32_t)dev_addr.bus,
> +				      (uint32_t)dev_addr.dev,
> +				      (uint32_t)dev_addr.func);
> +
> +	error = pci_device_probe(dev);
> +	igt_fail_on_f(error != 0,
> +		      "Couldn't probe graphics card\n");
> +
> +	mmio_bar = 0;
> +	mmio_size = 2 * 1024 * 1024;
> +
> +	error = pci_device_map_range(dev,
> +				     dev->regions[mmio_bar].base_addr,
> +				     mmio_size,
> +				     PCI_DEV_MAP_FLAG_WRITABLE,
> +				     &igt_mmio);
> +	igt_fail_on_f(error != 0,
> +		      "Couldn't map MMIO region\n");
> +
> +	reg_val = *(volatile uint32_t *)((volatile char *)igt_mmio + reg_name);
> +
> +	error = pci_device_unmap_range(dev, igt_mmio,
> +				       mmio_size);
> +	igt_fail_on_f(error != 0,
> +		      "Couldn't unmap MMIO region\n");
> +
> +	return reg_val;
> +}
> diff --git a/lib/intel_chipset.h b/lib/intel_chipset.h
> index 40170b7b..96a618eb 100644
> --- a/lib/intel_chipset.h
> +++ b/lib/intel_chipset.h
> @@ -73,6 +73,19 @@ struct intel_device_info {
>  
>  const struct intel_device_info *intel_get_device_info(uint16_t devid) __attribute__((pure));
>  
> +struct fd_pci_address {
> +	/**
> +	 * PCI Address
> +	 */
> +	uint16_t	domain;
> +	uint8_t		bus;
> +	uint8_t		dev;
> +	uint8_t		func;
> +};
> +
> +uint32_t intel_pci_read_register_u32(int fd, uint32_t reg_name);
> +int intel_get_pci_address_space(int fd, struct fd_pci_address *dev_addr);
> +
>  unsigned intel_gen(uint16_t devid) __attribute__((pure));
>  unsigned intel_gt(uint16_t devid) __attribute__((pure));

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-03-12 13:42 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-11 13:23 [igt-dev] [PATCH i-g-t] lib: add pci helper functions to intel_chipset Daniel Mrzyglod
2019-03-11 13:44 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2019-03-11 13:52 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
2019-03-11 14:24   ` Mrzyglod, Daniel T
2019-03-11 15:47 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork
2019-03-12 13:43 ` [igt-dev] [PATCH i-g-t] " Jani Nikula

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.