Commit b63b067a authored by Carl-Daniel Hailfinger's avatar Carl-Daniel Hailfinger
Browse files

Add OpenBSD support

Add a requirements section to the man page which lists the needed access
permissions for each programmer.

This feature needs my pciutils/libpci 8/16-bit write emulation patch at
http://marc.info/?l=openbsd-ports&m=127780030728045

 titled
[PATCH] Fix pciutils non-32bit PCI write on OpenBSD

Corresponding to flashrom svn r1067.
Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: default avatarStuart Henderson <sthen@openbsd.org>
parent f93b36a6
......@@ -48,6 +48,10 @@ ifeq ($(OS_ARCH), FreeBSD)
CPPFLAGS += -I/usr/local/include
LDFLAGS += -L/usr/local/lib
endif
ifeq ($(OS_ARCH), OpenBSD)
CPPFLAGS += -I/usr/local/include
LDFLAGS += -L/usr/local/lib
endif
ifeq ($(OS_ARCH), DOS)
EXEC_SUFFIX := .exe
CPPFLAGS += -I../libgetopt -I../libpci/include
......@@ -259,6 +263,10 @@ ifeq ($(OS_ARCH), DOS)
LIBS += ../libpci/lib/libpci.a
else
LIBS += -lpci
ifeq ($(OS_ARCH), OpenBSD)
# For (i386|amd64)_iopl(2).
LIBS += -l$(shell uname -m)
endif
endif
endif
endif
......
......@@ -55,6 +55,11 @@ On FreeBSD, you need the following ports:
* devel/gmake
* devel/libpci
On OpenBSD, you need the following ports:
* devel/gmake
* sysutils/pciutils
To compile on Linux, use:
make
......@@ -76,6 +81,10 @@ To compile on NetBSD or DragonFly BSD, use:
ln -s /usr/pkg/include/pciutils pci
gmake CPPFLAGS=-I. LDFLAGS="-L/usr/pkg/lib -Wl,-rpath-link,/usr/pkg/lib"
To compile on OpenBSD, use:
gmake
To compile and run on Darwin/Mac OS X:
Install DirectIO from coresystems GmbH.
......
......@@ -306,7 +306,7 @@ can be any comma-separated combination of
Example:
.B "flashrom \-p dummy:lpc,fwh"
.TP
.BR "nic3com" , " nicrealtek" , " nicsmc1211" , " gfxnvidia" , " satasii\
.BR "nic3com" , " nicrealtek" , " nicsmc1211" , " gfxnvidia" , " satasii \
" and " atahpt " programmers
These programmers have an option to specify the PCI address of the card
your want to use, which must be specified if more than one card supported
......@@ -391,6 +391,51 @@ can be any of
.SH EXIT STATUS
flashrom exits with 0 on success, 1 on most failures but with 2 if /dev/mem
(/dev/xsvc on Solaris) can not be opened and with 3 if a call to mmap() fails.
.SH REQUIREMENTS
flashrom needs different access permissions for different programmers.
.sp
.B internal
needs raw memory access, PCI configuration space access, raw I/O port
access (x86) and MSR access (x86).
.sp
.B it87spi
needs raw I/O port access (x86).
.sp
.BR nic3com ", " nicrealtek ", " nicsmc1211 " and " nicnatsemi "
need PCI configuration space read access and raw I/O port access.
.sp
.B atahpt
needs PCI configuration space access and raw I/O port access.
.sp
.BR gfxnvidia " and " drkaiser
need PCI configuration space access and raw memory access.
.sp
.B satasii
needs PCI configuration space read access and raw memory access.
.sp
.B serprog
needs TCP access to the network or userspace access to a serial port.
.sp
.B buspirate_spi
needs userspace access to a serial port.
.sp
.BR dediprog " and " ft2232_spi
need access to the USB device via libusb.
.sp
.B dummy
needs no access permissions at all.
.sp
.BR internal ", " it87spi ", " nic3com ", " nicrealtek ", " nicsmc1211 ", "
.BR nicnatsemi ", " "gfxnvidia" ", " drkaiser ", " satasii " and " atahpt
have to be run as superuser/root, and need additional raw access permission.
.sp
.BR serprog ", " buspirate_spi ", " dediprog " and " ft2232_spi
can be run as normal user on most operating systems if appropriate device
permissions are set.
.sp
On OpenBSD, you can obtain raw access permission by setting
securelevel=-1 in /etc/rc.securelevel and rebooting, or rebooting into single
user mode.
.SH BUGS
Please report any bugs at
.sp
......
......@@ -57,6 +57,11 @@ void get_io_perms(void)
#endif
msg_perr("ERROR: Could not get I/O privileges (%s).\n"
"You need to be root.\n", strerror(errno));
#if defined (__OpenBSD__)
msg_perr("Please set securelevel=-1 in /etc/rc.securelevel "
"and reboot, or reboot into \n");
msg_perr("single user mode.\n");
#endif
exit(1);
}
#endif
......
......@@ -228,17 +228,25 @@ cpu_to_be(64)
#endif
#endif
#if defined(__NetBSD__)
#if defined(__NetBSD__) || defined (__OpenBSD__)
#define off64_t off_t
#define lseek64 lseek
#if defined(__i386__) || defined(__x86_64__)
#include <sys/types.h>
#include <machine/sysarch.h>
#if defined(__NetBSD__)
#if defined(__i386__)
#define iopl i386_iopl
#elif defined(__x86_64__)
#define iopl x86_64_iopl
#endif
#elif defined (__OpenBSD__)
#if defined(__i386__)
#define iopl i386_iopl
#elif defined(__amd64__)
#define iopl amd64_iopl
#endif
#endif
#include <stdint.h>
static inline void outb(uint8_t value, uint16_t port)
......
......@@ -229,6 +229,10 @@ void *physmap_common(const char *descr, unsigned long phys_addr, size_t len, int
msg_perr("You can override CONFIG_X86_PAT at boot with the nopat kernel parameter but\n");
msg_perr("disabling the other option unfortunately requires a kernel recompile. Sorry!\n");
}
#elif defined (__OpenBSD__)
msg_perr("Please set securelevel=-1 in /etc/rc.securelevel "
"and reboot, or reboot into \n");
msg_perr("single user mode.\n");
#endif
if (!mayfail)
exit(3);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment