Home

Advertisement

friends [entries|archive|friends|userinfo]
base3

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

(no subject) [Nov. 10th, 2009|02:04 pm]

missmofo
Photo stuffs

8060
....... )
link4 comments|post comment

The ACPI Embedded Controller [Nov. 10th, 2009|09:57 am]

mjg59
[Tags|, ]

Of course, the event model I described before is far too simple to be worthy of a place in the ACPI spec. At the most basic level, there's more possible events than there are GPEs to attach them to, so there's a need for some further complexity. This manifests itself in the form of the ACPI embedded controller (EC).

The EC is typically a small microprocessor sitting on your motherboard, often implemented in the same hardware as the keyboard controller. It shares a lot in common with the keyboard controller - on PCs it'll usually appear in system io space, with one register for writing a command or reading a status, and a second register for passing data back and forth[1]. There's 256 registers available, so a typical interaction might be to write the READ command (0x80) to the command register, write the EC register address to the data register and then read back from the data register to get the EC register contents.

The embedded controller will often be responsible for tracking information about the hardware, such as the temperature. Attempting to read the temperature through ACPI will execute an ACPI method - in the case of the temperature being monitored by the embedded controller, this method will attempt to read from an EC register. The EC driver then performs the read and returns the result, which gets converted into decidegrees kelvin and passed back to whatever made the temperature query.

But, as mentioned above, the EC also generates events. These may be in response to a user initiated event like a hotkey press, or may be triggered by some change in hardware state like a thermal trip point being passed. The embedded controller will then raise a GPE.

Unlike normal GPEs, the EC GPE is not handled by looking for a _Lxx or _Exx method. Instead, the ACPI tables provide information about the GPE that the EC is using. This may be in the form of a _GPE definition in the EC object in the main ACPI tables, or alternatively may be provided in an ECDT (Embedded Controller Descriptor Table), an optional table that provides all the EC information. In either case, the OS knows which GPE will be triggered by the EC. It then installs a handler that will be called whenever the EC raises that GPE.

Things get a touch confusing at this point. The first thing this handler does is read the command byte, which functions as a status byte on reads. It then checks whether the SCI_EVT bit is set. This informs the system that the GPE was in response to a hardware event, and so the EC handler writes a query command to the EC command register and then reads back a value between 0 and 255 from the data register. This is then mapped to a _Qxx method, with xx representing the number of the EC event read from the data register. Like the _Lxx and _Exx methods, the _Qxx method is then executed.

The problem with all of this is that the EC isn't that fast. When a byte is written to it, it's necessary to read back the status byte and check whether the IBF bit is set. This is set when the OS writes a byte to the data register, and cleared once the EC has processed it. The straightforward way to deal with this is to poll the status byte until the bit is cleared, and then write the next byte, but polling is slow and wastes CPU time. The EC can instead be set to interrupt mode, where it'll fire a GPE when the IBF bit clears.

The EC has one additional function. The ACPI spec allows for an i2c bus to be implemented through the EC, with EC registers mapping to i2c registers. The observant among you will realise that this means that there's an indexed access protocol being implemented on top of indexed access hardware, which is more layers of indirection than seem sane. For additional humour, this is usually only used to add support for ACPI smart batteries. ACPI batteries are generally abstracted behind a set of ACPI methods that provide information. Smart batteries instead speak i2c directly to the OS[2] for no real benefit. Linux handles these devices fine, and while the chances are you probably don't have one, the chances are also that if you do you haven't noticed.

The final quirk of ACPI events is that there's yet another means of delivering events. The term "fixed feature" is used to describe an ACPI device that isn't described in the ACPI tables. A power button may be implemented as a fixed feature device rather than a normal ("control method") device. This is indicated by a flag in the fixed feature block. Hitting a fixed feature power button will generate an ACPI interrupt, but no GPE. Instead the OS has to read the fixed feature block and note that the power button flag is set there. It then notifies userspace appropriately. Sleep buttons can also be implemented this way, but other devices will be in the normal ACPI tables and will generate either GPEs or EC events.

[1] On my laptop, these are ports 0x62 and 0x66 - compare to the keyboard controller's use of ports 0x60 and 0x64

[2] As directly as indirection via the EC can be...
linkpost comment

ACPI general purpose events [Nov. 9th, 2009|10:06 pm]

mjg59
[Tags|, ]

