Re: Please test: UVM fault unlocking (aka vmobjlock)

2021-12-02 Thread Tom Murphy
Hi,

  I've tested the second diff (containing the bug fix and I get a lock
order reversal on bootup. On the first patch I was getting the same
lock order reversal while using X and sometimes (only sometimes) would
crash X.

witness: lock order reversal:
 1st 0xfd83fef05248 uobjlk (>vmobjlock)
 2nd 0x8119f700 objmm (>mm.lock)
lock order ">mm.lock"(rwlock) -> ">vmobjlock"(rwlock) first seen at:
#0  rw_enter+0x65
#1  uvm_obj_wire+0x46
#2  shmem_get_pages+0xaf
#3  __i915_gem_object_get_pages+0x9d
#4  i915_vma_pin_ww+0x49b
#5  i915_ggtt_pin+0x61
#6  intel_execlists_submission_setup+0x3b2
#7  intel_engines_init+0x2ff
#8  intel_gt_init+0x133
#9  i915_gem_init+0xa3
#10 i915_driver_probe+0x75a
#11 inteldrm_attachhook+0x45
#12 config_process_deferred_mountroot+0x6b
#13 main+0x743
lock order ">vmobjlock"(rwlock) -> ">mm.lock"(rwlock) first seen at:
#0  rw_enter+0x65
#1  __i915_gem_object_get_pages+0x30
#2  i915_gem_fault+0x1aa
#3  drm_fault+0x156
#4  uvm_fault+0x179
#5  upageflttrap+0x62
#6  usertrap+0x18b
#7  recall_trap+0x8


Dmesg:

