Re: CVS commit: src/sys/external/bsd/drm2/dist/drm/i915/display
From: Jun Ebihara Subject: Re: CVS commit: src/sys/external/bsd/drm2/dist/drm/i915/display Date: Wed, 13 Jul 2022 08:22:11 +0900 (JST) > with NetBSD-9.99.98-amd64-20220750Z, > testing HDMI port on i915,seems working again! > https://twitter.com/ebijun/status/1546995945652764672 audio output problem: On drm2/dist/drm/i915/intel_uncore.c:1197 https://twitter.com/ebijun/status/1547029830386196481 -- Jun Ebihara
Re: CVS commit: src/sys/external/bsd/drm2/dist/drm/i915/display
From: Jun Ebihara Subject: Re: CVS commit: src/sys/external/bsd/drm2/dist/drm/i915/display Date: Mon, 23 May 2022 19:27:57 +0900 (JST) > with this change, > https://twitter.com/ebijun/status/1528682086520893441 > find HDMI port again! > but > - cant set CRTC 64 > - XRandR returned error code 1: b'xrandr: Configure crtc 1 failed with NetBSD-9.99.98-amd64-20220750Z, testing HDMI port on i915,seems working again! https://twitter.com/ebijun/status/1546995945652764672 need more checking.and thanks your works. -- Jun Ebihara
Re: CVS commit: src/sys/external/bsd/drm2/dist/drm/i915/display
with this change, https://twitter.com/ebijun/status/1528682086520893441 find HDMI port again! but - cant set CRTC 64 - XRandR returned error code 1: b'xrandr: Configure crtc 1 failed thanx and need one more. From: "Taylor R Campbell" Subject: CVS commit: src/sys/external/bsd/drm2/dist/drm/i915/display Date: Sun, 22 May 2022 21:18:12 + > Module Name: src > Committed By: riastradh > Date: Sun May 22 21:18:12 UTC 2022 > > Modified Files: > src/sys/external/bsd/drm2/dist/drm/i915/display: intel_gmbus.c > > Log Message: > i915: Fix sense of conditional for gmbus wait. > > This enables i915 to again retrieve EDID data from displays over the > I2C DDC. > > Embarrassing. > > > To generate a diff of this commit: > cvs rdiff -u -r1.6 -r1.7 \ > src/sys/external/bsd/drm2/dist/drm/i915/display/intel_gmbus.c > > Please note that diffs are not public domain; they are subject to the > copyright notices on the relevant files. >
Re: CVS commit: src/sys/external/bsd/drm2
Hi, 2017-03-02 7:59 GMT+09:00 Yorick Hardy : > On 2017-03-01, Martin Husemann wrote: >> On Wed, Mar 01, 2017 at 06:55:24PM +0900, Kimihiro Nonaka wrote: >> > Updated the patch. >> >> Still works fine for me! >> >> Martin > > Also works fine for me on i386+intel and amd64+radeon. > > Thanks! I've commited it. Thank you for testing! Regards, -- Kimihiro Nonaka
Re: CVS commit: src/sys/external/bsd/drm2
On 2017-03-01, Martin Husemann wrote: > On Wed, Mar 01, 2017 at 06:55:24PM +0900, Kimihiro Nonaka wrote: > > Updated the patch. > > Still works fine for me! > > Martin Also works fine for me on i386+intel and amd64+radeon. Thanks! -- Kind regards, Yorick Hardy
Re: CVS commit: src/sys/external/bsd/drm2
On Wed, Mar 01, 2017 at 06:55:24PM +0900, Kimihiro Nonaka wrote: > Updated the patch. Still works fine for me! Martin
Re: CVS commit: src/sys/external/bsd/drm2
Hi, 2017-03-01 13:30 GMT+09:00 Kimihiro Nonaka : > 2017-03-01 3:21 GMT+09:00 Yorick Hardy : > >> It is not obvious to me why the MSI changes were problematic. >> Do you have any ideas what went wrong? > > It seem necessary to implement pci_enable_msi() and pci_disable_msi(). > I tried again to write a new patch. > Could you try it? Updated the patch. Regards, -- Kimihiro Nonaka diff --git a/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c b/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c index 860690054a7..31282f88f49 100644 --- a/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c +++ b/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c @@ -30,10 +30,13 @@ __KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_mc_base.c,v 1.5 2015/10/22 23:17:08 j #include #include -#if defined(__NetBSD__) && defined(__arm__) +#if defined(__NetBSD__) +#include +#if defined(__arm__) /* XXX nouveau platform kludge */ #include #endif +#endif /* __NetBSD__ */ static inline u32 nouveau_mc_intr_mask(struct nouveau_mc *pmc) @@ -114,7 +117,8 @@ _nouveau_mc_dtor(struct nouveau_object *object) struct nouveau_mc *pmc = (void *)object; #if defined(__NetBSD__) if (nv_device_is_pci(device)) { - pci_intr_disestablish(device->pdev->pd_pa.pa_pc, pmc->irq_cookie); + struct drm_device *dev = pci_get_drvdata(device->pdev); + (*dev->driver->bus->irq_uninstall)(dev, pmc->irq_cookie); #if defined(__arm__) } else { intr_disestablish(pmc->irq_cookie); @@ -175,16 +179,12 @@ nouveau_mc_create_(struct nouveau_object *parent, struct nouveau_object *engine, #if defined(__NetBSD__) if (nv_device_is_pci(device)) { - const pci_chipset_tag_t pc = device->pdev->pd_pa.pa_pc; - pci_intr_handle_t ih; - - if (pci_intr_map(&device->pdev->pd_pa, &ih)) - return -EIO; - - pmc->irq_cookie = pci_intr_establish(pc, ih, IPL_VM, - &nouveau_mc_intr, pmc); - if (pmc->irq_cookie == NULL) - return -EIO; + struct drm_device *dev = pci_get_drvdata(device->pdev); + ret = (*dev->driver->bus->irq_install)(dev, nouveau_mc_intr, + IRQF_SHARED, "nouveau", pmc, + (struct drm_bus_irq_cookie **)&pmc->irq_cookie); + if (ret < 0) + return ret; #if defined (__arm__) } else { pmc->irq_cookie = intr_establish(TEGRA_INTR_GPU, diff --git a/sys/external/bsd/drm2/include/linux/pci.h b/sys/external/bsd/drm2/include/linux/pci.h index d7d153deb3d..d9c6eb38a8f 100644 --- a/sys/external/bsd/drm2/include/linux/pci.h +++ b/sys/external/bsd/drm2/include/linux/pci.h @@ -155,6 +155,7 @@ struct pci_dev { uint8_t revision; uint32_tclass; boolmsi_enabled; + pci_intr_handle_t *intr_handles; }; static inline device_t @@ -289,19 +290,28 @@ pci_write_config_byte(struct pci_dev *pdev, int reg, uint8_t value) return 0; } -/* - * XXX pci msi - */ static inline int pci_enable_msi(struct pci_dev *pdev) { - return -ENOSYS; + const struct pci_attach_args *const pa = &pdev->pd_pa; + + if (pci_msi_alloc_exact(pa, &pdev->intr_handles, 1)) + return -EINVAL; + + pdev->msi_enabled = 1; + return 0; } static inline void pci_disable_msi(struct pci_dev *pdev __unused) { - KASSERT(pdev->msi_enabled); + const struct pci_attach_args *const pa = &pdev->pd_pa; + + if (pdev->intr_handles != NULL) { + pci_intr_release(pa->pa_pc, pdev->intr_handles, 1); + pdev->intr_handles = NULL; + } + pdev->msi_enabled = 0; } static inline void diff --git a/sys/external/bsd/drm2/pci/drm_pci.c b/sys/external/bsd/drm2/pci/drm_pci.c index ddfa79f445f..caa1bd6694b 100644 --- a/sys/external/bsd/drm2/pci/drm_pci.c +++ b/sys/external/bsd/drm2/pci/drm_pci.c @@ -40,6 +40,11 @@ __KERNEL_RCSID(0, "$NetBSD: drm_pci.c,v 1.15 2017/02/27 23:52:05 nonaka Exp $"); #include +struct drm_bus_irq_cookie { + pci_intr_handle_t *intr_handles; + void *ih_cookie; +}; + static int drm_pci_get_irq(struct drm_device *); static int drm_pci_irq_install(struct drm_device *, irqreturn_t (*)(void *), int, const char *, void *, @@ -228,40 +233,48 @@ drm_pci_get_irq(struct drm_device *dev) static int drm_pci_irq_install(struct drm_device *dev, irqreturn_t (*handler)(void *), -int flags, const char *name, void *arg, -struct drm_bus_irq_cookie **cookiep) +int flags, const char *name, void *arg, struct drm_bus_irq_cookie **cookiep) { const struct pci_attach_args *const pa = drm_pci_attach_args(dev); - pci_intr_hand
Re: CVS commit: src/sys/external/bsd/drm2
On Wed, Mar 01, 2017 at 01:30:50PM +0900, Kimihiro Nonaka wrote: > Hi, > > 2017-03-01 3:21 GMT+09:00 Yorick Hardy : > > > It is not obvious to me why the MSI changes were problematic. > > Do you have any ideas what went wrong? > > It seem necessary to implement pci_enable_msi() and pci_disable_msi(). > I tried again to write a new patch. > Could you try it? This works fine on my machine where the previous version slowed down X a lot. Yorick? Martin
Re: CVS commit: src/sys/external/bsd/drm2
Hi, 2017-03-01 3:21 GMT+09:00 Yorick Hardy : > It is not obvious to me why the MSI changes were problematic. > Do you have any ideas what went wrong? It seem necessary to implement pci_enable_msi() and pci_disable_msi(). I tried again to write a new patch. Could you try it? Regards, -- Kimihiro Nonaka diff --git a/sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/mc.h b/sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/mc.h index d914ed8827a..c1e8bd61af0 100644 --- a/sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/mc.h +++ b/sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/mc.h @@ -15,6 +15,7 @@ struct nouveau_mc { unsigned int irq; #ifdef __NetBSD__ void *irq_cookie; + pci_intr_handle_t *intr_handles; #endif }; diff --git a/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c b/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c index 860690054a7..9371b127c55 100644 --- a/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c +++ b/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c @@ -114,7 +114,9 @@ _nouveau_mc_dtor(struct nouveau_object *object) struct nouveau_mc *pmc = (void *)object; #if defined(__NetBSD__) if (nv_device_is_pci(device)) { - pci_intr_disestablish(device->pdev->pd_pa.pa_pc, pmc->irq_cookie); + const struct pci_attach_args *pa = &device->pdev->pd_pa; + pci_intr_disestablish(pa->pa_pc, pmc->irq_cookie); + pci_intr_release(pa->pa_pc, pmc->intr_handles, 1); #if defined(__arm__) } else { intr_disestablish(pmc->irq_cookie); @@ -175,16 +177,33 @@ nouveau_mc_create_(struct nouveau_object *parent, struct nouveau_object *engine, #if defined(__NetBSD__) if (nv_device_is_pci(device)) { - const pci_chipset_tag_t pc = device->pdev->pd_pa.pa_pc; - pci_intr_handle_t ih; - - if (pci_intr_map(&device->pdev->pd_pa, &ih)) + const struct pci_attach_args *pa = &device->pdev->pd_pa; + const pci_chipset_tag_t pc = pa->pa_pc; + char intrbuf[PCI_INTRSTR_LEN]; + const char *intrstr; + int counts[PCI_INTR_TYPE_MSI + 1]; + + counts[PCI_INTR_TYPE_INTX] = pmc->use_msi ? 0 : 1; + counts[PCI_INTR_TYPE_MSI] = pmc->use_msi ? 1 : 0; + if (pci_intr_alloc(pa, &pmc->intr_handles, counts, + PCI_INTR_TYPE_MSI)) return -EIO; - pmc->irq_cookie = pci_intr_establish(pc, ih, IPL_VM, - &nouveau_mc_intr, pmc); - if (pmc->irq_cookie == NULL) + intrstr = pci_intr_string(pc, pmc->intr_handles[0], intrbuf, + sizeof(intrbuf)); + pmc->irq_cookie = pci_intr_establish_xname(pc, + pmc->intr_handles[0], IPL_VM, nouveau_mc_intr, pmc, + "nouveau"); + if (pmc->irq_cookie == NULL) { + aprint_error_dev(device->pdev->pd_dev, + "couldn't establish interrupt at %s (nouveau)\n", + intrstr); + pci_intr_release(pa->pa_pc, pmc->intr_handles, 1); return -EIO; + } + + aprint_normal_dev(device->pdev->pd_dev, + "interrupting at %s (nouveau)\n", intrstr); #if defined (__arm__) } else { pmc->irq_cookie = intr_establish(TEGRA_INTR_GPU, diff --git a/sys/external/bsd/drm2/dist/include/drm/drmP.h b/sys/external/bsd/drm2/dist/include/drm/drmP.h index d4b8ecb5fd7..b25b525ddcf 100644 --- a/sys/external/bsd/drm2/dist/include/drm/drmP.h +++ b/sys/external/bsd/drm2/dist/include/drm/drmP.h @@ -1268,6 +1268,7 @@ struct drm_device { bool irq_enabled; /**< True if irq handler is enabled */ #ifdef __NetBSD__ struct drm_bus_irq_cookie *irq_cookie; + pci_intr_handle_t *intr_handles; #endif __volatile__ long context_flag; /**< Context swapping flag */ int last_context; /**< Last current context */ diff --git a/sys/external/bsd/drm2/include/linux/pci.h b/sys/external/bsd/drm2/include/linux/pci.h index d7d153deb3d..c7b4aaf170e 100644 --- a/sys/external/bsd/drm2/include/linux/pci.h +++ b/sys/external/bsd/drm2/include/linux/pci.h @@ -289,19 +289,24 @@ pci_write_config_byte(struct pci_dev *pdev, int reg, uint8_t value) return 0; } -/* - * XXX pci msi - */ static inline int pci_enable_msi(struct pci_dev *pdev) { - return -ENOSYS; + const struct pci_attach_args *const pa = &pdev->pd_pa; + pci_intr_handle_t *ihps; + + if (pci_msi_alloc_exact(pa, &ihps, 1)) + return -EINVAL; + + pci_intr_release(pa->pa_pc, ihps, 1); + pdev->msi_enabled = 1; +
Re: CVS commit: src/sys/external/bsd/drm2
On 2017-02-28, Kimihiro Nonaka wrote: > Hi, > > 2017-02-28 4:10 GMT+09:00 Martin Husemann : > > > On Mon, Feb 27, 2017 at 07:39:49PM +0100, Martin Husemann wrote: > >> On Mon, Feb 27, 2017 at 08:29:10PM +0200, Yorick Hardy wrote: > >> > Is anyone else experiencing GPU hangs since revision 1.14 > >> > of src/sys/external/bsd/drm2/pci/drm_pci.c ? > >> > >> Thanks for the hint, I'm testing if it is the cause for > >> > >> http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=51997 > >> > >> and will report back ASAP... > > > > Yes, that seems to be the case. > > I've reverted. Thank you! It is not obvious to me why the MSI changes were problematic. Do you have any ideas what went wrong? -- Kind regards, Yorick Hardy
Re: CVS commit: src/sys/external/bsd/drm2
Hi, 2017-02-28 4:10 GMT+09:00 Martin Husemann : > On Mon, Feb 27, 2017 at 07:39:49PM +0100, Martin Husemann wrote: >> On Mon, Feb 27, 2017 at 08:29:10PM +0200, Yorick Hardy wrote: >> > Is anyone else experiencing GPU hangs since revision 1.14 >> > of src/sys/external/bsd/drm2/pci/drm_pci.c ? >> >> Thanks for the hint, I'm testing if it is the cause for >> >> http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=51997 >> >> and will report back ASAP... > > Yes, that seems to be the case. I've reverted. Regards, -- Kimihiro Nonaka
Re: CVS commit: src/sys/external/bsd/drm2
On Mon, Feb 27, 2017 at 07:39:49PM +0100, Martin Husemann wrote: > On Mon, Feb 27, 2017 at 08:29:10PM +0200, Yorick Hardy wrote: > > Is anyone else experiencing GPU hangs since revision 1.14 > > of src/sys/external/bsd/drm2/pci/drm_pci.c ? > > Thanks for the hint, I'm testing if it is the cause for > > http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=51997 > > and will report back ASAP... Yes, that seems to be the case. Martin
Re: CVS commit: src/sys/external/bsd/drm2
On Mon, Feb 27, 2017 at 08:29:10PM +0200, Yorick Hardy wrote: > Is anyone else experiencing GPU hangs since revision 1.14 > of src/sys/external/bsd/drm2/pci/drm_pci.c ? Thanks for the hint, I'm testing if it is the cause for http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=51997 and will report back ASAP... Martin
Re: CVS commit: src/sys/external/bsd/drm2
Dear list, On 2017-02-21, NONAKA Kimihiro wrote: > Module Name: src > Committed By: nonaka > Date: Tue Feb 21 14:19:40 UTC 2017 > > Modified Files: > src/sys/external/bsd/drm2/dist/include/drm: drmP.h > src/sys/external/bsd/drm2/pci: drm_pci.c > > Log Message: > drmkms_pci: use MSI if available. > > > To generate a diff of this commit: > cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/include/drm/drmP.h > cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/pci/drm_pci.c > > Please note that diffs are not public domain; they are subject to the > copyright notices on the relevant files. Is anyone else experiencing GPU hangs since revision 1.14 of src/sys/external/bsd/drm2/pci/drm_pci.c ? Going back to 1.13 makes opengl and Xv usable again for me. Here is the dmesg of the affected machine: Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 7.99.62 (YORICK.i386) #0: Mon Feb 27 00:24:44 SAST 2017 root@HOME:/root/build.i386.local/obj/sys/arch/i386/compile/YORICK.i386 total memory = 1013 MB avail memory = 983 MB rnd: seeded with 128 bits timecounter: Timecounters tick every 10.000 msec Kernelized RAIDframe activated running cgd selftest aes-xts-256 aes-xts-512 done RTC BIOS diagnostic error 0x80 timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100 LG Electronics X130-L.ASW6Z (05) mainbus0 (root) ACPI: RSDP 0x000FE020 24 (v02 LGE ) ACPI: XSDT 0x3F6FE120 64 (v01 LGELGPC 0001 0113) ACPI: FACP 0x3F6FC000 F4 (v04 LGELGPC 0001 MSFT 0113) ACPI: DSDT 0x3F6F 007068 (v01 LGELGPC 0001 MSFT 0113) ACPI: FACS 0x3F688000 40 ACPI: FACS 0x3F688000 40 ACPI: SSDT 0x3F6FD000 0004C4 (v02 LGELGPC 3000 INTL 20051117) ACPI: HPET 0x3F6FB000 38 (v01 LGELGPC 0001 MSFT 0113) ACPI: APIC 0x3F6FA000 68 (v02 LGELGPC 0001 MSFT 0113) ACPI: MCFG 0x3F6F9000 3C (v01 LGELGPC 0001 MSFT 0113) ACPI: ASF! 0x3F6F8000 A5 (v32 LGELGPC 0001 MSFT 0113) ACPI: SLIC 0x3F6EF000 000176 (v01 LGELGPC 0001 MSFT 0113) ACPI: BOOT 0x3F6EE000 28 (v01 LGELGPC 0001 MSFT 0113) ACPI: Executed 1 blocks of module-level executable AML code ACPI: 2 ACPI AML tables successfully acquired and loaded ioapic0 at mainbus0 apid 4: pa 0xfec0, version 0x20, 24 pins cpu0 at mainbus0 apid 0 cpu0: Intel(R) Atom(TM) CPU N270 @ 1.60GHz, id 0x106c2 cpu1 at mainbus0 apid 1 cpu1: Intel(R) Atom(TM) CPU N270 @ 1.60GHz, id 0x106c2 acpi0 at mainbus0: Intel ACPICA 20170119 acpi0: X/RSDT: OemId , AslId <,0113> acpi0: MCFG: segment 0, bus 0-255, address 0xe000 ACPI: Dynamic OEM Table Load: ACPI: SSDT 0xC2234C84 000239 (v02 LGELGPC 3000 INTL 20051117) ACPI: Dynamic OEM Table Load: ACPI: SSDT 0xC2081A04 0001C1 (v02 LGELGPC 3001 INTL 20051117) ACPI: Dynamic OEM Table Load: ACPI: SSDT 0xC20501CC D0 (v02 LGELGPC 3000 INTL 20051117) ACPI: Dynamic OEM Table Load: ACPI: SSDT 0xC20690AC 83 (v02 LGELGPC 3000 INTL 20051117) acpi0: SCI interrupting at int 9 timecounter: Timecounter "ACPI-Safe" frequency 3579545 Hz quality 900 hpet0 at acpi0: high precision event timer (mem 0xfed0-0xfed00400) timecounter: Timecounter "hpet0" frequency 14318180 Hz quality 2000 acpiec0 at acpi0 (EC0, PNP0C09-1) : io 0x62,0x66 acpibut0 at acpi0 (PWRB, PNP0C0C): ACPI Power Button acpibut1 at acpi0 (SLPB, PNP0C0E): ACPI Sleep Button acpilid0 at acpi0 (LID0, PNP0C0D): ACPI Lid Switch acpiacad0 at acpi0 (ACAD, ACPI0003): ACPI AC Adapter acpibat0 at acpi0 (BAT0, PNP0C0A-1): ACPI Battery acpibat0: Dynapack LION rechargeable battery acpibat0: granularity: low->warn 0.010 Ah, warn->full 0.025 Ah SYSR (PNP0C02) at acpi0 not configured FPU (PNP0C04) at acpi0 not configured attimer0 at acpi0 (TIMR, PNP0100): io 0x40-0x43,0x50-0x53 FWHD (INT0800) at acpi0 not configured pckbc0 at acpi0 (KBC, PNP0303) (kbd port): io 0x60,0x64 irq 1 pckbc1 at acpi0 (MOUE, SYN1304) (aux port): irq 12 acpiwmi0 at acpi0 (MAP1, PNP0C14-0): ACPI WMI Interface acpiwmibus at acpiwmi0 not configured acpivga0 at acpi0 (OVGA): ACPI Display Adapter acpiout0 at acpivga0 (CRT1, 0x0100): ACPI Display Output Device acpiout1 at acpivga0 (DTV1, 0x0240): ACPI Display Output Device acpiout2 at acpivga0 (LCD, 0x0410): ACPI Display Output Device acpiout2: brightness levels: [10,20,30,40,50,65,80,90,100] acpiout3 at acpivga0 (DTV2, 0x0004): ACPI Display Output Device acpiout4 at acpivga0 (DFP2, 0x0005): ACPI Display Out