ACPI is a confusing place. It's often thought of as a suspend/resume thing, though if you're unlucky you've learned that it's also involved in boot-time configuration because it's screwed up your interrupts again. But ACPI's also heavily involved in the runtime management of the system, and it's necessary for there to be a mechanism for the hardware to alert the OS of events.

ACPI handles this case by providing a set of general purpose events (GPEs). The implementation of these is fairly straightforward - an ACPI table points at a defined system resource (typically an area of system io space, though in principle it could be something like mmio instead), and when the hardware fires an ACPI interrupt the kernel looks at this region to see which GPEs are flagged. Then things get more interesting.

The majority of GPEs are implemented in the ACPI tables via methods with names like _Lxx or _Exx. The xx is the number of the GPE in hex, while the leading _L or _E indicates whether the GPE is level- or edge-triggered. If an ACPI interrupt is fired and GPE 0x1D is flagged as being the source of the interrupt, the ACPI interpreter will then look for an _L1D or _E1D method. Upon finding one, it'll execute it. What this method does is entirely up to the firmware - on most HP laptops, GPE 0x1D is hooked up to the lid switch[1] and so executing it will send a notification to the OS that the lid switch has changed state. The OS will then evaluate the state of the lid switch (generally by making another ACPI query) and send the event up to userspace.

How does the lid end up triggering GPE 0x1D? Things get pretty hardware specific at this point. Intel motherboard chipsets have a set of general purpose io (GPIO) lines that can, for the most part[2], be used by the system vendor for anything they want. For a lid switch, one of these lines is hooked to the switch and the BIOS configures the GPIO as an input. Pressing the switch will cause the GPIO line to become active. The GPIO lines are mapped to GPEs in a 1:1 manner, though with an offset of 16 - ie, GPIO 0xd will map to GPE 0x1d. If GPIO 0xd becomes active, GPE 0x1d will be flagged and an ACPI interrupt sent. The ACPI code will then do something to quash the interrupts, such as inverting the polarity of the GPIO[3], as well as send the notification to the OS.

Why are the GPIOs offset by 16 relative to the GPEs? The lower 16 GPEs (again, talking about Intel hardware) have pre-defined purposes[4]. These range from things like "Critically low battery" to "PCIe hotplug event" down to "This device triggered a wakeup". And the latter is what I'm most interested in here.

Various pieces of modern hardware can be placed into power saving states when not in use. The problem with this is that the user experience of having to turn on hardware before you can use it is not a good one, so in order to make this the default behaviour we need the hardware to tell us that something happened that requires us to wake the hardware up.

There's something of a chicken and egg problem here, but thankfully most of the relevant modern hardware has out of band mechanisms to tell us about things going on. The PCI spec defines something called Power Management Events (PME), which are driven by an additional current that's supplied to the hardware even when it's otherwise turned off. On plug-in PCI Express cards, firing a PME generates an interrupt on the root bridge and a native driver can interpret that, but for legacy PCI devices and integrated chipset devices the notification has to come via ACPI.

The example I've been working on is USB. It's a good choice for various reasons - firstly, there's already support for detecting when the USB controller is idle. Secondly, modern USB host controllers have support for generating PMEs on device insertion, removal or (and this is important) remote wakeup. In other words, as long as the USB bus is idle we can power down the entire USB controller. If the OS tries to access a USB device, we'll power it back up. If the user unplugs or plugs a device, we'll power it back up. If a previously idle device suddenly responds to some external input, we'll power it back up. And it's all nicely invisible to the user.

How does this work? The controller retains a small amount of power even when nominally pwoered down. This is used to keep the detection circuitry alive. When it receives a wakeup event, it asserts the PME line. The chipset detects this and fires a GPE. The OS runs this GPE and receives a device notification on the ACPI representation of the USB controller, telling us to power it back up. We do so and process whatever woke us - if the bus then goes idle again, we can power down once more.

The astonishing thing is that this all works. The only problem we have is that it relies on the machine vendor to have provided the ACPI methods that are associated with the GPEs. If they haven't, we can't enable this functionality - even though the hardware is capable of generating the GPEs, we have no method to execute to let us know which device has to be woken up. The GPE is never answered, we never acknowledge the PME and the hardware keeps on screaming for attention without getting any. And, more to the point, it never gets powered up and your mouse doesn't work.