OpenBSD 7.0-current (GENERIC.MP) #3: Thu Dec  2 18:38:43 GMT 2021
pertho@pertho.local:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 17040445440 (16251MB)
avail mem = 16376905728 (15618MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 3.0 @ 0x7b288000 (41 entries)
bios0: vendor American Megatrends Inc. version "1.05.07" date 09/29/2017
bios0: PC Specialist LTD N13xWU
acpi0 at bios0: ACPI 6.0
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP APIC FPDT FIDT MCFG SSDT SSDT HPET UEFI SSDT SSDT SSDT 
DBGP DBG2 DMAR BGRT ASF! WSMT
acpi0: wakeup devices RP17(S4) PXSX(S4) RP18(S4) PXSX(S4) RP19(S4) PXSX(S4) 
RP20(S4) PXSX(S4) RP21(S4) PXSX(S4) RP22(S4) PXSX(S4) RP23(S4) PXSX(S4) 
RP24(S4) PXSX(S4) [...]
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee0: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz, 1696.05 MHz, 06-8e-0a
cpu0: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN
cpu0: 256KB 64b/line 8-way L2 cache
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 24MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.2.4.1.1.1, IBE
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz, 1696.05 MHz, 06-8e-0a
cpu1: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN
cpu1: 256KB 64b/line 8-way L2 cache
cpu1: smt 0, core 1, package 0
cpu2 at mainbus0: apid 4 (application processor)
cpu2: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz, 1696.05 MHz, 06-8e-0a
cpu2: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN
cpu2: 256KB 64b/line 8-way L2 cache
cpu2: smt 0, core 2, package 0
cpu3 at mainbus0: apid 6 (application processor)
cpu3: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz, 1696.05 MHz, 06-8e-0a
cpu3: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN
cpu3: 256KB 64b/line 8-way L2 cache
cpu3: smt 0, core 3, package 0
cpu4 at mainbus0: apid 1 (application processor)
cpu4: Intel(R) Core(TM) 

Re: cwm: add group-last command [Was: Re: cwm: add last-group command]

2021-10-10 Thread Tom Murphy
Tom Murphy wrote:
> Hi,
> 
>   Here's an updated diff from Omar Polo's addition of group-last
>   command to cwm. I've been using it without issues and it's
>   really handy to be able to switch back to the previous
>   workspace you were on with it.
> 
>   Many thanks to Omar Polo for doing all the original work. I've
>   just updated the diff so it applies cleanly.
> 
>   OK?
> 
>   Tom
> 
> 
> Index: calmwm.h
> ===
> RCS file: /cvs/xenocara/app/cwm/calmwm.h,v
> retrieving revision 1.375
> diff -u -p -r1.375 calmwm.h
> --- calmwm.h  16 Apr 2020 13:32:35 -  1.375
> +++ calmwm.h  10 Oct 2021 19:13:41 -
> @@ -214,6 +214,7 @@ struct screen_ctx {
>   struct region_q  regionq;
>   struct group_q   groupq;
>   struct group_ctx*group_active;
> + int  group_last;
>   Colormap colormap;
>   Visual  *visual;
>   struct {
> @@ -501,6 +502,7 @@ void   
> kbfunc_client_toggle_group(void 
>  void  kbfunc_client_movetogroup(void *, struct cargs *);
>  void  kbfunc_group_toggle(void *, struct cargs *);
>  void  kbfunc_group_only(void *, struct cargs *);
> +void  kbfunc_group_last(void *, struct cargs *);
>  void  kbfunc_group_close(void *, struct cargs *);
>  void  kbfunc_group_cycle(void *, struct cargs *);
>  void  kbfunc_group_toggle_all(void *, struct cargs *);
> Index: conf.c
> ===
> RCS file: /cvs/xenocara/app/cwm/conf.c,v
> retrieving revision 1.252
> diff -u -p -r1.252 conf.c
> --- conf.c16 Apr 2020 13:32:35 -  1.252
> +++ conf.c10 Oct 2021 19:13:41 -
> @@ -139,6 +139,7 @@ static const struct {
>  
>   { FUNC_SC(group-cycle, group_cycle, (CWM_CYCLE_FORWARD)) },
>   { FUNC_SC(group-rcycle, group_cycle, (CWM_CYCLE_REVERSE)) },
> + { FUNC_SC(group-last, group_last, 0) },
>   { FUNC_SC(group-toggle-all, group_toggle_all, 0) },
>   { FUNC_SC(group-toggle-1, group_toggle, 1) },
>   { FUNC_SC(group-toggle-2, group_toggle, 2) },
> Index: cwmrc.5
> ===
> RCS file: /cvs/xenocara/app/cwm/cwmrc.5,v
> retrieving revision 1.76
> diff -u -p -r1.76 cwmrc.5
> --- cwmrc.5   16 Apr 2020 13:32:35 -  1.76
> +++ cwmrc.5   10 Oct 2021 19:13:41 -
> @@ -273,6 +273,8 @@ menu.
>  Toggle visibility of group n, where n is 1-9.
>  .It group-only-[n]
>  Show only group n, where n is 1-9, hiding other groups.
> +.It group-last
> +Show only the last viewed group.
>  .It group-close-[n]
>  Close all windows in group n, where n is 1-9.
>  .It group-toggle-all
> Index: group.c
> ===
> RCS file: /cvs/xenocara/app/cwm/group.c,v
> retrieving revision 1.137
> diff -u -p -r1.137 group.c
> --- group.c   27 Feb 2020 14:56:39 -  1.137
> +++ group.c   10 Oct 2021 19:13:41 -
> @@ -215,6 +215,9 @@ group_only(struct screen_ctx *sc, int id
>  {
>   struct group_ctx*gc;
>  
> + if (sc->group_active->num != idx)
> + sc->group_last = sc->group_active->num;
> +
>   TAILQ_FOREACH(gc, >groupq, entry) {
>   if (gc->num == idx)
>   group_show(gc);
> Index: kbfunc.c
> ===
> RCS file: /cvs/xenocara/app/cwm/kbfunc.c,v
> retrieving revision 1.170
> diff -u -p -r1.170 kbfunc.c
> --- kbfunc.c  20 Mar 2020 18:50:08 -  1.170
> +++ kbfunc.c  10 Oct 2021 19:13:41 -
> @@ -479,6 +479,14 @@ kbfunc_group_only(void *ctx, struct carg
>  }
>  
>  void
> +kbfunc_group_last(void *ctx, struct cargs *cargs)
> +{
> + struct screen_ctx   *sc = ctx;
> +
> + group_only(ctx, sc->group_last);
> +}
> +
> +void
>  kbfunc_group_toggle(void *ctx, struct cargs *cargs)
>  {
>   group_toggle(ctx, cargs->flag);
> Index: screen.c
> ===
> RCS file: /cvs/xenocara/app/cwm/screen.c,v
> retrieving revision 1.97
> diff -u -p -r1.97 screen.c
> --- screen.c  24 Mar 2020 14:47:29 -  1.97
> +++ screen.c  10 Oct 2021 19:13:41 -
> @@ -53,6 +53,7 @@ screen_init(int which)
>   sc->visual = DefaultVisual(X_Dpy, sc->which);
>   sc->cycling = 0;
>   sc->hideall = 0;
> + sc->group_last = 1;
>  
>   conf_scree

Re: cwm: add group-last command [Was: Re: cwm: add last-group command]

2021-10-10 Thread Tom Murphy
Hi,

  Here's an updated diff from Omar Polo's addition of group-last
  command to cwm. I've been using it without issues and it's
  really handy to be able to switch back to the previous
  workspace you were on with it.

  Many thanks to Omar Polo for doing all the original work. I've
  just updated the diff so it applies cleanly.

  OK?

  Tom


Index: calmwm.h
===
RCS file: /cvs/xenocara/app/cwm/calmwm.h,v
retrieving revision 1.375
diff -u -p -r1.375 calmwm.h
--- calmwm.h16 Apr 2020 13:32:35 -  1.375
+++ calmwm.h10 Oct 2021 19:13:41 -
@@ -214,6 +214,7 @@ struct screen_ctx {
struct region_q  regionq;
struct group_q   groupq;
struct group_ctx*group_active;
+   int  group_last;
Colormap colormap;
Visual  *visual;
struct {
@@ -501,6 +502,7 @@ void 
kbfunc_client_toggle_group(void 
 voidkbfunc_client_movetogroup(void *, struct cargs *);
 voidkbfunc_group_toggle(void *, struct cargs *);
 voidkbfunc_group_only(void *, struct cargs *);
+voidkbfunc_group_last(void *, struct cargs *);
 voidkbfunc_group_close(void *, struct cargs *);
 voidkbfunc_group_cycle(void *, struct cargs *);
 voidkbfunc_group_toggle_all(void *, struct cargs *);
Index: conf.c
===
RCS file: /cvs/xenocara/app/cwm/conf.c,v
retrieving revision 1.252
diff -u -p -r1.252 conf.c
--- conf.c  16 Apr 2020 13:32:35 -  1.252
+++ conf.c  10 Oct 2021 19:13:41 -
@@ -139,6 +139,7 @@ static const struct {
 
{ FUNC_SC(group-cycle, group_cycle, (CWM_CYCLE_FORWARD)) },
{ FUNC_SC(group-rcycle, group_cycle, (CWM_CYCLE_REVERSE)) },
+   { FUNC_SC(group-last, group_last, 0) },
{ FUNC_SC(group-toggle-all, group_toggle_all, 0) },
{ FUNC_SC(group-toggle-1, group_toggle, 1) },
{ FUNC_SC(group-toggle-2, group_toggle, 2) },
Index: cwmrc.5
===
RCS file: /cvs/xenocara/app/cwm/cwmrc.5,v
retrieving revision 1.76
diff -u -p -r1.76 cwmrc.5
--- cwmrc.5 16 Apr 2020 13:32:35 -  1.76
+++ cwmrc.5 10 Oct 2021 19:13:41 -
@@ -273,6 +273,8 @@ menu.
 Toggle visibility of group n, where n is 1-9.
 .It group-only-[n]
 Show only group n, where n is 1-9, hiding other groups.
+.It group-last
+Show only the last viewed group.
 .It group-close-[n]
 Close all windows in group n, where n is 1-9.
 .It group-toggle-all
Index: group.c
===
RCS file: /cvs/xenocara/app/cwm/group.c,v
retrieving revision 1.137
diff -u -p -r1.137 group.c
--- group.c 27 Feb 2020 14:56:39 -  1.137
+++ group.c 10 Oct 2021 19:13:41 -
@@ -215,6 +215,9 @@ group_only(struct screen_ctx *sc, int id
 {
struct group_ctx*gc;
 
+   if (sc->group_active->num != idx)
+   sc->group_last = sc->group_active->num;
+
TAILQ_FOREACH(gc, >groupq, entry) {
if (gc->num == idx)
group_show(gc);
Index: kbfunc.c
===
RCS file: /cvs/xenocara/app/cwm/kbfunc.c,v
retrieving revision 1.170
diff -u -p -r1.170 kbfunc.c
--- kbfunc.c20 Mar 2020 18:50:08 -  1.170
+++ kbfunc.c10 Oct 2021 19:13:41 -
@@ -479,6 +479,14 @@ kbfunc_group_only(void *ctx, struct carg
 }
 
 void
+kbfunc_group_last(void *ctx, struct cargs *cargs)
+{
+   struct screen_ctx   *sc = ctx;
+
+   group_only(ctx, sc->group_last);
+}
+
+void
 kbfunc_group_toggle(void *ctx, struct cargs *cargs)
 {
group_toggle(ctx, cargs->flag);
Index: screen.c
===
RCS file: /cvs/xenocara/app/cwm/screen.c,v
retrieving revision 1.97
diff -u -p -r1.97 screen.c
--- screen.c24 Mar 2020 14:47:29 -  1.97
+++ screen.c10 Oct 2021 19:13:41 -
@@ -53,6 +53,7 @@ screen_init(int which)
sc->visual = DefaultVisual(X_Dpy, sc->which);
sc->cycling = 0;
sc->hideall = 0;
+   sc->group_last = 1;
 
conf_screen(sc);
 



Add Gear Head keyboard usbdev

2020-08-03 Thread Tom Murphy
Hi,

   I noticed the kernel was just printing out the generic hex device id
   rather than the name of my keyboard so I did some checking and 
   there is a vendor id for "Gear Head" keyboards. These keyboards are 
   sometimes resold under different names like Octogen or Sanoxy, but
   they are rebranded Gear Head keyboards.

   Attached is a diff that identifies them as such. I got the usb id
   info from http://www.linux-usb.org/usb.ids

   Output of usbdevs -v for the aforementioned device on kernel
   without patch:

   addr 04: 0b38:0010 vendor 0x0b38, product 0x0010
low speed, power 100 mA, config 1, rev 1.02
driver: uhidev2
driver: uhidev3

   Same output on kernel as per diff below:

   addr 04: 0b38:0010 Gear Head, 107-Key Keyboard
low speed, power 100 mA, config 1, rev 1.02
driver: uhidev2
driver: uhidev3

   Hope the naming scheme is OK, I can change it if needed.

   Thanks,
   Tom


Index: sys/dev/usb/usbdevs
===
RCS file: /cvs/src/sys/dev/usb/usbdevs,v
retrieving revision 1.719
diff -u -p -r1.719 usbdevs
--- sys/dev/usb/usbdevs 22 Jul 2020 11:12:40 -  1.719
+++ sys/dev/usb/usbdevs 3 Aug 2020 14:08:51 -
@@ -406,6 +406,7 @@ vendor NEODIO   0x0aec  Neodio
 vendor OPTION  0x0af0  Option
 vendor ASUS0x0b05  ASUS
 vendor TODOS   0x0b0c  Todos Data System
+vendor GEARHEAD0x0b38  Gear Head
 vendor OCT 0x0b39  Omnidirectional Control Technology
 vendor TEKRAM  0x0b3b  Tekram Technology
 vendor HAL 0x0b41  HAL Corporation
@@ -2054,6 +2055,10 @@ product GARMIN GPSMAP62S 0x2459  GPSmap 6
 
 /* GCT Semiconductor products */
 product GCTSEMICON INSTALL 0x7f40  GDM720x MASS storage mode   
+
+/* Gear Head products */
+product GEARHEAD GHKB  0x0003  Gear Head Keyboard
+product GEARHEAD GHKB107   0x0010  Gear Head 107-Key Keyboard
 
 /* GEMPLUS products */
 product GEMPLUS PROXPU 0x5501  Prox-PU/CU
Index: sys/dev/usb/usbdevs.h
===
RCS file: /cvs/src/sys/dev/usb/usbdevs.h,v
retrieving revision 1.731
diff -u -p -r1.731 usbdevs.h
--- sys/dev/usb/usbdevs.h   22 Jul 2020 11:13:20 -  1.731
+++ sys/dev/usb/usbdevs.h   3 Aug 2020 14:08:51 -
@@ -413,6 +413,7 @@
 #defineUSB_VENDOR_OPTION   0x0af0  /* Option */
 #defineUSB_VENDOR_ASUS 0x0b05  /* ASUS */
 #defineUSB_VENDOR_TODOS0x0b0c  /* Todos Data System */
+#define USB_VENDOR_GEARHEAD0x0b38  /* Gear Head */
 #defineUSB_VENDOR_OCT  0x0b39  /* Omnidirectional Control 
Technology */
 #defineUSB_VENDOR_TEKRAM   0x0b3b  /* Tekram Technology */
 #defineUSB_VENDOR_HAL  0x0b41  /* HAL Corporation */
@@ -2061,6 +2062,10 @@
 
 /* GCT Semiconductor products */
 #defineUSB_PRODUCT_GCTSEMICON_INSTALL  0x7f40  /* GDM720x MASS 
storage mode */
+
+/* Gear Head products */
+#define USB_PRODUCT_GEARHEAD_GHKB  0x0003  /* Gear Head Keyboard */
+#define USB_PRODUCT_GEARHEAD_GHKB107   0x0010  /* Gear Head 107-key 
Keyboard */
 
 /* GEMPLUS products */
 #defineUSB_PRODUCT_GEMPLUS_PROXPU  0x5501  /* Prox-PU/CU */
Index: sys/dev/usb/usbdevs_data.h
===
RCS file: /cvs/src/sys/dev/usb/usbdevs_data.h,v
retrieving revision 1.725
diff -u -p -r1.725 usbdevs_data.h
--- sys/dev/usb/usbdevs_data.h  22 Jul 2020 11:13:20 -  1.725
+++ sys/dev/usb/usbdevs_data.h  3 Aug 2020 14:08:51 -
@@ -4210,6 +4210,14 @@ const struct usb_known_product usb_known
"GDM720x MASS storage mode",
},
{
+   USB_VENDOR_GEARHEAD, USB_PRODUCT_GEARHEAD_GHKB,
+   "Keyboard",
+   },
+   {
+   USB_VENDOR_GEARHEAD, USB_PRODUCT_GEARHEAD_GHKB107,
+   "107-Key Keyboard",
+   },
+   {
USB_VENDOR_GEMPLUS, USB_PRODUCT_GEMPLUS_PROXPU,
"Prox-PU/CU",
},
@@ -14280,6 +14288,10 @@ const struct usb_known_vendor usb_known_
{
USB_VENDOR_HP2,
"Hewlett Packard",
+   },
+   {
+   USB_VENDOR_GEARHEAD,
+   "Gear Head",
},
{ 0, NULL }
 };



Re: 11n support for athn(4)

2017-01-15 Thread Tom Murphy
Hi Stefan,

  Thanks very much for the 11n support in athn(4)! Here's mine:

athn0 at pci5 dev 0 function 0 "Atheros AR9281" rev 0x01: apic 2 int 16
athn0: AR9280 rev 2 (2T2R), ROM rev 22, address 04:f0:21:24:c8:4f

  I did some netperf tests between OpenBSD athn(4) in hostap mode (11n)
and a Linux wifi client (using an iwn(4) type chipset) and couldn't
get up to 4 MBps:

# netperf -4 -H 10.13.0.2 -t TCP_STREAM -C -c -l 60
MIGRATED TCP STREAM TEST from (null) (0.0.0.0) port 0 AF_INET to (null) () port 
0 AF_INET : demo
Recv   SendSend  Utilization   Service Demand
Socket Socket  Message  Elapsed  Send Recv SendRecv
Size   SizeSize Time Throughput  localremote   local   remote
bytes  bytes   bytessecs.10^6bits/s  % C  % ?  us/KB   us/KB

 87380  16384  1638460.18 3.92   7.94 3.61 331.990  
-151.019 
# netperf -4 -H 10.13.0.2 -t TCP_STREAM -C -c -l 60 
MIGRATED TCP STREAM TEST from (null) (0.0.0.0) port 0 AF_INET to (null) () port 
0 AF_INET : demo
Recv   SendSend  Utilization   Service Demand
Socket Socket  Message  Elapsed  Send Recv SendRecv
Size   SizeSize Time Throughput  localremote   local   remote
bytes  bytes   bytessecs.10^6bits/s  % C  % ?  us/KB   us/KB

 87380  16384  1638461.11 3.95   7.41 2.11 307.442  -87.524

Linux iwconfig client shows Bit rate of 1 MB/s which doesn't look right.

Any ideas?

Thanks,
Tom



Re: ral rt2661 tx interrupt race fix

2012-09-30 Thread Tom Murphy
Stefan,

  Your patch works well on my system:

  ral0 at pci0 dev 14 function 0 Ralink RT2661 rev 0x00: irq 10, address 
  00:14:85:d5:39:bb
  ral0: MAC/BBP RT2661D, RF RT2529 (MIMO XR)

  Only problem is downloading from the net is extremely slow. Benchmarks
  have it at 512 KB/sec as opposed to 10 megabits/s.

  This is (internet) - OpenBSD - ral0 - wifi client

  But it doesn't crash or bring up OACTIVE flag anymore which is
  fantastic.. however, it's a little to slow to use with any regularity.

  Uploads are fine (wifi - ral(4) - OpenBSD - out to the net). 

  Tom



October 13 2011 NAT update

2011-10-28 Thread Tom Murphy
You guys might want to add a note to current.html that from October
13 2011, the NAT updates have made it impossible to not use an address
family in a nat-to statement.

The following statement fails now:

match out on egress from ($int_if:network) nat-to (egress)

Gives the error:

/etc/pf.conf:74: af-to is not supported on match rules
/etc/pf.conf:74: skipping rule due to errors

Changing it to:  

match out on egress inet from ($int_if:network) nat-to (egress)

Fixes it.

I wasn't sure how many people explicitly use the address family in 
their nat-to lines, but this one caught me out when I updated to a
newer snapshot earlier this month.

Tom



Re: mmuagp driver

2011-05-15 Thread Tom Murphy
Many thanks to oga@ for this. I have been using this patch for at least
a month now and not had any issues.

Relevant bits of dmesg:

pchb0 at pci0 dev 0 function 0 NVIDIA nForce3 250 PCI Host rev 0xa1
mmuagp0 at pchb0: 1 Miscellaneous Control unit(s) found
agp0 at mmuagp0: aperture at 0xf000, size 0x200

I also swapped out the Nvidia GeForce 7800 card and put in an
ATI/Sapphire X1950 Pro (all AGP) and 3D worked, even though it was a
little choppy, but oga@ said that was more down to the version of the
intel driver in Xenocara than anything else.

Tom



lii(4) causes panic when attempting to nfs_boot

2011-05-04 Thread Tom Murphy
Hi,

  I originally sent this to misc@ but it probably got lost in all
the noise, so here it is again.

  I went through the PR database and found a case where someone was
having problems with the MAC address being different between dmesg/
kernel time and later. I did not find that to be an issue at all.

  Here's the message again with dmesg and panic. Any ideas on how
to fix? My best guess is it's the lii(4) driver itself, but I am not 
good at tracing these things.

  While attempting to network boot my Asus EEE with its lii(4) wired 
ethernet, I get an error and panic when it attempts to boot via 
nfs_boot.

  When I hook the network cable up to a switch to watch the link, it 
stays on until the kernel boots, then goes off during the devices 
detection, then goes back on briefly, then turns off before it tries to 
do the nfs_mount root.

  Thinking it could be a slow PHY, I modified line 1020 in 
netinet/if_ether.c to read:
result = tsleep((caddr_t)myip, PSOCK, revarp, hz*20);

  However, all this did was make the kernel wait forever at the 
nfs_boot: line. I watched for link light again, and it stayed off 
almost the whole time, flickered for about quarter of a second, then 
went out again.

  For comparison, I hooked up another laptop (an Acer TravelMate with 
a bce(4) ethernet device) and attempted to boot diskless with it with 
the same kernel and config (except for changing the MAC address in 
/etc/ethers and dhcpd.conf) and it worked fine.

  I'm thinking it could have something to do with the lii(4) driver. 
Attached is the panic with trace and ps as well as a dmesg of the 
machine when it boots normally (with the kernel on a USB stick.)

Tom


PXE boot MAC address 00:22:15:14:89:d6, interface lii0
nfs_boot: using interface lii0, with revarp  bootparams
panic: reverse arp not answered by rarpd(8) or dhcpd(8)
Stopped at  Debugger+0x4:   popl%ebp
RUN AT LEAST 'trace' AND 'ps' AND INCLUDE OUTPUT WHEN REPORTING THIS PANIC!
DO NOT EVEN BOTHER REPORTING WITHOUT INCLUDING THAT INFORMATION!
ddb trace
Debugger(d08dea35,d0ba3cd4,d08d2434.d0ba3cd4,d156a094) at Debugger+0x4
panic(d08d2434,d156a094,d0ba3d18,d0a2f500,746f6f) at panic+0x5d
nfs_boot_init(d0ba3df0,d0a2f500,128,d03ec0f9,a) at nfs_boot_init+0x3ca
nfs_mountroot(d08b4257,0,d08b9faa,0,0) at nfs_mountroot+0x4c
main(d02004ba,d02004c2,0,0,0) at main+0x57b
ddb ps
   PID   PPID   PGRPUID  S   FLAGS  WAIT  COMMAND
10  0  0  0  30x100200  bored crypto
 9  0  0  0  30x100200  pftm  pfpurge
 8  0  0  0  30x100200  usbtskusbtask
 7  0  0  0  30x100200  usbatsk   usbatsk
 6  0  0  0  30x100200  bored intelrel
 5  0  0  0  30x100200  acpi0 acpi0
 4  0  0  0  30x100200  bored syswq
 3  0  0  0  30x100200idle0
 2  0  0  0  3  0x40100200  kmalloc   kmthread
 1  0  0  0  30x100200  initexec  swapper
*0 -1  0  0  7 0x80200swapper


OpenBSD 4.9-current (GENERIC) #0: Thu Apr 28 21:01:49 BST 2011
r...@jera.pertho.net:/usr/src/sys/arch/i386/compile/GENERIC
cpu0: Intel(R) Celeron(R) M processor 900MHz (GenuineIntel 686-class) 631 MHz
cpu0: 
FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,TM,SBF
real mem  = 527527936 (503MB)
avail mem = 508755968 (485MB)
mainbus0 at root
bios0 at mainbus0: AT/286+ BIOS, date 03/11/09, BIOS32 rev. 0 @ 0xf0010, SMBIOS 
rev. 2.5 @ 0xf06e0 (37 entries)
bios0: vendor American Megatrends Inc. version 1302 date 03/11/2009
bios0: ASUSTeK Computer INC. 701
acpi0 at bios0: rev 0
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP APIC OEMB MCFG
acpi0: wakeup devices P0P3(S4) P0P4(S4) P0P5(S4) P0P6(S4) P0P7(S4) MC97(S4) 
USB1(S3) USB2(S3) USB3(S3) USB4(S3) EUSB(S3)
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee0: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: apic clock running at 70MHz
ioapic0 at mainbus0: apid 1 pa 0xfec0, version 20, 24 pins
acpimcfg0 at acpi0 addr 0xe000, bus 0-255
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 5 (P0P3)
acpiprt2 at acpi0: bus 3 (P0P5)
acpiprt3 at acpi0: bus 1 (P0P6)
acpiec0 at acpi0
acpicpu0 at acpi0: C3, C2
acpitz0 at acpi0: critical temperature 90 degC
acpibat0 at acpi0: BAT0 model 701 serial   type LION oem ASUS
acpiac0 at acpi0: AC unit online
acpiasus0 at acpi0
acpibtn0 at acpi0: LID_
acpibtn1 at acpi0: SLPB
acpibtn2 at acpi0: PWRB
acpivideo0 at acpi0: VGA_
bios0: ROM list: 0xc/0xf800! 0xcf800/0x1000
pci0 at mainbus0 bus 0: configuration mode 1 (bios)
pchb0 at pci0 dev 0 function 0 Intel 82915GM Host rev 0x04
vga1 at pci0 dev 2 function 0 Intel 82915GM Video rev 0x04
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 

Re: resurect and fix bce(4)

2011-04-26 Thread Tom Murphy
Janne Johansson wrote:
 2011/4/3 Claudio Jeker cje...@diehard.n-r-g.com

 bce(4) was turned off because of limitations in the DMA engine that allows
 the chip to access only 1G of memory. On systems with more then 1G of
 memory hilarity ensued.

 Now I rewrote the driver to use bcopy() to copy the mbufs into a savely
 allocated DMA memory buffer. So the chip will now work with any ammount of
 memory in the machine. It works for me so if you own a bce(4) please test.


FWIW, my loaner laptop from the job works fine with this, giving me bce0
back.

(I used to limit ram to 1G when I needed bce before, don't have to anymore.
I don't care
for the performance drop, its far above 0 now)

I can confirm this works nicely on my Acer TravelMate 4020 series laptop which
has a built-in bce(4). The laptop only has half a gig of RAM so this was never
an issue.

Thanks for re-enabling this driver!

Regards,
Tom



Re: Add support to AR5424

2010-06-28 Thread Tom Murphy
On 21/05/10 18:42, Giovanni Bechis wrote:
 Il 21/05/2010 19.31, Tom Murphy ha scritto:
Is there any update on this? Is it possible to get the chipset
 working?

 At least latest version breaks this chip (found on IBM x40):
 ath0 at pci1 dev 2 function 0 Atheros AR5212 (IBM MiniPCI) rev 0x01:
 irq 11
 ath0: AR5213A 5.9 phy 4.3 rf5112a 3.6, MKK2A
  Cheers
   Giovanni

Hi all,

  Any chance to get this patch work ingon the AR5424 in Asus 4g (701)
laptops? The aforementioned patch here at least gets the machine no
longer locking up so I think it would be a good candidate for going into
the tree.

  Tom



Re: Add support to AR5424

2010-04-26 Thread Tom Murphy
On Sun, Apr 25, 2010 at 10:49:26PM +0100, Luis Henriques wrote:
 On Sun, Apr 25, 2010 at 08:29:35PM +0100, Tom Murphy wrote:
  Luis,
  
I have an Asus EEE with uses an AR5424 chipset:
  
  ath0 at pci3 dev 0 function 0 Atheros AR5424 rev 0x01: apic 1 int 18 (irq 
  10)
  ath0: AR5424 14.2 phy 7.0 rf 0.0, WOR0W, address 00:15:af:b5:36:7f
  
I tried the latest patch you posted and it locks OpenBSD completely up
  when bringing the network up (even ifconfig ath0 up locks the system.)
 
 Thanks for testing and reporting this, Tom.
 
 Just curious about something: the dmesg you show in your email has been
 collected _without_ the patch, right?  Because with the patch I would
 expect that the rf would be different from 0.0.
 
 --
 Luis

Hi Luis,

  Yes, that is correct. Do you need the rf value from the patched kernel?
I basically patched the latest -CURRENT (cvs tree as of yesterday).

  Please let me know if you need any more information. Thanks!

  Tom 



Re: Add support to AR5424

2010-04-26 Thread Tom Murphy
On Mon, Apr 26, 2010 at 03:38:19PM +0100, Luis Henriques wrote:
 On Mon, Apr 26, 2010 at 7:57 AM, Tom Murphy open...@pertho.net wrote:
  Hi Luis,
 
   Yes, that is correct. Do you need the rf value from the patched kernel?
  I basically patched the latest -CURRENT (cvs tree as of yesterday).
 
 Ok, thanks. I just wanted to make sure the patch was identifing
 correctly your card. The rf value should be different from 0.0.

Hi Luis,

   Yes, it is different from 0.0. This is what I got when I booted up:

ath0 at pci3 dev 0 function 0 Atheros AR5424 rev 0x01: apic 1 int 18 (irq 10)
ath0: AR5424 14.2 phy 7.0 rf 10.2, WOR0W, address 00:15:af:b5:36:7f

   Regards,
   Tom



Re: Add support to AR5424

2010-04-25 Thread Tom Murphy
Luis,

  I have an Asus EEE with uses an AR5424 chipset:

ath0 at pci3 dev 0 function 0 Atheros AR5424 rev 0x01: apic 1 int 18 (irq 10)
ath0: AR5424 14.2 phy 7.0 rf 0.0, WOR0W, address 00:15:af:b5:36:7f

  I tried the latest patch you posted and it locks OpenBSD completely up
when bringing the network up (even ifconfig ath0 up locks the system.)

  Tom



Re: rt2661 patch to fix interrupt handling under load

2010-01-18 Thread Tom Murphy
Marco Peereboom wrote:
 Has this been tested on all variants of the chip?

Well, not by me, but other people on misc mentioned it fixed ral(4)
issues for them. I only have a RT2661 and a RT2860 (the patch does
not touch RT2860).

I still do get the odd wireless dropout now and then, but it basically
makes the system go for not working/useless/hard lockup to working with
intermittent drops which I'd say is a HUGE improvement, even thuogh it's
not perfect.

Tom



rt2661 patch to fix interrupt handling under load

2010-01-17 Thread Tom Murphy
Hi,

  I'd like to point out that Roland Dreier's patch as detailed
here: http://www.mail-archive.com/m...@openbsd.org/msg83528.html
Works great on my little Soekris 5501 with a RT2661. (dmesg attached
to end of this email.)

  I do still get the odd wireless drop for 15-20 seconds, but it 
no longer brings up the OACTIVE flag on ral0 and it doesn't make
the system completely freeze (no way of getting a dump, have to 
hard reset.)

  I emailed damien@ on December 1st and got no response. The author
of the patch has expressed his frustration at being able to contact
a developer to get this committed. 

  I would be more than happy to do testing. Feel free to contact me..
I know it's hard to test all hardware devices when there is a lack of them.

  Regards,

  Tom

(kernel was compiled by me, with aforementioned patch above, and is GENERIC)

OpenBSD 4.6-current (GENERIC) #2: Fri Nov 27 12:20:04 GMT 2009
r...@pertho.net:/usr/src/sys/arch/i386/compile/GENERIC
cpu0: Geode(TM) Integrated Processor by AMD PCS (AuthenticAMD 586-class) 500 
MHz
cpu0: FPU,DE,PSE,TSC,MSR,CX8,SEP,PGE,CMOV,CFLUSH,MMX
real mem  = 536440832 (511MB)
avail mem = 511152128 (487MB)
mainbus0 at root
bios0 at mainbus0: AT/286+ BIOS, date 20/80/26, BIOS32 rev. 0 @ 0xfac40
pcibios0 at bios0: rev 2.0 @ 0xf/0x1
pcibios0: pcibios_get_intr_routing - function not supported
pcibios0: PCI IRQ Routing information unavailable.
pcibios0: PCI bus #0 is the last bus
bios0: ROM list: 0xc8000/0xa800
cpu0 at mainbus0: (uniprocessor)
amdmsr0 at mainbus0
pci0 at mainbus0 bus 0: configuration mode 1 (bios)
io address conflict 0x6100/0x100
io address conflict 0x6200/0x200
pchb0 at pci0 dev 1 function 0 AMD Geode LX rev 0x33
glxsb0 at pci0 dev 1 function 2 AMD Geode LX Crypto rev 0x00: RNG AES
vr0 at pci0 dev 6 function 0 VIA VT6105M RhineIII rev 0x96: irq 11, address 
00:00:24:cb:a6:64
ukphy0 at vr0 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 0x004063, 
model 0x0034
vr1 at pci0 dev 7 function 0 VIA VT6105M RhineIII rev 0x96: irq 5, address 
00:00:24:cb:a6:65
ukphy1 at vr1 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 0x004063, 
model 0x0034
vr2 at pci0 dev 8 function 0 VIA VT6105M RhineIII rev 0x96: irq 9, address 
00:00:24:cb:a6:66
ukphy2 at vr2 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 0x004063, 
model 0x0034
vr3 at pci0 dev 9 function 0 VIA VT6105M RhineIII rev 0x96: irq 12, address 
00:00:24:cb:a6:67
ukphy3 at vr3 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 0x004063, 
model 0x0034
ral0 at pci0 dev 14 function 0 Ralink RT2661 rev 0x00: irq 10, address 
00:14:85:d5:39:bb
ral0: MAC/BBP RT2661D, RF RT2529 (MIMO XR)
glxpcib0 at pci0 dev 20 function 0 AMD CS5536 ISA rev 0x03: rev 0, 32-bit 
3579545Hz timer, watchdog, gpio
gpio0 at glxpcib0: 32 pins
pciide0 at pci0 dev 20 function 2 AMD CS5536 IDE rev 0x01: DMA, channel 0 
wired to compatibility, channel 1 wired to compatibility
wd0 at pciide0 channel 0 drive 1: WDC WD1200BEVS-00VAT0
wd0: 16-sector PIO, LBA48, 114473MB, 234441648 sectors
wd0(pciide0:0:1): using PIO mode 4, Ultra-DMA mode 2
pciide0: channel 1 ignored (disabled)
ohci0 at pci0 dev 21 function 0 AMD CS5536 USB rev 0x02: irq 15, version 1.0, 
legacy support
ehci0 at pci0 dev 21 function 1 AMD CS5536 USB rev 0x02: irq 15
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 AMD EHCI root hub rev 2.00/1.00 addr 1
isa0 at glxpcib0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
com0: console
com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
pckbc0 at isa0 port 0x60/5
pcppi0 at isa0 port 0x61
midi0 at pcppi0: PC speaker
spkr0 at pcppi0
nsclpcsio0 at isa0 port 0x2e/2: NSC PC87366 rev 9: GPIO VLM TMS
gpio1 at nsclpcsio0: 29 pins
npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16
usb1 at ohci0: USB revision 1.0
uhub1 at usb1 AMD OHCI root hub rev 1.00/1.00 addr 1
biomask e1c7 netmask ffe7 ttymask 
mtrr: K6-family MTRR support (2 registers)
vscsi0 at root
scsibus0 at vscsi0: 256 targets
softraid0 at root
root on wd0a swap on wd0b dump on wd0b