From fadd1b14f77e2dfdc4e3f7f61bee5b22ccf66e2f Mon Sep 17 00:00:00 2001 From: Ophestra Date: Mon, 25 May 2026 13:10:30 +0900 Subject: [PATCH] internal/kobject: process uevent This tracks kernel state by merging a stream of uevent. Inconsistencies are reported and recovered from gracefully. Signed-off-by: Ophestra --- internal/kobject/event.go | 17 + internal/kobject/kobject.go | 396 +++++ internal/kobject/kobject_test.go | 1806 ++++++++++++++++++++++ internal/kobject/testdata/00-coldboot | 266 ++++ internal/kobject/testdata/01-move | 1 + internal/kobject/testdata/02-cpu | 8 + internal/kobject/testdata/03-loop | 19 + internal/kobject/testdata/04-loop-detach | 2 + internal/kobject/testdata/05-loop-remove | 18 + 9 files changed, 2533 insertions(+) create mode 100644 internal/kobject/kobject.go create mode 100644 internal/kobject/kobject_test.go create mode 100644 internal/kobject/testdata/00-coldboot create mode 100644 internal/kobject/testdata/01-move create mode 100644 internal/kobject/testdata/02-cpu create mode 100644 internal/kobject/testdata/03-loop create mode 100644 internal/kobject/testdata/04-loop-detach create mode 100644 internal/kobject/testdata/05-loop-remove diff --git a/internal/kobject/event.go b/internal/kobject/event.go index 33cb91b8..38728599 100644 --- a/internal/kobject/event.go +++ b/internal/kobject/event.go @@ -2,6 +2,7 @@ package kobject import ( "errors" + "maps" "strconv" "strings" "unsafe" @@ -28,6 +29,22 @@ type Event struct { Subsystem string `json:"subsystem"` } +// Clone returns a copy of e. +func (e *Event) Clone() Event { + v := *e + v.Env = maps.Clone(e.Env) + return v +} + +// makeColdboot allocates a new [Object] from e in [StateColdboot]. +func (e *Event) makeColdboot() *Object { + return &Object{ + State: StateColdboot, + DevPath: e.DevPath, + Subsystem: e.Subsystem, + } +} + // Populate populates e with the contents of a [uevent.Message]. // // The ACTION and DEVPATH environment variables are ignored and assumed to be diff --git a/internal/kobject/kobject.go b/internal/kobject/kobject.go new file mode 100644 index 00000000..f8f040e3 --- /dev/null +++ b/internal/kobject/kobject.go @@ -0,0 +1,396 @@ +// Package kobject interprets uevent messages from a NETLINK_KOBJECT_UEVENT socket. +package kobject + +import ( + "context" + "fmt" + "maps" + "strconv" + "sync" + + "hakurei.app/internal/uevent" +) + +const ( + // StateColdboot denotes an [Object] populated by a coldboot event. It is + // eligible for all event actions. + StateColdboot = iota + // StateNew denotes an [Object] previously populated by a [uevent.KOBJ_ADD] + // event, but has not yet been targeted by a [uevent.KOBJ_BIND] event, or + // has been targeted by a [uevent.KOBJ_UNBIND] event. + StateNew + // StateBound denotes an [Object] that has been targeted by a + // [uevent.KOBJ_BIND] and has not been targeted by a [uevent.KOBJ_UNBIND] + // after that. + StateBound +) + +// Object represents a kernel object. +type Object struct { + // Origin of the object. + State int `json:"-"` + // Set by [uevent.KOBJ_OFFLINE] and [uevent.KOBJ_ONLINE]. + Offline bool + + // alloc_uevent_skb: devpath + DevPath string `json:"devpath"` + // registered per-driver (optional) + ModAlias string `json:"modalias,omitempty"` + // dev_driver_uevent: drv->name (optional) + Driver string `json:"driver,omitempty"` + + // SUBSYSTEM value set by the kernel. + Subsystem string `json:"subsystem"` + + // Uninterpreted environment variable pairs. An entry missing a separator + // gains the value "\x00". + Env map[string]string `json:"env"` +} + +// Clone returns a copy of o. +func (o *Object) Clone() Object { + v := *o + v.Env = maps.Clone(o.Env) + return v +} + +// GoString returns compound literal for the underlying value. +func (o *Object) GoString() string { + return fmt.Sprintf("&%#v", *o) +} + +// merge merges uninterpreted environment variable pairs from an [Event]. +func (o *Object) merge(env map[string]string) { + for k, v := range env { + if v == "\x00" { + continue + } + + switch k { + case "MODALIAS": + o.ModAlias = v + continue + + case "DRIVER": + o.Driver = v + continue + + default: + if o.Env == nil { + o.Env = make(map[string]string) + } + o.Env[k] = v + } + } +} + +// update updates o with pairs from env, optionally stripping visited pairs. +func (o *Object) update(env map[string]string, strip bool) { + for k := range o.Env { + if v, ok := env[k]; ok { + if strip { + delete(env, k) + } + o.Env[k] = v + } + } +} + +// State processes a stream of [Event] populated from [uevent.Message] received +// from a NETLINK_KOBJECT_UEVENT socket and presents an efficient representation +// of kernel state. +type State struct { + // Next expected SEQNUM. + seq uint64 + // DevPath to environment variables. + uevent map[string]*Object + // Synchronises access to uevent and its objects. + ueventMu sync.RWMutex + // UUID for synthetic [uevent.Coldboot] events. + coldboot uevent.UUID + // Called on [uevent.KOBJ_CHANGE] with stripped environment variables. + handleChange func(o *Object, env map[string]string) + // Reports errors populating [Event] from [uevent.Message]. A user-supplied + // nil value is replaced with a noop. + reportErr func(error) +} + +// New returns the address of a new [State]. +func New( + coldboot uevent.UUID, + handleChange func(o *Object, env map[string]string), + reportErr func(error), +) *State { + return &State{ + uevent: make(map[string]*Object), + coldboot: coldboot, + handleChange: handleChange, + reportErr: reportErr, + } +} + +// UnexpectedColdbootError is reported by [State.Consume] for a coldboot event +// with action other than the expected [uevent.KOBJ_ADD]. +type UnexpectedColdbootError Event + +func (e UnexpectedColdbootError) Error() string { + return "unexpected " + e.Action.String() + " coldboot event" +} + +// DuplicateAddError is reported by [State.Consume] for a [uevent.KOBJ_ADD] +// event on a still-existing entry that was not the result of a coldboot. +type DuplicateAddError Event + +func (e DuplicateAddError) Error() string { + return "duplicate add event on devpath " + strconv.Quote(e.DevPath) +} + +// TargetError is reported by [State.Consume] for an event on a nonexistent +// entry. This is generally only possible before coldboot completes. +type TargetError Event + +func (e TargetError) Error() string { + return "unexpected " + e.Action.String() + + " event on devpath " + strconv.Quote(e.DevPath) +} + +// RemoveStateError is reported by [State.Consume] for a [uevent.KOBJ_REMOVE] +// event targeting an entry in a state other than [StateColdboot] and [StateNew]. +type RemoveStateError Object + +func (e RemoveStateError) Error() string { + return "remove event targeting devpath " + strconv.Quote(e.DevPath) + + " in state " + strconv.Itoa(e.State) +} + +// BindStateError is reported by [State.Consume] for a [uevent.KOBJ_BIND] event +// targeting an entry in a state other than [StateColdboot] and [StateNew]. +type BindStateError Object + +func (e BindStateError) Error() string { + return "bind event targeting devpath " + strconv.Quote(e.DevPath) + + " in state " + strconv.Itoa(e.State) +} + +// UnbindStateError is reported by [State.Consume] for a [uevent.KOBJ_UNBIND] +// event targeting an entry in a state other than [StateBound]. +type UnbindStateError Object + +func (e UnbindStateError) Error() string { + return "unbind event targeting devpath " + strconv.Quote(e.DevPath) + + " in state " + strconv.Itoa(e.State) +} + +// MalformedMoveError is reported by [State.Consume] for a [uevent.KOBJ_MOVE] +// event missing the DEVPATH_OLD environment variable. +type MalformedMoveError Event + +func (e MalformedMoveError) Error() string { + return "move event targeting devpath " + strconv.Quote(e.DevPath) + + " missing DEVPATH_OLD" +} + +// UnexpectedOfflineError is reported by [State.Consume] for a +// [uevent.KOBJ_OFFLINE] or [uevent.KOBJ_ONLINE] event targeting an already +// offline or online object. +type UnexpectedOfflineError Object + +func (e UnexpectedOfflineError) Error() string { + if e.Offline { + return "offline event targeting devpath " + strconv.Quote(e.DevPath) + } + return "online event targeting devpath " + strconv.Quote(e.DevPath) +} + +// processEvent merges an event into s. +func (s *State) processEvent(e *Event) { + s.ueventMu.Lock() + defer s.ueventMu.Unlock() + + coldboot := e.Synth != nil + if e.Action != uevent.KOBJ_ADD && coldboot { + s.reportErr(UnexpectedColdbootError(e.Clone())) + return + } + + switch e.Action { + case uevent.KOBJ_ADD: + if e.Synth == nil { + if o, ok := s.uevent[e.DevPath]; ok { + s.reportErr(DuplicateAddError(e.Clone())) + o.merge(e.Env) + return + } + } + o := e.makeColdboot() + if !coldboot { + o.State = StateNew + } + o.merge(e.Env) + s.uevent[e.DevPath] = o + return + + case uevent.KOBJ_REMOVE: + if o, ok := s.uevent[e.DevPath]; !ok { + s.reportErr(TargetError(e.Clone())) + return + } else if o.State != StateColdboot && o.State != StateNew { + s.reportErr(RemoveStateError(o.Clone())) + } + delete(s.uevent, e.DevPath) + return + + case uevent.KOBJ_CHANGE: + o, ok := s.uevent[e.DevPath] + if !ok { + s.reportErr(TargetError(e.Clone())) + // this suffers from the coldboot race window similar to KOBJ_MOVE, + // however this action combines driver-specific and change-specific + // environment variables and combines them with environment + // variables meant to convey state of the kobject, and it is not + // possible to reliably separate them, so this fallback avoids the + // race at the cost of including some garbage in tracked state + o = e.makeColdboot() + o.merge(e.Env) + s.uevent[e.DevPath] = o + return + } + o.update(e.Env, true) + if s.handleChange != nil { + s.handleChange(o, e.Env) + } + return + + case uevent.KOBJ_MOVE: + var o *Object + if old, ok := e.Env["DEVPATH_OLD"]; !ok { + s.reportErr(MalformedMoveError(e.Clone())) + // not reached + o = e.makeColdboot() + } else if o, ok = s.uevent[old]; !ok { + s.reportErr(TargetError(e.Clone())) + // this generally happens during coldboot, dropping the event here + // may cause inconsistent state if the coldboot event for this + // object was generated before the bind event + delete(e.Env, "DEVPATH_OLD") + o = e.makeColdboot() + } else { + delete(s.uevent, old) + delete(e.Env, "DEVPATH_OLD") + } + o.merge(e.Env) + s.uevent[e.DevPath] = o + o.DevPath = e.DevPath + return + + case uevent.KOBJ_ONLINE: + o, ok := s.uevent[e.DevPath] + if !ok { + s.reportErr(TargetError(e.Clone())) + // coldboot race window similar to an unexpected KOBJ_MOVE + o = e.makeColdboot() + s.uevent[e.DevPath] = o + o.merge(e.Env) + } + if !o.Offline { + s.reportErr(UnexpectedOfflineError(o.Clone())) + } + o.Offline = false + return + + case uevent.KOBJ_OFFLINE: + o, ok := s.uevent[e.DevPath] + if !ok { + s.reportErr(TargetError(e.Clone())) + // coldboot race window similar to an unexpected KOBJ_MOVE + o = e.makeColdboot() + s.uevent[e.DevPath] = o + o.merge(e.Env) + } + if o.Offline { + s.reportErr(UnexpectedOfflineError(o.Clone())) + } + o.Offline = true + return + + case uevent.KOBJ_BIND: + o, ok := s.uevent[e.DevPath] + if !ok { + s.reportErr(TargetError(e.Clone())) + // coldboot race window similar to an unexpected KOBJ_MOVE + o = e.makeColdboot() + s.uevent[e.DevPath] = o + } + if o.State != StateColdboot && o.State != StateNew { + s.reportErr(BindStateError(o.Clone())) + } + o.State = StateBound + o.merge(e.Env) + return + + case uevent.KOBJ_UNBIND: + o, ok := s.uevent[e.DevPath] + if !ok { + s.reportErr(TargetError(e.Clone())) + // coldboot race window similar to an unexpected KOBJ_MOVE, but does + // not result in inconsistent state if dropped + return + } + if o.State != StateBound { + s.reportErr(UnbindStateError(o.Clone())) + } + o.State = StateNew + o.Driver = "" + return + + default: // not reached + s.reportErr(fmt.Errorf("invalid action %d", e.Action)) + return + } +} + +// BadSequenceError is reported by [State.Consume] for an unexpected SEQNUM. +type BadSequenceError struct{ Got, Want uint64 } + +func (e BadSequenceError) Error() string { + return "SEQNUM=" + strconv.FormatUint(e.Got, 10) + + ", want " + strconv.FormatUint(e.Want, 10) +} + +// Consume receives uevent messages and updates s to reflect state of kernel. +func (s *State) Consume(ctx context.Context, events <-chan *uevent.Message) { + if s.uevent == nil { + s.uevent = make(map[string]*Object) + } + if s.reportErr == nil { + s.reportErr = func(error) {} + } + + var e Event + for { + select { + case <-ctx.Done(): + return + + case m, ok := <-events: + if !ok { + return + } + e.Populate(s.reportErr, m) + + // skip external synthetic event + if e.Synth != nil && *e.Synth != s.coldboot { + continue + } + + if s.seq == 0 { + s.seq = e.Sequence + } + if s.seq != e.Sequence { + s.reportErr(BadSequenceError{e.Sequence, s.seq}) + } + s.seq++ + s.processEvent(&e) + } + } +} diff --git a/internal/kobject/kobject_test.go b/internal/kobject/kobject_test.go new file mode 100644 index 00000000..892ff241 --- /dev/null +++ b/internal/kobject/kobject_test.go @@ -0,0 +1,1806 @@ +package kobject_test + +import ( + "bytes" + _ "embed" + "encoding/json" + "fmt" + "io" + "maps" + "reflect" + "slices" + "strings" + "testing" + "unsafe" + + . "hakurei.app/internal/kobject" + "hakurei.app/internal/uevent" +) + +func TestConsume(t *testing.T) { + t.Parallel() + + coldboot := uevent.UUID(bytes.Repeat([]byte{0xfd}, len(uevent.UUID{}))) + testCases := []struct { + name string + messages []*uevent.Message + want map[string]*Object + c []map[string]string + errs []error + }{ + {"drop external synth", []*uevent.Message{ + {DevPath: "\x00", Env: []string{ + "SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed", + }}, + }, map[string]*Object{}, nil, nil}, + + {"unexpected coldboot", []*uevent.Message{ + {Action: uevent.KOBJ_BIND, DevPath: "\x00", Env: []string{ + "SYNTH_UUID=fdfdfdfd-fdfd-fdfd-fdfd-fdfdfdfdfdfd", + }}, + }, map[string]*Object{}, nil, []error{ + UnexpectedColdbootError{ + Action: uevent.KOBJ_BIND, + DevPath: "\x00", + Env: map[string]string{}, + Synth: &coldboot, + }, + }}, + + {"sequence", []*uevent.Message{ + {Action: uevent.KOBJ_ADD, DevPath: "\x00"}, + {Action: uevent.KOBJ_OFFLINE, DevPath: "\x00"}, + }, map[string]*Object{ + "\x00": { + State: StateNew, + Offline: true, + DevPath: "\x00", + }, + }, nil, []error{ + BadSequenceError{Got: 0, Want: 1}, + }}, + + {"action", []*uevent.Message{ + {Action: 0xbeef, DevPath: "\x00"}, + }, map[string]*Object{}, nil, []error{ + fmt.Errorf("invalid action %d", 0xbeef), + }}, + + {"add", []*uevent.Message{ + {Action: uevent.KOBJ_ADD, DevPath: "\x00", Env: []string{ + "V=\xff", + "SEQNUM=1", + }}, + {Action: uevent.KOBJ_ADD, DevPath: "\x00", Env: []string{ + "V=\xfd", + "SEQNUM=2", + }}, + }, map[string]*Object{ + "\x00": { + State: StateNew, + DevPath: "\x00", + Env: map[string]string{"V": "\xfd"}, + }, + }, nil, []error{ + DuplicateAddError{ + Action: uevent.KOBJ_ADD, + DevPath: "\x00", + Env: map[string]string{"V": "\xfd"}, + Sequence: 2, + }, + }}, + + {"remove", []*uevent.Message{ + {Action: uevent.KOBJ_REMOVE, DevPath: "\x00", Env: []string{ + "SEQNUM=0", + }}, + {Action: uevent.KOBJ_ADD, DevPath: "\x00", Env: []string{ + "SYNTH_UUID=" + coldboot.String(), + "SEQNUM=1", + }}, + {Action: uevent.KOBJ_BIND, DevPath: "\x00", Env: []string{ + "DRIVER=\xfd", + "SEQNUM=2", + }}, + {Action: uevent.KOBJ_REMOVE, DevPath: "\x00", Env: []string{ + "SEQNUM=3", + }}, + }, map[string]*Object{}, nil, []error{ + TargetError{ + Action: uevent.KOBJ_REMOVE, + DevPath: "\x00", + Env: map[string]string{}, + }, + RemoveStateError{ + State: StateBound, + DevPath: "\x00", + Driver: "\xfd", + }, + }}, + + {"change", []*uevent.Message{ + {Action: uevent.KOBJ_CHANGE, DevPath: "\x00", Env: []string{ + "V=\xff", + "SEQNUM=9", + }}, + }, map[string]*Object{ + "\x00": { + State: StateColdboot, + DevPath: "\x00", + Env: map[string]string{"V": "\xff"}, + }, + }, nil, []error{ + TargetError{ + Action: uevent.KOBJ_CHANGE, + DevPath: "\x00", + Sequence: 9, + Env: map[string]string{ + "V": "\xff", + }, + }, + }}, + + {"move", []*uevent.Message{ + {Action: uevent.KOBJ_MOVE, DevPath: "\x0f", Env: []string{ + "V=\xfc", + "SEQNUM=0", + }}, + {Action: uevent.KOBJ_MOVE, DevPath: "\x0e", Env: []string{ + "V=\xfd", + "DEVPATH_OLD=\xff", + "SEQNUM=1", + }}, + }, map[string]*Object{ + "\x0f": {DevPath: "\x0f", Env: map[string]string{"V": "\xfc"}}, + "\x0e": {DevPath: "\x0e", Env: map[string]string{"V": "\xfd"}}, + }, nil, []error{ + MalformedMoveError{ + Action: uevent.KOBJ_MOVE, + DevPath: "\x0f", + Env: map[string]string{ + "V": "\xfc", + }, + }, + TargetError{ + Action: uevent.KOBJ_MOVE, + DevPath: "\x0e", + Env: map[string]string{ + "V": "\xfd", + "DEVPATH_OLD": "\xff", + }, + Sequence: 1, + }, + }}, + + {"offline", []*uevent.Message{ + {Action: uevent.KOBJ_ONLINE, DevPath: "\xfd", Env: []string{ + "V=\xff", + "SEQNUM=9", + }}, + {Action: uevent.KOBJ_OFFLINE, DevPath: "\xfd", Env: []string{ + "_V=\xfc", + "SEQNUM=10", + }}, + {Action: uevent.KOBJ_OFFLINE, DevPath: "\xfd", Env: []string{ + "SEQNUM=11", + }}, + {Action: uevent.KOBJ_OFFLINE, DevPath: "\xfc", Env: []string{ + "V=\xf0", + "SEQNUM=12", + }}, + }, map[string]*Object{ + "\xfd": { + Offline: true, + DevPath: "\xfd", + Env: map[string]string{"V": "\xff"}, + }, + "\xfc": { + Offline: true, + DevPath: "\xfc", + Env: map[string]string{"V": "\xf0"}, + }, + }, nil, []error{ + TargetError{ + Action: uevent.KOBJ_ONLINE, + DevPath: "\xfd", + Env: map[string]string{ + "V": "\xff", + }, + Sequence: 9, + }, + UnexpectedOfflineError{ + DevPath: "\xfd", + Env: map[string]string{ + "V": "\xff", + }, + }, + UnexpectedOfflineError{ + Offline: true, + DevPath: "\xfd", + Env: map[string]string{"V": "\xff"}, + }, + TargetError{ + Action: uevent.KOBJ_OFFLINE, + DevPath: "\xfc", + Env: map[string]string{"V": "\xf0"}, + Sequence: 12, + }, + }}, + + {"bind", []*uevent.Message{ + {Action: uevent.KOBJ_ADD, DevPath: "\x00", Env: []string{ + "V=\xff", + "DRIVER=\x00", + "SEQNUM=1", + }}, + {Action: uevent.KOBJ_UNBIND, DevPath: "\x00", Env: []string{ + "_V=\xfd", + "SEQNUM=2", + }}, + {Action: uevent.KOBJ_BIND, DevPath: "\x00", Env: []string{ + "__V=\xfc", + "SEQNUM=3", + }}, + {Action: uevent.KOBJ_BIND, DevPath: "\x00", Env: []string{ + "___V=\xfb", + "SEQNUM=4", + }}, + {Action: uevent.KOBJ_BIND, DevPath: "\x0c", Env: []string{ + "V=\xf0", + "DRIVER=\x01", + "SEQNUM=5", + }}, + }, map[string]*Object{ + "\x00": { + State: StateBound, + DevPath: "\x00", + Env: map[string]string{ + "V": "\xff", + // unbind not merged + "__V": "\xfc", + "___V": "\xfb", + }, + }, + "\f": { + State: StateBound, + DevPath: "\f", + Driver: "\x01", + Env: map[string]string{ + "V": "\xf0", + }, + }}, nil, []error{ + UnbindStateError{ + State: StateNew, + DevPath: "\x00", + Env: map[string]string{"V": "\xff"}, + }, + BindStateError{ + State: StateBound, + DevPath: "\x00", + Env: map[string]string{"V": "\xff", "__V": "\xfc"}, + }, + TargetError{ + Action: uevent.KOBJ_BIND, + DevPath: "\f", + Env: map[string]string{"V": "\xf0", "DRIVER": "\x01"}, + Sequence: 5, + }, + }}, + + {"unbind", []*uevent.Message{ + {Action: uevent.KOBJ_UNBIND, DevPath: "\xfd", Env: []string{ + "SEQNUM=9", + }}, + }, map[string]*Object{}, nil, []error{ + TargetError{ + Action: uevent.KOBJ_UNBIND, + DevPath: "\xfd", + Env: map[string]string{}, + Sequence: 9, + }, + }}, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + var ( + c []map[string]string + errs []error + ) + s := New(coldboot, func(o *Object, env map[string]string) { + c = append(c, env) + }, func(err error) { + errs = append(errs, err) + }) + ueventVal := reflect.ValueOf(s).Elem().FieldByName("uevent") + got := reflect.NewAt(ueventVal.Type(), unsafe.Pointer(ueventVal.UnsafeAddr())). + Elem().Interface().(map[string]*Object) + + events := make(chan *uevent.Message, len(tc.messages)) + for _, m := range tc.messages { + events <- m + } + close(events) + s.Consume(t.Context(), events) + + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("Consume: %#v, want %#v", got, tc.want) + } + if !slices.EqualFunc(c, tc.c, maps.Equal) { + t.Errorf("Consume: c = %#v, want %#v", c, tc.c) + } + if !reflect.DeepEqual(errs, tc.errs) { + t.Errorf("Consume: errs = %#v, want %#v", errs, tc.errs) + } + }) + } +} + +func TestErrors(t *testing.T) { + t.Parallel() + + testCases := []struct { + name string + err error + want string + }{ + {"BadSequenceError", BadSequenceError{ + Got: 0xcafe, + Want: 0xbabe, + }, "SEQNUM=51966, want 47806"}, + + {"UnexpectedColdbootError", UnexpectedColdbootError{ + Action: 0xbeef, + }, "unexpected unsupported kobject_action 48879 coldboot event"}, + + {"DuplicateAddError", DuplicateAddError{ + Action: uevent.KOBJ_ADD, + DevPath: "\x00", + }, `duplicate add event on devpath "\x00"`}, + + {"TargetError", TargetError{ + Action: uevent.KOBJ_UNBIND, + DevPath: "\x00", + }, `unexpected unbind event on devpath "\x00"`}, + + {"RemoveStateError", RemoveStateError{ + State: StateBound, + DevPath: "\x00", + }, `remove event targeting devpath "\x00" in state 2`}, + + {"BindStateError", BindStateError{ + State: StateBound, + DevPath: "\x00", + }, `bind event targeting devpath "\x00" in state 2`}, + + {"UnbindStateError", UnbindStateError{ + State: StateNew, + DevPath: "\x00", + }, `unbind event targeting devpath "\x00" in state 1`}, + + {"MalformedMoveError", MalformedMoveError{ + DevPath: "\x00", + }, `move event targeting devpath "\x00" missing DEVPATH_OLD`}, + + {"UnexpectedOfflineError", UnexpectedOfflineError{ + DevPath: "\x00", + }, `online event targeting devpath "\x00"`}, + {"UnexpectedOfflineError offline", UnexpectedOfflineError{ + DevPath: "\x00", + Offline: true, + }, `offline event targeting devpath "\x00"`}, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + + if got := tc.err.Error(); got != tc.want { + t.Errorf("Error: %s, want %s", got, tc.want) + } + }) + } +} + +var ( + //go:embed testdata/00-coldboot + testdata00 string + //go:embed testdata/01-move + testdata01 string + //go:embed testdata/02-cpu + testdata02 string + //go:embed testdata/03-loop + testdata03 string + //go:embed testdata/04-loop-detach + testdata04 string + //go:embed testdata/05-loop-remove + testdata05 string +) + +func TestConsumeSample(t *testing.T) { + t.Parallel() + + steps := []struct { + name string + data string + want func(want map[string]*Object) + c []map[string]string + }{ + {"coldboot", testdata00, func(want map[string]*Object) { + maps.Copy(want, map[string]*Object{ + "/devices/LNXSYSTM:00": { + DevPath: "/devices/LNXSYSTM:00", + ModAlias: "acpi:LNXSYSTM:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXPWRBN:00": { + DevPath: "/devices/LNXSYSTM:00/LNXPWRBN:00", + ModAlias: "acpi:LNXPWRBN:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXPWRBN:00/wakeup/wakeup7": { + DevPath: "/devices/LNXSYSTM:00/LNXPWRBN:00/wakeup/wakeup7", + Subsystem: "wakeup", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00", + ModAlias: "acpi:LNXSYBUS:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00", + ModAlias: "acpi:ACPI0010:PNP0A05:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:00", + ModAlias: "acpi:LNXCPU:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0103:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0103:00", + ModAlias: "acpi:PNP0103:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00", + ModAlias: "acpi:PNP0A03:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:00", + ModAlias: "acpi:PNP0A06:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:01": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:01", + ModAlias: "acpi:PNP0A06:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:02": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:02", + ModAlias: "acpi:PNP0A06:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/QEMU0002:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/QEMU0002:00", + ModAlias: "acpi:QEMU0002:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:00", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:00/wakeup/wakeup0": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:00/wakeup/wakeup0", + Subsystem: "wakeup", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0303:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0303:00", + ModAlias: "acpi:PNP0303:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0400:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0400:00", + ModAlias: "acpi:PNP0400:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0501:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0501:00", + ModAlias: "acpi:PNP0501:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0700:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0700:00", + ModAlias: "acpi:PNP0700:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0700:00/device:02": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0700:00/device:02", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0B00:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0B00:00", + ModAlias: "acpi:PNP0B00:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0F13:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0F13:00", + ModAlias: "acpi:PNP0F13:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/wakeup/wakeup1": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/wakeup/wakeup1", + Subsystem: "wakeup", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:03": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:03", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:03/wakeup/wakeup2": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:03/wakeup/wakeup2", + Subsystem: "wakeup", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:04": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:04", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:04/wakeup/wakeup3": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:04/wakeup/wakeup3", + Subsystem: "wakeup", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:05": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:05", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:05/wakeup/wakeup4": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:05/wakeup/wakeup4", + Subsystem: "wakeup", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/wakeup/wakeup5": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/wakeup/wakeup5", + Subsystem: "wakeup", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/wakeup/wakeup8": { + State: StateNew, + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/wakeup/wakeup8", + Subsystem: "wakeup"}, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:09": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:09", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0a": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0a", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0b": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0b", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0c": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0c", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0d": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0d", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0e": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0e", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0f": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0f", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:10": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:10", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:11": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:11", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:12": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:12", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:13": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:13", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:14": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:14", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:15": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:15", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:16": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:16", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:17": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:17", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:18": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:18", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:19": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:19", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1a": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1a", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1b": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1b", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1c": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1c", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1d": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1d", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1e": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1e", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1f": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1f", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:20": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:20", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:21": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:21", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:22": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:22", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/wakeup/wakeup6": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/wakeup/wakeup6", + Subsystem: "wakeup", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:00": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:00", + ModAlias: "acpi:PNP0C0F:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:01": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:01", + ModAlias: "acpi:PNP0C0F:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:02": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:02", + ModAlias: "acpi:PNP0C0F:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:03": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:03", + ModAlias: "acpi:PNP0C0F:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:04": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:04", + ModAlias: "acpi:PNP0C0F:", + Subsystem: "acpi", + }, + "/devices/LNXSYSTM:00/LNXSYBUS:01": { + DevPath: "/devices/LNXSYSTM:00/LNXSYBUS:01", + ModAlias: "acpi:LNXSYBUS:", + Subsystem: "acpi", + }, + "/devices/breakpoint": { + DevPath: "/devices/breakpoint", + Subsystem: "event_source", + }, + "/devices/cpu": { + DevPath: "/devices/cpu", + Subsystem: "event_source", + }, + "/devices/kprobe": { + DevPath: "/devices/kprobe", + Subsystem: "event_source", + }, + "/devices/msr": { + DevPath: "/devices/msr", + Subsystem: "event_source", + }, + "/devices/pci0000:00/0000:00:00.0": { + DevPath: "/devices/pci0000:00/0000:00:00.0", + ModAlias: "pci:v00008086d00001237sv00001AF4sd00001100bc06sc00i00", + Subsystem: "pci", + Env: map[string]string{"PCI_CLASS": "60000", "PCI_ID": "8086:1237", "PCI_SLOT_NAME": "0000:00:00.0", "PCI_SUBSYS_ID": "1AF4:1100"}, + }, + "/devices/pci0000:00/0000:00:01.0": { + DevPath: "/devices/pci0000:00/0000:00:01.0", + ModAlias: "pci:v00008086d00007000sv00001AF4sd00001100bc06sc01i00", + Subsystem: "pci", + Env: map[string]string{"PCI_CLASS": "60100", "PCI_ID": "8086:7000", "PCI_SLOT_NAME": "0000:00:01.0", "PCI_SUBSYS_ID": "1AF4:1100"}, + }, + "/devices/pci0000:00/0000:00:01.1": { + DevPath: "/devices/pci0000:00/0000:00:01.1", + ModAlias: "pci:v00008086d00007010sv00001AF4sd00001100bc01sc01i80", + Driver: "ata_piix", + Subsystem: "pci", + Env: map[string]string{"PCI_CLASS": "10180", "PCI_ID": "8086:7010", "PCI_SLOT_NAME": "0000:00:01.1", "PCI_SUBSYS_ID": "1AF4:1100"}, + }, + "/devices/pci0000:00/0000:00:01.1/ata1/ata_port/ata1": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata1/ata_port/ata1", + Subsystem: "ata_port", + }, + "/devices/pci0000:00/0000:00:01.1/ata1/host0": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata1/host0", + Subsystem: "scsi", + Env: map[string]string{"DEVTYPE": "scsi_host"}, + }, + "/devices/pci0000:00/0000:00:01.1/ata1/host0/scsi_host/host0": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata1/host0/scsi_host/host0", + Subsystem: "scsi_host", + }, + "/devices/pci0000:00/0000:00:01.1/ata1/link1/ata_link/link1": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata1/link1/ata_link/link1", + Subsystem: "ata_link", + }, + "/devices/pci0000:00/0000:00:01.1/ata1/link1/dev1.0/ata_device/dev1.0": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata1/link1/dev1.0/ata_device/dev1.0", + Subsystem: "ata_device", + }, + "/devices/pci0000:00/0000:00:01.1/ata1/link1/dev1.1/ata_device/dev1.1": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata1/link1/dev1.1/ata_device/dev1.1", + Subsystem: "ata_device", + }, + "/devices/pci0000:00/0000:00:01.1/ata2/ata_port/ata2": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/ata_port/ata2", + Subsystem: "ata_port", + }, + "/devices/pci0000:00/0000:00:01.1/ata2/host1": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/host1", + Subsystem: "scsi", + Env: map[string]string{"DEVTYPE": "scsi_host"}, + }, + "/devices/pci0000:00/0000:00:01.1/ata2/host1/scsi_host/host1": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/host1/scsi_host/host1", + Subsystem: "scsi_host", + }, + "/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0", + Subsystem: "scsi", + Env: map[string]string{"DEVTYPE": "scsi_target"}, + }, + "/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0", + ModAlias: "scsi:t-0x05", + Subsystem: "scsi", + Env: map[string]string{"DEVTYPE": "scsi_device"}, + }, + "/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/bsg/1:0:0:0": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/bsg/1:0:0:0", + Subsystem: "bsg", + Env: map[string]string{"DEVNAME": "bsg/1:0:0:0", "MAJOR": "251", "MINOR": "0"}, + }, + "/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/scsi_device/1:0:0:0": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/scsi_device/1:0:0:0", + Subsystem: "scsi_device", + }, + "/devices/pci0000:00/0000:00:01.1/ata2/link2/ata_link/link2": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/link2/ata_link/link2", + Subsystem: "ata_link", + }, + "/devices/pci0000:00/0000:00:01.1/ata2/link2/dev2.0/ata_device/dev2.0": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/link2/dev2.0/ata_device/dev2.0", + Subsystem: "ata_device", + }, + "/devices/pci0000:00/0000:00:01.1/ata2/link2/dev2.1/ata_device/dev2.1": { + DevPath: "/devices/pci0000:00/0000:00:01.1/ata2/link2/dev2.1/ata_device/dev2.1", + Subsystem: "ata_device", + }, + "/devices/pci0000:00/0000:00:01.3": { + DevPath: "/devices/pci0000:00/0000:00:01.3", + ModAlias: "pci:v00008086d00007113sv00001AF4sd00001100bc06sc80i00", + Subsystem: "pci", + Env: map[string]string{"PCI_CLASS": "68000", "PCI_ID": "8086:7113", "PCI_SLOT_NAME": "0000:00:01.3", "PCI_SUBSYS_ID": "1AF4:1100"}, + }, + "/devices/pci0000:00/0000:00:02.0": { + DevPath: "/devices/pci0000:00/0000:00:02.0", + ModAlias: "pci:v00008086d0000100Esv00001AF4sd00001100bc02sc00i00", + Subsystem: "pci", + Env: map[string]string{"PCI_CLASS": "20000", "PCI_ID": "8086:100E", "PCI_SLOT_NAME": "0000:00:02.0", "PCI_SUBSYS_ID": "1AF4:1100"}, + }, + "/devices/pci0000:00/0000:00:03.0": { + DevPath: "/devices/pci0000:00/0000:00:03.0", + ModAlias: "pci:v00001AF4d00001001sv00001AF4sd00000002bc01sc00i00", + Driver: "virtio-pci", + Subsystem: "pci", + Env: map[string]string{"PCI_CLASS": "10000", "PCI_ID": "1AF4:1001", "PCI_SLOT_NAME": "0000:00:03.0", "PCI_SUBSYS_ID": "1AF4:0002"}, + }, + "/devices/pci0000:00/0000:00:03.0/virtio0": { + DevPath: "/devices/pci0000:00/0000:00:03.0/virtio0", + ModAlias: "virtio:d00000002v00001AF4", + Driver: "virtio_blk", + Subsystem: "virtio", + }, + "/devices/pci0000:00/0000:00:03.0/virtio0/block/vda": { + DevPath: "/devices/pci0000:00/0000:00:03.0/virtio0/block/vda", + Subsystem: "block", + Env: map[string]string{"DEVNAME": "vda", "DEVTYPE": "disk", "DISKSEQ": "1", "MAJOR": "254", "MINOR": "0"}, + }, + "/devices/pci0000:00/0000:00:04.0": { + State: 2, + DevPath: "/devices/pci0000:00/0000:00:04.0", + ModAlias: "pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00", + Driver: "virtio-pci", + Subsystem: "pci", + Env: map[string]string{"PCI_CLASS": "40100", "PCI_ID": "1AF4:1059", "PCI_SLOT_NAME": "0000:00:04.0", "PCI_SUBSYS_ID": "1AF4:1100"}}, + "/devices/pci0000:00/0000:00:04.0/virtio1": { + State: StateNew, + DevPath: "/devices/pci0000:00/0000:00:04.0/virtio1", + ModAlias: "virtio:d00000019v00001AF4", + Subsystem: "virtio"}, + "/devices/pci0000:00/QEMU0002:00": { + DevPath: "/devices/pci0000:00/QEMU0002:00", + ModAlias: "acpi:QEMU0002:", + Subsystem: "platform", + }, + "/devices/pci0000:00/pci_bus/0000:00": { + DevPath: "/devices/pci0000:00/pci_bus/0000:00", + Subsystem: "pci_bus", + }, + "/devices/platform/PNP0103:00": { + DevPath: "/devices/platform/PNP0103:00", + ModAlias: "acpi:PNP0103:", + Subsystem: "platform", + }, + "/devices/platform/pcspkr": { + DevPath: "/devices/platform/pcspkr", + ModAlias: "platform:pcspkr", + Subsystem: "platform", + }, + "/devices/platform/reg-dummy": { + DevPath: "/devices/platform/reg-dummy", + ModAlias: "platform:reg-dummy", + Driver: "reg-dummy", + Subsystem: "platform", + }, + "/devices/platform/reg-dummy/regulator/regulator.0": { + DevPath: "/devices/platform/reg-dummy/regulator/regulator.0", + Subsystem: "regulator", + }, + "/devices/platform/serial8250": { + DevPath: "/devices/platform/serial8250", + ModAlias: "platform:serial8250", + Driver: "serial8250", + Subsystem: "platform", + }, + "/devices/platform/serial8250/serial8250:0": { + DevPath: "/devices/platform/serial8250/serial8250:0", + Driver: "ctrl", + Subsystem: "serial-base", + Env: map[string]string{"DEVTYPE": "ctrl"}, + }, + "/devices/platform/serial8250/serial8250:0/serial8250:0.1": { + DevPath: "/devices/platform/serial8250/serial8250:0/serial8250:0.1", + Driver: "port", + Subsystem: "serial-base", + Env: map[string]string{"DEVTYPE": "port"}, + }, + "/devices/platform/serial8250/serial8250:0/serial8250:0.1/tty/ttyS1": { + DevPath: "/devices/platform/serial8250/serial8250:0/serial8250:0.1/tty/ttyS1", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "ttyS1", "MAJOR": "4", "MINOR": "65"}, + }, + "/devices/platform/serial8250/serial8250:0/serial8250:0.2": { + DevPath: "/devices/platform/serial8250/serial8250:0/serial8250:0.2", + Driver: "port", + Subsystem: "serial-base", + Env: map[string]string{"DEVTYPE": "port"}, + }, + "/devices/platform/serial8250/serial8250:0/serial8250:0.2/tty/ttyS2": { + DevPath: "/devices/platform/serial8250/serial8250:0/serial8250:0.2/tty/ttyS2", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "ttyS2", "MAJOR": "4", "MINOR": "66"}, + }, + "/devices/platform/serial8250/serial8250:0/serial8250:0.3": { + DevPath: "/devices/platform/serial8250/serial8250:0/serial8250:0.3", + Driver: "port", + Subsystem: "serial-base", + Env: map[string]string{"DEVTYPE": "port"}, + }, + "/devices/platform/serial8250/serial8250:0/serial8250:0.3/tty/ttyS3": { + DevPath: "/devices/platform/serial8250/serial8250:0/serial8250:0.3/tty/ttyS3", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "ttyS3", "MAJOR": "4", "MINOR": "67"}, + }, + "/devices/pnp0/00:00": { + DevPath: "/devices/pnp0/00:00", + Subsystem: "pnp", + }, + "/devices/pnp0/00:01": { + DevPath: "/devices/pnp0/00:01", + Subsystem: "pnp", + }, + "/devices/pnp0/00:02": { + DevPath: "/devices/pnp0/00:02", + Subsystem: "pnp", + }, + "/devices/pnp0/00:03": { + DevPath: "/devices/pnp0/00:03", + Subsystem: "pnp", + }, + "/devices/pnp0/00:04": { + DevPath: "/devices/pnp0/00:04", + Driver: "serial", + Subsystem: "pnp", + }, + "/devices/pnp0/00:04/00:04:0": { + DevPath: "/devices/pnp0/00:04/00:04:0", + Driver: "ctrl", + Subsystem: "serial-base", + Env: map[string]string{"DEVTYPE": "ctrl"}, + }, + "/devices/pnp0/00:04/00:04:0/00:04:0.0": { + DevPath: "/devices/pnp0/00:04/00:04:0/00:04:0.0", + Driver: "port", + Subsystem: "serial-base", + Env: map[string]string{"DEVTYPE": "port"}, + }, + "/devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0": { + DevPath: "/devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "ttyS0", "MAJOR": "4", "MINOR": "64"}, + }, + "/devices/pnp0/00:05": { + DevPath: "/devices/pnp0/00:05", + Subsystem: "pnp", + }, + "/devices/software": { + DevPath: "/devices/software", + Subsystem: "event_source", + }, + "/devices/system/clockevents/broadcast": { + DevPath: "/devices/system/clockevents/broadcast", + Subsystem: "clockevents", + }, + "/devices/system/clockevents/clockevent0": { + DevPath: "/devices/system/clockevents/clockevent0", + Subsystem: "clockevents", + }, + "/devices/system/clocksource/clocksource0": { + DevPath: "/devices/system/clocksource/clocksource0", + Subsystem: "clocksource", + }, + "/devices/system/container/PNP0A06:00": { + DevPath: "/devices/system/container/PNP0A06:00", + Subsystem: "container", + }, + "/devices/system/container/PNP0A06:01": { + DevPath: "/devices/system/container/PNP0A06:01", + Subsystem: "container", + }, + "/devices/system/container/PNP0A06:02": { + DevPath: "/devices/system/container/PNP0A06:02", + Subsystem: "container", + }, + "/devices/system/cpu/cpu0": { + DevPath: "/devices/system/cpu/cpu0", + ModAlias: "cpu:type:x86,ven0002fam000Fmod006B:feature:,0000,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0017,0018,0019,001A,0020,0022,0023,0024,0025,0026,0027,0028,0029,002B,002C,002D,002E,002F,0030,0031,0034,0037,0038,003D,0064,006E,0070,0074,0075,0076,0079,007A,007F,0080,008D,0095,009F,00C0,00C8,00ED,00F3,010F,0115,0165,016C,0282\n", + Driver: "processor", + Subsystem: "cpu", + }, + "/devices/system/machinecheck/machinecheck0": { + DevPath: "/devices/system/machinecheck/machinecheck0", + Subsystem: "machinecheck", + }, + "/devices/system/memory/memory0": { + DevPath: "/devices/system/memory/memory0", + Subsystem: "memory", + }, + "/devices/system/memory/memory1": { + DevPath: "/devices/system/memory/memory1", + Subsystem: "memory", + }, + "/devices/system/memory/memory2": { + DevPath: "/devices/system/memory/memory2", + Subsystem: "memory", + }, + "/devices/system/memory/memory3": { + DevPath: "/devices/system/memory/memory3", + Subsystem: "memory", + }, + "/devices/system/memory/memory4": { + DevPath: "/devices/system/memory/memory4", + Subsystem: "memory", + }, + "/devices/system/memory/memory5": { + DevPath: "/devices/system/memory/memory5", + Subsystem: "memory", + }, + "/devices/system/memory/memory6": { + DevPath: "/devices/system/memory/memory6", + Subsystem: "memory", + }, + "/devices/system/memory/memory7": { + DevPath: "/devices/system/memory/memory7", + Subsystem: "memory", + }, + "/devices/system/node/node0": { + DevPath: "/devices/system/node/node0", + Subsystem: "node", + }, + "/devices/tracepoint": { + DevPath: "/devices/tracepoint", + Subsystem: "event_source", + }, + "/devices/uprobe": { + DevPath: "/devices/uprobe", + Subsystem: "event_source", + }, + "/devices/virtual/bdi/254:0": { + DevPath: "/devices/virtual/bdi/254:0", + Subsystem: "bdi", + }, + "/devices/virtual/devlink/:ata2--scsi:1:0:0:0": { + DevPath: "/devices/virtual/devlink/:ata2--scsi:1:0:0:0", + Subsystem: "devlink", + }, + "/devices/virtual/dmi/id": { + DevPath: "/devices/virtual/dmi/id", + ModAlias: "dmi:bvnSeaBIOS:bvrrel-1.17.0-0-gb52ca86e094d-prebuilt.qemu.org:bd04/01/2014:br0.0:svnQEMU:pnStandardPC(i440FX+PIIX,1996):pvrpc-i440fx-10.1:cvnQEMU:ct1:cvrpc-i440fx-10.1:sku:", + Subsystem: "dmi", + }, + "/devices/virtual/mem/full": { + DevPath: "/devices/virtual/mem/full", + Subsystem: "mem", + Env: map[string]string{"DEVMODE": "0666", "DEVNAME": "full", "MAJOR": "1", "MINOR": "7"}, + }, + "/devices/virtual/mem/kmsg": { + DevPath: "/devices/virtual/mem/kmsg", + Subsystem: "mem", + Env: map[string]string{"DEVMODE": "0644", "DEVNAME": "kmsg", "MAJOR": "1", "MINOR": "11"}, + }, + "/devices/virtual/mem/mem": { + DevPath: "/devices/virtual/mem/mem", + Subsystem: "mem", + Env: map[string]string{"DEVNAME": "mem", "MAJOR": "1", "MINOR": "1"}, + }, + "/devices/virtual/mem/null": { + DevPath: "/devices/virtual/mem/null", + Subsystem: "mem", + Env: map[string]string{"DEVMODE": "0666", "DEVNAME": "null", "MAJOR": "1", "MINOR": "3"}, + }, + "/devices/virtual/mem/port": { + DevPath: "/devices/virtual/mem/port", + Subsystem: "mem", + Env: map[string]string{"DEVNAME": "port", "MAJOR": "1", "MINOR": "4"}, + }, + "/devices/virtual/mem/random": { + DevPath: "/devices/virtual/mem/random", + Subsystem: "mem", + Env: map[string]string{"DEVMODE": "0666", "DEVNAME": "random", "MAJOR": "1", "MINOR": "8"}, + }, + "/devices/virtual/mem/urandom": { + DevPath: "/devices/virtual/mem/urandom", + Subsystem: "mem", + Env: map[string]string{"DEVMODE": "0666", "DEVNAME": "urandom", "MAJOR": "1", "MINOR": "9"}, + }, + "/devices/virtual/mem/zero": { + DevPath: "/devices/virtual/mem/zero", + Subsystem: "mem", + Env: map[string]string{"DEVMODE": "0666", "DEVNAME": "zero", "MAJOR": "1", "MINOR": "5"}, + }, + "/devices/virtual/memory_tiering/memory_tier4": { + DevPath: "/devices/virtual/memory_tiering/memory_tier4", + Subsystem: "memory_tiering", + }, + "/devices/virtual/misc/cpu_dma_latency": { + DevPath: "/devices/virtual/misc/cpu_dma_latency", + Subsystem: "misc", + Env: map[string]string{"DEVNAME": "cpu_dma_latency", "MAJOR": "10", "MINOR": "259"}, + }, + "/devices/virtual/misc/hpet": { + DevPath: "/devices/virtual/misc/hpet", + Subsystem: "misc", + Env: map[string]string{"DEVNAME": "hpet", "MAJOR": "10", "MINOR": "228"}, + }, + "/devices/virtual/misc/snapshot": { + DevPath: "/devices/virtual/misc/snapshot", + Subsystem: "misc", + Env: map[string]string{"DEVNAME": "snapshot", "MAJOR": "10", "MINOR": "231"}, + }, + "/devices/virtual/misc/udmabuf": { + DevPath: "/devices/virtual/misc/udmabuf", + Subsystem: "misc", + Env: map[string]string{"DEVNAME": "udmabuf", "MAJOR": "10", "MINOR": "258"}, + }, + "/devices/virtual/misc/userfaultfd": { + DevPath: "/devices/virtual/misc/userfaultfd", + Subsystem: "misc", + Env: map[string]string{"DEVNAME": "userfaultfd", "MAJOR": "10", "MINOR": "257"}, + }, + "/devices/virtual/misc/vga_arbiter": { + DevPath: "/devices/virtual/misc/vga_arbiter", + Subsystem: "misc", + Env: map[string]string{"DEVNAME": "vga_arbiter", "MAJOR": "10", "MINOR": "256"}, + }, + "/devices/virtual/net/lo": { + DevPath: "/devices/virtual/net/lo", + Subsystem: "net", + Env: map[string]string{"IFINDEX": "1", "INTERFACE": "lo"}, + }, + "/devices/virtual/thermal/cooling_device0": { + DevPath: "/devices/virtual/thermal/cooling_device0", + Subsystem: "thermal", + }, + "/devices/virtual/tty/console": { + DevPath: "/devices/virtual/tty/console", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "console", "MAJOR": "5", "MINOR": "1"}, + }, + "/devices/virtual/tty/ptmx": { + DevPath: "/devices/virtual/tty/ptmx", + Subsystem: "tty", + Env: map[string]string{"DEVMODE": "0666", "DEVNAME": "ptmx", "MAJOR": "5", "MINOR": "2"}, + }, + "/devices/virtual/tty/tty": { + DevPath: "/devices/virtual/tty/tty", + Subsystem: "tty", + Env: map[string]string{"DEVMODE": "0666", "DEVNAME": "tty", "MAJOR": "5", "MINOR": "0"}, + }, + "/devices/virtual/tty/tty0": { + DevPath: "/devices/virtual/tty/tty0", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty0", "MAJOR": "4", "MINOR": "0"}, + }, + "/devices/virtual/tty/tty1": { + DevPath: "/devices/virtual/tty/tty1", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty1", "MAJOR": "4", "MINOR": "1"}, + }, + "/devices/virtual/tty/tty10": { + DevPath: "/devices/virtual/tty/tty10", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty10", "MAJOR": "4", "MINOR": "10"}, + }, + "/devices/virtual/tty/tty11": { + DevPath: "/devices/virtual/tty/tty11", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty11", "MAJOR": "4", "MINOR": "11"}, + }, + "/devices/virtual/tty/tty12": { + DevPath: "/devices/virtual/tty/tty12", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty12", "MAJOR": "4", "MINOR": "12"}, + }, + "/devices/virtual/tty/tty13": { + DevPath: "/devices/virtual/tty/tty13", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty13", "MAJOR": "4", "MINOR": "13"}, + }, + "/devices/virtual/tty/tty14": { + DevPath: "/devices/virtual/tty/tty14", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty14", "MAJOR": "4", "MINOR": "14"}, + }, + "/devices/virtual/tty/tty15": { + DevPath: "/devices/virtual/tty/tty15", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty15", "MAJOR": "4", "MINOR": "15"}, + }, + "/devices/virtual/tty/tty16": { + DevPath: "/devices/virtual/tty/tty16", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty16", "MAJOR": "4", "MINOR": "16"}, + }, + "/devices/virtual/tty/tty17": { + DevPath: "/devices/virtual/tty/tty17", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty17", "MAJOR": "4", "MINOR": "17"}, + }, + "/devices/virtual/tty/tty18": { + DevPath: "/devices/virtual/tty/tty18", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty18", "MAJOR": "4", "MINOR": "18"}, + }, + "/devices/virtual/tty/tty19": { + DevPath: "/devices/virtual/tty/tty19", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty19", "MAJOR": "4", "MINOR": "19"}, + }, + "/devices/virtual/tty/tty2": { + DevPath: "/devices/virtual/tty/tty2", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty2", "MAJOR": "4", "MINOR": "2"}, + }, + "/devices/virtual/tty/tty20": { + DevPath: "/devices/virtual/tty/tty20", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty20", "MAJOR": "4", "MINOR": "20"}, + }, + "/devices/virtual/tty/tty21": { + DevPath: "/devices/virtual/tty/tty21", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty21", "MAJOR": "4", "MINOR": "21"}, + }, + "/devices/virtual/tty/tty22": { + DevPath: "/devices/virtual/tty/tty22", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty22", "MAJOR": "4", "MINOR": "22"}, + }, + "/devices/virtual/tty/tty23": { + DevPath: "/devices/virtual/tty/tty23", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty23", "MAJOR": "4", "MINOR": "23"}, + }, + "/devices/virtual/tty/tty24": { + DevPath: "/devices/virtual/tty/tty24", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty24", "MAJOR": "4", "MINOR": "24"}, + }, + "/devices/virtual/tty/tty25": { + DevPath: "/devices/virtual/tty/tty25", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty25", "MAJOR": "4", "MINOR": "25"}, + }, + "/devices/virtual/tty/tty26": { + DevPath: "/devices/virtual/tty/tty26", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty26", "MAJOR": "4", "MINOR": "26"}, + }, + "/devices/virtual/tty/tty27": { + DevPath: "/devices/virtual/tty/tty27", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty27", "MAJOR": "4", "MINOR": "27"}, + }, + "/devices/virtual/tty/tty28": { + DevPath: "/devices/virtual/tty/tty28", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty28", "MAJOR": "4", "MINOR": "28"}, + }, + "/devices/virtual/tty/tty29": { + DevPath: "/devices/virtual/tty/tty29", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty29", "MAJOR": "4", "MINOR": "29"}, + }, + "/devices/virtual/tty/tty3": { + DevPath: "/devices/virtual/tty/tty3", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty3", "MAJOR": "4", "MINOR": "3"}, + }, + "/devices/virtual/tty/tty30": { + DevPath: "/devices/virtual/tty/tty30", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty30", "MAJOR": "4", "MINOR": "30"}, + }, + "/devices/virtual/tty/tty31": { + DevPath: "/devices/virtual/tty/tty31", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty31", "MAJOR": "4", "MINOR": "31"}, + }, + "/devices/virtual/tty/tty32": { + DevPath: "/devices/virtual/tty/tty32", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty32", "MAJOR": "4", "MINOR": "32"}, + }, + "/devices/virtual/tty/tty33": { + DevPath: "/devices/virtual/tty/tty33", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty33", "MAJOR": "4", "MINOR": "33"}, + }, + "/devices/virtual/tty/tty34": { + DevPath: "/devices/virtual/tty/tty34", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty34", "MAJOR": "4", "MINOR": "34"}, + }, + "/devices/virtual/tty/tty35": { + DevPath: "/devices/virtual/tty/tty35", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty35", "MAJOR": "4", "MINOR": "35"}, + }, + "/devices/virtual/tty/tty36": { + DevPath: "/devices/virtual/tty/tty36", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty36", "MAJOR": "4", "MINOR": "36"}, + }, + "/devices/virtual/tty/tty37": { + DevPath: "/devices/virtual/tty/tty37", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty37", "MAJOR": "4", "MINOR": "37"}, + }, + "/devices/virtual/tty/tty38": { + DevPath: "/devices/virtual/tty/tty38", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty38", "MAJOR": "4", "MINOR": "38"}, + }, + "/devices/virtual/tty/tty39": { + DevPath: "/devices/virtual/tty/tty39", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty39", "MAJOR": "4", "MINOR": "39"}, + }, + "/devices/virtual/tty/tty4": { + DevPath: "/devices/virtual/tty/tty4", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty4", "MAJOR": "4", "MINOR": "4"}, + }, + "/devices/virtual/tty/tty40": { + DevPath: "/devices/virtual/tty/tty40", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty40", "MAJOR": "4", "MINOR": "40"}, + }, + "/devices/virtual/tty/tty41": { + DevPath: "/devices/virtual/tty/tty41", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty41", "MAJOR": "4", "MINOR": "41"}, + }, + "/devices/virtual/tty/tty42": { + DevPath: "/devices/virtual/tty/tty42", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty42", "MAJOR": "4", "MINOR": "42"}, + }, + "/devices/virtual/tty/tty43": { + DevPath: "/devices/virtual/tty/tty43", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty43", "MAJOR": "4", "MINOR": "43"}, + }, + "/devices/virtual/tty/tty44": { + DevPath: "/devices/virtual/tty/tty44", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty44", "MAJOR": "4", "MINOR": "44"}, + }, + "/devices/virtual/tty/tty45": { + DevPath: "/devices/virtual/tty/tty45", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty45", "MAJOR": "4", "MINOR": "45"}, + }, + "/devices/virtual/tty/tty46": { + DevPath: "/devices/virtual/tty/tty46", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty46", "MAJOR": "4", "MINOR": "46"}, + }, + "/devices/virtual/tty/tty47": { + DevPath: "/devices/virtual/tty/tty47", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty47", "MAJOR": "4", "MINOR": "47"}, + }, + "/devices/virtual/tty/tty48": { + DevPath: "/devices/virtual/tty/tty48", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty48", "MAJOR": "4", "MINOR": "48"}, + }, + "/devices/virtual/tty/tty49": { + DevPath: "/devices/virtual/tty/tty49", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty49", "MAJOR": "4", "MINOR": "49"}, + }, + "/devices/virtual/tty/tty5": { + DevPath: "/devices/virtual/tty/tty5", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty5", "MAJOR": "4", "MINOR": "5"}, + }, + "/devices/virtual/tty/tty50": { + DevPath: "/devices/virtual/tty/tty50", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty50", "MAJOR": "4", "MINOR": "50"}, + }, + "/devices/virtual/tty/tty51": { + DevPath: "/devices/virtual/tty/tty51", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty51", "MAJOR": "4", "MINOR": "51"}, + }, + "/devices/virtual/tty/tty52": { + DevPath: "/devices/virtual/tty/tty52", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty52", "MAJOR": "4", "MINOR": "52"}, + }, + "/devices/virtual/tty/tty53": { + DevPath: "/devices/virtual/tty/tty53", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty53", "MAJOR": "4", "MINOR": "53"}, + }, + "/devices/virtual/tty/tty54": { + DevPath: "/devices/virtual/tty/tty54", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty54", "MAJOR": "4", "MINOR": "54"}, + }, + "/devices/virtual/tty/tty55": { + DevPath: "/devices/virtual/tty/tty55", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty55", "MAJOR": "4", "MINOR": "55"}, + }, + "/devices/virtual/tty/tty56": { + DevPath: "/devices/virtual/tty/tty56", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty56", "MAJOR": "4", "MINOR": "56"}, + }, + "/devices/virtual/tty/tty57": { + DevPath: "/devices/virtual/tty/tty57", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty57", "MAJOR": "4", "MINOR": "57"}, + }, + "/devices/virtual/tty/tty58": { + DevPath: "/devices/virtual/tty/tty58", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty58", "MAJOR": "4", "MINOR": "58"}, + }, + "/devices/virtual/tty/tty59": { + DevPath: "/devices/virtual/tty/tty59", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty59", "MAJOR": "4", "MINOR": "59"}, + }, + "/devices/virtual/tty/tty6": { + DevPath: "/devices/virtual/tty/tty6", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty6", "MAJOR": "4", "MINOR": "6"}, + }, + "/devices/virtual/tty/tty60": { + DevPath: "/devices/virtual/tty/tty60", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty60", "MAJOR": "4", "MINOR": "60"}, + }, + "/devices/virtual/tty/tty61": { + DevPath: "/devices/virtual/tty/tty61", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty61", "MAJOR": "4", "MINOR": "61"}, + }, + "/devices/virtual/tty/tty62": { + DevPath: "/devices/virtual/tty/tty62", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty62", "MAJOR": "4", "MINOR": "62"}, + }, + "/devices/virtual/tty/tty63": { + DevPath: "/devices/virtual/tty/tty63", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty63", "MAJOR": "4", "MINOR": "63"}, + }, + "/devices/virtual/tty/tty7": { + DevPath: "/devices/virtual/tty/tty7", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty7", "MAJOR": "4", "MINOR": "7"}, + }, + "/devices/virtual/tty/tty8": { + DevPath: "/devices/virtual/tty/tty8", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty8", "MAJOR": "4", "MINOR": "8"}, + }, + "/devices/virtual/tty/tty9": { + DevPath: "/devices/virtual/tty/tty9", + Subsystem: "tty", + Env: map[string]string{"DEVNAME": "tty9", "MAJOR": "4", "MINOR": "9"}, + }, + "/devices/virtual/vc/vcs": { + DevPath: "/devices/virtual/vc/vcs", + Subsystem: "vc", + Env: map[string]string{"DEVNAME": "vcs", "MAJOR": "7", "MINOR": "0"}, + }, + "/devices/virtual/vc/vcs1": { + DevPath: "/devices/virtual/vc/vcs1", + Subsystem: "vc", + Env: map[string]string{"DEVNAME": "vcs1", "MAJOR": "7", "MINOR": "1"}, + }, + "/devices/virtual/vc/vcsa": { + DevPath: "/devices/virtual/vc/vcsa", + Subsystem: "vc", + Env: map[string]string{"DEVNAME": "vcsa", "MAJOR": "7", "MINOR": "128"}, + }, + "/devices/virtual/vc/vcsa1": { + DevPath: "/devices/virtual/vc/vcsa1", + Subsystem: "vc", + Env: map[string]string{"DEVNAME": "vcsa1", "MAJOR": "7", "MINOR": "129"}, + }, + "/devices/virtual/vc/vcsu": { + DevPath: "/devices/virtual/vc/vcsu", + Subsystem: "vc", + Env: map[string]string{"DEVNAME": "vcsu", "MAJOR": "7", "MINOR": "64"}, + }, + "/devices/virtual/vc/vcsu1": { + DevPath: "/devices/virtual/vc/vcsu1", + Subsystem: "vc", + Env: map[string]string{"DEVNAME": "vcsu1", "MAJOR": "7", "MINOR": "65"}, + }, + "/devices/virtual/vtconsole/vtcon0": { + DevPath: "/devices/virtual/vtconsole/vtcon0", + Subsystem: "vtconsole", + }, + "/devices/virtual/workqueue/nvme-auth-wq": { + DevPath: "/devices/virtual/workqueue/nvme-auth-wq", + Subsystem: "workqueue", + }, + "/devices/virtual/workqueue/nvme-delete-wq": { + DevPath: "/devices/virtual/workqueue/nvme-delete-wq", + Subsystem: "workqueue", + }, + "/devices/virtual/workqueue/nvme-reset-wq": { + DevPath: "/devices/virtual/workqueue/nvme-reset-wq", + Subsystem: "workqueue", + }, + "/devices/virtual/workqueue/nvme-wq": { + DevPath: "/devices/virtual/workqueue/nvme-wq", + Subsystem: "workqueue", + }, + "/devices/virtual/workqueue/scsi_tmf_0": { + DevPath: "/devices/virtual/workqueue/scsi_tmf_0", + Subsystem: "workqueue", + }, + "/devices/virtual/workqueue/scsi_tmf_1": { + DevPath: "/devices/virtual/workqueue/scsi_tmf_1", + Subsystem: "workqueue", + }, + "/devices/virtual/workqueue/writeback": { + DevPath: "/devices/virtual/workqueue/writeback", + Subsystem: "workqueue"}}) + }, nil}, + + {"move", testdata01, func(want map[string]*Object) { + o := want["/devices/virtual/net/lo"].Clone() + delete(want, "/devices/virtual/net/lo") + o.DevPath = "/devices/virtual/net/_lo" + o.Env["INTERFACE"] = "_lo" + want["/devices/virtual/net/_lo"] = &o + }, nil}, + + {"cpu", testdata02, func(want map[string]*Object) { + o := want["/devices/system/machinecheck/machinecheck0"].Clone() + o.State = StateNew + want["/devices/system/machinecheck/machinecheck0"] = &o + }, nil}, + + {"loop", testdata03, func(want map[string]*Object) { + maps.Copy(want, map[string]*Object{ + "/devices/virtual/bdi/7:0": { + State: StateNew, + DevPath: "/devices/virtual/bdi/7:0", + Subsystem: "bdi", + }, + "/devices/virtual/bdi/7:1": { + State: StateNew, + DevPath: "/devices/virtual/bdi/7:1", + Subsystem: "bdi", + }, + "/devices/virtual/bdi/7:2": { + State: StateNew, + DevPath: "/devices/virtual/bdi/7:2", + Subsystem: "bdi", + }, + "/devices/virtual/bdi/7:3": { + State: StateNew, + DevPath: "/devices/virtual/bdi/7:3", + Subsystem: "bdi", + }, + "/devices/virtual/bdi/7:4": { + State: StateNew, + DevPath: "/devices/virtual/bdi/7:4", + Subsystem: "bdi", + }, + "/devices/virtual/bdi/7:5": { + State: StateNew, + DevPath: "/devices/virtual/bdi/7:5", + Subsystem: "bdi", + }, + "/devices/virtual/bdi/7:6": { + State: StateNew, + DevPath: "/devices/virtual/bdi/7:6", + Subsystem: "bdi", + }, + "/devices/virtual/bdi/7:7": { + State: StateNew, + DevPath: "/devices/virtual/bdi/7:7", + Subsystem: "bdi", + }, + + "/devices/virtual/block/loop0": { + State: StateNew, + DevPath: "/devices/virtual/block/loop0", + Subsystem: "block", + Env: map[string]string{ + "DEVNAME": "loop0", + "DEVTYPE": "disk", + "DISKSEQ": "10", + "MAJOR": "7", + "MINOR": "0", + }, + }, + "/devices/virtual/block/loop1": { + State: StateNew, + DevPath: "/devices/virtual/block/loop1", + Subsystem: "block", + Env: map[string]string{ + "DEVNAME": "loop1", + "DEVTYPE": "disk", + "DISKSEQ": "3", + "MAJOR": "7", + "MINOR": "1", + }, + }, + "/devices/virtual/block/loop2": { + State: StateNew, + DevPath: "/devices/virtual/block/loop2", + Subsystem: "block", + Env: map[string]string{ + "DEVNAME": "loop2", + "DEVTYPE": "disk", + "DISKSEQ": "4", + "MAJOR": "7", + "MINOR": "2", + }, + }, + "/devices/virtual/block/loop3": { + State: StateNew, + DevPath: "/devices/virtual/block/loop3", + Subsystem: "block", + Env: map[string]string{ + "DEVNAME": "loop3", + "DEVTYPE": "disk", + "DISKSEQ": "5", + "MAJOR": "7", + "MINOR": "3", + }, + }, + "/devices/virtual/block/loop4": { + State: StateNew, + DevPath: "/devices/virtual/block/loop4", + Subsystem: "block", + Env: map[string]string{ + "DEVNAME": "loop4", + "DEVTYPE": "disk", + "DISKSEQ": "6", + "MAJOR": "7", + "MINOR": "4", + }, + }, + "/devices/virtual/block/loop5": { + State: StateNew, + DevPath: "/devices/virtual/block/loop5", + Subsystem: "block", + Env: map[string]string{ + "DEVNAME": "loop5", + "DEVTYPE": "disk", + "DISKSEQ": "7", + "MAJOR": "7", + "MINOR": "5", + }, + }, + "/devices/virtual/block/loop6": { + State: StateNew, + DevPath: "/devices/virtual/block/loop6", + Subsystem: "block", + Env: map[string]string{ + "DEVNAME": "loop6", + "DEVTYPE": "disk", + "DISKSEQ": "8", + "MAJOR": "7", + "MINOR": "6", + }, + }, + "/devices/virtual/block/loop7": { + State: StateNew, + DevPath: "/devices/virtual/block/loop7", + Subsystem: "block", + Env: map[string]string{ + "DEVNAME": "loop7", + "DEVTYPE": "disk", + "DISKSEQ": "9", + "MAJOR": "7", + "MINOR": "7", + }, + }, + "/devices/virtual/misc/loop-control": { + State: StateNew, + DevPath: "/devices/virtual/misc/loop-control", + Subsystem: "misc", + Env: map[string]string{ + "DEVNAME": "loop-control", + "MAJOR": "10", + "MINOR": "237", + }, + }, + + "/module/loop": { + State: StateNew, + DevPath: "/module/loop", + Subsystem: "module", + }, + }) + }, []map[string]string{{}}}, + + {"loop-detach", testdata04, nil, []map[string]string{ + {}, + {"DISK_MEDIA_CHANGE": "1"}, + }}, + + {"loop-remove", testdata05, func(want map[string]*Object) { + for _, k := range []string{ + "/devices/virtual/misc/loop-control", + "/devices/virtual/bdi/7:0", + "/devices/virtual/block/loop0", + "/devices/virtual/bdi/7:1", + "/devices/virtual/block/loop1", + "/devices/virtual/bdi/7:2", + "/devices/virtual/block/loop2", + "/devices/virtual/bdi/7:3", + "/devices/virtual/block/loop3", + "/devices/virtual/bdi/7:4", + "/devices/virtual/block/loop4", + "/devices/virtual/bdi/7:5", + "/devices/virtual/block/loop5", + "/devices/virtual/bdi/7:6", + "/devices/virtual/block/loop6", + "/devices/virtual/bdi/7:7", + "/devices/virtual/block/loop7", + "/module/loop", + } { + delete(want, k) + } + }, nil}, + } + var c []map[string]string + s := New(uevent.UUID{ + 0xfe, 0x4d, 0x7c, 0x9d, + 0xb8, 0xc6, + 0x4a, 0x70, + 0x9e, 0xf1, + 0x3d, 0x8a, 0x58, 0xd1, 0x8e, 0xed, + }, func(o *Object, env map[string]string) { + c = append(c, env) + }, func(err error) { + t.Fatal(err) + }) + ueventVal := reflect.ValueOf(s).Elem().FieldByName("uevent") + got := reflect.NewAt(ueventVal.Type(), unsafe.Pointer(ueventVal.UnsafeAddr())). + Elem().Interface().(map[string]*Object) + want := make(map[string]*Object) + for _, step := range steps { + if step.want != nil { + step.want(want) + } + events := make(chan *uevent.Message) + go func() { + defer close(events) + d := json.NewDecoder(strings.NewReader(step.data)) + for { + var m uevent.Message + if err := d.Decode(&m); err != nil { + if err == io.EOF { + break + } + panic(err) + } + events <- &m + } + }() + + s.Consume(t.Context(), events) + if !reflect.DeepEqual(got, want) { + t.Fatalf("%s: %#v, want %#v", step.name, got, want) + } + if !slices.EqualFunc(c, step.c, maps.Equal) { + t.Fatalf("%s: c = %#v, want %#v", step.name, c, step.c) + } + c = nil + } +} diff --git a/internal/kobject/testdata/00-coldboot b/internal/kobject/testdata/00-coldboot new file mode 100644 index 00000000..608fe2e7 --- /dev/null +++ b/internal/kobject/testdata/00-coldboot @@ -0,0 +1,266 @@ +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXPWRBN:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXPWRBN:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:LNXPWRBN:","SEQNUM=777"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXPWRBN:00/wakeup/wakeup7","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXPWRBN:00/wakeup/wakeup7","SUBSYSTEM=wakeup","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=778"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00/LNXCPU:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:LNXCPU:","SEQNUM=779"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0010:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:ACPI0010:PNP0A05:","SEQNUM=780"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0103:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0103:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0103:","SEQNUM=781"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0A06:","SEQNUM=782"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:01","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:01","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0A06:","SEQNUM=783"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:02","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/PNP0A06:02","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0A06:","SEQNUM=784"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/QEMU0002:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/QEMU0002:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:QEMU0002:","SEQNUM=785"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=786"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:00/wakeup/wakeup0","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:00/wakeup/wakeup0","SUBSYSTEM=wakeup","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=787"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0303:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0303:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0303:","SEQNUM=788"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0400:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0400:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0400:","SEQNUM=789"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0501:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0501:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0501:","SEQNUM=790"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0700:00/device:02","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0700:00/device:02","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=791"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0700:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0700:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0700:","SEQNUM=792"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0B00:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0B00:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0B00:","SEQNUM=793"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0F13:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/PNP0F13:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0F13:","SEQNUM=794"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=795"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/wakeup/wakeup1","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:01/wakeup/wakeup1","SUBSYSTEM=wakeup","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=796"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:03","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:03","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=797"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:03/wakeup/wakeup2","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:03/wakeup/wakeup2","SUBSYSTEM=wakeup","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=798"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:04","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:04","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=799"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:04/wakeup/wakeup3","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:04/wakeup/wakeup3","SUBSYSTEM=wakeup","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=800"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:05","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:05","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=801"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:05/wakeup/wakeup4","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:05/wakeup/wakeup4","SUBSYSTEM=wakeup","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=802"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=803"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/wakeup/wakeup5","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:06/wakeup/wakeup5","SUBSYSTEM=wakeup","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=804"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=805"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=806"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:09","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:09","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=807"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0a","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0a","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=808"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0b","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0b","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=809"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0c","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0c","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=810"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0d","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0d","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=811"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0e","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0e","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=812"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0f","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:0f","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=813"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:10","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:10","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=814"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:11","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:11","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=815"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:12","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:12","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=816"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:13","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:13","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=817"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:14","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:14","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=818"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:15","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:15","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=819"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:16","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:16","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=820"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:17","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:17","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=821"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:18","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:18","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=822"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:19","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:19","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=823"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1a","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1a","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=824"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1b","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1b","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=825"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1c","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1c","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=826"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1d","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1d","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=827"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1e","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1e","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=828"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1f","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:1f","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=829"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:20","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:20","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=830"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:21","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:21","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=831"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:22","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:22","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=832"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0A03:","SEQNUM=833"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/wakeup/wakeup6","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/wakeup/wakeup6","SUBSYSTEM=wakeup","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=834"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0C0F:","SEQNUM=835"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:01","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:01","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0C0F:","SEQNUM=836"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:02","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:02","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0C0F:","SEQNUM=837"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:03","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:03","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0C0F:","SEQNUM=838"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:04","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0F:04","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0C0F:","SEQNUM=839"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:LNXSYBUS:","SEQNUM=840"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:01","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:01","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:LNXSYBUS:","SEQNUM=841"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00","SUBSYSTEM=acpi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:LNXSYSTM:","SEQNUM=842"]} +{"action":"add","devpath":"/devices/breakpoint","env":["ACTION=add","DEVPATH=/devices/breakpoint","SUBSYSTEM=event_source","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=843"]} +{"action":"add","devpath":"/devices/cpu","env":["ACTION=add","DEVPATH=/devices/cpu","SUBSYSTEM=event_source","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=844"]} +{"action":"add","devpath":"/devices/kprobe","env":["ACTION=add","DEVPATH=/devices/kprobe","SUBSYSTEM=event_source","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=845"]} +{"action":"add","devpath":"/devices/msr","env":["ACTION=add","DEVPATH=/devices/msr","SUBSYSTEM=event_source","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=846"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:00.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:00.0","SUBSYSTEM=pci","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","PCI_CLASS=60000","PCI_ID=8086:1237","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:00.0","MODALIAS=pci:v00008086d00001237sv00001AF4sd00001100bc06sc00i00","SEQNUM=847"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.0","SUBSYSTEM=pci","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","PCI_CLASS=60100","PCI_ID=8086:7000","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:01.0","MODALIAS=pci:v00008086d00007000sv00001AF4sd00001100bc06sc01i00","SEQNUM=848"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata1/ata_port/ata1","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata1/ata_port/ata1","SUBSYSTEM=ata_port","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=849"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata1/host0/scsi_host/host0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata1/host0/scsi_host/host0","SUBSYSTEM=scsi_host","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=850"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata1/host0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata1/host0","SUBSYSTEM=scsi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=scsi_host","SEQNUM=851"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata1/link1/ata_link/link1","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata1/link1/ata_link/link1","SUBSYSTEM=ata_link","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=852"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata1/link1/dev1.0/ata_device/dev1.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata1/link1/dev1.0/ata_device/dev1.0","SUBSYSTEM=ata_device","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=853"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata1/link1/dev1.1/ata_device/dev1.1","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata1/link1/dev1.1/ata_device/dev1.1","SUBSYSTEM=ata_device","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=854"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/ata_port/ata2","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/ata_port/ata2","SUBSYSTEM=ata_port","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=855"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/host1/scsi_host/host1","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/host1/scsi_host/host1","SUBSYSTEM=scsi_host","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=856"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/bsg/1:0:0:0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/bsg/1:0:0:0","SUBSYSTEM=bsg","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=251","MINOR=0","DEVNAME=bsg/1:0:0:0","SEQNUM=857"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/scsi_device/1:0:0:0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0/scsi_device/1:0:0:0","SUBSYSTEM=scsi_device","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=858"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0/1:0:0:0","SUBSYSTEM=scsi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=scsi_device","MODALIAS=scsi:t-0x05","SEQNUM=859"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/host1/target1:0:0","SUBSYSTEM=scsi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=scsi_target","SEQNUM=860"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/host1","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/host1","SUBSYSTEM=scsi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=scsi_host","SEQNUM=861"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/link2/ata_link/link2","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/link2/ata_link/link2","SUBSYSTEM=ata_link","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=862"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/link2/dev2.0/ata_device/dev2.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/link2/dev2.0/ata_device/dev2.0","SUBSYSTEM=ata_device","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=863"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1/ata2/link2/dev2.1/ata_device/dev2.1","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1/ata2/link2/dev2.1/ata_device/dev2.1","SUBSYSTEM=ata_device","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=864"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.1","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.1","SUBSYSTEM=pci","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DRIVER=ata_piix","PCI_CLASS=10180","PCI_ID=8086:7010","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:01.1","MODALIAS=pci:v00008086d00007010sv00001AF4sd00001100bc01sc01i80","SEQNUM=865"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:01.3","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:01.3","SUBSYSTEM=pci","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","PCI_CLASS=68000","PCI_ID=8086:7113","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:01.3","MODALIAS=pci:v00008086d00007113sv00001AF4sd00001100bc06sc80i00","SEQNUM=866"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:02.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:02.0","SUBSYSTEM=pci","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","PCI_CLASS=20000","PCI_ID=8086:100E","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:02.0","MODALIAS=pci:v00008086d0000100Esv00001AF4sd00001100bc02sc00i00","SEQNUM=867"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:03.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:03.0","SUBSYSTEM=pci","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DRIVER=virtio-pci","PCI_CLASS=10000","PCI_ID=1AF4:1001","PCI_SUBSYS_ID=1AF4:0002","PCI_SLOT_NAME=0000:00:03.0","MODALIAS=pci:v00001AF4d00001001sv00001AF4sd00000002bc01sc00i00","SEQNUM=868"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:03.0/virtio0/block/vda","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:03.0/virtio0/block/vda","SUBSYSTEM=block","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=254","MINOR=0","DEVNAME=vda","DEVTYPE=disk","DISKSEQ=1","SEQNUM=869"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:03.0/virtio0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:03.0/virtio0","SUBSYSTEM=virtio","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DRIVER=virtio_blk","MODALIAS=virtio:d00000002v00001AF4","SEQNUM=870"]} +{"action":"add","devpath":"/devices/pci0000:00/QEMU0002:00","env":["ACTION=add","DEVPATH=/devices/pci0000:00/QEMU0002:00","SUBSYSTEM=platform","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:QEMU0002:","SEQNUM=871"]} +{"action":"add","devpath":"/devices/pci0000:00/pci_bus/0000:00","env":["ACTION=add","DEVPATH=/devices/pci0000:00/pci_bus/0000:00","SUBSYSTEM=pci_bus","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=872"]} +{"action":"add","devpath":"/devices/platform/PNP0103:00","env":["ACTION=add","DEVPATH=/devices/platform/PNP0103:00","SUBSYSTEM=platform","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=acpi:PNP0103:","SEQNUM=873"]} +{"action":"add","devpath":"/devices/platform/pcspkr","env":["ACTION=add","DEVPATH=/devices/platform/pcspkr","SUBSYSTEM=platform","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=platform:pcspkr","SEQNUM=874"]} +{"action":"add","devpath":"/devices/platform/reg-dummy/regulator/regulator.0","env":["ACTION=add","DEVPATH=/devices/platform/reg-dummy/regulator/regulator.0","SUBSYSTEM=regulator","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=875"]} +{"action":"add","devpath":"/devices/platform/reg-dummy","env":["ACTION=add","DEVPATH=/devices/platform/reg-dummy","SUBSYSTEM=platform","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DRIVER=reg-dummy","MODALIAS=platform:reg-dummy","SEQNUM=876"]} +{"action":"add","devpath":"/devices/platform/serial8250/serial8250:0/serial8250:0.1/tty/ttyS1","env":["ACTION=add","DEVPATH=/devices/platform/serial8250/serial8250:0/serial8250:0.1/tty/ttyS1","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=65","DEVNAME=ttyS1","SEQNUM=877"]} +{"action":"add","devpath":"/devices/platform/serial8250/serial8250:0/serial8250:0.1","env":["ACTION=add","DEVPATH=/devices/platform/serial8250/serial8250:0/serial8250:0.1","SUBSYSTEM=serial-base","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=port","DRIVER=port","SEQNUM=878"]} +{"action":"add","devpath":"/devices/platform/serial8250/serial8250:0/serial8250:0.2/tty/ttyS2","env":["ACTION=add","DEVPATH=/devices/platform/serial8250/serial8250:0/serial8250:0.2/tty/ttyS2","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=66","DEVNAME=ttyS2","SEQNUM=879"]} +{"action":"add","devpath":"/devices/platform/serial8250/serial8250:0/serial8250:0.2","env":["ACTION=add","DEVPATH=/devices/platform/serial8250/serial8250:0/serial8250:0.2","SUBSYSTEM=serial-base","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=port","DRIVER=port","SEQNUM=880"]} +{"action":"add","devpath":"/devices/platform/serial8250/serial8250:0/serial8250:0.3/tty/ttyS3","env":["ACTION=add","DEVPATH=/devices/platform/serial8250/serial8250:0/serial8250:0.3/tty/ttyS3","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=67","DEVNAME=ttyS3","SEQNUM=881"]} +{"action":"add","devpath":"/devices/platform/serial8250/serial8250:0/serial8250:0.3","env":["ACTION=add","DEVPATH=/devices/platform/serial8250/serial8250:0/serial8250:0.3","SUBSYSTEM=serial-base","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=port","DRIVER=port","SEQNUM=882"]} +{"action":"add","devpath":"/devices/platform/serial8250/serial8250:0","env":["ACTION=add","DEVPATH=/devices/platform/serial8250/serial8250:0","SUBSYSTEM=serial-base","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=ctrl","DRIVER=ctrl","SEQNUM=883"]} +{"action":"add","devpath":"/devices/platform/serial8250","env":["ACTION=add","DEVPATH=/devices/platform/serial8250","SUBSYSTEM=platform","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DRIVER=serial8250","MODALIAS=platform:serial8250","SEQNUM=884"]} +{"action":"add","devpath":"/devices/pnp0/00:00","env":["ACTION=add","DEVPATH=/devices/pnp0/00:00","SUBSYSTEM=pnp","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=885"]} +{"action":"add","devpath":"/devices/pnp0/00:01","env":["ACTION=add","DEVPATH=/devices/pnp0/00:01","SUBSYSTEM=pnp","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=886"]} +{"action":"add","devpath":"/devices/pnp0/00:02","env":["ACTION=add","DEVPATH=/devices/pnp0/00:02","SUBSYSTEM=pnp","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=887"]} +{"action":"add","devpath":"/devices/pnp0/00:03","env":["ACTION=add","DEVPATH=/devices/pnp0/00:03","SUBSYSTEM=pnp","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=888"]} +{"action":"add","devpath":"/devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0","env":["ACTION=add","DEVPATH=/devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=64","DEVNAME=ttyS0","SEQNUM=889"]} +{"action":"add","devpath":"/devices/pnp0/00:04/00:04:0/00:04:0.0","env":["ACTION=add","DEVPATH=/devices/pnp0/00:04/00:04:0/00:04:0.0","SUBSYSTEM=serial-base","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=port","DRIVER=port","SEQNUM=890"]} +{"action":"add","devpath":"/devices/pnp0/00:04/00:04:0","env":["ACTION=add","DEVPATH=/devices/pnp0/00:04/00:04:0","SUBSYSTEM=serial-base","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DEVTYPE=ctrl","DRIVER=ctrl","SEQNUM=891"]} +{"action":"add","devpath":"/devices/pnp0/00:04","env":["ACTION=add","DEVPATH=/devices/pnp0/00:04","SUBSYSTEM=pnp","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DRIVER=serial","SEQNUM=892"]} +{"action":"add","devpath":"/devices/pnp0/00:05","env":["ACTION=add","DEVPATH=/devices/pnp0/00:05","SUBSYSTEM=pnp","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=893"]} +{"action":"add","devpath":"/devices/software","env":["ACTION=add","DEVPATH=/devices/software","SUBSYSTEM=event_source","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=894"]} +{"action":"add","devpath":"/devices/system/clockevents/broadcast","env":["ACTION=add","DEVPATH=/devices/system/clockevents/broadcast","SUBSYSTEM=clockevents","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=895"]} +{"action":"add","devpath":"/devices/system/clockevents/clockevent0","env":["ACTION=add","DEVPATH=/devices/system/clockevents/clockevent0","SUBSYSTEM=clockevents","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=896"]} +{"action":"add","devpath":"/devices/system/clocksource/clocksource0","env":["ACTION=add","DEVPATH=/devices/system/clocksource/clocksource0","SUBSYSTEM=clocksource","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=897"]} +{"action":"add","devpath":"/devices/system/container/PNP0A06:00","env":["ACTION=add","DEVPATH=/devices/system/container/PNP0A06:00","SUBSYSTEM=container","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=898"]} +{"action":"add","devpath":"/devices/system/container/PNP0A06:01","env":["ACTION=add","DEVPATH=/devices/system/container/PNP0A06:01","SUBSYSTEM=container","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=899"]} +{"action":"add","devpath":"/devices/system/container/PNP0A06:02","env":["ACTION=add","DEVPATH=/devices/system/container/PNP0A06:02","SUBSYSTEM=container","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=900"]} +{"action":"add","devpath":"/devices/system/cpu/cpu0","env":["ACTION=add","DEVPATH=/devices/system/cpu/cpu0","SUBSYSTEM=cpu","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","DRIVER=processor","MODALIAS=cpu:type:x86,ven0002fam000Fmod006B:feature:,0000,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0017,0018,0019,001A,0020,0022,0023,0024,0025,0026,0027,0028,0029,002B,002C,002D,002E,002F,0030,0031,0034,0037,0038,003D,0064,006E,0070,0074,0075,0076,0079,007A,007F,0080,008D,0095,009F,00C0,00C8,00ED,00F3,010F,0115,0165,016C,0282\n","SEQNUM=901"]} +{"action":"add","devpath":"/devices/system/machinecheck/machinecheck0","env":["ACTION=add","DEVPATH=/devices/system/machinecheck/machinecheck0","SUBSYSTEM=machinecheck","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=902"]} +{"action":"add","devpath":"/devices/system/memory/memory0","env":["ACTION=add","DEVPATH=/devices/system/memory/memory0","SUBSYSTEM=memory","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=903"]} +{"action":"add","devpath":"/devices/system/memory/memory1","env":["ACTION=add","DEVPATH=/devices/system/memory/memory1","SUBSYSTEM=memory","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=904"]} +{"action":"add","devpath":"/devices/system/memory/memory2","env":["ACTION=add","DEVPATH=/devices/system/memory/memory2","SUBSYSTEM=memory","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=905"]} +{"action":"add","devpath":"/devices/system/memory/memory3","env":["ACTION=add","DEVPATH=/devices/system/memory/memory3","SUBSYSTEM=memory","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=906"]} +{"action":"add","devpath":"/devices/system/memory/memory4","env":["ACTION=add","DEVPATH=/devices/system/memory/memory4","SUBSYSTEM=memory","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=907"]} +{"action":"add","devpath":"/devices/system/memory/memory5","env":["ACTION=add","DEVPATH=/devices/system/memory/memory5","SUBSYSTEM=memory","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=908"]} +{"action":"add","devpath":"/devices/system/memory/memory6","env":["ACTION=add","DEVPATH=/devices/system/memory/memory6","SUBSYSTEM=memory","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=909"]} +{"action":"add","devpath":"/devices/system/memory/memory7","env":["ACTION=add","DEVPATH=/devices/system/memory/memory7","SUBSYSTEM=memory","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=910"]} +{"action":"add","devpath":"/devices/system/node/node0","env":["ACTION=add","DEVPATH=/devices/system/node/node0","SUBSYSTEM=node","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=911"]} +{"action":"add","devpath":"/devices/tracepoint","env":["ACTION=add","DEVPATH=/devices/tracepoint","SUBSYSTEM=event_source","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=912"]} +{"action":"add","devpath":"/devices/uprobe","env":["ACTION=add","DEVPATH=/devices/uprobe","SUBSYSTEM=event_source","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=913"]} +{"action":"add","devpath":"/devices/virtual/bdi/254:0","env":["ACTION=add","DEVPATH=/devices/virtual/bdi/254:0","SUBSYSTEM=bdi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=914"]} +{"action":"add","devpath":"/devices/virtual/devlink/:ata2--scsi:1:0:0:0","env":["ACTION=add","DEVPATH=/devices/virtual/devlink/:ata2--scsi:1:0:0:0","SUBSYSTEM=devlink","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=915"]} +{"action":"add","devpath":"/devices/virtual/dmi/id","env":["ACTION=add","DEVPATH=/devices/virtual/dmi/id","SUBSYSTEM=dmi","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MODALIAS=dmi:bvnSeaBIOS:bvrrel-1.17.0-0-gb52ca86e094d-prebuilt.qemu.org:bd04/01/2014:br0.0:svnQEMU:pnStandardPC(i440FX+PIIX,1996):pvrpc-i440fx-10.1:cvnQEMU:ct1:cvrpc-i440fx-10.1:sku:","SEQNUM=916"]} +{"action":"add","devpath":"/devices/virtual/mem/full","env":["ACTION=add","DEVPATH=/devices/virtual/mem/full","SUBSYSTEM=mem","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=1","MINOR=7","DEVNAME=full","DEVMODE=0666","SEQNUM=917"]} +{"action":"add","devpath":"/devices/virtual/mem/kmsg","env":["ACTION=add","DEVPATH=/devices/virtual/mem/kmsg","SUBSYSTEM=mem","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=1","MINOR=11","DEVNAME=kmsg","DEVMODE=0644","SEQNUM=918"]} +{"action":"add","devpath":"/devices/virtual/mem/mem","env":["ACTION=add","DEVPATH=/devices/virtual/mem/mem","SUBSYSTEM=mem","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=1","MINOR=1","DEVNAME=mem","SEQNUM=919"]} +{"action":"add","devpath":"/devices/virtual/mem/null","env":["ACTION=add","DEVPATH=/devices/virtual/mem/null","SUBSYSTEM=mem","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=1","MINOR=3","DEVNAME=null","DEVMODE=0666","SEQNUM=920"]} +{"action":"add","devpath":"/devices/virtual/mem/port","env":["ACTION=add","DEVPATH=/devices/virtual/mem/port","SUBSYSTEM=mem","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=1","MINOR=4","DEVNAME=port","SEQNUM=921"]} +{"action":"add","devpath":"/devices/virtual/mem/random","env":["ACTION=add","DEVPATH=/devices/virtual/mem/random","SUBSYSTEM=mem","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=1","MINOR=8","DEVNAME=random","DEVMODE=0666","SEQNUM=922"]} +{"action":"add","devpath":"/devices/virtual/mem/urandom","env":["ACTION=add","DEVPATH=/devices/virtual/mem/urandom","SUBSYSTEM=mem","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=1","MINOR=9","DEVNAME=urandom","DEVMODE=0666","SEQNUM=923"]} +{"action":"add","devpath":"/devices/virtual/mem/zero","env":["ACTION=add","DEVPATH=/devices/virtual/mem/zero","SUBSYSTEM=mem","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=1","MINOR=5","DEVNAME=zero","DEVMODE=0666","SEQNUM=924"]} +{"action":"add","devpath":"/devices/virtual/memory_tiering/memory_tier4","env":["ACTION=add","DEVPATH=/devices/virtual/memory_tiering/memory_tier4","SUBSYSTEM=memory_tiering","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=925"]} +{"action":"add","devpath":"/devices/virtual/misc/cpu_dma_latency","env":["ACTION=add","DEVPATH=/devices/virtual/misc/cpu_dma_latency","SUBSYSTEM=misc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=10","MINOR=259","DEVNAME=cpu_dma_latency","SEQNUM=926"]} +{"action":"add","devpath":"/devices/virtual/misc/hpet","env":["ACTION=add","DEVPATH=/devices/virtual/misc/hpet","SUBSYSTEM=misc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=10","MINOR=228","DEVNAME=hpet","SEQNUM=927"]} +{"action":"add","devpath":"/devices/virtual/misc/snapshot","env":["ACTION=add","DEVPATH=/devices/virtual/misc/snapshot","SUBSYSTEM=misc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=10","MINOR=231","DEVNAME=snapshot","SEQNUM=928"]} +{"action":"add","devpath":"/devices/virtual/misc/udmabuf","env":["ACTION=add","DEVPATH=/devices/virtual/misc/udmabuf","SUBSYSTEM=misc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=10","MINOR=258","DEVNAME=udmabuf","SEQNUM=929"]} +{"action":"add","devpath":"/devices/virtual/misc/userfaultfd","env":["ACTION=add","DEVPATH=/devices/virtual/misc/userfaultfd","SUBSYSTEM=misc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=10","MINOR=257","DEVNAME=userfaultfd","SEQNUM=930"]} +{"action":"add","devpath":"/devices/virtual/misc/vga_arbiter","env":["ACTION=add","DEVPATH=/devices/virtual/misc/vga_arbiter","SUBSYSTEM=misc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=10","MINOR=256","DEVNAME=vga_arbiter","SEQNUM=931"]} +{"action":"add","devpath":"/devices/virtual/net/lo","env":["ACTION=add","DEVPATH=/devices/virtual/net/lo","SUBSYSTEM=net","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","INTERFACE=lo","IFINDEX=1","SEQNUM=932"]} +{"action":"add","devpath":"/devices/virtual/thermal/cooling_device0","env":["ACTION=add","DEVPATH=/devices/virtual/thermal/cooling_device0","SUBSYSTEM=thermal","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=933"]} +{"action":"add","devpath":"/devices/virtual/tty/console","env":["ACTION=add","DEVPATH=/devices/virtual/tty/console","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=5","MINOR=1","DEVNAME=console","SEQNUM=934"]} +{"action":"add","devpath":"/devices/virtual/tty/ptmx","env":["ACTION=add","DEVPATH=/devices/virtual/tty/ptmx","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=5","MINOR=2","DEVNAME=ptmx","DEVMODE=0666","SEQNUM=935"]} +{"action":"add","devpath":"/devices/virtual/tty/tty","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=5","MINOR=0","DEVNAME=tty","DEVMODE=0666","SEQNUM=936"]} +{"action":"add","devpath":"/devices/virtual/tty/tty0","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty0","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=0","DEVNAME=tty0","SEQNUM=937"]} +{"action":"add","devpath":"/devices/virtual/tty/tty1","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty1","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=1","DEVNAME=tty1","SEQNUM=938"]} +{"action":"add","devpath":"/devices/virtual/tty/tty10","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty10","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=10","DEVNAME=tty10","SEQNUM=939"]} +{"action":"add","devpath":"/devices/virtual/tty/tty11","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty11","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=11","DEVNAME=tty11","SEQNUM=940"]} +{"action":"add","devpath":"/devices/virtual/tty/tty12","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty12","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=12","DEVNAME=tty12","SEQNUM=941"]} +{"action":"add","devpath":"/devices/virtual/tty/tty13","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty13","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=13","DEVNAME=tty13","SEQNUM=942"]} +{"action":"add","devpath":"/devices/virtual/tty/tty14","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty14","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=14","DEVNAME=tty14","SEQNUM=943"]} +{"action":"add","devpath":"/devices/virtual/tty/tty15","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty15","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=15","DEVNAME=tty15","SEQNUM=944"]} +{"action":"add","devpath":"/devices/virtual/tty/tty16","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty16","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=16","DEVNAME=tty16","SEQNUM=945"]} +{"action":"add","devpath":"/devices/virtual/tty/tty17","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty17","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=17","DEVNAME=tty17","SEQNUM=946"]} +{"action":"add","devpath":"/devices/virtual/tty/tty18","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty18","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=18","DEVNAME=tty18","SEQNUM=947"]} +{"action":"add","devpath":"/devices/virtual/tty/tty19","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty19","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=19","DEVNAME=tty19","SEQNUM=948"]} +{"action":"add","devpath":"/devices/virtual/tty/tty2","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty2","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=2","DEVNAME=tty2","SEQNUM=949"]} +{"action":"add","devpath":"/devices/virtual/tty/tty20","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty20","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=20","DEVNAME=tty20","SEQNUM=950"]} +{"action":"add","devpath":"/devices/virtual/tty/tty21","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty21","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=21","DEVNAME=tty21","SEQNUM=951"]} +{"action":"add","devpath":"/devices/virtual/tty/tty22","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty22","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=22","DEVNAME=tty22","SEQNUM=952"]} +{"action":"add","devpath":"/devices/virtual/tty/tty23","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty23","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=23","DEVNAME=tty23","SEQNUM=953"]} +{"action":"add","devpath":"/devices/virtual/tty/tty24","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty24","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=24","DEVNAME=tty24","SEQNUM=954"]} +{"action":"add","devpath":"/devices/virtual/tty/tty25","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty25","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=25","DEVNAME=tty25","SEQNUM=955"]} +{"action":"add","devpath":"/devices/virtual/tty/tty26","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty26","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=26","DEVNAME=tty26","SEQNUM=956"]} +{"action":"add","devpath":"/devices/virtual/tty/tty27","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty27","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=27","DEVNAME=tty27","SEQNUM=957"]} +{"action":"add","devpath":"/devices/virtual/tty/tty28","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty28","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=28","DEVNAME=tty28","SEQNUM=958"]} +{"action":"add","devpath":"/devices/virtual/tty/tty29","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty29","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=29","DEVNAME=tty29","SEQNUM=959"]} +{"action":"add","devpath":"/devices/virtual/tty/tty3","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty3","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=3","DEVNAME=tty3","SEQNUM=960"]} +{"action":"add","devpath":"/devices/virtual/tty/tty30","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty30","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=30","DEVNAME=tty30","SEQNUM=961"]} +{"action":"add","devpath":"/devices/virtual/tty/tty31","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty31","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=31","DEVNAME=tty31","SEQNUM=962"]} +{"action":"add","devpath":"/devices/virtual/tty/tty32","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty32","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=32","DEVNAME=tty32","SEQNUM=963"]} +{"action":"add","devpath":"/devices/virtual/tty/tty33","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty33","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=33","DEVNAME=tty33","SEQNUM=964"]} +{"action":"add","devpath":"/devices/virtual/tty/tty34","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty34","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=34","DEVNAME=tty34","SEQNUM=965"]} +{"action":"add","devpath":"/devices/virtual/tty/tty35","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty35","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=35","DEVNAME=tty35","SEQNUM=966"]} +{"action":"add","devpath":"/devices/virtual/tty/tty36","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty36","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=36","DEVNAME=tty36","SEQNUM=967"]} +{"action":"add","devpath":"/devices/virtual/tty/tty37","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty37","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=37","DEVNAME=tty37","SEQNUM=968"]} +{"action":"add","devpath":"/devices/virtual/tty/tty38","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty38","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=38","DEVNAME=tty38","SEQNUM=969"]} +{"action":"add","devpath":"/devices/virtual/tty/tty39","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty39","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=39","DEVNAME=tty39","SEQNUM=970"]} +{"action":"add","devpath":"/devices/virtual/tty/tty4","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty4","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=4","DEVNAME=tty4","SEQNUM=971"]} +{"action":"add","devpath":"/devices/virtual/tty/tty40","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty40","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=40","DEVNAME=tty40","SEQNUM=972"]} +{"action":"add","devpath":"/devices/virtual/tty/tty41","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty41","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=41","DEVNAME=tty41","SEQNUM=973"]} +{"action":"add","devpath":"/devices/virtual/tty/tty42","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty42","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=42","DEVNAME=tty42","SEQNUM=974"]} +{"action":"add","devpath":"/devices/virtual/tty/tty43","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty43","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=43","DEVNAME=tty43","SEQNUM=975"]} +{"action":"add","devpath":"/devices/virtual/tty/tty44","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty44","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=44","DEVNAME=tty44","SEQNUM=976"]} +{"action":"add","devpath":"/devices/virtual/tty/tty45","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty45","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=45","DEVNAME=tty45","SEQNUM=977"]} +{"action":"add","devpath":"/devices/virtual/tty/tty46","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty46","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=46","DEVNAME=tty46","SEQNUM=978"]} +{"action":"add","devpath":"/devices/virtual/tty/tty47","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty47","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=47","DEVNAME=tty47","SEQNUM=979"]} +{"action":"add","devpath":"/devices/virtual/tty/tty48","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty48","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=48","DEVNAME=tty48","SEQNUM=980"]} +{"action":"add","devpath":"/devices/virtual/tty/tty49","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty49","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=49","DEVNAME=tty49","SEQNUM=981"]} +{"action":"add","devpath":"/devices/virtual/tty/tty5","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty5","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=5","DEVNAME=tty5","SEQNUM=982"]} +{"action":"add","devpath":"/devices/virtual/tty/tty50","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty50","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=50","DEVNAME=tty50","SEQNUM=983"]} +{"action":"add","devpath":"/devices/virtual/tty/tty51","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty51","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=51","DEVNAME=tty51","SEQNUM=984"]} +{"action":"add","devpath":"/devices/virtual/tty/tty52","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty52","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=52","DEVNAME=tty52","SEQNUM=985"]} +{"action":"add","devpath":"/devices/virtual/tty/tty53","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty53","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=53","DEVNAME=tty53","SEQNUM=986"]} +{"action":"add","devpath":"/devices/virtual/tty/tty54","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty54","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=54","DEVNAME=tty54","SEQNUM=987"]} +{"action":"add","devpath":"/devices/virtual/tty/tty55","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty55","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=55","DEVNAME=tty55","SEQNUM=988"]} +{"action":"add","devpath":"/devices/virtual/tty/tty56","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty56","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=56","DEVNAME=tty56","SEQNUM=989"]} +{"action":"add","devpath":"/devices/virtual/tty/tty57","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty57","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=57","DEVNAME=tty57","SEQNUM=990"]} +{"action":"add","devpath":"/devices/virtual/tty/tty58","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty58","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=58","DEVNAME=tty58","SEQNUM=991"]} +{"action":"add","devpath":"/devices/virtual/tty/tty59","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty59","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=59","DEVNAME=tty59","SEQNUM=992"]} +{"action":"add","devpath":"/devices/virtual/tty/tty6","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty6","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=6","DEVNAME=tty6","SEQNUM=993"]} +{"action":"add","devpath":"/devices/virtual/tty/tty60","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty60","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=60","DEVNAME=tty60","SEQNUM=994"]} +{"action":"add","devpath":"/devices/virtual/tty/tty61","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty61","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=61","DEVNAME=tty61","SEQNUM=995"]} +{"action":"add","devpath":"/devices/virtual/tty/tty62","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty62","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=62","DEVNAME=tty62","SEQNUM=996"]} +{"action":"add","devpath":"/devices/virtual/tty/tty63","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty63","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=63","DEVNAME=tty63","SEQNUM=997"]} +{"action":"add","devpath":"/devices/virtual/tty/tty7","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty7","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=7","DEVNAME=tty7","SEQNUM=998"]} +{"action":"add","devpath":"/devices/virtual/tty/tty8","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty8","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=8","DEVNAME=tty8","SEQNUM=999"]} +{"action":"add","devpath":"/devices/virtual/tty/tty9","env":["ACTION=add","DEVPATH=/devices/virtual/tty/tty9","SUBSYSTEM=tty","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=4","MINOR=9","DEVNAME=tty9","SEQNUM=1000"]} +{"action":"add","devpath":"/devices/virtual/vc/vcs","env":["ACTION=add","DEVPATH=/devices/virtual/vc/vcs","SUBSYSTEM=vc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=7","MINOR=0","DEVNAME=vcs","SEQNUM=1001"]} +{"action":"add","devpath":"/devices/virtual/vc/vcs1","env":["ACTION=add","DEVPATH=/devices/virtual/vc/vcs1","SUBSYSTEM=vc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=7","MINOR=1","DEVNAME=vcs1","SEQNUM=1002"]} +{"action":"add","devpath":"/devices/virtual/vc/vcsa","env":["ACTION=add","DEVPATH=/devices/virtual/vc/vcsa","SUBSYSTEM=vc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=7","MINOR=128","DEVNAME=vcsa","SEQNUM=1003"]} +{"action":"add","devpath":"/devices/virtual/vc/vcsa1","env":["ACTION=add","DEVPATH=/devices/virtual/vc/vcsa1","SUBSYSTEM=vc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=7","MINOR=129","DEVNAME=vcsa1","SEQNUM=1004"]} +{"action":"add","devpath":"/devices/virtual/vc/vcsu","env":["ACTION=add","DEVPATH=/devices/virtual/vc/vcsu","SUBSYSTEM=vc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=7","MINOR=64","DEVNAME=vcsu","SEQNUM=1005"]} +{"action":"add","devpath":"/devices/virtual/vc/vcsu1","env":["ACTION=add","DEVPATH=/devices/virtual/vc/vcsu1","SUBSYSTEM=vc","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","MAJOR=7","MINOR=65","DEVNAME=vcsu1","SEQNUM=1006"]} +{"action":"add","devpath":"/devices/virtual/vtconsole/vtcon0","env":["ACTION=add","DEVPATH=/devices/virtual/vtconsole/vtcon0","SUBSYSTEM=vtconsole","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=1007"]} +{"action":"add","devpath":"/devices/virtual/workqueue/nvme-auth-wq","env":["ACTION=add","DEVPATH=/devices/virtual/workqueue/nvme-auth-wq","SUBSYSTEM=workqueue","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=1008"]} +{"action":"add","devpath":"/devices/virtual/workqueue/nvme-delete-wq","env":["ACTION=add","DEVPATH=/devices/virtual/workqueue/nvme-delete-wq","SUBSYSTEM=workqueue","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=1009"]} +{"action":"add","devpath":"/devices/virtual/workqueue/nvme-reset-wq","env":["ACTION=add","DEVPATH=/devices/virtual/workqueue/nvme-reset-wq","SUBSYSTEM=workqueue","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=1010"]} +{"action":"add","devpath":"/devices/virtual/workqueue/nvme-wq","env":["ACTION=add","DEVPATH=/devices/virtual/workqueue/nvme-wq","SUBSYSTEM=workqueue","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=1011"]} +{"action":"add","devpath":"/devices/virtual/workqueue/scsi_tmf_0","env":["ACTION=add","DEVPATH=/devices/virtual/workqueue/scsi_tmf_0","SUBSYSTEM=workqueue","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=1012"]} +{"action":"add","devpath":"/devices/virtual/workqueue/scsi_tmf_1","env":["ACTION=add","DEVPATH=/devices/virtual/workqueue/scsi_tmf_1","SUBSYSTEM=workqueue","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=1013"]} +{"action":"add","devpath":"/devices/virtual/workqueue/writeback","env":["ACTION=add","DEVPATH=/devices/virtual/workqueue/writeback","SUBSYSTEM=workqueue","SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed","SEQNUM=1014"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/wakeup/wakeup8","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/wakeup/wakeup8","SUBSYSTEM=wakeup","SEQNUM=1015"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:04.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:04.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:04.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1016"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:04.0/virtio1","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:04.0/virtio1","SUBSYSTEM=virtio","MODALIAS=virtio:d00000019v00001AF4","SEQNUM=1017"]} +{"action":"bind","devpath":"/devices/pci0000:00/0000:00:04.0","env":["ACTION=bind","DEVPATH=/devices/pci0000:00/0000:00:04.0","SUBSYSTEM=pci","DRIVER=virtio-pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:04.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1018"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08/wakeup/wakeup9","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08/wakeup/wakeup9","SUBSYSTEM=wakeup","SEQNUM=1019"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:05.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:05.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:05.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1020"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:05.0/virtio2","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:05.0/virtio2","SUBSYSTEM=virtio","MODALIAS=virtio:d00000019v00001AF4","SEQNUM=1021"]} +{"action":"bind","devpath":"/devices/pci0000:00/0000:00:05.0","env":["ACTION=bind","DEVPATH=/devices/pci0000:00/0000:00:05.0","SUBSYSTEM=pci","DRIVER=virtio-pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:05.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1022"]} +{"action":"remove","devpath":"/devices/pci0000:00/0000:00:04.0/virtio1","env":["ACTION=remove","DEVPATH=/devices/pci0000:00/0000:00:04.0/virtio1","SUBSYSTEM=virtio","MODALIAS=virtio:d00000019v00001AF4","SEQNUM=1023"]} +{"action":"unbind","devpath":"/devices/pci0000:00/0000:00:04.0","env":["ACTION=unbind","DEVPATH=/devices/pci0000:00/0000:00:04.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:04.0","SEQNUM=1024"]} +{"action":"remove","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/wakeup/wakeup8","env":["ACTION=remove","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/wakeup/wakeup8","SUBSYSTEM=wakeup","SEQNUM=1025"]} +{"action":"remove","devpath":"/devices/pci0000:00/0000:00:04.0","env":["ACTION=remove","DEVPATH=/devices/pci0000:00/0000:00:04.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:04.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1026"]} +{"action":"remove","devpath":"/devices/pci0000:00/0000:00:05.0/virtio2","env":["ACTION=remove","DEVPATH=/devices/pci0000:00/0000:00:05.0/virtio2","SUBSYSTEM=virtio","MODALIAS=virtio:d00000019v00001AF4","SEQNUM=1027"]} +{"action":"unbind","devpath":"/devices/pci0000:00/0000:00:05.0","env":["ACTION=unbind","DEVPATH=/devices/pci0000:00/0000:00:05.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:05.0","SEQNUM=1028"]} +{"action":"remove","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08/wakeup/wakeup9","env":["ACTION=remove","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08/wakeup/wakeup9","SUBSYSTEM=wakeup","SEQNUM=1029"]} +{"action":"remove","devpath":"/devices/pci0000:00/0000:00:05.0","env":["ACTION=remove","DEVPATH=/devices/pci0000:00/0000:00:05.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:05.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1030"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/wakeup/wakeup8","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/wakeup/wakeup8","SUBSYSTEM=wakeup","SEQNUM=1031"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:04.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:04.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:04.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1032"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:04.0/virtio1","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:04.0/virtio1","SUBSYSTEM=virtio","MODALIAS=virtio:d00000019v00001AF4","SEQNUM=1033"]} +{"action":"bind","devpath":"/devices/pci0000:00/0000:00:04.0","env":["ACTION=bind","DEVPATH=/devices/pci0000:00/0000:00:04.0","SUBSYSTEM=pci","DRIVER=virtio-pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:04.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1034"]} +{"action":"add","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08/wakeup/wakeup9","env":["ACTION=add","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08/wakeup/wakeup9","SUBSYSTEM=wakeup","SEQNUM=1035"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:05.0","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:05.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:05.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1036"]} +{"action":"add","devpath":"/devices/pci0000:00/0000:00:05.0/virtio2","env":["ACTION=add","DEVPATH=/devices/pci0000:00/0000:00:05.0/virtio2","SUBSYSTEM=virtio","MODALIAS=virtio:d00000019v00001AF4","SEQNUM=1037"]} +{"action":"bind","devpath":"/devices/pci0000:00/0000:00:05.0","env":["ACTION=bind","DEVPATH=/devices/pci0000:00/0000:00:05.0","SUBSYSTEM=pci","DRIVER=virtio-pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:05.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1038"]} +{"action":"remove","devpath":"/devices/pci0000:00/0000:00:05.0/virtio2","env":["ACTION=remove","DEVPATH=/devices/pci0000:00/0000:00:05.0/virtio2","SUBSYSTEM=virtio","MODALIAS=virtio:d00000019v00001AF4","SEQNUM=1039"]} +{"action":"unbind","devpath":"/devices/pci0000:00/0000:00:05.0","env":["ACTION=unbind","DEVPATH=/devices/pci0000:00/0000:00:05.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:05.0","SEQNUM=1040"]} +{"action":"remove","devpath":"/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08/wakeup/wakeup9","env":["ACTION=remove","DEVPATH=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:08/wakeup/wakeup9","SUBSYSTEM=wakeup","SEQNUM=1041"]} +{"action":"remove","devpath":"/devices/pci0000:00/0000:00:05.0","env":["ACTION=remove","DEVPATH=/devices/pci0000:00/0000:00:05.0","SUBSYSTEM=pci","PCI_CLASS=40100","PCI_ID=1AF4:1059","PCI_SUBSYS_ID=1AF4:1100","PCI_SLOT_NAME=0000:00:05.0","MODALIAS=pci:v00001AF4d00001059sv00001AF4sd00001100bc04sc01i00","SEQNUM=1042"]} diff --git a/internal/kobject/testdata/01-move b/internal/kobject/testdata/01-move new file mode 100644 index 00000000..5f1d6792 --- /dev/null +++ b/internal/kobject/testdata/01-move @@ -0,0 +1 @@ +{"action":"move","devpath":"/devices/virtual/net/_lo","env":["ACTION=move","DEVPATH=/devices/virtual/net/_lo","SUBSYSTEM=net","DEVPATH_OLD=/devices/virtual/net/lo","INTERFACE=_lo","IFINDEX=1","SEQNUM=1043"]} diff --git a/internal/kobject/testdata/02-cpu b/internal/kobject/testdata/02-cpu new file mode 100644 index 00000000..1bed5946 --- /dev/null +++ b/internal/kobject/testdata/02-cpu @@ -0,0 +1,8 @@ +{"action":"remove","devpath":"/devices/system/machinecheck/machinecheck0","env":["ACTION=remove","DEVPATH=/devices/system/machinecheck/machinecheck0","SUBSYSTEM=machinecheck","SEQNUM=1044"]} +{"action":"offline","devpath":"/devices/system/cpu/cpu0","env":["ACTION=offline","DEVPATH=/devices/system/cpu/cpu0","SUBSYSTEM=cpu","DRIVER=processor","MODALIAS=cpu:type:x86,ven0002fam000Fmod006B:feature:,0000,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0017,0018,0019,001A,001C,0020,0022,0023,0024,0025,0026,0027,0028,0029,002B,002C,002D,002E,002F,0030,0031,0034,0037,0038,003D,0064,006E,0070,0074,0075,0076,0079,007A,007F,0080,008D,0095,009F,00C0,00C1,00C8,00ED,00F3,010F,0115,0165,016C,0282\n","SEQNUM=1045"]} +{"action":"add","devpath":"/devices/system/machinecheck/machinecheck0","env":["ACTION=add","DEVPATH=/devices/system/machinecheck/machinecheck0","SUBSYSTEM=machinecheck","SEQNUM=1046"]} +{"action":"online","devpath":"/devices/system/cpu/cpu0","env":["ACTION=online","DEVPATH=/devices/system/cpu/cpu0","SUBSYSTEM=cpu","DRIVER=processor","MODALIAS=cpu:type:x86,ven0002fam000Fmod006B:feature:,0000,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0017,0018,0019,001A,001C,0020,0022,0023,0024,0025,0026,0027,0028,0029,002B,002C,002D,002E,002F,0030,0031,0034,0037,0038,003D,0064,006E,0070,0074,0075,0076,0079,007A,007F,0080,008D,0095,009F,00C0,00C1,00C8,00ED,00F3,010F,0115,0165,016C,0282\n","SEQNUM=1047"]} +{"action":"remove","devpath":"/devices/system/machinecheck/machinecheck0","env":["ACTION=remove","DEVPATH=/devices/system/machinecheck/machinecheck0","SUBSYSTEM=machinecheck","SEQNUM=1048"]} +{"action":"offline","devpath":"/devices/system/cpu/cpu0","env":["ACTION=offline","DEVPATH=/devices/system/cpu/cpu0","SUBSYSTEM=cpu","DRIVER=processor","MODALIAS=cpu:type:x86,ven0002fam000Fmod006B:feature:,0000,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0017,0018,0019,001A,001C,0020,0022,0023,0024,0025,0026,0027,0028,0029,002B,002C,002D,002E,002F,0030,0031,0034,0037,0038,003D,0064,006E,0070,0074,0075,0076,0079,007A,007F,0080,008D,0095,009F,00C0,00C1,00C8,00ED,00F3,010F,0115,0165,016C,0282\n","SEQNUM=1049"]} +{"action":"add","devpath":"/devices/system/machinecheck/machinecheck0","env":["ACTION=add","DEVPATH=/devices/system/machinecheck/machinecheck0","SUBSYSTEM=machinecheck","SEQNUM=1050"]} +{"action":"online","devpath":"/devices/system/cpu/cpu0","env":["ACTION=online","DEVPATH=/devices/system/cpu/cpu0","SUBSYSTEM=cpu","DRIVER=processor","MODALIAS=cpu:type:x86,ven0002fam000Fmod006B:feature:,0000,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0017,0018,0019,001A,001C,0020,0022,0023,0024,0025,0026,0027,0028,0029,002B,002C,002D,002E,002F,0030,0031,0034,0037,0038,003D,0064,006E,0070,0074,0075,0076,0079,007A,007F,0080,008D,0095,009F,00C0,00C1,00C8,00ED,00F3,010F,0115,0165,016C,0282\n","SEQNUM=1051"]} diff --git a/internal/kobject/testdata/03-loop b/internal/kobject/testdata/03-loop new file mode 100644 index 00000000..57d758e2 --- /dev/null +++ b/internal/kobject/testdata/03-loop @@ -0,0 +1,19 @@ +{"action":"add","devpath":"/devices/virtual/misc/loop-control","env":["ACTION=add","DEVPATH=/devices/virtual/misc/loop-control","SUBSYSTEM=misc","MAJOR=10","MINOR=237","DEVNAME=loop-control","SEQNUM=1052"]} +{"action":"add","devpath":"/devices/virtual/bdi/7:0","env":["ACTION=add","DEVPATH=/devices/virtual/bdi/7:0","SUBSYSTEM=bdi","SEQNUM=1053"]} +{"action":"add","devpath":"/devices/virtual/block/loop0","env":["ACTION=add","DEVPATH=/devices/virtual/block/loop0","SUBSYSTEM=block","MAJOR=7","MINOR=0","DEVNAME=loop0","DEVTYPE=disk","DISKSEQ=2","SEQNUM=1054"]} +{"action":"add","devpath":"/devices/virtual/bdi/7:1","env":["ACTION=add","DEVPATH=/devices/virtual/bdi/7:1","SUBSYSTEM=bdi","SEQNUM=1055"]} +{"action":"add","devpath":"/devices/virtual/block/loop1","env":["ACTION=add","DEVPATH=/devices/virtual/block/loop1","SUBSYSTEM=block","MAJOR=7","MINOR=1","DEVNAME=loop1","DEVTYPE=disk","DISKSEQ=3","SEQNUM=1056"]} +{"action":"add","devpath":"/devices/virtual/bdi/7:2","env":["ACTION=add","DEVPATH=/devices/virtual/bdi/7:2","SUBSYSTEM=bdi","SEQNUM=1057"]} +{"action":"add","devpath":"/devices/virtual/block/loop2","env":["ACTION=add","DEVPATH=/devices/virtual/block/loop2","SUBSYSTEM=block","MAJOR=7","MINOR=2","DEVNAME=loop2","DEVTYPE=disk","DISKSEQ=4","SEQNUM=1058"]} +{"action":"add","devpath":"/devices/virtual/bdi/7:3","env":["ACTION=add","DEVPATH=/devices/virtual/bdi/7:3","SUBSYSTEM=bdi","SEQNUM=1059"]} +{"action":"add","devpath":"/devices/virtual/block/loop3","env":["ACTION=add","DEVPATH=/devices/virtual/block/loop3","SUBSYSTEM=block","MAJOR=7","MINOR=3","DEVNAME=loop3","DEVTYPE=disk","DISKSEQ=5","SEQNUM=1060"]} +{"action":"add","devpath":"/devices/virtual/bdi/7:4","env":["ACTION=add","DEVPATH=/devices/virtual/bdi/7:4","SUBSYSTEM=bdi","SEQNUM=1061"]} +{"action":"add","devpath":"/devices/virtual/block/loop4","env":["ACTION=add","DEVPATH=/devices/virtual/block/loop4","SUBSYSTEM=block","MAJOR=7","MINOR=4","DEVNAME=loop4","DEVTYPE=disk","DISKSEQ=6","SEQNUM=1062"]} +{"action":"add","devpath":"/devices/virtual/bdi/7:5","env":["ACTION=add","DEVPATH=/devices/virtual/bdi/7:5","SUBSYSTEM=bdi","SEQNUM=1063"]} +{"action":"add","devpath":"/devices/virtual/block/loop5","env":["ACTION=add","DEVPATH=/devices/virtual/block/loop5","SUBSYSTEM=block","MAJOR=7","MINOR=5","DEVNAME=loop5","DEVTYPE=disk","DISKSEQ=7","SEQNUM=1064"]} +{"action":"add","devpath":"/devices/virtual/bdi/7:6","env":["ACTION=add","DEVPATH=/devices/virtual/bdi/7:6","SUBSYSTEM=bdi","SEQNUM=1065"]} +{"action":"add","devpath":"/devices/virtual/block/loop6","env":["ACTION=add","DEVPATH=/devices/virtual/block/loop6","SUBSYSTEM=block","MAJOR=7","MINOR=6","DEVNAME=loop6","DEVTYPE=disk","DISKSEQ=8","SEQNUM=1066"]} +{"action":"add","devpath":"/devices/virtual/bdi/7:7","env":["ACTION=add","DEVPATH=/devices/virtual/bdi/7:7","SUBSYSTEM=bdi","SEQNUM=1067"]} +{"action":"add","devpath":"/devices/virtual/block/loop7","env":["ACTION=add","DEVPATH=/devices/virtual/block/loop7","SUBSYSTEM=block","MAJOR=7","MINOR=7","DEVNAME=loop7","DEVTYPE=disk","DISKSEQ=9","SEQNUM=1068"]} +{"action":"add","devpath":"/module/loop","env":["ACTION=add","DEVPATH=/module/loop","SUBSYSTEM=module","SEQNUM=1069"]} +{"action":"change","devpath":"/devices/virtual/block/loop0","env":["ACTION=change","DEVPATH=/devices/virtual/block/loop0","SUBSYSTEM=block","MAJOR=7","MINOR=0","DEVNAME=loop0","DEVTYPE=disk","DISKSEQ=10","SEQNUM=1070"]} diff --git a/internal/kobject/testdata/04-loop-detach b/internal/kobject/testdata/04-loop-detach new file mode 100644 index 00000000..a9240a06 --- /dev/null +++ b/internal/kobject/testdata/04-loop-detach @@ -0,0 +1,2 @@ +{"action":"change","devpath":"/devices/virtual/block/loop0","env":["ACTION=change","DEVPATH=/devices/virtual/block/loop0","SUBSYSTEM=block","MAJOR=7","MINOR=0","DEVNAME=loop0","DEVTYPE=disk","DISKSEQ=10","SEQNUM=1071"]} +{"action":"change","devpath":"/devices/virtual/block/loop0","env":["ACTION=change","DEVPATH=/devices/virtual/block/loop0","SUBSYSTEM=block","DISK_MEDIA_CHANGE=1","MAJOR=7","MINOR=0","DEVNAME=loop0","DEVTYPE=disk","DISKSEQ=10","SEQNUM=1072"]} diff --git a/internal/kobject/testdata/05-loop-remove b/internal/kobject/testdata/05-loop-remove new file mode 100644 index 00000000..08cbbe9b --- /dev/null +++ b/internal/kobject/testdata/05-loop-remove @@ -0,0 +1,18 @@ +{"action":"remove","devpath":"/devices/virtual/misc/loop-control","env":["ACTION=remove","DEVPATH=/devices/virtual/misc/loop-control","SUBSYSTEM=misc","MAJOR=10","MINOR=237","DEVNAME=loop-control","SEQNUM=1073"]} +{"action":"remove","devpath":"/devices/virtual/bdi/7:0","env":["ACTION=remove","DEVPATH=/devices/virtual/bdi/7:0","SUBSYSTEM=bdi","SEQNUM=1074"]} +{"action":"remove","devpath":"/devices/virtual/block/loop0","env":["ACTION=remove","DEVPATH=/devices/virtual/block/loop0","SUBSYSTEM=block","MAJOR=7","MINOR=0","DEVNAME=loop0","DEVTYPE=disk","DISKSEQ=11","SEQNUM=1075"]} +{"action":"remove","devpath":"/devices/virtual/bdi/7:1","env":["ACTION=remove","DEVPATH=/devices/virtual/bdi/7:1","SUBSYSTEM=bdi","SEQNUM=1076"]} +{"action":"remove","devpath":"/devices/virtual/block/loop1","env":["ACTION=remove","DEVPATH=/devices/virtual/block/loop1","SUBSYSTEM=block","MAJOR=7","MINOR=1","DEVNAME=loop1","DEVTYPE=disk","DISKSEQ=3","SEQNUM=1077"]} +{"action":"remove","devpath":"/devices/virtual/bdi/7:2","env":["ACTION=remove","DEVPATH=/devices/virtual/bdi/7:2","SUBSYSTEM=bdi","SEQNUM=1078"]} +{"action":"remove","devpath":"/devices/virtual/block/loop2","env":["ACTION=remove","DEVPATH=/devices/virtual/block/loop2","SUBSYSTEM=block","MAJOR=7","MINOR=2","DEVNAME=loop2","DEVTYPE=disk","DISKSEQ=4","SEQNUM=1079"]} +{"action":"remove","devpath":"/devices/virtual/bdi/7:3","env":["ACTION=remove","DEVPATH=/devices/virtual/bdi/7:3","SUBSYSTEM=bdi","SEQNUM=1080"]} +{"action":"remove","devpath":"/devices/virtual/block/loop3","env":["ACTION=remove","DEVPATH=/devices/virtual/block/loop3","SUBSYSTEM=block","MAJOR=7","MINOR=3","DEVNAME=loop3","DEVTYPE=disk","DISKSEQ=5","SEQNUM=1081"]} +{"action":"remove","devpath":"/devices/virtual/bdi/7:4","env":["ACTION=remove","DEVPATH=/devices/virtual/bdi/7:4","SUBSYSTEM=bdi","SEQNUM=1082"]} +{"action":"remove","devpath":"/devices/virtual/block/loop4","env":["ACTION=remove","DEVPATH=/devices/virtual/block/loop4","SUBSYSTEM=block","MAJOR=7","MINOR=4","DEVNAME=loop4","DEVTYPE=disk","DISKSEQ=6","SEQNUM=1083"]} +{"action":"remove","devpath":"/devices/virtual/bdi/7:5","env":["ACTION=remove","DEVPATH=/devices/virtual/bdi/7:5","SUBSYSTEM=bdi","SEQNUM=1084"]} +{"action":"remove","devpath":"/devices/virtual/block/loop5","env":["ACTION=remove","DEVPATH=/devices/virtual/block/loop5","SUBSYSTEM=block","MAJOR=7","MINOR=5","DEVNAME=loop5","DEVTYPE=disk","DISKSEQ=7","SEQNUM=1085"]} +{"action":"remove","devpath":"/devices/virtual/bdi/7:6","env":["ACTION=remove","DEVPATH=/devices/virtual/bdi/7:6","SUBSYSTEM=bdi","SEQNUM=1086"]} +{"action":"remove","devpath":"/devices/virtual/block/loop6","env":["ACTION=remove","DEVPATH=/devices/virtual/block/loop6","SUBSYSTEM=block","MAJOR=7","MINOR=6","DEVNAME=loop6","DEVTYPE=disk","DISKSEQ=8","SEQNUM=1087"]} +{"action":"remove","devpath":"/devices/virtual/bdi/7:7","env":["ACTION=remove","DEVPATH=/devices/virtual/bdi/7:7","SUBSYSTEM=bdi","SEQNUM=1088"]} +{"action":"remove","devpath":"/devices/virtual/block/loop7","env":["ACTION=remove","DEVPATH=/devices/virtual/block/loop7","SUBSYSTEM=block","MAJOR=7","MINOR=7","DEVNAME=loop7","DEVTYPE=disk","DISKSEQ=9","SEQNUM=1089"]} +{"action":"remove","devpath":"/module/loop","env":["ACTION=remove","DEVPATH=/module/loop","SUBSYSTEM=module","SEQNUM=1090"]}