Module Name: src Committed By: martin Date: Thu May 7 18:25:14 UTC 2020
Modified Files: src/sys/arch/arm/cortex [netbsd-9]: gic_v2m.c gic_v2m.h Log Message: Pull up following revision(s) (requested by jmcneill in ticket #895): sys/arch/arm/cortex/gic_v2m.h: revision 1.3 sys/arch/arm/cortex/gic_v2m.c: revision 1.9 Do not store a pointer to the passed in struct pci_attach_args To generate a diff of this commit: cvs rdiff -u -r1.6.2.1 -r1.6.2.2 src/sys/arch/arm/cortex/gic_v2m.c cvs rdiff -u -r1.1.8.1 -r1.1.8.2 src/sys/arch/arm/cortex/gic_v2m.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/cortex/gic_v2m.c diff -u src/sys/arch/arm/cortex/gic_v2m.c:1.6.2.1 src/sys/arch/arm/cortex/gic_v2m.c:1.6.2.2 --- src/sys/arch/arm/cortex/gic_v2m.c:1.6.2.1 Tue Oct 15 19:40:34 2019 +++ src/sys/arch/arm/cortex/gic_v2m.c Thu May 7 18:25:14 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: gic_v2m.c,v 1.6.2.1 2019/10/15 19:40:34 martin Exp $ */ +/* $NetBSD: gic_v2m.c,v 1.6.2.2 2020/05/07 18:25:14 martin Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #define _INTR_PRIVATE #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gic_v2m.c,v 1.6.2.1 2019/10/15 19:40:34 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gic_v2m.c,v 1.6.2.2 2020/05/07 18:25:14 martin Exp $"); #include <sys/param.h> #include <sys/kmem.h> @@ -66,6 +66,7 @@ static int gic_v2m_msi_alloc_spi(struct gic_v2m_frame *frame, int count, const struct pci_attach_args *pa) { + struct pci_attach_args *new_pa; int spi, n; for (spi = frame->frame_base; @@ -75,8 +76,11 @@ gic_v2m_msi_alloc_spi(struct gic_v2m_fra if (frame->frame_pa[spi + n] != NULL) goto next_spi; - for (n = 0; n < count; n++) - frame->frame_pa[spi + n] = pa; + for (n = 0; n < count; n++) { + new_pa = kmem_alloc(sizeof(*new_pa), KM_SLEEP); + memcpy(new_pa, pa, sizeof(*new_pa)); + frame->frame_pa[spi + n] = new_pa; + } return spi; } @@ -90,7 +94,13 @@ next_spi: static void gic_v2m_msi_free_spi(struct gic_v2m_frame *frame, int spi) { + struct pci_attach_args *pa; + + pa = frame->frame_pa[spi]; frame->frame_pa[spi] = NULL; + + if (pa != NULL) + kmem_free(pa, sizeof(*pa)); } static int Index: src/sys/arch/arm/cortex/gic_v2m.h diff -u src/sys/arch/arm/cortex/gic_v2m.h:1.1.8.1 src/sys/arch/arm/cortex/gic_v2m.h:1.1.8.2 --- src/sys/arch/arm/cortex/gic_v2m.h:1.1.8.1 Tue Oct 15 19:40:34 2019 +++ src/sys/arch/arm/cortex/gic_v2m.h Thu May 7 18:25:14 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: gic_v2m.h,v 1.1.8.1 2019/10/15 19:40:34 martin Exp $ */ +/* $NetBSD: gic_v2m.h,v 1.1.8.2 2020/05/07 18:25:14 martin Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -43,7 +43,7 @@ struct gic_v2m_frame { uint32_t frame_flags; #define GIC_V2M_FLAG_GRAVITON 0x01 /* Amazon Graviton quirk */ - const struct pci_attach_args *frame_pa[GICC_IAR_IRQ]; + struct pci_attach_args *frame_pa[GICC_IAR_IRQ]; struct arm_pci_msi frame_msi; };