There's a pretty gross hack to deal with this. In general, we know what the GPE to device mappings are - they're pretty static across Intel chipsets, and while AMD ones can be programmed differently by the BIOS we can read that information back and set up a mapping ourselves. This trick also comes in handy when some vendors (like, say, Dell) manage to implement one of the GPE events wrongly. Everything looks like it should work, but the method never sends a notification because it's buggy. In that case we can unregister the existing method and implement our own instead.

This code isn't upstream yet, but patches have been posted to the linux-acpi mailing list and with luck it'll be there in the 2.6.33 timeframe. My tests suggest about 0.2W saving per machine, which isn't going to save all that many polar bears but seems worth it anyway.

[1] _L1D = lid. Sigh.

[2] There's a few that are reserved for specific purposes

[3] So where before it had to be high to be active, it now has to be low to be active - this means that it'll now trigger on the switch being opened rather than closed, so you'll get another event when you open the lid again.

[4] You can find a list in the documentation for the appropriate ICH chip - the relevant section is "GPE0_STS" under the LPC interface chapter.

link9 comments|post comment

Looking to the past [Nov. 9th, 2009|03:54 pm]

mjg59
[Tags|, ]

It’s an oft-voiced suggestion that rather than looking at the bad things that happen in our communities, we should focus on the good things. There’s a number of highly successful geek women already – should we not be concentrating on encouraging more of them, rather than scaring people away with tales of thoughtlessness, discrimination and outright abuse?

Let’s draw an analogy. One day, a $20 charge appears on your credit card. You didn’t make it. You report it to your credit card company, who assure you that they take fraud seriously and then do nothing. A few days later, another $20 charge. Your credit card company tells you that such events are rare, unrepresentative of the general credit card experience and continue to do nothing. A week afterwards, another charge. This time your credit card company describes how they’re planning on implementing a brand new anti-fraud system, but that this is unrelated to any events that may currently be occuring and will give no details as to when it’s going to be rolled out. And proceed to ignore any further reports you make about fraudulant transactions.

Would you stay with this company? Or would you take your business somewhere else?

The problem with the “Let’s look to the future rather than spending too much time getting stuck in the present” argument is that it assures people that things will get better without providing a roadmap for getting there. It does nothing to validate their concerns or make them feel wanted within a community. It assumes either that people will stick with a community that doesn’t respond to their complaints, or that it’s possible to construct a community that’s welcome to an assortment of genders, ethnicities and lifestyles without any of those people being represented in the first place.

Ignoring people’s concerns is an excellent way to drive them away from your community. Doing so because of a potential future that’s probably conditional on you having those people in your community is short sighted and self defeating. Ignoring the present doesn’t benefit the future. It benefits the status quo.

(Originally posted here)
link5 comments|post comment

The Rundown For 11/8/09 [Nov. 8th, 2009|02:43 pm]

