summaryrefslogtreecommitdiff
path: root/trafgen_dev.h
blob: bcb88f3650afc7823c6adc91ebacdccdf691c670 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#ifndef TRAFGEN_DEV_H
#define TRAFGEN_DEV_H

#include <stdbool.h>
#include <inttypes.h>

#include "pcap_io.h"

enum dev_io_mode_t {
	DEV_IO_IN	= 1 << 0,
	DEV_IO_OUT	= 1 << 1,
};

struct dev_io_ops;
struct packet;

struct dev_io {
	int fd;
	char *name;
	char *trans;
	int ifindex;
	int dev_type;
	uint32_t link_type;
	uint32_t pcap_magic;
	bool is_initialized;
	enum pcap_mode pcap_mode;
	enum dev_io_mode_t mode;
	size_t buf_len;
	uint8_t *buf;

	const struct pcap_file_ops *pcap_ops;
	const struct dev_io_ops *ops;
};

struct dev_io_ops {
	int(*open) (struct dev_io *dev, const char *name, enum dev_io_mode_t mode);
	int(*write) (struct dev_io *dev, struct packet *pkt);
	struct packet *(*read) (struct dev_io *dev);
	int(*set_link_type) (struct dev_io *dev, int link_type);
	void(*close) (struct dev_io *dev);
};

extern struct dev_io *dev_io_create(const char *name, enum dev_io_mode_t mode);
extern void dev_io_open(struct dev_io *dev);
extern int dev_io_write(struct dev_io *dev, struct packet *pkt);
extern struct packet *dev_io_read(struct dev_io *dev);
extern int dev_io_ifindex_get(struct dev_io *dev);
extern int dev_io_fd_get(struct dev_io *dev);
extern const char *dev_io_name_get(struct dev_io *dev);
extern int dev_io_link_type_set(struct dev_io *dev, int link_type);
extern bool dev_io_is_netdev(struct dev_io *dev);
extern bool dev_io_is_pcap(struct dev_io *dev);
extern void dev_io_close(struct dev_io *dev);

#endif /* TRAFGEN_DEV_H */
fb_set_var+0x236/0x460 fbcon_blank+0x30f/0x350 do_unblank_screen+0xd2/0x1a0 vt_ioctl+0x507/0x12a0 tty_ioctl+0x355/0xc30 do_vfs_ioctl+0xa3/0x5e0 SyS_ioctl+0x79/0x90 entry_SYSCALL_64_fastpath+0x13/0x94 - i915 unpin_work workqueue: intel_unpin_work_fn+0x58/0x140 [i915] process_one_work+0x1f1/0x480 worker_thread+0x48/0x4d0 kthread+0x101/0x140 and this patch purely papers over the issue by adding a NULL pointer check and a WARN_ON_ONCE() to avoid the oops that would then generally make the machine unresponsive. Other callers of i915_gem_object_to_ggtt() seem to also check for the returned pointer being NULL and warn about it, so this clearly has happened before in other places. [ Reported it originally to the i915 developers on Jan 8, applying the ugly workaround on my own now after triggering the problem for the second time with no feedback. This is likely to be the same bug reported as https://bugs.freedesktop.org/show_bug.cgi?id=98829 https://bugs.freedesktop.org/show_bug.cgi?id=99134 which has a patch for the underlying problem, but it hasn't gotten to me, so I'm applying the workaround. ] Cc: Daniel Vetter <daniel.vetter@intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Imre Deak <imre.deak@intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'sound/pci/hda')