From f7e99e65663b5f71f16e68c7252cc4fac9d2dcbc Mon Sep 17 00:00:00 2001 From: rodrigc Date: Mon, 23 Jun 2014 22:31:28 +0000 Subject: [PATCH] MFC r263795: Strict value checking will cause problem. Bay trail DN2820FYKH is supported on Linux but does not work on FreeBSD. This behaviour is bug-compatible with Linux-3.13.5. References: http://d.hatena.ne.jp/syuu1228/20140326 http://lxr.linux.no/linux+v3.13.5/arch/x86/kernel/acpi/boot.c#L1094 Submitted by: syuu PR: 187966 git-svn-id: svn://svn.freebsd.org/base/stable/10@267807 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sbin/mount_nullfs/mount_nullfs.c | 13 ++++++++++--- sys/x86/acpica/madt.c | 12 ++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/sbin/mount_nullfs/mount_nullfs.c b/sbin/mount_nullfs/mount_nullfs.c index e08599fca..e92680b09 100644 --- a/sbin/mount_nullfs/mount_nullfs.c +++ b/sbin/mount_nullfs/mount_nullfs.c @@ -103,18 +103,25 @@ main(int argc, char *argv[]) err(EX_USAGE, "%s", source); if (subdir(target, source) || subdir(source, target)) - errx(EX_USAGE, "%s (%s) and %s are not distinct paths", + errx(EX_USAGE, "%s (%s) and %s are not lldistinct paths", argv[0], target, argv[1]); + printf("Debug: 1\n"); build_iovec(&iov, &iovlen, "fstype", nullfs, (size_t)-1); build_iovec(&iov, &iovlen, "fspath", source, (size_t)-1); build_iovec(&iov, &iovlen, "target", target, (size_t)-1); build_iovec(&iov, &iovlen, "errmsg", errmsg, sizeof(errmsg)); + printf("Debug: 2, source: %zd target: %zdd\n", strlen(source), strlen(target)); if (nmount(iov, iovlen, 0) < 0) { - if (errmsg[0] != 0) + printf("Debug: 3\n"); + if (errmsg[0] != 0) { + printf("Debug 4\n"); err(1, "%s: %s", source, errmsg); - else + } + else { + printf("Debug 5\n"); err(1, "%s", source); + } } exit(0); } diff --git a/sys/x86/acpica/madt.c b/sys/x86/acpica/madt.c index 41237ff52..ef36276ff 100644 --- a/sys/x86/acpica/madt.c +++ b/sys/x86/acpica/madt.c @@ -306,10 +306,11 @@ interrupt_polarity(UINT16 IntiFlags, UINT8 Source) case ACPI_MADT_POLARITY_ACTIVE_HIGH: return (INTR_POLARITY_HIGH); case ACPI_MADT_POLARITY_ACTIVE_LOW: - return (INTR_POLARITY_LOW); + break; default: - panic("Bogus Interrupt Polarity"); + printf("WARNING: Bogus Interrupt Polarity. Assume POLALITY LOW"); } + return (INTR_POLARITY_LOW); } static enum intr_trigger @@ -325,10 +326,13 @@ interrupt_trigger(UINT16 IntiFlags, UINT8 Source) case ACPI_MADT_TRIGGER_EDGE: return (INTR_TRIGGER_EDGE); case ACPI_MADT_TRIGGER_LEVEL: - return (INTR_TRIGGER_LEVEL); + break; default: - panic("Bogus Interrupt Trigger Mode"); + printf("WARNING: Bogus Interrupt Trigger Mode. Assume Level trigger."); + + break; } + return (INTR_TRIGGER_LEVEL); } /* -- 2.45.0