evandorkin
[Tags|, , , , , , , ]
[music |Bill Kelly's Teenage Wasteland/WFMU.org]

My computer's been on the blink for a while, so I've been using Sarah;s, which has led to a pile of post-it notes and scribbled-on scraps of paper gathering on my desk. A lot of these were reminders to post this or that on the blog, which, I obviously didn't do. Sarah spent many hours yesterday trying to revive my ailing machine, which is more or less now acting responsibly. We'll see how long that lasts. In the meantime, I'm gonna play catch-up with a few random mentions of this, that and the other:

- The House of Fun Art For Sale list was updated after we got home from the Baltimore Convention, I just never told anybody because I'm such a savvy business person. We got hit with some unforeseen expenses (inc. a hefty car repair bill, ouch) so I'm offering up some new pieces, a few of them relatively big ticket items, a few of them relatively affordable -- pages from Milk and Cheese pages, Bizarro Comics/Bizarro World, Hellboy: Weird Tales, as well as a few pin-ups, odds and ends and the cover to Dork #6, which was The Eltingville Club issue  (a note to the reader/customer who purchased the back cover to #6 and the Eltingville t-shirt some months back - I have lost your contact info, which is why I did not write you about the front cover. If you're reading this, please get in touch with me, because I feel badly that I screwed that up. My apologies!). Also, we've lowered the prices on a number of older pieces on the list. Several pages have already sold since we added the new artwork, as a few regular customers contacted us, but the list has been updated to reflect those purchases. If time allows we'll be adding more stuff before the holidays and we'll likely put some more layouts and small pieces up on e-Bay as well.

- I am going to be appearing weekly on the SLG Radio show every Thursday, or at least every Thursday SLG head honcho Dan Vado puts a show together. My segment will be taking place in the last fifteen or twenty minutes of the show. We'll talk about comics, I guess. We'll see. So far I've mostly yammered about nothing in particular while Dan tries to get a word in edgewise. It's a live call-in show, so folks can participate if they want. Previous broadcasts are archived on the blog radio site and upcoming guests are announced on the page as well, so check it out.

- Speaking of radio, I don't remember if I posted about Jill Thompson and I having been guests on Robin McConnell's Inkstuds radio program recently. You can listen to the episode here. Inkstuds is a great comic book resource, Robin's interviewed a terrific array cartoonists over the course of its 4-yr run (Happy Anniversary, btw).

- Speaking of interviews, here's one Jill and I did with Crimespree Magazine regarding Beasts of Burden.

- Speaking of Beasts of Burden, here's a preview of the first three pages of the upcoming third issue, which is an Orphan solo adventure. While the orders for the series have been less than stellar, the response has been extremely gratifying, and it doesn't look like retailers are getting stuck with too many copies dying on their racks. We've also received some very nice comments about the series from creators like Neil Gaiman, Dave Gibbons, Len Wein, James Robinson and Eric Powell (all on Twitter), which has been cool as all hell to see, I must admit. #3 ships on the 25th, and hopefully will be a fun sort of palate cleanser after the downbeat second issue. At least that was the plan.

- Geek Alert: Universal Monster movie fans take note - I accidentally stumbled across a reference to The Universal Cult Horror Collection, a set of five lesser-known weirdies including Murders In The Zoo, The Mad Ghoul and Rondo Hatton as The Creeper in  House of Horrors. The set is only being sold through TCM.com (and one other online source, but the price is the same, iirc), it's part of a deal TCM made with Universal to release some films on demand, and hopes are high that perhaps this could lead to getting Island of Lost Souls out on DVD. The films can be bought separately, as well. I haven't seen any of these, I'm sure they're nutty jerk-fests, but I love this stuff. Now, if I could only afford them...

-I've got something like seven new Fun Strips done or almost done. I've gridded up a batch of strips and pages to work on whenever the ink's drying on another job, so who knows, I may have some Dork-type comics to show you folks sooner or later. Still trying to get more done on that Milk and Cheese strip I started and posted a bit from a little while back, but it's slow going. 

- I'm also working on a pin-up for a charity auction that has been fun, little cartoony versions of as many old Marvel Comics villains as I can remember the details for. It's a small piece but I'm trying to get as many figures in as possible, I think I have thirty or so right now. I'm trying to see how many characters I can draw more or less by memory, and then I'll get the reference out and see what I screwed up, and complete the details on the characters I don't know well. Some characters I can't even lay a single line down for, so they'll need reference. In my head I can see The Mandarin and Klaw, but on paper...nada (besides the sonic weapon -- weird!). But it looks like 80% of these bums are still floating around in my memory banks while I forget my social security number and my own phone numbers. Maybe I'll scan it as it stands and post an in-progress image. Or maybe not.

- If the November issue of Nickelodeon was the swan song for the magazine, I'm depressed. If December turns out to be the final issue, still depressed. We had a gag panel in the November Nick...what a bummer to see it end. And just when Emily started reading it, of course.

- I've been reading a lot of Spider pulps, my first Avenger pulp, old horror short story collections, some Fritz Leiber SF short stories, some Robert Bloch, some recent young adult fantasy series (The Magic Thief and The Last Apprentice), some David Goodis crime novels, some lesser-known (to me, at least) Black Lizard crime reprints (The Vengeance Man, You Play the Red and the Black Comes Up), some Jim Thompson, and some Blackjack manga. Nothing heavy, nothing too depressing.  The Lawgiver is planning a house move, and is culling his library, so I've been hauling bags of old paperbacks over here to digest and then donate. I'm keeping the Spider paperbacks, though. It's been a lot of fun, and a lot of it is research for projects, so it's sort of work, as well. Some days I just want to stay in bed and read until I fall back asleep, like when I was a kid on a rainy day. 

- I'm doing a lot of stuff for Bongo right now, and for the foreseeable future --, and it's time I got back to that. 

Latersville, all.

link4 comments|post comment

skyscape [Nov. 8th, 2009|10:30 am]

hepkitten

skyscape, originally uploaded by hep.

yesterday was the 20th annv of my brother's death. i am doing a lot of reflecting and missing over the next few days (not like i don't always miss him, i still think about him every day, just always around the annv i do a lot of thinking about the person he would have become and how our lives would have been had he stayed living.) so please don't mind if there is radio silence.

