Re: RPi4B "C0T" (Rev 1.5) part and the duplicate/diff/cmp huge file test for UEFI/ACPI contexts: fails far worse than past B0T testing did

From: Mark Millard <marklmi_at_yahoo.com>
Date: Tue, 29 Nov 2022 11:56:25 UTC
On Nov 28, 2022, at 23:35, Mark Millard <marklmi@yahoo.com> wrote:

> [Summary: using a kernel with my historical patching
> did not avoid such failures.]
> 
> On Nov 28, 2022, at 22:37, Mark Millard <marklmi@yahoo.com> wrote:
> 
>> FreeBSD has never updated the ACPI support to deal with
>> the DMA limitations of the B0T RPi4B parts, here the
>> xhci related limitation to the lower 3 GiBytes. This was
>> a test do see what a C0T RPi4B ends up with for behavior
>> based on the not-adjusted code.
>> 
>> Boot media prepared on a HoneyComb with snapshot (long line split
>> for readability):
>> 
>> FreeBSD 13.1-STABLE #0 stable/13-n253133-b51ee7ac252c: Wed Nov 23 03:36:16 UTC 2022
>> root@releng3.nyi.freebsd.org:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC
>> 
>> (so, not my build). But I replaced the U-Boot/RPi*-firmware
>> material with the material for ACPI use (via
>> /pftf/RPi4/releases/download/v1.33/RPi4_UEFI_Firmware_v1.33.zip
>> and my usual adjustments):
>> 
>> # ls -Tlat /mnt/
>> total 4401
>> drwxr-xr-x   1 root  wheel     4096 Nov 28 21:17:26 2022 normal_material_moved_here
>> -rwxr-xr-x   1 root  wheel      952 Sep 28 10:24:32 2022 config.txt
>> -rwxr-xr-x   1 root  wheel      952 Sep 28 10:24:32 2022 config.txt.uefi_m_m_fbsd
>> drwxr-xr-x   1 root  wheel     4096 Jun 28 20:47:10 2022 EFI
>> drwxr-xr-x   1 root  wheel     4096 Apr  4 00:51:20 2022 firmware
>> drwxr-xr-x   1 root  wheel     4096 Apr  4 00:51:20 2022 overlays
>> -rwxr-xr-x   1 root  wheel    51543 Mar  7 09:06:24 2022 bcm2711-rpi-4-b.dtb
>> -rwxr-xr-x   1 root  wheel    51675 Mar  7 09:06:24 2022 bcm2711-rpi-400.dtb
>> -rwxr-xr-x   1 root  wheel    52128 Mar  7 09:06:24 2022 bcm2711-rpi-cm4.dtb
>> -rwxr-xr-x   1 root  wheel  2241376 Mar  7 09:06:24 2022 start4.elf
>> -rwxr-xr-x   1 root  wheel     5352 Mar  7 09:06:22 2022 fixup4.dat
>> drwxr-xr-x  58 root  wheel       65 Mar  7 09:04:04 2022 ..
>> -rwxr-xr-x   1 root  wheel  2031616 Mar  7 09:03:46 2022 RPI_EFI.fd
>> -rwxr-xr-x   1 root  wheel     5067 Mar  7 08:57:38 2022 Readme.md
>> -rwxr-xr-x   1 root  wheel      230 Mar  7 08:57:38 2022 config.txt.uefi_rpi4_orig
>> -rwxr-xr-x   1 root  wheel        0 Sep 13 14:15:28 2020 timeout
>> drwxr-xr-x   1 root  wheel    16384 Dec 31 16:00:00 1979 .
>> 
>> Also I had put in place for the duplicate and diff/cmp
>> test use the large file in the below:
>> 
>> # ls -Tlat
>> total 27064356
>> drwxr-xr-x   2 root  wheel          512 Nov 29 05:23:24 2022 .
>> -rw-------   1 root  wheel         1498 Nov 29 05:23:24 2022 .sh_history
>> -rw-------   1 root  wheel          163 Nov 29 04:12:52 2022 .history
>> -rw-r--r--   1 root  wheel         1191 Nov 29 04:11:02 2022 .shrc
>> -rw-r--r--   1 root  wheel  27707039744 Nov 28 19:11:23 2022 larger-than-RAM.tar
>> -rw-r--r--   1 root  wheel          328 Nov 23 04:07:48 2022 .login
>> -rw-r--r--   2 root  wheel         1023 Nov 23 04:07:48 2022 .cshrc
>> -rw-r--r--   2 root  wheel          507 Nov 23 04:07:48 2022 .profile
>> -rw-r--r--   1 root  wheel           80 Nov 23 04:07:38 2022 .k5login
>> drwxr-xr-x  20 root  wheel          512 Mar  7 17:03:52 2022 ..
>> 
>> Then I booted it on the C0T RPi4B and did the test after
>> logging in. The result was:
>> 
>> # cp -aRx larger-than-RAM.tar larger-than-RAM.tar.copied_via_RPi4B_C0T_Rev_1.5
>> xhci_interrupt: host system error
>> xhci_interrupt: host controller halted
>> xhci_interrupt: host system error
>> xhci0: Resetting controller
>> uhub1: at usbus1, port 1, addr 1 (disconnected)
>> ugen1.2: <vendor 0x2109 USB2.0 Hub> at usbus1 (disconnected)
>> uhub2: at uhub1, port 1, addr 1 (disconnected)
>> uhub2: detached
>> ugen1.3: <OWC Envoy Pro mini> at usbus1 (disconnected)
>> umass0: at uhub1, port 2, addr 2 (disconnected)
>> (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 00 07 95 8a 40 00 08 00 00 
>> (da0:umass-sim0:0:0:0): CAM status: CCB request completed with an error
>> (da0:umass-sim0:0:0:0): Retrying command, 3 more tries remain
>> da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
>> da0: <OWC Envoy Pro mini 0>  s/n 000000000014 detached
>> g_vfs_done():ufs/rootfs[WRITE(offset=65094778880, length=1048576)]error = 6
>> UFS: forcibly unmounting /dev/ufs/rootfs from /
>> g_vfs_done():ufs/rootfs[WRITE(offset=65095827456, length=1048576)]error = 6
>> . . .
>> g_vfs_done():ufs/rootfs[WRITE(offset=65088946176, length=589824)]error = 6
>> g_vfs_done():ufs/rootfs[WRITE(offset=65093730304, length=1048576)]error = 6
>> larger-than-RAM.tar: Device not configured
>> pid 668 (sh), jid 0, uid 0: exited on signal 4
>> pid 365 (devd), jid 0, uid 0: exited on signal 4
>> (da0:umass-sim0:0:0:0): Periph destroyed
>> pid 667 (login), jid 0, uid 0: exited on signal 4
>> umass0: detached
>> uhub1: detached
>> uhub1 on usbus1
>> uhub1: <Generic XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus1
>> uhub1: 5 ports with 4 removable, self powered
>> ugen1.2: <vendor 0x2109 USB2.0 Hub> at usbus1
>> uhub2 on uhub1
>> uhub2: <vendor 0x2109 USB2.0 Hub, class 9/0, rev 2.10/4.21, addr 1> on usbus1
>> uhub2: 4 ports with 4 removable, self powered
>> usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device OWC Envoy Pro mini (0x1e91:0xa2a5)
>> ugen1.3: <OWC Envoy Pro mini> at usbus1
>> umass0 on uhub1
>> umass0: <OWC Envoy Pro mini, class 0/0, rev 3.00/1.00, addr 2> on usbus1
>> umass0:  SCSI over Bulk-Only; quirks = 0x0100
>> umass0:0:0: Attached to scbus0
>> da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
>> da0: <OWC Envoy Pro mini 0> Fixed Direct Access SPC-4 SCSI device
>> da0: Serial Number ***REDACTED***
>> da0: 400.000MB/s transfers
>> da0: 228936MB (468862128 512 byte sectors)
>> da0: quirks=0x2<NO_6_BYTE>
>> pid 637 (cron), jid 0, uid 0: exited on signal 4
>> 
>> 
>> That was all the output before things were hung up.
>> 
>> The old B0T testing got some corrupted blocks in 
>> the file copy(ies) in such testing but ran to
>> completion. But I've not run such tests in some
>> time.
>> 
>> I may see if my currently somewhat older but patched
>> kernel has problems as well for C0T RPi4B's, presuming 
>> ufficient world compatibility to leave the rest alone.
>> (I've never had problems with the patched kernel
>> versions on the B0T RPi4B's.)
> 
> This is for the older but patched kernel, as reported
> in:
> 
> # uname -apKU
> FreeBSD generic 13.1-STABLE FreeBSD 13.1-STABLE #43 stable/13-n252944-e52aaa644ce1-dirty: Mon Nov  7 09:55:56 PST 2022     root@CA72_16Gp_ZFS:/usr/obj/BUILDs/13S-CA72-nodbg-clang/usr/13S-src/arm64.aarch64/sys/GENERIC-NODBG-CA72 arm64 aarch64 1301509 1301509
> 
> Same sort of result using a "C0T" RPi4B:
> 
> # cp -aRx larger-than-RAM.tar larger-than-RAM.tar.copied_via_RPi4B_C0T_Rev_1.5
> xhci_interrupt: host system error
> xhci0: Resetting controller
> uhub0: at usbus1, port 1, addr 1 (disconnected)
> ugen1.2: <vendor 0x2109 USB2.0 Hub> at usbus1 (disconnected)
> uhub2: at uhub0, port 1, addr 1 (disconnected)
> uhub2: detached
> ugen1.3: <OWC Envoy Pro mini> at usbus1 (disconnected)
> umass0: at uhub0, port 3, addr 2 (disconnected)
> (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 00 07 0e ee 40 00 08 00 00 
> (da0:umass-sim0:0:0:0): CAM status: CCB request completed with an error
> (da0:umass-sim0:0:0:0): Retrying command, 3 more tries remain
> da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
> da0: <OWC Envoy Pro mini 0>  s/n 000000000014 detached
> g_vfs_done():ufs/rootfs[WRITE(offset=60578037760, length=1048576)]error = 6
> UFS: forcibly unmounting /dev/ufs/rootfs from /
> g_vfs_done():ufs/rootfs[WRITE(offset=60579086336, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=60580134912, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=60581183488, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=60582232064, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=60583280640, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=60584329216, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=60585377792, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=60586426368, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=60587474944, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[READ(offset=76881494016, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1806729216, length=12288)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=60576989184, length=1048576)]error = 6
> larger-than-RAM.tar: Device not configured
> pid 658 (sh), jid 0, uid 0: exited on signal 4
> (da0:umass-sim0:0:0:0): Periph destroyed
> pid 355 (devd), jid 0, uid 0: exited on signal 4
> umass0: detached
> pid 657 (login), jid 0, uid 0: exited on signal 4
> uhub0: detached
> uhub0 on usbus1
> uhub0: <Generic XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus1
> uhub0: 5 ports with 4 removable, self powered
> ugen1.2: <vendor 0x2109 USB2.0 Hub> at usbus1
> uhub2 on uhub0
> uhub2: <vendor 0x2109 USB2.0 Hub, class 9/0, rev 2.10/4.21, addr 1> on usbus1
> uhub2: 4 ports with 4 removable, self powered
> usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device OWC Envoy Pro mini (0x1e91:0xa2a5)
> ugen1.3: <OWC Envoy Pro mini> at usbus1
> umass0 on uhub0
> umass0: <OWC Envoy Pro mini, class 0/0, rev 3.00/1.00, addr 2> on usbus1
> umass0:  SCSI over Bulk-Only; quirks = 0x0100
> umass0:0:0: Attached to scbus0
> da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
> da0: <OWC Envoy Pro mini 0> Fixed Direct Access SPC-4 SCSI device
> da0: Serial Number ***REDACTED***
> da0: 400.000MB/s transfers
> da0: 228936MB (468862128 512 byte sectors)
> da0: quirks=0x2<NO_6_BYTE>
> pid 627 (cron), jid 0, uid 0: exited on signal 4
> 
> 
> 
> So, after a fsck_ffs -y via the HoneyComb, trying
> on a "B0T" RPi4B got:
> 
> # cp -aRx larger-than-RAM.tar larger-than-RAM.tar.copied_via_RPi4B_B0T_Rev_1.4
> UFS /dev/ufs/rootfs (/) cylinder checksum failed: cg 92, cgp: 0x0 != bp: 0x43bc4552
> . . .
> UFS /dev/ufs/rootfs (/) cylinder checksum failed: cg 314, cgp: 0xffffffff != bp: 0x544dd2da

Even my patched-kernel + world from the same build
(no vintage mismatch) get such error messages when
mixed with UEFI/ACPI, even on a "B0T" RPi4B that
I've historically used.

Most of my historical use of UEFI/ACPI has been with ZFS
instead of UFS and with main instead of 13.1-STABLE,
unlike here for both, and most of it was before the added
cylinder related tests.

Looks like the cylinder tests may help detect some types
of I/O problems, possibly now exposing problems that were
silent before.

Looks like RPi4B EDK2 UEFI/ACPI should be avoided at this
point. I've reverted my use back to being U-Boot based.

> xhci_interrupt: host system error
> xhci0: Resetting controller
> uhub1: at usbus1, port 1, addr 1 (disconnected)
> ugen1.2: <vendor 0x2109 USB2.0 Hub> at usbus1 (disconnected)
> uhub2: at uhub1, port 1, addr 1 (disconnected)
> uhub2: detached
> ugen1.3: <OWC Envoy Pro mini> at usbus1 (disconnected)
> umass0: at uhub1, port 2, addr 2 (disconnected)
> (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 00 16 84 d7 00 00 08 00 00 
> (da0:umass-sim0:0:0:0): CAM status: CCB request completed with an error
> (da0:umass-sim0:0:0:0): Retrying command, 3 more tries remain
> da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
> da0: <OWC Envoy Pro mini 0>  s/n 000000000014 detached
> g_vfs_done():ufs/rootfs[WRITE(offset=193383432192, length=1048576)]error = 6
> UFS: forcibly unmounting /dev/ufs/rootfs from /
> g_vfs_done():ufs/rootfs[WRITE(offset=193384480768, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193385529344, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193386577920, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193387626496, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193388675072, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193389723648, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193390772224, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193391820800, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193392869376, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193393917952, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193394966528, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193396015104, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193397063680, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193398112256, length=753664)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1346174976, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1346207744, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1346240512, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1346273280, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1346306048, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1346338816, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1671835648, length=4096)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1806696448, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1806827520, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1806860288, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1807908864, length=425984)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1808367616, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1809416192, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1810464768, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1811513344, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1812561920, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1813610496, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=1814659072, length=950272)]error = 6
> g_vfs_done():ufs/rootfs[READ(offset=78798159872, length=32768)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193332412416, length=1048576)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193333460992, length=688128)]error = 6
> g_vfs_done():ufs/rootfs[WRITE(offset=193382383616, length=1048576)]error = 6
> larger-than-RAM.tar: Device not configured
> pid 658 (sh), jid 0, uid 0: exited on signal 4
> pid 355 (devd), jid 0, uid 0: exited on signal 4
> (da0:umass-sim0:0:0:0): Periph destroyed
> pid 657 (login), jid 0, uid 0: exited on signal 4
> umass0: detached
> uhub1: detached
> uhub1 on usbus1
> uhub1: <Generic XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus1
> uhub1: 5 ports with 4 removable, self powered
> ugen1.2: <vendor 0x2109 USB2.0 Hub> at usbus1
> uhub2 on uhub1
> uhub2: <vendor 0x2109 USB2.0 Hub, class 9/0, rev 2.10/4.21, addr 1> on usbus1
> uhub2: 4 ports with 4 removable, self powered
> usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device OWC Envoy Pro mini (0x1e91:0xa2a5)
> ugen1.3: <OWC Envoy Pro mini> at usbus1
> umass0 on uhub1
> umass0: <OWC Envoy Pro mini, class 0/0, rev 3.00/1.00, addr 2> on usbus1
> umass0:  SCSI over Bulk-Only; quirks = 0x0100
> umass0:0:0: Attached to scbus0
> da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
> da0: <OWC Envoy Pro mini 0> Fixed Direct Access SPC-4 SCSI device
> da0: Serial Number ***REDACTED***
> da0: 400.000MB/s transfers
> da0: 228936MB (468862128 512 byte sectors)
> da0: quirks=0x2<NO_6_BYTE>
> pid 627 (cron), jid 0, uid 0: exited on signal 4
> 
> 
> The attempted fsck_ffs -y via teh HoneyComb got:
> 
> # fsck_ffs -y /dev/da0s2a
> ** /dev/da0s2a
> ** Last Mounted on /
> ** Phase 1 - Check Blocks and Sizes
> UFS2 cylinder group 2 failed: cgp->cg_ckhash ("4294967295") != calchash ("1414386394")
> UFS2 cylinder group 2 failed: cg_chkmagic(cgp) ("0") == 0 ("0")
> UFS2 cylinder group 2 failed: cgp->cg_cgx ("4294967295") != cg ("2")
> UFS2 cylinder group 2 failed: cgp->cg_ndblk ("4294967295") > sblock.fs_fpg ("160056")
> UFS2 cylinder group 2 failed: cgp->cg_niblk ("4294967295") != sblock.fs_ipg ("80128")
> UFS2 cylinder group 2 failed: cgp->cg_initediblk ("4294967295") > sblock.fs_ipg ("80128")
> CYLINDER GROUP 2: INTEGRITY CHECK FAILED
> UNEXPECTED SOFT UPDATE INCONSISTENCY
> 
> REBUILD CYLINDER GROUP? yes
> 
> INCORRECT BLOCK COUNT I=172606 (1136576 should be 262976)
> CORRECT? yes
> 
> INODE 172606: FILE SIZE 581730304 BEYOND END OF ALLOCATED FILE, SIZE SHOULD BE 134610944
> ADJUST? yes
> 
> CYLINDER GROUP 2: FOUND 12416 VALID INODES
> UFS2 cylinder group 86 failed: cgp->cg_ckhash ("4294967295") != calchash ("1414386394")
> UFS2 cylinder group 86 failed: cg_chkmagic(cgp) ("0") == 0 ("0")
> UFS2 cylinder group 86 failed: cgp->cg_cgx ("4294967295") != cg ("86")
> UFS2 cylinder group 86 failed: cgp->cg_ndblk ("4294967295") > sblock.fs_fpg ("160056")
> UFS2 cylinder group 86 failed: cgp->cg_niblk ("4294967295") != sblock.fs_ipg ("80128")
> UFS2 cylinder group 86 failed: cgp->cg_initediblk ("4294967295") > sblock.fs_ipg ("80128")
> CYLINDER GROUP 86: INTEGRITY CHECK FAILED
> UNEXPECTED SOFT UPDATE INCONSISTENCY
> 
> REBUILD CYLINDER GROUP? yes
> 
> INODE CHECK-HASH FAILED I=6891264  OWNER=1746441326 MODE=146121
> SIZE=10103763192184260801 MTIME=??? ?? ??:?? ???? 
> FIX? yes
> 
> BAD FILE SIZE
> UNEXPECTED SOFT UPDATE INCONSISTENCY
> I=6891264  OWNER=1746441326 MODE=146121
> SIZE=10103763192184260801 MTIME=??? ?? ??:?? ???? 
> CLEAR? yes
> 
> INODE CHECK-HASH FAILED I=6891265  OWNER=2967366544 MODE=22404
> SIZE=6465710959960971806 MTIME=??? ?? ??:?? ???? 
> FIX? yes
> 
> BAD FILE SIZE
> UNEXPECTED SOFT UPDATE INCONSISTENCY
> I=6891265  OWNER=2967366544 MODE=22404
> SIZE=6465710959960971806 MTIME=??? ?? ??:?? ???? 
> CLEAR? yes
> 
> INODE CHECK-HASH FAILED I=6891266  OWNER=3055313325 MODE=55724
> SIZE=11494838078614539290 MTIME=??? ?? ??:?? ???? 
> 
> . . .
> 
> (The list of reports is massive and growing. I'll be regenerating
> the media content, starting with a dd.)
> 



===
Mark Millard
marklmi at yahoo.com