Re: [PATCH] iommu/amd: flush IOTLB for specific domains only

2017-06-03 Thread Jan Ziak
Hi

I am getting "AMD-Vi: Completion-Wait loop timed out" error
approximately once per several days with R9 390.

Is there a reason why this patch isn't in the mainstream linux-git yet?

-Jan
[18107.021297] AMD-Vi: Completion-Wait loop timed out
[18107.168770] AMD-Vi: Completion-Wait loop timed out
[18107.444225] AMD-Vi: Completion-Wait loop timed out
[18107.714855] AMD-Vi: Completion-Wait loop timed out
[18107.846366] AMD-Vi: Completion-Wait loop timed out
[18108.047749] AMD-Vi: Event logged [
[18108.047752] IOTLB_INV_TIMEOUT device=23:00.0 address=0x00042bb129e0]
[18108.179774] AMD-Vi: Completion-Wait loop timed out
[18108.580262] AMD-Vi: Completion-Wait loop timed out
[18108.710005] AMD-Vi: Completion-Wait loop timed out
[18108.911565] AMD-Vi: Event logged [
[18108.911567] IOTLB_INV_TIMEOUT device=23:00.0 address=0x00042bb12a80]
[18109.041945] AMD-Vi: Completion-Wait loop timed out
[18109.243115] AMD-Vi: Completion-Wait loop timed out
[18109.646030] AMD-Vi: Completion-Wait loop timed out
[18109.847087] AMD-Vi: Completion-Wait loop timed out
[18109.918406] clocksource: timekeeping watchdog on CPU5: Marking clocksource 
'tsc' as unstable because the skew is too large:
[18109.918408] clocksource:   'hpet' wd_now: 5f6204a6 
wd_last: 5e860c6b mask: 
[18109.918408] clocksource:   'tsc' cs_now: 34ca9e6f0220 
cs_last: 34c9ebff5f00 mask: 
[18109.918410] sched_clock: Marking unstable (18109972341058, 
-53936107)<-(18110036284612, -117879661)
[18109.918411] tsc: Marking TSC unstable due to clocksource watchdog
[18109.918421] AMD-Vi: Event logged [
[18109.918423] IOTLB_INV_TIMEOUT device=23:00.0 address=0x00042bb12b20]
[18110.119761] sched: RT throttling activated
[18110.249804] AMD-Vi: Completion-Wait loop timed out
[18110.453355] AMD-Vi: Completion-Wait loop timed out
[18110.652707] AMD-Vi: Completion-Wait loop timed out
[18110.854045] AMD-Vi: Completion-Wait loop timed out
[18111.055387] AMD-Vi: Completion-Wait loop timed out
[18111.126714] AMD-Vi: Event logged [
[18111.126717] IOTLB_INV_TIMEOUT device=23:00.0 address=0x00042bb12bc0]
[18111.127250] clocksource: Switched to clocksource hpet
[18111.144384] AMD-Vi: Completion-Wait loop timed out
[18111.274097] AMD-Vi: Completion-Wait loop timed out
[18111.427604] AMD-Vi: Completion-Wait loop timed out
[18111.533317] AMD-Vi: Completion-Wait loop timed out
[18111.663103] AMD-Vi: Completion-Wait loop timed out
[18111.891058] AMD-Vi: Event logged [
[18111.891061] IOTLB_INV_TIMEOUT device=23:00.0 address=0x00042bb12c60]
[18111.894334] AMD-Vi: Completion-Wait loop timed out
[18112.024375] AMD-Vi: Completion-Wait loop timed out
[18112.167603] AMD-Vi: Completion-Wait loop timed out
[18112.297630] AMD-Vi: Completion-Wait loop timed out
[18112.427562] AMD-Vi: Completion-Wait loop timed out
[18112.557171] AMD-Vi: Completion-Wait loop timed out
[18112.689019] AMD-Vi: Completion-Wait loop timed out
[18112.891054] AMD-Vi: Event logged [
[18112.891056] IOTLB_INV_TIMEOUT device=23:00.0 address=0x00042bb12d00]
[18112.927055] AMD-Vi: Completion-Wait loop timed out
[18113.039385] AMD-Vi: Completion-Wait loop timed out
[18113.187600] AMD-Vi: Completion-Wait loop timed out
[18113.315955] AMD-Vi: Completion-Wait loop timed out
[18113.445461] AMD-Vi: Completion-Wait loop timed out
[18113.600945] AMD-Vi: Completion-Wait loop timed out
[18113.724978] AMD-Vi: Completion-Wait loop timed out
[18113.891067] AMD-Vi: Event logged [
[18113.891069] IOTLB_INV_TIMEOUT device=23:00.0 address=0x00042bb12da0]
[18113.854379] AMD-Vi: Completion-Wait loop timed out
[18114.024385] AMD-Vi: Completion-Wait loop timed out
[18114.173507] AMD-Vi: Completion-Wait loop timed out
[18114.310944] AMD-Vi: Completion-Wait loop timed out
[18114.573226] AMD-Vi: Completion-Wait loop timed out
[18114.621895] AMD-Vi: Completion-Wait loop timed out
[18114.734704] AMD-Vi: Completion-Wait loop timed out
[18114.891088] AMD-Vi: Event logged [
[18114.891090] IOTLB_INV_TIMEOUT device=23:00.0 address=0x00042bb12e40]
[18114.910947] AMD-Vi: Completion-Wait loop timed out
[18115.039803] AMD-Vi: Completion-Wait loop timed out
[18115.184277] AMD-Vi: Completion-Wait loop timed out
[18115.324281] AMD-Vi: Completion-Wait loop timed out
[18115.464271] AMD-Vi: Completion-Wait loop timed out
[18115.677841] AMD-Vi: Completion-Wait loop timed out
[18115.747713] AMD-Vi: Completion-Wait loop timed out
[18115.891107] AMD-Vi: Event logged [
[18115.891109] IOTLB_INV_TIMEOUT device=23:00.0 address=0x00042bb12ee0]
[18115.884118] AMD-Vi: Completion-Wait loop timed out
[18116.020404] AMD-Vi: Completion-Wait loop timed out
[18116.157621] AMD-Vi: Completion-Wait loop timed out
[18116.291560] AMD-Vi: Completion-Wait loop timed out
[18116.420952] AMD-Vi: Completion-Wait loop timed out
[18116.420952] [ cut here ]
[18116.420952] WARNING: CPU: 4 PID: 0 at drivers/iommu/amd_iommu.c:1256 
__domain_flush_pages+0x1d0/0x1f0
[18116.420952] 