link2 comments|post comment

harbinger of storm [Nov. 5th, 2009|01:16 pm]

hepkitten

harbinger of storm, originally uploaded by hep.



the sunrise was pretty this morning, however it was also red and dramatic. this afternoon brings clouds and the smell of rain.

link2 comments|post comment

They're Publishing More Comics I Want [Nov. 4th, 2009|04:33 pm]

evandorkin
[Tags|]

Apparently the first volume in the IDW King Aroo reprint project has been solicited in this months Previews eyesore --  this is a series I'm really looking forward to as I find Jack Kent's strip delightful (there's a word I rarely type) and an example of great pure cartooning chops. And my daughter might enjoy it, as well. Maybe. I'm basing this on the character designs, all the cute creatures running around in the strip, and the gentle nature and humor of the strip. And the puns, she's getting into corny old gags in the way most of us did when we were little. I never know what comics she's going to respond to, to be honest. For a long while she wouldn't read anything with people in it, Dennis the Menace was out for that reason. Now she has taken the Toon Treasury away from me and has gone through it multiple times, without missing funny animals, kids, gag pages, even the Briefer Frankenstein pages, which I thought might turn her off. Then again, she read print-outs of the first issue of Beasts of Burden #1 in black and white, while we weren't around, and startled us at the dinner table one night by quoting the "eat 'em up frog" (as she put it) demon (she also calls it the "eat everything frog"). She quoted the frog in a funny kid monster voice, and it was very funny, but Sarah gave me the "I thought we agreed not to leave those pages lying around" look. And we did agree not to let her see the pages because some of them are kind of nasty, and as it turned out, Emily was bothered by some of the events in the first issue, and told me I wrote it "wrong", because the deaths of two animals in it upset her. We have since never admitted the existence of Beasts #2, for reasons some of you might understand after reading that issue. She knows #3 exists because she's seen pages on the computer, it's the "Orphan goes looking for his girlfriend" story (as she puts it), and while there are some gory bits, it's an adventure and not a downbeat, depressing bit of work.  There's no way she's seeing #4, because there's some horror stuff in there that I don't think she'd like.

She's also been "stealing" my copy of the first Cul De Sac collection lately, and she seems to like it, although she doesn't get a lot of the strips. But she keeps reading it. Kills me to watch her reading comics. You see, there's this kid in my house, right, and she's little and cute and she's ours and she's reading some of them there funnybooks. Who'd have thunk it? Not me.

Anyway, off tangent, what else is new. Didn't expect to be posting, but I'm taking a break in-between working on some strip layouts and so there you go and here I go and who knows where it goes. But speaking of the Dick Briefer Frankenstein comics, I read that Fantagraphics has announced a new slate of books, including a reprinting of this material. To which I say sweet, because along with oddballness like Herbie Popnecker and a few other projects, this is a cult series that many folks have wanted to see back in print. Hopefully enough folks out there are interested in order to make it viable for the long haul. Who knows.

And it gets better, or worse, if you consider your wallet and shelf space, because FBI's also doing collections of lesser-known 50's horror comics, an Alex Toth collection of his Standard Comics work, a pre-Plastic Man Jack Cole collection, a book on EC cartoonists' work at other companies, and a Basil Wolverton book. So, you folks who are into these sorts of things better start taking a few bills outta your mom's bag or your dad's wallet each and every week because this is gonna be an assault on the cents-less. So many good books, and I'm not half-wise to everything IDW is announcing (I did read about a Polly and Her Pals oversize Sundays collection, apparently a $75 "Champagne Edition" -- hell, I like bells and whistles and all, but give me a decent Budweiser Edition, fer chrissakes!), or Dark Horse, or whoever else is helping grow the pile. Hell, Captain Easy still hasn't debuted, supposedly Walt and Skeezix is getting back on track, the John Stanley library is up and running, more Harvey stuff, more DHC Little Lulu,  I mean, holy goodnight! You can't sell a comic book outside of Marvel and DC that isn't Buffy or whatever-related (I oughta know, after seeing the numbers on beasts #1), and they're not even selling a ton of the aforementioned, but somehow scores of classic comic collections are making their way into the world. Not that I'm complaining. It's just so unprecedented and unforeseen; going back a few years, that it's hard to imagine it isn't a geekanerd fever dream.

Anyway, I just hope 2010 isn't the dam bursting on the reprint trend and we're not hitting the motherlode overload anytime soon, because at some point this has to start choking shelves and bringing consumers to their financial knees, but while the gettin's good, this is a goddamned Golden Age of great comic gatherings, guys and gals. This is history in the re-packaging, and bears attention.

Or maybe it's a sinister alliance with Ikea to sell even more Billy bookcases.

So, anybody looking forward to any of this stuff? Anything you've heard about that is of interest? How about them Yankees?  

No, no Yankees, I don't really care, in fact I really don't care, anti-care, could care less. No Yankees, no NYC mayoral race, no creepy rich people sports of any kind. Just funnybooks, today. Glorious, ridiculous funnybooks. Them I understand.
link15 comments|post comment

Queen Jelly [Nov. 4th, 2009|03:44 pm]

thestuntkid
queen jelly

Wrapped up the coloring on this one. Based on a previous photo shoot with model "Asphyxia"

Prints available soon!
link6 comments|post comment

halloweenie [Nov. 3rd, 2009|07:54 pm]

hepkitten
here are a couple more pics from halloween taken by the amazing dr j. there will be at least 1 more shot from the town photobooth that was set up, but im waiting on prints back from it.



link4 comments|post comment

calaveras [Nov. 3rd, 2009|08:19 am]

hepkitten

calaveras, originally uploaded by hep.

one more pic from last night. the girls are too cute in this.

link3 comments|post comment

ironworker calavera [Nov. 2nd, 2009|10:50 pm]

hepkitten

my makeup, originally uploaded by hep.

my costume ( in honor of my deceased grandpa, an ironworker, and also for all other deceased ironworkers) repping local #377.

link10 comments|post comment

(no subject) [Nov. 2nd, 2009|11:42 pm]

missmofo
Yesssssss.




Screen shot 2009-11-02 at 11.39.37 PM
link3 comments|post comment

representing ironworkers local #377 down at dia de los muertos parade [Nov. 2nd, 2009|08:03 pm]

hepkitten

--hep

link24 comments|post comment

(no subject) [Nov. 2nd, 2009|10:26 pm]

thestuntkid
Getting hitched
I'm getting married this weekend to my hottie painter fiance', Miss Elizabeth Henry. It's been a casually long engagement lasting about 7 years but we feel like we can finally pull it off the way we want to.
Once the wedding has passed my illustrated posts should resume with more vigor and rapidity.

The busy schedule hasn't kept me completely empty handed though.


link44 comments|post comment

evan's halloween costume - the dr from dr who [Nov. 2nd, 2009|02:15 pm]

hepkitten

link5 comments|post comment

powerpuff girls! [Nov. 1st, 2009|01:43 am]

hepkitten

powerpuff girls!, originally uploaded by hep.

--hep

link10 comments|post comment

halloween! [Oct. 31st, 2009|03:23 pm]

hepkitten
I did not get a chance to snap a shot of Evan yesterday morning, as a) there is no light at 6:30am when he leaves, b) he did not wake me up because of c) he was running super late and had 5mins to make it to the bus after he woke up. However, he was the Doctor from Dr. Who and it's an excellent costume, I will be sure to grab a shot later this evening.

Zoe was an Autumn Fairy, Zane was the Teen Child of Frankenstein.




[info]nullcherri, kori, and I have the best costumes ever! Even Yura is getting in on it and playing a support character. I promise pix if we all remember to take them! <3 Happy halloween everyone!
link3 comments|post comment

(no subject) [Oct. 31st, 2009|05:55 pm]

girlvinyl
Happy Halloween from my dog Suede and her two tiny pumpkins.


IMG_0131
link7 comments|post comment

halloweenies, the first of many [Oct. 30th, 2009|09:04 am]

hepkitten

halloweenies, the first of many, originally uploaded by hep.

happy halloween everyone! i will post better jpgs later!

link3 comments|post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]

Advertisement