FreeBSD Bugzilla – Attachment 244186 Details for
Bug 267654
UFS "cylinder checksum failed" on temporary storage or data disk on arm64 vm in Azure
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
vmbus bus_get_dma_tag change
diff_coh.diff (text/plain), 3.84 KB, created by
schakrabarti@microsoft.com
on 2023-08-18 07:37:43 UTC
(
hide
)
Description:
vmbus bus_get_dma_tag change
Filename:
MIME Type:
Creator:
schakrabarti@microsoft.com
Created:
2023-08-18 07:37:43 UTC
Size:
3.84 KB
patch
obsolete
>diff --git a/sys/dev/hyperv/vmbus/vmbus.c b/sys/dev/hyperv/vmbus/vmbus.c >index cc37d84ff151..86c6715e0f3b 100644 >--- a/sys/dev/hyperv/vmbus/vmbus.c >+++ b/sys/dev/hyperv/vmbus/vmbus.c >@@ -139,6 +139,7 @@ static void vmbus_intr_teardown(struct vmbus_softc *); > static int vmbus_doattach(struct vmbus_softc *); > static void vmbus_event_proc_dummy(struct vmbus_softc *, > int); >+static bus_dma_tag_t vmbus_get_dma_tag(device_t parent, device_t child); > static struct vmbus_softc *vmbus_sc; > > SYSCTL_NODE(_hw, OID_AUTO, vmbus, CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, >@@ -198,6 +199,7 @@ static device_method_t vmbus_methods[] = { > DEVMETHOD(vmbus_probe_guid, vmbus_probe_guid_method), > DEVMETHOD(vmbus_get_vcpu_id, vmbus_get_vcpu_id_method), > DEVMETHOD(vmbus_get_event_taskq, vmbus_get_eventtq_method), >+ DEVMETHOD(bus_get_dma_tag, vmbus_get_dma_tag), > > DEVMETHOD_END > }; >@@ -236,6 +238,12 @@ vmbus_msghc_reset(struct vmbus_msghc *mh, size_t dsize) > inprm->hc_dsize = dsize; > } > >+static bus_dma_tag_t >+vmbus_get_dma_tag(device_t dev, device_t child) >+{ >+ struct vmbus_softc *sc = vmbus_get_softc(); >+ return (sc->dmat); >+} > struct vmbus_msghc * > vmbus_msghc_get(struct vmbus_softc *sc, size_t dsize) > { >@@ -1195,6 +1203,7 @@ vmbus_get_crs(device_t dev, device_t vmbus_dev, enum parse_pass pass) > > if (bootverbose && ACPI_FAILURE(status)) > device_printf(dev, "_CRS: not found, pass=%d\n", pass); >+ > } > > static void >@@ -1384,6 +1393,8 @@ vmbus_doattach(struct vmbus_softc *sc) > struct sysctl_oid_list *child; > struct sysctl_ctx_list *ctx; > int ret; >+ device_t dev; >+ ACPI_HANDLE handle; > > if (sc->vmbus_flags & VMBUS_FLAG_ATTACHED) > return (0); >@@ -1392,7 +1403,6 @@ vmbus_doattach(struct vmbus_softc *sc) > vmbus_get_mmio_res(sc->vmbus_dev); > vmbus_fb_mmio_res(sc->vmbus_dev); > #endif >- > sc->vmbus_flags |= VMBUS_FLAG_ATTACHED; > > sc->vmbus_gpadl = VMBUS_GPADL_START; >@@ -1421,7 +1431,26 @@ vmbus_doattach(struct vmbus_softc *sc) > ret = vmbus_dma_alloc(sc); > if (ret != 0) > goto cleanup; >- >+ /* Coherency attribute */ >+ dev = devclass_get_device(devclass_find("vmbus_res"), 0); >+ handle = acpi_get_handle(dev); >+ if (ACPI_FAILURE(acpi_GetInteger(handle, "_CCA", &sc->coherent))) >+ sc->coherent = 0; >+ if (bootverbose) >+ device_printf(sc->vmbus_dev, "Bus is%s cache-coherent\n", >+ sc->coherent ? "" : " not"); >+ bus_dma_tag_create(NULL, /* parent */ >+ 1, 0, /* alignment, bounds */ >+ BUS_SPACE_MAXADDR, /* lowaddr */ >+ BUS_SPACE_MAXADDR, /* highaddr */ >+ NULL, NULL, /* filter, filterarg */ >+ BUS_SPACE_MAXSIZE, /* maxsize */ >+ BUS_SPACE_UNRESTRICTED, /* nsegments */ >+ BUS_SPACE_MAXSIZE, /* maxsegsize */ >+ sc->coherent ? BUS_DMA_COHERENT : 0, /* flags */ >+ NULL, NULL, /* lockfunc, lockarg */ >+ &sc->dmat); >+ > /* > * Setup interrupt. > */ >diff --git a/sys/dev/hyperv/vmbus/vmbus_var.h b/sys/dev/hyperv/vmbus/vmbus_var.h >index c50eeaca956d..d14fd629d161 100644 >--- a/sys/dev/hyperv/vmbus/vmbus_var.h >+++ b/sys/dev/hyperv/vmbus/vmbus_var.h >@@ -130,6 +130,8 @@ struct vmbus_softc { > struct resource *ires; > void *icookie; > int vector; >+ bus_dma_tag_t dmat; >+ int coherent; > #endif > }; > >(END)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 267654
:
242385
|
244092
| 244186 |
244220
|
244573
Working