Re: [PATCH 000/100] Add Vega10 Support

2017-03-20 Thread Jan Ziak
On Mon, Mar 20, 2017 at 10:41 PM, Alex Deucher <alexdeuc...@gmail.com>
wrote:

> On Mon, Mar 20, 2017 at 5:36 PM, Jan Ziak <0xe2.0x9a.0...@gmail.com>
> wrote:
> > Hi
> >
> > https://cgit.freedesktop.org/~agd5f/linux/plain/drivers/gpu/
> drm/amd/include/asic_reg/vega10/NBIO/nbio_6_1_sh_mask.
> h?h=amd-staging-4.9=9555ef0ba926df25d9a637d0ea21bc0d231c21d2
> >
> > The file nbio_6_1_sh_mask.h is uncompressed. It consists from 133884
> lines.
> > Only generated C/C++ code will be able to utilize the content of such a
> file
> > efficiently. All hand-written codes combined will be able to utilize
> about
> > 1% of the file.
> >
> > Is there a reason why nbio_6_1_sh_mask.h is huge?
>
> That IP block contains a lot of registers.  The idea is to open source
> as much IP as possible to facilitate debugging, new features, etc.
>
> Alex
>

[This email contains long/wide lines and should be viewed on a sufficiently
wide screen]

For example if I open the file in vim and go to line 66952:

#define 
DWC_E12MP_PHY_X4_NS_X4_1_LANE1_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
0x9

Then abstracting away some of the digits used in the defined identifier and
using egrep:

$ egrep
"\<DWC_E12MP_PHY_X._NS_X._._LANE._DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_.__DTB_SEL__SHIFT\>"
nbio_6_1_sh_mask.h
#define
DWC_E12MP_PHY_X4_NS_X4_0_LANE0_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_0_LANE1_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_0_LANE2_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_0_LANE3_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_0_LANEX_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_1_LANE0_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_1_LANE1_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_1_LANE2_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_1_LANE3_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_1_LANEX_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_2_LANE0_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_2_LANE1_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_2_LANE2_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_2_LANE3_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_2_LANEX_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_3_LANE0_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_3_LANE1_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_3_LANE2_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_3_LANE3_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9
#define
DWC_E12MP_PHY_X4_NS_X4_3_LANEX_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_1__DTB_SEL__SHIFT
   0x9

The egrep command produced 20 lines.

Instead of the many #define directives, it is a possibility to define
functions such as:

int
DWC_E12MP_PHY_Xa_NS_Xb_c_LANEd_DIG_RX_VCOCAL_RX_VCO_CAL_CTRL_e__DTB_SEL__SHIFT(int
a, int b, int c, int d, int e) __attribute__((pure));

I suppose the file nbio_6_1_sh_mask.h is the output of a tool (it is a
generated file). It is an option to modify the tool to output C functions
with proper input guards instead of #define directives.

Jan
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


Re: [PATCH 000/100] Add Vega10 Support

2017-03-20 Thread Jan Ziak
Hi

https://cgit.freedesktop.org/~agd5f/linux/plain/drivers/gpu/drm/amd/include/asic_reg/vega10/NBIO/nbio_6_1_sh_mask.h?h=amd-staging-4.9=9555ef0ba926df25d9a637d0ea21bc0d231c21d2

The file nbio_6_1_sh_mask.h is uncompressed. It consists from 133884 lines.
Only generated C/C++ code will be able to utilize the content of such a
file efficiently. All hand-written codes combined will be able to utilize
about 1% of the file.

Is there a reason why nbio_6_1_sh_mask.h is huge?

Jan
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx