Discussion:
x250 inteldrm freeze on 4:3 external monitor
p***@irofti.net
2017-07-20 10:34:50 UTC
Permalink
Synopsis: inteldrm external monitor freeze
Category: kernel
System : OpenBSD 6.1
Details : OpenBSD 6.1-current (GENERIC.MP) #94: Mon Jul 10 18:20:35 MDT 2017
***@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP

Architecture: OpenBSD.amd64
Machine : amd64
I worked from home today where I have an old Dell 4:3 monitor that I
hooked into my x250 laptop. This is the first time I use 4:3 monitors
after the inteldrm upgrade.

Every 4-5 minutes the system freezes. No ping, no ssh access, just this
final line in my messages:

error: [drm:pid99322:intel_pipe_update_start] *ERROR*
Potential atomic update failure on pipe B

This happened to me 3 times now doing different stuff: entering fvwm,
using vim+latex, browsing in chrome.

I will now update to a more recent snapshot and see if I can still
reproduce.

It is important to note that I used (for more than a week) this same
snapshot with 2 different wide external monitors at the university
with no problems.
Connect a 4:3 monitor and do some work.
Unknown.


dmesg:
OpenBSD 6.1-current (GENERIC.MP) #94: Mon Jul 10 18:20:35 MDT 2017
***@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 3959955456 (3776MB)
avail mem = 3834150912 (3656MB)
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xccbfc000 (65 entries)
bios0: vendor LENOVO version "N10ET36W (1.15 )" date 06/19/2015
bios0: LENOVO 20CLS7AH00
acpi0 at bios0: rev 2
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP ASF! HPET ECDT APIC MCFG SSDT SSDT SSDT SSDT SSDT SSDT SSDT SSDT SSDT PCCT SSDT UEFI MSDM BATB FPDT SSDT SSDT TPM2 UEFI DMAR
acpi0: wakeup devices LID_(S4) SLPB(S3) IGBE(S4) EXP2(S4) XHCI(S3) EHC1(S3)
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpihpet0 at acpi0: 14318179 Hz
acpiec0 at acpi0
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz, 2195.24 MHz
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,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,PT,SENSOR,ARAT
cpu0: 256KB 64b/line 8-way L2 cache
cpu0: TSC frequency 2195241440 Hz
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 99MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.2.4.1.1.1, IBE
cpu1 at mainbus0: apid 1 (application processor)
cpu1: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz, 2194.92 MHz
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,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,PT,SENSOR,ARAT
cpu1: 256KB 64b/line 8-way L2 cache
cpu1: smt 1, core 0, package 0
cpu2 at mainbus0: apid 2 (application processor)
cpu2: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz, 2194.92 MHz
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,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,PT,SENSOR,ARAT
cpu2: 256KB 64b/line 8-way L2 cache
cpu2: smt 0, core 1, package 0
cpu3 at mainbus0: apid 3 (application processor)
cpu3: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz, 2194.92 MHz
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,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,PT,SENSOR,ARAT
cpu3: 256KB 64b/line 8-way L2 cache
cpu3: smt 1, core 1, package 0
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 40 pins
acpimcfg0 at acpi0 addr 0xf8000000, bus 0-63
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus -1 (PEG_)
acpiprt2 at acpi0: bus 2 (EXP1)
acpiprt3 at acpi0: bus 3 (EXP2)
acpiprt4 at acpi0: bus -1 (EXP3)
acpicpu0 at acpi0: C3(***@233 ***@0x40), C2(***@148 ***@0x33), C1(***@1 mwait.1), PSS
acpicpu1 at acpi0: C3(***@233 ***@0x40), C2(***@148 ***@0x33), C1(***@1 mwait.1), PSS
acpicpu2 at acpi0: C3(***@233 ***@0x40), C2(***@148 ***@0x33), C1(***@1 mwait.1), PSS
acpicpu3 at acpi0: C3(***@233 ***@0x40), C2(***@148 ***@0x33), C1(***@1 mwait.1), PSS
acpipwrres0 at acpi0: PUBS, resource for XHCI, EHC1
acpipwrres1 at acpi0: NVP3, resource for PEG_
acpipwrres2 at acpi0: NVP2, resource for PEG_
acpitz0 at acpi0: critical temperature is 128 degC
acpibtn0 at acpi0: LID_
acpibtn1 at acpi0: SLPB
"LEN0071" at acpi0 not configured
"LEN0046" at acpi0 not configured
acpibat0 at acpi0: BAT0 model "45N1773" serial 2340 type LION oem "SANYO"
acpibat1 at acpi0: BAT1 model "45N1127" serial 7001 type LION oem "LGC"
acpiac0 at acpi0: AC unit online
acpithinkpad0 at acpi0
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"INT340F" at acpi0 not configured
"MSFT0101" at acpi0 not configured
acpivideo0 at acpi0: VID_
acpivout at acpivideo0 not configured
acpivideo1 at acpi0: VID_
cpu0: Enhanced SpeedStep 2195 MHz: speeds: 2201, 2200, 2100, 2000, 1800, 1700, 1600, 1500, 1300, 1200, 1100, 1000, 900, 700, 600, 500 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel Core 5G Host" rev 0x09
inteldrm0 at pci0 dev 2 function 0 "Intel HD Graphics 5500" rev 0x09
drm0 at inteldrm0
inteldrm0: msi
inteldrm0: 1280x768, 32bpp
wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation)
wsdisplay0: screen 1-5 added (std, vt100 emulation)
azalia0 at pci0 dev 3 function 0 "Intel Core 5G HD Audio" rev 0x09: msi
azalia0: No codecs found
xhci0 at pci0 dev 20 function 0 "Intel 9 Series xHCI" rev 0x03: msi
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 3.00/1.00 addr 1
"Intel 9 Series MEI" rev 0x03 at pci0 dev 22 function 0 not configured
em0 at pci0 dev 25 function 0 "Intel I218-LM" rev 0x03: msi, address 50:7b:9d:55:7d:8c
azalia1 at pci0 dev 27 function 0 "Intel 9 Series HD Audio" rev 0x03: msi
azalia1: codecs: Realtek ALC292
audio0 at azalia1
ppb0 at pci0 dev 28 function 0 "Intel 9 Series PCIE" rev 0xe3: msi
pci1 at ppb0 bus 2
rtsx0 at pci1 dev 0 function 0 "Realtek RTS5227 Card Reader" rev 0x01: msi
sdmmc0 at rtsx0: 4-bit
ppb1 at pci0 dev 28 function 1 "Intel 9 Series PCIE" rev 0xe3: msi
pci2 at ppb1 bus 3
iwm0 at pci2 dev 0 function 0 "Intel Dual Band Wireless AC 7265" rev 0x59, msi
ehci0 at pci0 dev 29 function 0 "Intel 9 Series USB" rev 0x03: apic 2 int 23
usb1 at ehci0: USB revision 2.0
uhub1 at usb1 configuration 1 interface 0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
pcib0 at pci0 dev 31 function 0 "Intel 9 Series LPC" rev 0x03
ahci0 at pci0 dev 31 function 2 "Intel 9 Series AHCI" rev 0x03: msi, AHCI 1.3
ahci0: port 0: 6.0Gb/s
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 0 lun 0: <ATA, INTEL SSDSC2BW24, RG21> SCSI3 0/direct fixed naa.55cd2e414c982a79
sd0: 228936MB, 512 bytes/sector, 468862128 sectors, thin
ichiic0 at pci0 dev 31 function 3 "Intel 9 Series SMBus" rev 0x03: apic 2 int 18
iic0 at ichiic0
pchtemp0 at pci0 dev 31 function 6 "Intel 9 Series Thermal" rev 0x03
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
wsmouse0 at pms0 mux 0
wsmouse1 at pms0 mux 0
pms0: Synaptics clickpad, firmware 8.1
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
vmm0 at mainbus0: VMX/EPT
uhub2 at uhub0 port 2 configuration 1 interface 0 "Standard Microsystems product 0x2514" rev 2.00/b.b3 addr 2
uhidev0 at uhub2 port 1 configuration 1 interface 0 "Logitech USB Receiver" rev 2.00/22.00 addr 3
uhidev0: iclass 3/1
ums0 at uhidev0: 16 buttons, Z and W dir
wsmouse2 at ums0 mux 0
uhidev1 at uhub2 port 1 configuration 1 interface 1 "Logitech USB Receiver" rev 2.00/22.00 addr 3
uhidev1: iclass 3/0, 17 report ids
uhid0 at uhidev1 reportid 3: input=4, output=0, feature=0
uhid1 at uhidev1 reportid 16: input=6, output=6, feature=0
uhid2 at uhidev1 reportid 17: input=19, output=19, feature=0
uhidev2 at uhub2 port 2 configuration 1 interface 0 "Microsoft Natural\M-. Ergonomic Keyboard 4000" rev 2.00/1.73 addr 4
uhidev2: iclass 3/1
ukbd0 at uhidev2: 8 variable keys, 6 key codes
wskbd1 at ukbd0 mux 1
wskbd1: connecting to wsdisplay0
uhidev3 at uhub2 port 2 configuration 1 interface 1 "Microsoft Natural\M-. Ergonomic Keyboard 4000" rev 2.00/1.73 addr 4
uhidev3: iclass 3/0, 1 report id
uhid3 at uhidev3 reportid 1: input=7, output=0, feature=0
ugen0 at uhub0 port 6 "Validity Sensors VFS5011 Fingerprint Reader" rev 1.10/0.78 addr 5
ugen1 at uhub0 port 7 "Intel Bluetooth" rev 2.01/0.01 addr 6
uvideo0 at uhub0 port 8 configuration 1 interface 0 "J8AFB905V Integrated Camera" rev 2.00/0.17 addr 7
video0 at uvideo0
uhub3 at uhub1 port 1 configuration 1 interface 0 "Intel Rate Matching Hub" rev 2.00/0.03 addr 2
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
root on sd0a (c30bcee9620d50ef.a) swap on sd0b dump on sd0b
WARNING: / was not properly unmounted
iwm0: hw rev 0x210, fw ver 16.242414.0, address dc:53:60:98:c9:9d

