-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arch/tile: Add driver to enable access to the user dynamic network.
This network (the "UDN") connects all the cpus on the chip in a wormhole-routed dynamic network. Subrectangles of the chip can be allocated by a "create" ioctl on /dev/hardwall, and then to access the UDN in that rectangle, tasks must perform an "activate" ioctl on that same file object after affinitizing themselves to a single cpu in the region. Sending a wormhole-routed message that tries to leave that subrectangle causes all activated tasks to receive a SIGILL (just as they would if they tried to access the UDN without first activating themselves to a hardwall rectangle). The original submission of this code to LKML had the driver instantiated under /proc/tile/hardwall. Now we just use a character device for this, conventionally /dev/hardwall. Some futures planning for the TILE-Gx chip suggests that we may want to have other types of devices that share the general model of "bind a task to a cpu, then 'activate' a file descriptor on a pseudo-device that gives access to some hardware resource". As such, we are using a device rather than, for example, a syscall, to set up and activate this code. As part of this change, the compat_ptr() declaration was fixed and used to pass the compat_ioctl argument to the normal ioctl. So far we limit compat code to 2GB, so the difference between zero-extend and sign-extend (the latter being correct, eventually) had been overlooked. Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> Acked-by: Arnd Bergmann <arnd@arndb.de>
- Loading branch information
Chris Metcalf
committed
Jul 6, 2010
1 parent
fb702b9
commit 9f9c038
Showing
7 changed files
with
874 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/* | ||
* Copyright 2010 Tilera Corporation. All Rights Reserved. | ||
* | ||
* This program is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU General Public License | ||
* as published by the Free Software Foundation, version 2. | ||
* | ||
* This program is distributed in the hope that it will be useful, but | ||
* WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | ||
* NON INFRINGEMENT. See the GNU General Public License for | ||
* more details. | ||
* | ||
* Provide methods for the HARDWALL_FILE for accessing the UDN. | ||
*/ | ||
|
||
#ifndef _ASM_TILE_HARDWALL_H | ||
#define _ASM_TILE_HARDWALL_H | ||
|
||
#include <linux/ioctl.h> | ||
|
||
#define HARDWALL_IOCTL_BASE 0xa2 | ||
|
||
/* | ||
* The HARDWALL_CREATE() ioctl is a macro with a "size" argument. | ||
* The resulting ioctl value is passed to the kernel in conjunction | ||
* with a pointer to a little-endian bitmask of cpus, which must be | ||
* physically in a rectangular configuration on the chip. | ||
* The "size" is the number of bytes of cpu mask data. | ||
*/ | ||
#define _HARDWALL_CREATE 1 | ||
#define HARDWALL_CREATE(size) \ | ||
_IOC(_IOC_READ, HARDWALL_IOCTL_BASE, _HARDWALL_CREATE, (size)) | ||
|
||
#define _HARDWALL_ACTIVATE 2 | ||
#define HARDWALL_ACTIVATE \ | ||
_IO(HARDWALL_IOCTL_BASE, _HARDWALL_ACTIVATE) | ||
|
||
#define _HARDWALL_DEACTIVATE 3 | ||
#define HARDWALL_DEACTIVATE \ | ||
_IO(HARDWALL_IOCTL_BASE, _HARDWALL_DEACTIVATE) | ||
|
||
#ifndef __KERNEL__ | ||
|
||
/* This is the canonical name expected by userspace. */ | ||
#define HARDWALL_FILE "/dev/hardwall" | ||
|
||
#else | ||
|
||
/* Hook for /proc/tile/hardwall. */ | ||
struct seq_file; | ||
int proc_tile_hardwall_show(struct seq_file *sf, void *v); | ||
|
||
#endif | ||
|
||
#endif /* _ASM_TILE_HARDWALL_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.