usbdevs:
Controller /dev/usb0:
addr 1: super speed, self powered, config 1, xHCI root hub(0x0000), Intel(0x8086), rev 1.00
port 1 disabled
port 2 addr 2: high speed, self powered, config 1, product 0x2514(0x2514), Standard Microsystems(0x0424), rev b.b3
port 1 addr 3: full speed, power 98 mA, config 1, USB Receiver(0xc52f), Logitech(0x046d), rev 22.00
port 2 addr 4: low speed, power 100 mA, config 1, NaturalĀ® Ergonomic Keyboard 4000(0x00db), Microsoft(0x045e), rev 1.73
port 3 powered
port 4 powered
port 3 disabled
port 4 disabled
port 5 disabled
port 6 addr 5: full speed, power 100 mA, config 1, VFS5011 Fingerprint Reader(0x0017), Validity Sensors(0x138a), rev 0.78, iSerialNumber e145209597c6
port 7 addr 6: full speed, self powered, config 1, Bluetooth(0x0a2a), Intel(0x8087), rev 0.01
port 8 addr 7: high speed, power 500 mA, config 1, Integrated Camera(0x703c), J8AFB905V(0x04ca), rev 0.17
port 9 disabled
port 10 disabled
port 11 disabled
port 12 disabled
port 13 disabled
port 14 disabled
port 15 disabled
Controller /dev/usb1:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), Intel(0x8086), rev 1.00
port 1 addr 2: high speed, self powered, config 1, Rate Matching Hub(0x8001), Intel(0x8087), rev 0.03
port 1 powered
port 2 powered
port 3 powered
port 4 powered
port 5 powered
port 6 powered
port 7 powered
port 8 powered
port 2 powered
port 3 powered
Paul Irofti
2017-07-20 12:37:40 UTC
Permalink
Post by p***@irofti.net
I will now update to a more recent snapshot and see if I can still
reproduce.
Yup, got a freeze with the snapshot from 19.07, but this time I also got a
trace. Pics here: http://irofti.net/tmp/x250/.
Paul Irofti
2017-07-20 12:51:55 UTC
Permalink
Post by p***@irofti.net
Unknown.
Here is a potential fix.


Index: dev/pci/drm/i915/i915_drv.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_drv.h,v
retrieving revision 1.77
diff -u -p -u -p -r1.77 i915_drv.h
--- dev/pci/drm/i915/i915_drv.h 19 Jul 2017 22:05:58 -0000 1.77
+++ dev/pci/drm/i915/i915_drv.h 20 Jul 2017 12:46:16 -0000
@@ -3692,7 +3692,8 @@ wait_remaining_ms_from_jiffies(unsigned
static inline void
wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
{
- unsigned long target_jiffies, tmp_jiffies, remaining_jiffies;
+ unsigned long target_jiffies, tmp_jiffies;
+ long remaining_jiffies;

if (cold) {
delay(to_wait_ms * 1000);
@@ -3709,7 +3710,8 @@ wait_remaining_ms_from_jiffies(unsigned

while (time_after(target_jiffies, tmp_jiffies)) {
remaining_jiffies = target_jiffies - tmp_jiffies;
- tsleep(&tmp_jiffies, PWAIT, "wrmfj", remaining_jiffies);
+ if (remaining_jiffies)
+ tsleep(&tmp_jiffies, PWAIT, "wrmfj", remaining_jiffies);
tmp_jiffies = jiffies;
}
}
Mark Kettenis
2017-07-20 14:27:20 UTC
Permalink
Date: Thu, 20 Jul 2017 15:51:55 +0300
Post by p***@irofti.net
Unknown.
Here is a potential fix.
Can you try this diff instead?

Index: dev/pci/drm/drmP.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/drmP.h,v
retrieving revision 1.214
diff -u -p -r1.214 drmP.h
--- dev/pci/drm/drmP.h 19 Jul 2017 22:05:58 -0000 1.214
+++ dev/pci/drm/drmP.h 20 Jul 2017 14:26:05 -0000
@@ -122,8 +122,6 @@ struct fb_image;

#define DRM_WAKEUP(x) wakeup(x)

-extern int ticks;
-
#define drm_msleep(x) mdelay(x)

extern struct cfdriver drm_cd;
Index: dev/pci/drm/drm_linux.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/drm_linux.h,v
retrieving revision 1.57
diff -u -p -r1.57 drm_linux.h
--- dev/pci/drm/drm_linux.h 17 Jul 2017 17:57:27 -0000 1.57
+++ dev/pci/drm/drm_linux.h 20 Jul 2017 14:26:05 -0000
@@ -840,7 +840,8 @@ timespec_sub(struct timespec t1, struct
#define time_in_range(x, min, max) ((x) >= (min) && (x) <= (max))

extern int ticks;
-#define jiffies ticks
+#define jiffies (*(volatile int *)&ticks)
+
#undef HZ
#define HZ hz

Index: dev/pci/drm/i915/i915_drv.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_drv.h,v
retrieving revision 1.77
diff -u -p -r1.77 i915_drv.h
--- dev/pci/drm/i915/i915_drv.h 19 Jul 2017 22:05:58 -0000 1.77
+++ dev/pci/drm/i915/i915_drv.h 20 Jul 2017 14:26:05 -0000
@@ -642,7 +642,7 @@ struct drm_i915_error_state {
} *ringbuffer, *batchbuffer, *wa_batchbuffer, *ctx, *hws_page;

struct drm_i915_error_request {
- long jiffies;
+ long _jiffies;
u32 seqno;
u32 tail;
} *requests;
Index: dev/pci/drm/i915/i915_gpu_error.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_gpu_error.c,v
retrieving revision 1.2
diff -u -p -r1.2 i915_gpu_error.c
--- dev/pci/drm/i915/i915_gpu_error.c 1 Jul 2017 16:14:10 -0000 1.2
+++ dev/pci/drm/i915/i915_gpu_error.c 20 Jul 2017 14:26:05 -0000
@@ -457,7 +457,7 @@ int i915_error_state_to_str(struct drm_i
for (j = 0; j < error->ring[i].num_requests; j++) {
err_printf(m, " seqno 0x%08x, emitted %ld, tail 0x%08x\n",
error->ring[i].requests[j].seqno,
- error->ring[i].requests[j].jiffies,
+ error->ring[i].requests[j]._jiffies,
error->ring[i].requests[j].tail);
}
}
@@ -1098,7 +1098,7 @@ static void i915_gem_record_rings(struct

erq = &error->ring[i].requests[count++];
erq->seqno = request->seqno;
- erq->jiffies = request->emitted_jiffies;
+ erq->_jiffies = request->emitted_jiffies;
erq->tail = request->postfix;
}
}
Mark Kettenis
2017-07-20 18:24:34 UTC
Permalink
Date: Thu, 20 Jul 2017 16:27:20 +0200 (CEST)
Date: Thu, 20 Jul 2017 15:51:55 +0300
Post by p***@irofti.net
Unknown.
Here is a potential fix.
Can you try this diff instead?
Hmm, this still suffers from potential wraparound issues since "ticks"
is an int, but "jiffies" is supposed to be a volatile unsigned long.
I don't really like infecting the core kernel code with Linux compat
API goo, but in this case I think all the alternatives are worse.
Perhaps in the long run we want to make ticks a volatile unsigned long
as well.

ok?


Index: kern/kern_clock.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_clock.c,v
retrieving revision 1.92
diff -u -p -r1.92 kern_clock.c
--- kern/kern_clock.c 5 Apr 2017 03:59:13 -0000 1.92
+++ kern/kern_clock.c 20 Jul 2017 18:15:06 -0000
@@ -103,6 +103,8 @@ int psratio; /* ratio: prof / stat */

void *softclock_si;

+volatile unsigned long jiffies; /* XXX Linux API for drm(4) */
+
/*
* Initialize clock frequencies and start both clocks running.
*/
@@ -116,6 +118,7 @@ initclocks(void)
panic("initclocks: unable to register softclock intr");

ticks = INT_MAX - (15 * 60 * hz);
+ jiffies = ULONG_MAX - (10 * 60 * hz);

/*
* Set divisors to 1 (normal case) and let the machine-specific
@@ -194,6 +197,7 @@ hardclock(struct clockframe *frame)

tc_ticktock();
ticks++;
+ jiffies++;

/*
* Update real-time timeout queue.
Index: dev/pci/drm/drmP.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/drmP.h,v
retrieving revision 1.214
diff -u -p -r1.214 drmP.h
--- dev/pci/drm/drmP.h 19 Jul 2017 22:05:58 -0000 1.214
+++ dev/pci/drm/drmP.h 20 Jul 2017 18:15:06 -0000
@@ -122,8 +122,6 @@ struct fb_image;

#define DRM_WAKEUP(x) wakeup(x)

-extern int ticks;
-
#define drm_msleep(x) mdelay(x)

extern struct cfdriver drm_cd;
Index: dev/pci/drm/drm_linux.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/drm_linux.h,v
retrieving revision 1.57
diff -u -p -r1.57 drm_linux.h
--- dev/pci/drm/drm_linux.h 17 Jul 2017 17:57:27 -0000 1.57
+++ dev/pci/drm/drm_linux.h 20 Jul 2017 18:15:06 -0000
@@ -839,8 +839,7 @@ timespec_sub(struct timespec t1, struct

#define time_in_range(x, min, max) ((x) >= (min) && (x) <= (max))

-extern int ticks;
-#define jiffies ticks
+extern volatile unsigned long jiffies;
#undef HZ
#define HZ hz

@@ -858,10 +857,10 @@ round_jiffies_up_relative(unsigned long
return roundup(j, hz);
}

-#define jiffies_to_msecs(x) (((int64_t)(x)) * 1000 / hz)
-#define jiffies_to_usecs(x) (((int64_t)(x)) * 1000000 / hz)
-#define msecs_to_jiffies(x) (((int64_t)(x)) * hz / 1000)
-#define nsecs_to_jiffies64(x) (((int64_t)(x)) * hz / 1000000000)
+#define jiffies_to_msecs(x) (((uint64_t)(x)) * 1000 / hz)
+#define jiffies_to_usecs(x) (((uint64_t)(x)) * 1000000 / hz)
+#define msecs_to_jiffies(x) (((uint64_t)(x)) * hz / 1000)
+#define nsecs_to_jiffies64(x) (((uint64_t)(x)) * hz / 1000000000)
#define get_jiffies_64() jiffies
#define time_after(a,b) ((long)(b) - (long)(a) < 0)
#define time_after_eq(a,b) ((long)(b) - (long)(a) <= 0)
@@ -886,7 +885,7 @@ timespec_to_ns(const struct timespec *ts
return ((ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec);
}

-static inline int
+static inline unsigned long
timespec_to_jiffies(const struct timespec *ts)
{
long long to_ticks;

Loading...